00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <qlabel.h>
00025 #include <qlayout.h>
00026 #include <qpushbutton.h>
00027 #include <qtooltip.h>
00028
00029 #include <kbuttonbox.h>
00030 #include <kdialog.h>
00031 #include <kglobal.h>
00032 #include <klineedit.h>
00033 #include <klistview.h>
00034 #include <klocale.h>
00035
00036 #include "core.h"
00037
00038 #include "locationconfig.h"
00039
00040 LocationConfigWidget::LocationConfigWidget( KABC::AddressBook *ab, QWidget *parent,
00041 const char *name )
00042 : KAB::ConfigureWidget( ab, parent, name )
00043 {
00044 QGridLayout *layout = new QGridLayout( this, 3, 3, KDialog::marginHint(),
00045 KDialog::spacingHint() );
00046 layout->setColStretch( 1, 1 );
00047
00048 mListView = new KListView( this );
00049 mListView->addColumn( i18n( "Name" ) );
00050 mListView->addColumn( i18n( "URL" ) );
00051 mListView->setAllColumnsShowFocus( true );
00052 layout->addMultiCellWidget( mListView, 0, 0, 0, 1 );
00053 connect( mListView, SIGNAL( doubleClicked( QListViewItem *, const QPoint &, int )), this, SLOT(edit()));
00054 KButtonBox *bbox = new KButtonBox( this, Qt::Vertical );
00055 mAddButton = bbox->addButton( i18n( "Add" ), this, SLOT( add() ) );
00056 mEditButton = bbox->addButton( i18n( "Edit" ), this, SLOT( edit() ) );
00057 mRemoveButton = bbox->addButton( i18n( "Remove" ), this, SLOT( remove() ) );
00058 bbox->layout();
00059 layout->addWidget( bbox, 0, 2 );
00060
00061 QLabel *label = new QLabel( i18n( "Name:" ), this );
00062 layout->addWidget( label, 1, 0 );
00063
00064 mNameEdit = new KLineEdit( this );
00065 label->setBuddy( mNameEdit );
00066 layout->addMultiCellWidget( mNameEdit, 1, 1, 1, 2 );
00067
00068 label = new QLabel( i18n( "URL:" ), this );
00069 layout->addWidget( label, 2, 0 );
00070
00071 mURLEdit = new KLineEdit( this );
00072 label->setBuddy( mURLEdit );
00073 layout->addMultiCellWidget( mURLEdit, 2, 2, 1, 2 );
00074 QToolTip::add( mURLEdit, i18n( "<ul> <li>%s: Street</li>"
00075 "<li>%r: Region</li>"
00076 "<li>%l: Location</li>"
00077 "<li>%z: Zip Code</li>"
00078 "<li>%c: Country ISO Code</li> </ul>" ) );
00079
00080 resize( 500, 300 );
00081 }
00082
00083 LocationConfigWidget::~LocationConfigWidget()
00084 {
00085 }
00086
00087 void LocationConfigWidget::restoreSettings( KConfig *cfg )
00088 {
00089 mListView->clear();
00090
00091 QStringList items = cfg->readListEntry( "URLs" );
00092 if ( items.count() == 0 ) {
00093 QString uid = QDateTime::currentDateTime().toString();
00094
00095
00096 items.append( "map24" );
00097 cfg->writeEntry( "map24", QString( "http://link2.map24.com/?lid=9cc343ae&"
00098 "maptype=CGI&"
00099 "lang=%1&"
00100 "street0=%s&"
00101 "zip0=%z&"
00102 "city0=%l&"
00103 "country0=%c&"
00104 "smid=%2" )
00105 .arg( KGlobal::locale()->country() )
00106 .arg( uid ) );
00107 cfg->writeEntry( "UID", uid );
00108 }
00109
00110
00111 QStringList::Iterator it;
00112 for ( it = items.begin(); it != items.end(); ++it )
00113 new QListViewItem( mListView, *it, cfg->readEntry( *it ) );
00114 }
00115
00116 void LocationConfigWidget::saveSettings( KConfig *cfg )
00117 {
00118 QString group = cfg->group();
00119 QString uid = cfg->readEntry( "UID",
00120 QDateTime::currentDateTime().toString() );
00121 cfg->deleteGroup( group );
00122 cfg->setGroup( group );
00123 cfg->writeEntry( "UID", uid );
00124
00125 QStringList items;
00126 QListViewItem *item;
00127 for ( item = mListView->firstChild(); item; item = item->itemBelow() ) {
00128 cfg->writeEntry( item->text( 0 ), item->text( 1 ) );
00129 items.append( item->text( 0 ) );
00130 }
00131
00132 cfg->writeEntry( "URLs", items );
00133 }
00134
00135 void LocationConfigWidget::add()
00136 {
00137 new QListViewItem( mListView, mNameEdit->text(), mURLEdit->text() );
00138 }
00139
00140 void LocationConfigWidget::remove()
00141 {
00142 QListViewItem *item = mListView->currentItem();
00143 mListView->takeItem( item );
00144 delete item;
00145 }
00146
00147 void LocationConfigWidget::edit()
00148 {
00149 QListViewItem *item = mListView->currentItem();
00150 if ( !item )
00151 return;
00152
00153 mNameEdit->setText( item->text( 0 ) );
00154 mURLEdit->setText( item->text( 1 ) );
00155 }
00156
00157 void LocationConfigWidget::selectionChanged( QListViewItem *item )
00158 {
00159 bool state = ( item != 0 );
00160
00161 mEditButton->setEnabled( state );
00162 mRemoveButton->setEnabled( state );
00163 }
00164
00165 void LocationConfigWidget::inputChanged( const QString &text )
00166 {
00167 mAddButton->setEnabled( !text.isEmpty() );
00168 }
00169
00170 #include "locationconfig.moc"