summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/addressbook.cpp44
1 files changed, 36 insertions, 8 deletions
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index a4c2c6e..7c52ef2 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -705,24 +705,40 @@ void AddressbookWindow::editPersonal()
void AddressbookWindow::slotPersonalView()
{
odebug << "slotPersonalView()" << oendl;
bool personal = m_actionPersonal->isOn();
- // Disable certain menu items when showing personal details
+ // Disable actions when showing personal details
setItemNewEnabled( !personal );
setItemDuplicateEnabled( !personal );
setItemDeleteEnabled( !personal );
m_actionMail->setEnabled( !personal );
+ setShowCategories( !personal );
// Display appropriate view
m_abView->showPersonal( personal );
- // Set application caption
- personal ? setCaption( tr( "Contacts - My Personal Details") )
- : setCaption( tr( "Contacts") );
+ if ( personal )
+ {
+ setCaption( tr( "Contacts - My Personal Details") );
+
+ // Set category to 'All' to make sure personal details is visible
+ setViewCategory( "All" );
+ m_abView->setShowByCategory( "All" );
+
+ // Temporarily disable letter picker
+ pLabel->hide();
+ }
+ else
+ {
+ setCaption( tr( "Contacts") );
+
+ // Re-enable letter picker
+ pLabel->show();
+ }
}
void AddressbookWindow::reload()
{
syncing = false;
m_abView->clear();
@@ -735,16 +751,28 @@ void AddressbookWindow::flush()
m_abView->save();
}
void AddressbookWindow::closeEvent( QCloseEvent *e )
{
- if(active_view == AbView::CardView){
- slotViewSwitched( AbView::TableView );
- e->ignore();
- return;
+ if ( active_view == AbView::CardView )
+ {
+ if ( !m_actionPersonal->isOn() )
+ {
+ // Switch to table view only if not editing personal details
+ slotViewSwitched( AbView::TableView );
+ }
+ else
+ {
+ // If currently editing personal details, switch off personal view
+ m_actionPersonal->setOn( false );
+ slotPersonalView();
+ }
+
+ e->ignore();
+ return;
}
if(syncing) {
/* shouldn't we save, I hear you say? well its already been set
so that an edit can not occur during a sync, and we flushed
at the start of the sync, so there is no need to save
Saving however itself would cause problems. */