summaryrefslogtreecommitdiffabout
path: root/kaddressbook
authorulf69 <ulf69>2004-08-11 01:57:44 (UTC)
committer ulf69 <ulf69>2004-08-11 01:57:44 (UTC)
commit4e4e196bc4fbe4e078b4fbe6b372bd643bf372f1 (patch) (side-by-side diff)
treec582e58964a01157962c2c9b605bc501ddbe2771 /kaddressbook
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 (limited to 'kaddressbook') (more/less context) (show whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp92
-rw-r--r--kaddressbook/kabcore.h6
2 files changed, 86 insertions, 12 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 6610288..96603e6 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -190,6 +190,16 @@ KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const
connect( mViewManager, SIGNAL( selected( const QString& ) ),
SLOT( setContactSelected( const QString& ) ) );
+
+ //small devices show only the details view. bigger devices can edit the entry
+ if (KGlobal::getDesktopSize() > KGlobal::Small ) {
connect( mViewManager, SIGNAL( executed( const QString& ) ),
SLOT( editContact( const QString& ) ) );
+ }
+ else
+ {
+ connect( mViewManager, SIGNAL( executed( const QString& ) ),
+ SLOT( showContact( const QString& ) ) );
+ }
+
connect( mViewManager, SIGNAL( deleteRequest( ) ),
SLOT( deleteContacts( ) ) );
@@ -237,13 +247,20 @@ KABCore::~KABCore()
void KABCore::restoreSettings()
{
- bool state = KABPrefs::instance()->mJumpButtonBarVisible;
-
- mActionJumpBar->setChecked( state );
- setJumpButtonBarVisible( state );
+ bool state;
+ //small devices have at startup the details view disabled
+ if (KGlobal::getDesktopSize() > KGlobal::Small )
state = KABPrefs::instance()->mDetailsPageVisible;
+ else
+ state = false;
mActionDetails->setChecked( state );
setDetailsVisible( state );
+
+ state = KABPrefs::instance()->mJumpButtonBarVisible;
+
+ mActionJumpBar->setChecked( state );
+ setJumpButtonBarVisible( state );
+
QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
if ( splitterSize.count() == 0 ) {
@@ -280,7 +297,6 @@ void KABCore::restoreSettings()
#endif //KAB_EMBEDDED
- mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
-
mViewManager->restoreSettings();
+ mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
mExtensionManager->restoreSettings();
}
@@ -302,5 +318,4 @@ void KABCore::saveSettings()
KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem();
-
}
@@ -416,5 +431,5 @@ void KABCore::setContactSelected( const QString &uid )
{
KABC::Addressee addr = mAddressBook->findByUid( uid );
- if ( !mDetails->isHidden() )
+//US if ( !mDetails->isHidden() )
mDetails->setAddressee( addr );
@@ -1042,4 +1057,15 @@ void KABCore::editContact( const QString &uid )
}
+/**
+ Shows the detail view for the given uid. If the uid is QString::null,
+ the method will try to find a selected addressee in the view.
+ We call this method only if we use a small device. Bigger devices are calling editContact instead
+ */
+void KABCore::showContact( const QString &uid /*US = QString::null*/ )
+{
+ setDetailsVisible( true );
+ mActionDetails->setChecked(true);
+}
+
void KABCore::save()
{
@@ -1089,4 +1115,15 @@ void KABCore::redo()
void KABCore::setJumpButtonBarVisible( bool visible )
{
+ if (KGlobal::getDesktopSize() > KGlobal::Small ) {
+ if ( visible )
+ mJumpButtonBar->show();
+ else
+ mJumpButtonBar->hide();
+ }
+ else
+ {
+ // for the Z5500, show the jumpbar only if "the details are hidden" == "viewmanager are shown"
+ if (mViewManager->isVisible())
+ {
if ( visible )
mJumpButtonBar->show();
@@ -1094,4 +1131,10 @@ void KABCore::setJumpButtonBarVisible( bool visible )
mJumpButtonBar->hide();
}
+ else
+ {
+ mJumpButtonBar->hide();
+ }
+ }
+}
void KABCore::setDetailsToState()
{
@@ -1099,6 +1142,14 @@ void KABCore::setDetailsToState()
}
+
+
void KABCore::setDetailsVisible( bool visible )
{
+ //US "details visible" has two different meanings for small devices like the 5500
+ // compared with large devices like the c series.
+
+ // small devices: mDetails is always visible. But we switch between
+ // the listview and the detailview. We do that by changing the splitbar size.
+ if (KGlobal::getDesktopSize() > KGlobal::Small ) {
if ( visible )
mDetails->show();
@@ -1106,4 +1157,19 @@ void KABCore::setDetailsVisible( bool visible )
mDetails->hide();
}
+ else
+ {
+ if ( visible ) {
+ mViewManager->hide();
+ mDetails->show();
+// mDetails->show();
+ }
+ else {
+ mViewManager->show();
+ mDetails->hide();
+ }
+ setJumpButtonBarVisible( !visible );
+
+ }
+}
void KABCore::extensionModified( const KABC::Addressee::List &list )
@@ -1572,5 +1638,5 @@ void KABCore::initActions()
connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) );
- mActionDetails = new KToggleAction( i18n( "Show Details" ), 0, 0,
+ mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0,
actionCollection(), "options_show_details" );
connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
@@ -1680,4 +1746,5 @@ void KABCore::addActionsManually()
mActionEditAddressee->plug( fileMenu );
+ mActionEditAddressee->plug( tb );
fileMenu->insertSeparator();
mActionSave->plug( fileMenu );
@@ -1727,4 +1794,6 @@ void KABCore::addActionsManually()
mActionJumpBar->plug( settingsMenu );
mActionDetails->plug( settingsMenu );
+ if (KGlobal::getDesktopSize() == KGlobal::Small )
+ mActionDetails->plug( tb );
settingsMenu->insertSeparator();
@@ -1735,10 +1804,9 @@ void KABCore::addActionsManually()
mActionLicence->plug( helpMenu );
- if (QApplication::desktop()->width() > 320 ) {
+ if (KGlobal::getDesktopSize() > KGlobal::Small ) {
- mActionEditAddressee->plug( tb );
mActionSave->plug( tb );
mViewManager->getFilterAction()->plug ( tb);
- if (QApplication::desktop()->width() > 480 ) {
+ if (KGlobal::getDesktopSize() == KGlobal::Desktop ) {
mActionUndo->plug( tb );
mActionDelete->plug( tb );
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index 6bbdfd4..a45c4c6 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -303,4 +303,10 @@ class KABCore : public QWidget
/**
+ Shows the detail view for the given uid. If the uid is QString::null,
+ the method will try to find a selected addressee in the view.
+ */
+ void showContact( const QString &uid /*US = QString::null*/ );
+
+ /**
Launches the configuration dialog.
*/