summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp138
-rw-r--r--kaddressbook/kabcore.h7
2 files changed, 100 insertions, 45 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 96603e6..6807bed 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -186,30 +186,22 @@ KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const
186 186
187 mIncSearchWidget->setFocus(); 187 mIncSearchWidget->setFocus();
188 188
189 189
190 connect( mViewManager, SIGNAL( selected( const QString& ) ), 190 connect( mViewManager, SIGNAL( selected( const QString& ) ),
191 SLOT( setContactSelected( const QString& ) ) ); 191 SLOT( setContactSelected( const QString& ) ) );
192 192 connect( mViewManager, SIGNAL( executed( const QString& ) ),
193 //small devices show only the details view. bigger devices can edit the entry 193 SLOT( executeContact( const QString& ) ) );
194 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
195 connect( mViewManager, SIGNAL( executed( const QString& ) ),
196 SLOT( editContact( const QString& ) ) );
197 }
198 else
199 {
200 connect( mViewManager, SIGNAL( executed( const QString& ) ),
201 SLOT( showContact( const QString& ) ) );
202 }
203 194
204 connect( mViewManager, SIGNAL( deleteRequest( ) ), 195 connect( mViewManager, SIGNAL( deleteRequest( ) ),
205 SLOT( deleteContacts( ) ) ); 196 SLOT( deleteContacts( ) ) );
206 connect( mViewManager, SIGNAL( modified() ), 197 connect( mViewManager, SIGNAL( modified() ),
207 SLOT( setModified() ) ); 198 SLOT( setModified() ) );
208 199
209 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) ); 200 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) );
201 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) );
210 202
211 connect( mXXPortManager, SIGNAL( modified() ), 203 connect( mXXPortManager, SIGNAL( modified() ),
212 SLOT( setModified() ) ); 204 SLOT( setModified() ) );
213 205
214 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ), 206 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ),
215 SLOT( incrementalSearch( const QString& ) ) ); 207 SLOT( incrementalSearch( const QString& ) ) );
@@ -243,28 +235,29 @@ KABCore::~KABCore()
243 mAddressBook = 0; 235 mAddressBook = 0;
244 KABC::StdAddressBook::close(); 236 KABC::StdAddressBook::close();
245} 237}
246 238
247void KABCore::restoreSettings() 239void KABCore::restoreSettings()
248{ 240{
241 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce;
242
249 bool state; 243 bool state;
250 244
251 //small devices have at startup the details view disabled 245 if (mMultipleViewsAtOnce)
252 if (KGlobal::getDesktopSize() > KGlobal::Small )
253 state = KABPrefs::instance()->mDetailsPageVisible; 246 state = KABPrefs::instance()->mDetailsPageVisible;
254 else 247 else
255 state = false; 248 state = false;
256 249
257 mActionDetails->setChecked( state ); 250 mActionDetails->setChecked( state );
258 setDetailsVisible( state ); 251 setDetailsVisible( state );
259 252
260 state = KABPrefs::instance()->mJumpButtonBarVisible; 253 state = KABPrefs::instance()->mJumpButtonBarVisible;
261 254
262 mActionJumpBar->setChecked( state ); 255 mActionJumpBar->setChecked( state );
263 setJumpButtonBarVisible( state ); 256 setJumpButtonBarVisible( state );
264 257/*US
265 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 258 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
266 if ( splitterSize.count() == 0 ) { 259 if ( splitterSize.count() == 0 ) {
267 splitterSize.append( width() / 2 ); 260 splitterSize.append( width() / 2 );
268 splitterSize.append( width() / 2 ); 261 splitterSize.append( width() / 2 );
269 } 262 }
270 mMiniSplitter->setSizes( splitterSize ); 263 mMiniSplitter->setSizes( splitterSize );
@@ -274,34 +267,34 @@ void KABCore::restoreSettings()
274 splitterSize.append( width() / 2 ); 267 splitterSize.append( width() / 2 );
275 splitterSize.append( width() / 2 ); 268 splitterSize.append( width() / 2 );
276 } 269 }
277 mExtensionBarSplitter->setSizes( splitterSize ); 270 mExtensionBarSplitter->setSizes( splitterSize );
278 271
279 } 272 }
280#ifndef KAB_EMBEDDED 273*/
281 QValueList<int> splitterSize = KABPrefs::instance()->mExtensionsSplitter; 274 mViewManager->restoreSettings();
275 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
276 mExtensionManager->restoreSettings();
277
278 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
282 if ( splitterSize.count() == 0 ) { 279 if ( splitterSize.count() == 0 ) {
283 splitterSize.append( width() / 2 ); 280 splitterSize.append( width() / 2 );
284 splitterSize.append( width() / 2 ); 281 splitterSize.append( width() / 2 );
285 } 282 }
286 mExtensionBarSplitter->setSizes( splitterSize ); 283 mMiniSplitter->setSizes( splitterSize );
287 284 if ( mExtensionBarSplitter ) {
288 splitterSize = KABPrefs::instance()->mDetailsSplitter; 285 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
289 if ( splitterSize.count() == 0 ) { 286 if ( splitterSize.count() == 0 ) {
290 splitterSize.append( height() / 2 ); 287 splitterSize.append( width() / 2 );
291 splitterSize.append( height() / 2 ); 288 splitterSize.append( width() / 2 );
292 } 289 }
293 mDetailsSplitter->setSizes( splitterSize ); 290 mExtensionBarSplitter->setSizes( splitterSize );
294 291
295 mExtensionManager->restoreSettings(); 292 }
296 293
297#endif //KAB_EMBEDDED
298 294
299 mViewManager->restoreSettings();
300 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
301 mExtensionManager->restoreSettings();
302} 295}
303 296
304void KABCore::saveSettings() 297void KABCore::saveSettings()
305{ 298{
306 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked(); 299 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked();
307 if ( mExtensionBarSplitter ) 300 if ( mExtensionBarSplitter )
@@ -427,13 +420,13 @@ void KABCore::createAboutData()
427 ); 420 );
428} 421}
429 422
430void KABCore::setContactSelected( const QString &uid ) 423void KABCore::setContactSelected( const QString &uid )
431{ 424{
432 KABC::Addressee addr = mAddressBook->findByUid( uid ); 425 KABC::Addressee addr = mAddressBook->findByUid( uid );
433//US if ( !mDetails->isHidden() ) 426 if ( !mDetails->isHidden() )
434 mDetails->setAddressee( addr ); 427 mDetails->setAddressee( addr );
435 428
436 if ( !addr.isEmpty() ) { 429 if ( !addr.isEmpty() ) {
437 emit contactSelected( addr.formattedName() ); 430 emit contactSelected( addr.formattedName() );
438 KABC::Picture pic = addr.photo(); 431 KABC::Picture pic = addr.photo();
439 if ( pic.isIntern() ) { 432 if ( pic.isIntern() ) {
@@ -1054,20 +1047,27 @@ void KABCore::editContact( const QString &uid )
1054 mEditorDialog->setAddressee( addr ); 1047 mEditorDialog->setAddressee( addr );
1055 KApplication::execDialog ( mEditorDialog ); 1048 KApplication::execDialog ( mEditorDialog );
1056 } 1049 }
1057} 1050}
1058 1051
1059/** 1052/**
1060 Shows the detail view for the given uid. If the uid is QString::null, 1053 Shows or edits the detail view for the given uid. If the uid is QString::null,
1061 the method will try to find a selected addressee in the view. 1054 the method will try to find a selected addressee in the view.
1062 We call this method only if we use a small device. Bigger devices are calling editContact instead
1063 */ 1055 */
1064void KABCore::showContact( const QString &uid /*US = QString::null*/ ) 1056void KABCore::executeContact( const QString &uid /*US = QString::null*/ )
1065{ 1057{
1066 setDetailsVisible( true ); 1058 if ( mMultipleViewsAtOnce )
1067 mActionDetails->setChecked(true); 1059 {
1060 editContact( uid );
1061 }
1062 else
1063 {
1064 setDetailsVisible( true );
1065 mActionDetails->setChecked(true);
1066 }
1067
1068} 1068}
1069 1069
1070void KABCore::save() 1070void KABCore::save()
1071{ 1071{
1072 if ( !mModified ) 1072 if ( !mModified )
1073 return; 1073 return;
@@ -1111,21 +1111,22 @@ void KABCore::redo()
1111 // Refresh the view 1111 // Refresh the view
1112 mViewManager->refreshView(); 1112 mViewManager->refreshView();
1113} 1113}
1114 1114
1115void KABCore::setJumpButtonBarVisible( bool visible ) 1115void KABCore::setJumpButtonBarVisible( bool visible )
1116{ 1116{
1117 if (KGlobal::getDesktopSize() > KGlobal::Small ) { 1117 if (mMultipleViewsAtOnce)
1118 {
1118 if ( visible ) 1119 if ( visible )
1119 mJumpButtonBar->show(); 1120 mJumpButtonBar->show();
1120 else 1121 else
1121 mJumpButtonBar->hide(); 1122 mJumpButtonBar->hide();
1122 } 1123 }
1123 else 1124 else
1124 { 1125 {
1125 // for the Z5500, show the jumpbar only if "the details are hidden" == "viewmanager are shown" 1126 // show the jumpbar only if "the details are hidden" == "viewmanager are shown"
1126 if (mViewManager->isVisible()) 1127 if (mViewManager->isVisible())
1127 { 1128 {
1128 if ( visible ) 1129 if ( visible )
1129 mJumpButtonBar->show(); 1130 mJumpButtonBar->show();
1130 else 1131 else
1131 mJumpButtonBar->hide(); 1132 mJumpButtonBar->hide();
@@ -1133,48 +1134,96 @@ void KABCore::setJumpButtonBarVisible( bool visible )
1133 else 1134 else
1134 { 1135 {
1135 mJumpButtonBar->hide(); 1136 mJumpButtonBar->hide();
1136 } 1137 }
1137 } 1138 }
1138} 1139}
1140
1141
1139void KABCore::setDetailsToState() 1142void KABCore::setDetailsToState()
1140{ 1143{
1141 setDetailsVisible( mActionDetails->isChecked() ); 1144 setDetailsVisible( mActionDetails->isChecked() );
1142} 1145}
1143 1146
1144 1147
1145 1148
1146void KABCore::setDetailsVisible( bool visible ) 1149void KABCore::setDetailsVisible( bool visible )
1147{ 1150{
1148 //US "details visible" has two different meanings for small devices like the 5500 1151 if (visible && mDetails->isHidden())
1149 // compared with large devices like the c series. 1152 {
1153 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1154 if ( addrList.count() > 0 )
1155 mDetails->setAddressee( addrList[ 0 ] );
1156 }
1150 1157
1151 // small devices: mDetails is always visible. But we switch between 1158 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between
1152 // the listview and the detailview. We do that by changing the splitbar size. 1159 // the listview and the detailview. We do that by changing the splitbar size.
1153 if (KGlobal::getDesktopSize() > KGlobal::Small ) { 1160 if (mMultipleViewsAtOnce)
1161 {
1154 if ( visible ) 1162 if ( visible )
1155 mDetails->show(); 1163 mDetails->show();
1156 else 1164 else
1157 mDetails->hide(); 1165 mDetails->hide();
1158 } 1166 }
1159 else 1167 else
1160 { 1168 {
1161 if ( visible ) { 1169 if ( visible ) {
1162 mViewManager->hide(); 1170 mViewManager->hide();
1163 mDetails->show(); 1171 mDetails->show();
1164// mDetails->show();
1165 } 1172 }
1166 else { 1173 else {
1167 mViewManager->show(); 1174 mViewManager->show();
1168 mDetails->hide(); 1175 mDetails->hide();
1169 } 1176 }
1170 setJumpButtonBarVisible( !visible ); 1177 setJumpButtonBarVisible( !visible );
1178 }
1179
1180}
1181
1182void KABCore::extensionChanged( int id )
1183{
1184 //change the details view only for non desktop systems
1185#ifndef DESKTOP_VERSION
1186
1187 if (id == 0)
1188 {
1189 //the user disabled the extension.
1190
1191 if (mMultipleViewsAtOnce)
1192 { // enable detailsview again
1193 setDetailsVisible( true );
1194 mActionDetails->setChecked( true );
1195 }
1196 else
1197 { //go back to the listview
1198 setDetailsVisible( false );
1199 mActionDetails->setChecked( false );
1200 mActionDetails->setEnabled(true);
1201 }
1171 1202
1172 } 1203 }
1204 else
1205 {
1206 //the user enabled the extension.
1207 setDetailsVisible( false );
1208 mActionDetails->setChecked( false );
1209
1210 if (!mMultipleViewsAtOnce)
1211 {
1212 mActionDetails->setEnabled(false);
1213 }
1214
1215 mExtensionManager->setSelectionChanged();
1216
1217 }
1218
1219#endif// DESKTOP_VERSION
1220
1173} 1221}
1174 1222
1223
1175void KABCore::extensionModified( const KABC::Addressee::List &list ) 1224void KABCore::extensionModified( const KABC::Addressee::List &list )
1176{ 1225{
1177 1226
1178 if ( list.count() != 0 ) { 1227 if ( list.count() != 0 ) {
1179 KABC::Addressee::List::ConstIterator it; 1228 KABC::Addressee::List::ConstIterator it;
1180 for ( it = list.begin(); it != list.end(); ++it ) 1229 for ( it = list.begin(); it != list.end(); ++it )
@@ -1241,13 +1290,13 @@ void KABCore::openConfigDialog()
1241 this, SLOT( configurationChanged() ) ); 1290 this, SLOT( configurationChanged() ) );
1242 connect( ConfigureDialog, SIGNAL( okClicked() ), 1291 connect( ConfigureDialog, SIGNAL( okClicked() ),
1243 this, SLOT( configurationChanged() ) ); 1292 this, SLOT( configurationChanged() ) );
1244 saveSettings(); 1293 saveSettings();
1245 ConfigureDialog->showMaximized(); 1294 ConfigureDialog->showMaximized();
1246 if ( ConfigureDialog->exec() ) 1295 if ( ConfigureDialog->exec() )
1247 KMessageBox::information( this, i18n("If you configured \nExtensions,\nplease restart!\n") ); 1296 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") );
1248 delete ConfigureDialog; 1297 delete ConfigureDialog;
1249} 1298}
1250 1299
1251void KABCore::openLDAPDialog() 1300void KABCore::openLDAPDialog()
1252{ 1301{
1253#ifndef KAB_EMBEDDED 1302#ifndef KAB_EMBEDDED
@@ -1742,13 +1791,16 @@ void KABCore::addActionsManually()
1742 fileMenu->insertSeparator(); 1791 fileMenu->insertSeparator();
1743 1792
1744 mActionNewContact->plug( fileMenu ); 1793 mActionNewContact->plug( fileMenu );
1745 mActionNewContact->plug( tb ); 1794 mActionNewContact->plug( tb );
1746 1795
1747 mActionEditAddressee->plug( fileMenu ); 1796 mActionEditAddressee->plug( fileMenu );
1748 mActionEditAddressee->plug( tb ); 1797 if ((KGlobal::getDesktopSize() > KGlobal::Small ) ||
1798 (!KABPrefs::instance()->mMultipleViewsAtOnce ))
1799 mActionEditAddressee->plug( tb );
1800
1749 fileMenu->insertSeparator(); 1801 fileMenu->insertSeparator();
1750 mActionSave->plug( fileMenu ); 1802 mActionSave->plug( fileMenu );
1751 fileMenu->insertItem( "&Import", ImportMenu ); 1803 fileMenu->insertItem( "&Import", ImportMenu );
1752 fileMenu->insertItem( "&Emport", ExportMenu ); 1804 fileMenu->insertItem( "&Emport", ExportMenu );
1753 fileMenu->insertSeparator(); 1805 fileMenu->insertSeparator();
1754 mActionMailVCard->plug( fileMenu ); 1806 mActionMailVCard->plug( fileMenu );
@@ -1790,13 +1842,13 @@ void KABCore::addActionsManually()
1790 } 1842 }
1791 1843
1792 settingsMenu->insertSeparator(); 1844 settingsMenu->insertSeparator();
1793 1845
1794 mActionJumpBar->plug( settingsMenu ); 1846 mActionJumpBar->plug( settingsMenu );
1795 mActionDetails->plug( settingsMenu ); 1847 mActionDetails->plug( settingsMenu );
1796 if (KGlobal::getDesktopSize() == KGlobal::Small ) 1848 if (!KABPrefs::instance()->mMultipleViewsAtOnce )
1797 mActionDetails->plug( tb ); 1849 mActionDetails->plug( tb );
1798 settingsMenu->insertSeparator(); 1850 settingsMenu->insertSeparator();
1799 1851
1800 mActionWhoAmI->plug( settingsMenu ); 1852 mActionWhoAmI->plug( settingsMenu );
1801 mActionCategories->plug( settingsMenu ); 1853 mActionCategories->plug( settingsMenu );
1802 1854
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index a45c4c6..d4d28f1 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -299,16 +299,16 @@ class KABCore : public QWidget
299 */ 299 */
300 void editContact( const QString &uid /*US = QString::null*/ ); 300 void editContact( const QString &uid /*US = QString::null*/ );
301//US added a second method without defaultparameter 301//US added a second method without defaultparameter
302 void editContact2(); 302 void editContact2();
303 303
304 /** 304 /**
305 Shows the detail view for the given uid. If the uid is QString::null, 305 Shows or edits the detail view for the given uid. If the uid is QString::null,
306 the method will try to find a selected addressee in the view. 306 the method will try to find a selected addressee in the view.
307 */ 307 */
308 void showContact( const QString &uid /*US = QString::null*/ ); 308 void executeContact( const QString &uid /*US = QString::null*/ );
309 309
310 /** 310 /**
311 Launches the configuration dialog. 311 Launches the configuration dialog.
312 */ 312 */
313 void openConfigDialog(); 313 void openConfigDialog();
314 314
@@ -335,12 +335,13 @@ class KABCore : public QWidget
335 void setDetailsVisible( bool visible ); 335 void setDetailsVisible( bool visible );
336 void setDetailsToState(); 336 void setDetailsToState();
337 private slots: 337 private slots:
338 void setJumpButtonBarVisible( bool visible ); 338 void setJumpButtonBarVisible( bool visible );
339 void importFromOL(); 339 void importFromOL();
340 void extensionModified( const KABC::Addressee::List &list ); 340 void extensionModified( const KABC::Addressee::List &list );
341 void extensionChanged( int id );
341 void clipboardDataChanged(); 342 void clipboardDataChanged();
342 void updateActionMenu(); 343 void updateActionMenu();
343 void configureKeyBindings(); 344 void configureKeyBindings();
344 void removeVoice(); 345 void removeVoice();
345#ifdef KAB_EMBEDDED 346#ifdef KAB_EMBEDDED
346 void configureResources(); 347 void configureResources();
@@ -378,12 +379,14 @@ class KABCore : public QWidget
378#endif //KAB_EMBEDDED 379#endif //KAB_EMBEDDED
379 // QDict<AddresseeEditorDialog> mEditorDict; 380 // QDict<AddresseeEditorDialog> mEditorDict;
380 AddresseeEditorDialog *mEditorDialog; 381 AddresseeEditorDialog *mEditorDialog;
381 bool mReadWrite; 382 bool mReadWrite;
382 bool mModified; 383 bool mModified;
383 bool mIsPart; 384 bool mIsPart;
385 bool mMultipleViewsAtOnce;
386
384 387
385 //US file menu 388 //US file menu
386 KAction *mActionMail; 389 KAction *mActionMail;
387 KAction *mActionBeam; 390 KAction *mActionBeam;
388 KAction* mActionPrint; 391 KAction* mActionPrint;
389 KAction* mActionNewContact; 392 KAction* mActionNewContact;