summaryrefslogtreecommitdiffabout
authorulf69 <ulf69>2004-08-11 01:57:44 (UTC)
committer ulf69 <ulf69>2004-08-11 01:57:44 (UTC)
commit4e4e196bc4fbe4e078b4fbe6b372bd643bf372f1 (patch) (unidiff)
treec582e58964a01157962c2c9b605bc501ddbe2771
parent42860986468bb90c55783fcebc1b20bd3ee460ac (diff)
downloadkdepimpi-4e4e196bc4fbe4e078b4fbe6b372bd643bf372f1.zip
kdepimpi-4e4e196bc4fbe4e078b4fbe6b372bd643bf372f1.tar.gz
kdepimpi-4e4e196bc4fbe4e078b4fbe6b372bd643bf372f1.tar.bz2
added special detailview handling for small devices. Now the behavior is
a little bit similar to qtopia and opie addressbook
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp108
-rw-r--r--kaddressbook/kabcore.h6
2 files changed, 94 insertions, 20 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 6610288..96603e6 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -184,18 +184,28 @@ KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const
184 184
185 initGUI(); 185 initGUI();
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 connect( mViewManager, SIGNAL( executed( const QString& ) ), 192
193 //small devices show only the details view. bigger devices can edit the entry
194 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
195 connect( mViewManager, SIGNAL( executed( const QString& ) ),
193 SLOT( editContact( 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 connect( mViewManager, SIGNAL( deleteRequest( ) ), 204 connect( mViewManager, SIGNAL( deleteRequest( ) ),
195 SLOT( deleteContacts( ) ) ); 205 SLOT( deleteContacts( ) ) );
196 connect( mViewManager, SIGNAL( modified() ), 206 connect( mViewManager, SIGNAL( modified() ),
197 SLOT( setModified() ) ); 207 SLOT( setModified() ) );
198 208
199 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) ); 209 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) );
200 210
201 connect( mXXPortManager, SIGNAL( modified() ), 211 connect( mXXPortManager, SIGNAL( modified() ),
@@ -231,25 +241,32 @@ KABCore::~KABCore()
231 //KABPrefs::instance()->writeConfig(); 241 //KABPrefs::instance()->writeConfig();
232 delete AddresseeConfig::instance(); 242 delete AddresseeConfig::instance();
233 mAddressBook = 0; 243 mAddressBook = 0;
234 KABC::StdAddressBook::close(); 244 KABC::StdAddressBook::close();
235} 245}
236 246
237void KABCore::restoreSettings() 247void KABCore::restoreSettings()
238{ 248{
239 bool state = KABPrefs::instance()->mJumpButtonBarVisible; 249 bool state;
240 250
241 mActionJumpBar->setChecked( state ); 251 //small devices have at startup the details view disabled
242 setJumpButtonBarVisible( state ); 252 if (KGlobal::getDesktopSize() > KGlobal::Small )
243 253 state = KABPrefs::instance()->mDetailsPageVisible;
244 state = KABPrefs::instance()->mDetailsPageVisible; 254 else
255 state = false;
245 256
246 mActionDetails->setChecked( state ); 257 mActionDetails->setChecked( state );
247 setDetailsVisible( state ); 258 setDetailsVisible( state );
259
260 state = KABPrefs::instance()->mJumpButtonBarVisible;
261
262 mActionJumpBar->setChecked( state );
263 setJumpButtonBarVisible( state );
264
248 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 265 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
249 if ( splitterSize.count() == 0 ) { 266 if ( splitterSize.count() == 0 ) {
250 splitterSize.append( width() / 2 ); 267 splitterSize.append( width() / 2 );
251 splitterSize.append( width() / 2 ); 268 splitterSize.append( width() / 2 );
252 } 269 }
253 mMiniSplitter->setSizes( splitterSize ); 270 mMiniSplitter->setSizes( splitterSize );
254 if ( mExtensionBarSplitter ) { 271 if ( mExtensionBarSplitter ) {
255 splitterSize = KABPrefs::instance()->mExtensionsSplitter; 272 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
@@ -274,19 +291,18 @@ void KABCore::restoreSettings()
274 splitterSize.append( height() / 2 ); 291 splitterSize.append( height() / 2 );
275 } 292 }
276 mDetailsSplitter->setSizes( splitterSize ); 293 mDetailsSplitter->setSizes( splitterSize );
277 294
278 mExtensionManager->restoreSettings(); 295 mExtensionManager->restoreSettings();
279 296
280#endif //KAB_EMBEDDED 297#endif //KAB_EMBEDDED
281 298
282 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
283
284 mViewManager->restoreSettings(); 299 mViewManager->restoreSettings();
300 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
285 mExtensionManager->restoreSettings(); 301 mExtensionManager->restoreSettings();
286} 302}
287 303
288void KABCore::saveSettings() 304void KABCore::saveSettings()
289{ 305{
290 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked(); 306 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked();
291 if ( mExtensionBarSplitter ) 307 if ( mExtensionBarSplitter )
292 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 308 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
@@ -296,17 +312,16 @@ void KABCore::saveSettings()
296 312
297 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 313 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
298 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes(); 314 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes();
299#endif //KAB_EMBEDDED 315#endif //KAB_EMBEDDED
300 mExtensionManager->saveSettings(); 316 mExtensionManager->saveSettings();
301 mViewManager->saveSettings(); 317 mViewManager->saveSettings();
302 318
303 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem(); 319 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem();
304
305} 320}
306 321
307KABC::AddressBook *KABCore::addressBook() const 322KABC::AddressBook *KABCore::addressBook() const
308{ 323{
309 return mAddressBook; 324 return mAddressBook;
310} 325}
311 326
312KConfig *KABCore::config() 327KConfig *KABCore::config()
@@ -410,17 +425,17 @@ void KABCore::createAboutData()
410 "(c) 2004 Lutz Rogowski Import from OL rogowski@kde.org\n" 425 "(c) 2004 Lutz Rogowski Import from OL rogowski@kde.org\n"
411#endif 426#endif
412 ); 427 );
413} 428}
414 429
415void KABCore::setContactSelected( const QString &uid ) 430void KABCore::setContactSelected( const QString &uid )
416{ 431{
417 KABC::Addressee addr = mAddressBook->findByUid( uid ); 432 KABC::Addressee addr = mAddressBook->findByUid( uid );
418 if ( !mDetails->isHidden() ) 433//US if ( !mDetails->isHidden() )
419 mDetails->setAddressee( addr ); 434 mDetails->setAddressee( addr );
420 435
421 if ( !addr.isEmpty() ) { 436 if ( !addr.isEmpty() ) {
422 emit contactSelected( addr.formattedName() ); 437 emit contactSelected( addr.formattedName() );
423 KABC::Picture pic = addr.photo(); 438 KABC::Picture pic = addr.photo();
424 if ( pic.isIntern() ) { 439 if ( pic.isIntern() ) {
425//US emit contactSelected( pic.data() ); 440//US emit contactSelected( pic.data() );
426//US instead use: 441//US instead use:
@@ -1036,16 +1051,27 @@ void KABCore::editContact( const QString &uid )
1036 1051
1037 KABC::Addressee addr = mAddressBook->findByUid( localUID ); 1052 KABC::Addressee addr = mAddressBook->findByUid( localUID );
1038 if ( !addr.isEmpty() ) { 1053 if ( !addr.isEmpty() ) {
1039 mEditorDialog->setAddressee( addr ); 1054 mEditorDialog->setAddressee( addr );
1040 KApplication::execDialog ( mEditorDialog ); 1055 KApplication::execDialog ( mEditorDialog );
1041 } 1056 }
1042} 1057}
1043 1058
1059/**
1060 Shows 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.
1062 We call this method only if we use a small device. Bigger devices are calling editContact instead
1063 */
1064void KABCore::showContact( const QString &uid /*US = QString::null*/ )
1065{
1066 setDetailsVisible( true );
1067 mActionDetails->setChecked(true);
1068}
1069
1044void KABCore::save() 1070void KABCore::save()
1045{ 1071{
1046 if ( !mModified ) 1072 if ( !mModified )
1047 return; 1073 return;
1048 QString text = i18n( "There was an error while attempting to save\n the " 1074 QString text = i18n( "There was an error while attempting to save\n the "
1049 "address book. Please check that some \nother application is " 1075 "address book. Please check that some \nother application is "
1050 "not using it. " ); 1076 "not using it. " );
1051 statusMessage(i18n("Saving addressbook ... ")); 1077 statusMessage(i18n("Saving addressbook ... "));
@@ -1083,32 +1109,72 @@ void KABCore::redo()
1083 RedoStack::instance()->redo(); 1109 RedoStack::instance()->redo();
1084 1110
1085 // Refresh the view 1111 // Refresh the view
1086 mViewManager->refreshView(); 1112 mViewManager->refreshView();
1087} 1113}
1088 1114
1089void KABCore::setJumpButtonBarVisible( bool visible ) 1115void KABCore::setJumpButtonBarVisible( bool visible )
1090{ 1116{
1091 if ( visible ) 1117 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
1092 mJumpButtonBar->show(); 1118 if ( visible )
1119 mJumpButtonBar->show();
1120 else
1121 mJumpButtonBar->hide();
1122 }
1093 else 1123 else
1094 mJumpButtonBar->hide(); 1124 {
1125 // for the Z5500, show the jumpbar only if "the details are hidden" == "viewmanager are shown"
1126 if (mViewManager->isVisible())
1127 {
1128 if ( visible )
1129 mJumpButtonBar->show();
1130 else
1131 mJumpButtonBar->hide();
1132 }
1133 else
1134 {
1135 mJumpButtonBar->hide();
1136 }
1137 }
1095} 1138}
1096void KABCore::setDetailsToState() 1139void KABCore::setDetailsToState()
1097{ 1140{
1098 setDetailsVisible( mActionDetails->isChecked() ); 1141 setDetailsVisible( mActionDetails->isChecked() );
1099} 1142}
1100 1143
1144
1145
1101void KABCore::setDetailsVisible( bool visible ) 1146void KABCore::setDetailsVisible( bool visible )
1102{ 1147{
1103 if ( visible ) 1148 //US "details visible" has two different meanings for small devices like the 5500
1104 mDetails->show(); 1149 // compared with large devices like the c series.
1150
1151 // small devices: mDetails is always visible. But we switch between
1152 // the listview and the detailview. We do that by changing the splitbar size.
1153 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
1154 if ( visible )
1155 mDetails->show();
1156 else
1157 mDetails->hide();
1158 }
1105 else 1159 else
1106 mDetails->hide(); 1160 {
1161 if ( visible ) {
1162 mViewManager->hide();
1163 mDetails->show();
1164// mDetails->show();
1165 }
1166 else {
1167 mViewManager->show();
1168 mDetails->hide();
1169 }
1170 setJumpButtonBarVisible( !visible );
1171
1172 }
1107} 1173}
1108 1174
1109void KABCore::extensionModified( const KABC::Addressee::List &list ) 1175void KABCore::extensionModified( const KABC::Addressee::List &list )
1110{ 1176{
1111 1177
1112 if ( list.count() != 0 ) { 1178 if ( list.count() != 0 ) {
1113 KABC::Addressee::List::ConstIterator it; 1179 KABC::Addressee::List::ConstIterator it;
1114 for ( it = list.begin(); it != list.end(); ++it ) 1180 for ( it = list.begin(); it != list.end(); ++it )
@@ -1566,17 +1632,17 @@ void KABCore::initActions()
1566 1632
1567 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 1633 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
1568 } 1634 }
1569 1635
1570 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 1636 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
1571 actionCollection(), "options_show_jump_bar" ); 1637 actionCollection(), "options_show_jump_bar" );
1572 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) ); 1638 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) );
1573 1639
1574 mActionDetails = new KToggleAction( i18n( "Show Details" ), 0, 0, 1640 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0,
1575 actionCollection(), "options_show_details" ); 1641 actionCollection(), "options_show_details" );
1576 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 1642 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
1577 1643
1578 // misc 1644 // misc
1579 // only enable LDAP lookup if we can handle the protocol 1645 // only enable LDAP lookup if we can handle the protocol
1580#ifndef KAB_EMBEDDED 1646#ifndef KAB_EMBEDDED
1581 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 1647 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
1582 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 1648 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
@@ -1674,16 +1740,17 @@ void KABCore::addActionsManually()
1674 mActionPrint->plug( fileMenu ); 1740 mActionPrint->plug( fileMenu );
1675 mActionMail->plug( fileMenu ); 1741 mActionMail->plug( fileMenu );
1676 fileMenu->insertSeparator(); 1742 fileMenu->insertSeparator();
1677 1743
1678 mActionNewContact->plug( fileMenu ); 1744 mActionNewContact->plug( fileMenu );
1679 mActionNewContact->plug( tb ); 1745 mActionNewContact->plug( tb );
1680 1746
1681 mActionEditAddressee->plug( fileMenu ); 1747 mActionEditAddressee->plug( fileMenu );
1748 mActionEditAddressee->plug( tb );
1682 fileMenu->insertSeparator(); 1749 fileMenu->insertSeparator();
1683 mActionSave->plug( fileMenu ); 1750 mActionSave->plug( fileMenu );
1684 fileMenu->insertItem( "&Import", ImportMenu ); 1751 fileMenu->insertItem( "&Import", ImportMenu );
1685 fileMenu->insertItem( "&Emport", ExportMenu ); 1752 fileMenu->insertItem( "&Emport", ExportMenu );
1686 fileMenu->insertSeparator(); 1753 fileMenu->insertSeparator();
1687 mActionMailVCard->plug( fileMenu ); 1754 mActionMailVCard->plug( fileMenu );
1688#ifndef DESKTOP_VERSION 1755#ifndef DESKTOP_VERSION
1689 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu ); 1756 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu );
@@ -1721,30 +1788,31 @@ void KABCore::addActionsManually()
1721 } else { 1788 } else {
1722 mActionKeyBindings->plug( settingsMenu ); 1789 mActionKeyBindings->plug( settingsMenu );
1723 } 1790 }
1724 1791
1725 settingsMenu->insertSeparator(); 1792 settingsMenu->insertSeparator();
1726 1793
1727 mActionJumpBar->plug( settingsMenu ); 1794 mActionJumpBar->plug( settingsMenu );
1728 mActionDetails->plug( settingsMenu ); 1795 mActionDetails->plug( settingsMenu );
1796 if (KGlobal::getDesktopSize() == KGlobal::Small )
1797 mActionDetails->plug( tb );
1729 settingsMenu->insertSeparator(); 1798 settingsMenu->insertSeparator();
1730 1799
1731 mActionWhoAmI->plug( settingsMenu ); 1800 mActionWhoAmI->plug( settingsMenu );
1732 mActionCategories->plug( settingsMenu ); 1801 mActionCategories->plug( settingsMenu );
1733 1802
1734 mActionAboutKAddressbook->plug( helpMenu ); 1803 mActionAboutKAddressbook->plug( helpMenu );
1735 mActionLicence->plug( helpMenu ); 1804 mActionLicence->plug( helpMenu );
1736 1805
1737 if (QApplication::desktop()->width() > 320 ) { 1806 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
1738 1807
1739 mActionEditAddressee->plug( tb );
1740 mActionSave->plug( tb ); 1808 mActionSave->plug( tb );
1741 mViewManager->getFilterAction()->plug ( tb); 1809 mViewManager->getFilterAction()->plug ( tb);
1742 if (QApplication::desktop()->width() > 480 ) { 1810 if (KGlobal::getDesktopSize() == KGlobal::Desktop ) {
1743 mActionUndo->plug( tb ); 1811 mActionUndo->plug( tb );
1744 mActionDelete->plug( tb ); 1812 mActionDelete->plug( tb );
1745 mActionRedo->plug( tb ); 1813 mActionRedo->plug( tb );
1746 } 1814 }
1747 } 1815 }
1748 //mActionQuit->plug ( tb ); 1816 //mActionQuit->plug ( tb );
1749 // tb->insertWidget(-1, 0, mIncSearchWidget, 6); 1817 // tb->insertWidget(-1, 0, mIncSearchWidget, 6);
1750 1818
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index 6bbdfd4..a45c4c6 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -297,16 +297,22 @@ class KABCore : public QWidget
297 Shows the edit dialog for the given uid. If the uid is QString::null, 297 Shows the edit dialog for the given uid. If the uid is QString::null,
298 the method will try to find a selected addressee in the view. 298 the method will try to find a selected addressee in the view.
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,
306 the method will try to find a selected addressee in the view.
307 */
308 void showContact( const QString &uid /*US = QString::null*/ );
309
310 /**
305 Launches the configuration dialog. 311 Launches the configuration dialog.
306 */ 312 */
307 void openConfigDialog(); 313 void openConfigDialog();
308 314
309 /** 315 /**
310 Launches the ldap search dialog. 316 Launches the ldap search dialog.
311 */ 317 */
312 void openLDAPDialog(); 318 void openLDAPDialog();