summaryrefslogtreecommitdiffabout
path: root/kaddressbook
Unidiff
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp87
-rw-r--r--kaddressbook/kabprefs.cpp5
-rw-r--r--kaddressbook/kabprefs.h1
-rw-r--r--kaddressbook/kaddressbookview.h1
-rw-r--r--kaddressbook/kcmconfigs/kabconfigwidget.cpp7
-rw-r--r--kaddressbook/kcmconfigs/kabconfigwidget.h2
-rw-r--r--kaddressbook/viewmanager.cpp6
-rw-r--r--kaddressbook/views/kaddressbookcardview.cpp5
-rw-r--r--kaddressbook/views/kaddressbookcardview.h1
-rw-r--r--kaddressbook/views/kaddressbookiconview.cpp6
-rw-r--r--kaddressbook/views/kaddressbookiconview.h1
-rw-r--r--kaddressbook/views/kaddressbooktableview.cpp6
-rw-r--r--kaddressbook/views/kaddressbooktableview.h1
13 files changed, 80 insertions, 49 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index b0cb986..4964a6c 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1890,194 +1890,195 @@ void KABCore::initActions()
1890 this, SLOT( faq() ), actionCollection(), 1890 this, SLOT( faq() ), actionCollection(),
1891 "faq_about_data" ); 1891 "faq_about_data" );
1892 mActionWN = new KAction( i18n( "What's New?" ), 0, 1892 mActionWN = new KAction( i18n( "What's New?" ), 0,
1893 this, SLOT( whatsnew() ), actionCollection(), 1893 this, SLOT( whatsnew() ), actionCollection(),
1894 "wn" ); 1894 "wn" );
1895 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0, 1895 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0,
1896 this, SLOT( synchowto() ), actionCollection(), 1896 this, SLOT( synchowto() ), actionCollection(),
1897 "sync" ); 1897 "sync" );
1898 1898
1899 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 1899 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
1900 this, SLOT( createAboutData() ), actionCollection(), 1900 this, SLOT( createAboutData() ), actionCollection(),
1901 "kaddressbook_about_data" ); 1901 "kaddressbook_about_data" );
1902#endif //KAB_EMBEDDED 1902#endif //KAB_EMBEDDED
1903 1903
1904 clipboardDataChanged(); 1904 clipboardDataChanged();
1905 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1905 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1906 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1906 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1907} 1907}
1908 1908
1909//US we need this function, to plug all actions into the correct menues. 1909//US we need this function, to plug all actions into the correct menues.
1910// KDE uses a XML format to plug the actions, but we work her without this overhead. 1910// KDE uses a XML format to plug the actions, but we work her without this overhead.
1911void KABCore::addActionsManually() 1911void KABCore::addActionsManually()
1912{ 1912{
1913//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1913//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1914 1914
1915#ifdef KAB_EMBEDDED 1915#ifdef KAB_EMBEDDED
1916 QPopupMenu *fileMenu = new QPopupMenu( this ); 1916 QPopupMenu *fileMenu = new QPopupMenu( this );
1917 QPopupMenu *editMenu = new QPopupMenu( this ); 1917 QPopupMenu *editMenu = new QPopupMenu( this );
1918 QPopupMenu *helpMenu = new QPopupMenu( this ); 1918 QPopupMenu *helpMenu = new QPopupMenu( this );
1919 1919
1920 KToolBar* tb = mMainWindow->toolBar(); 1920 KToolBar* tb = mMainWindow->toolBar();
1921 1921
1922#ifdef DESKTOP_VERSION
1923 QMenuBar* mb = mMainWindow->menuBar();
1924
1925 //US setup menubar.
1926 //Disable the following block if you do not want to have a menubar.
1927 mb->insertItem( "&File", fileMenu );
1928 mb->insertItem( "&Edit", editMenu );
1929 mb->insertItem( "&View", viewMenu );
1930 mb->insertItem( "&Settings", settingsMenu );
1931 mb->insertItem( i18n("Synchronize"), syncMenu );
1932 mb->insertItem( "&Change selected", changeMenu );
1933 mb->insertItem( "&Help", helpMenu );
1934 mIncSearchWidget = new IncSearchWidget( tb );
1935 // tb->insertWidget(-1, 0, mIncSearchWidget);
1936
1937#else
1938 //US setup toolbar
1939 QPEMenuBar *menuBarTB = new QPEMenuBar( tb );
1940 QPopupMenu *popupBarTB = new QPopupMenu( this );
1941 menuBarTB->insertItem( "ME", popupBarTB);
1942 tb->insertWidget(-1, 0, menuBarTB);
1943 mIncSearchWidget = new IncSearchWidget( tb );
1944 1922
1945 tb->enableMoving(false); 1923 if ( KABPrefs::instance()->mFullMenuBarVisible ) {
1946 popupBarTB->insertItem( "&File", fileMenu ); 1924 QMenuBar* mb = mMainWindow->menuBar();
1947 popupBarTB->insertItem( "&Edit", editMenu ); 1925
1948 popupBarTB->insertItem( "&View", viewMenu ); 1926 //US setup menubar.
1949 popupBarTB->insertItem( "&Settings", settingsMenu ); 1927 //Disable the following block if you do not want to have a menubar.
1950 popupBarTB->insertItem( i18n("Synchronize"), syncMenu ); 1928 mb->insertItem( "&File", fileMenu );
1951 mViewManager->getFilterAction()->plug ( popupBarTB); 1929 mb->insertItem( "&Edit", editMenu );
1952 popupBarTB->insertItem( "&Change selected", changeMenu ); 1930 mb->insertItem( "&View", viewMenu );
1953 popupBarTB->insertItem( "&Help", helpMenu ); 1931 mb->insertItem( "&Settings", settingsMenu );
1954 if (QApplication::desktop()->width() > 320 ) { 1932 mb->insertItem( i18n("Synchronize"), syncMenu );
1955 // mViewManager->getFilterAction()->plug ( tb); 1933 mb->insertItem( "&Change selected", changeMenu );
1934 mb->insertItem( "&Help", helpMenu );
1935 mIncSearchWidget = new IncSearchWidget( tb );
1936 // tb->insertWidget(-1, 0, mIncSearchWidget);
1937
1938 } else {
1939 //US setup toolbar
1940 QPEMenuBar *menuBarTB = new QPEMenuBar( tb );
1941 QPopupMenu *popupBarTB = new QPopupMenu( this );
1942 menuBarTB->insertItem( "ME", popupBarTB);
1943 tb->insertWidget(-1, 0, menuBarTB);
1944 mIncSearchWidget = new IncSearchWidget( tb );
1945
1946 tb->enableMoving(false);
1947 popupBarTB->insertItem( "&File", fileMenu );
1948 popupBarTB->insertItem( "&Edit", editMenu );
1949 popupBarTB->insertItem( "&View", viewMenu );
1950 popupBarTB->insertItem( "&Settings", settingsMenu );
1951 popupBarTB->insertItem( i18n("Synchronize"), syncMenu );
1952 mViewManager->getFilterAction()->plug ( popupBarTB);
1953 popupBarTB->insertItem( "&Change selected", changeMenu );
1954 popupBarTB->insertItem( "&Help", helpMenu );
1955 if (QApplication::desktop()->width() > 320 ) {
1956 // mViewManager->getFilterAction()->plug ( tb);
1957 }
1956 } 1958 }
1957#endif
1958 // mActionQuit->plug ( mMainWindow->toolBar()); 1959 // mActionQuit->plug ( mMainWindow->toolBar());
1959 1960
1960 1961
1961 1962
1962 //US Now connect the actions with the menue entries. 1963 //US Now connect the actions with the menue entries.
1963 mActionPrint->plug( fileMenu ); 1964 mActionPrint->plug( fileMenu );
1964 mActionMail->plug( fileMenu ); 1965 mActionMail->plug( fileMenu );
1965 fileMenu->insertSeparator(); 1966 fileMenu->insertSeparator();
1966 1967
1967 mActionNewContact->plug( fileMenu ); 1968 mActionNewContact->plug( fileMenu );
1968 mActionNewContact->plug( tb ); 1969 mActionNewContact->plug( tb );
1969 1970
1970 mActionEditAddressee->plug( fileMenu ); 1971 mActionEditAddressee->plug( fileMenu );
1971 if ((KGlobal::getDesktopSize() > KGlobal::Small ) || 1972 // if ((KGlobal::getDesktopSize() > KGlobal::Small ) ||
1972 (!KABPrefs::instance()->mMultipleViewsAtOnce )) 1973 // (!KABPrefs::instance()->mMultipleViewsAtOnce ))
1973 mActionEditAddressee->plug( tb ); 1974 mActionEditAddressee->plug( tb );
1974 1975
1975 fileMenu->insertSeparator(); 1976 fileMenu->insertSeparator();
1976 mActionSave->plug( fileMenu ); 1977 mActionSave->plug( fileMenu );
1977 fileMenu->insertItem( "&Import", ImportMenu ); 1978 fileMenu->insertItem( "&Import", ImportMenu );
1978 fileMenu->insertItem( "&Export", ExportMenu ); 1979 fileMenu->insertItem( "&Export", ExportMenu );
1979 fileMenu->insertSeparator(); 1980 fileMenu->insertSeparator();
1980 mActionMailVCard->plug( fileMenu ); 1981 mActionMailVCard->plug( fileMenu );
1981#ifndef DESKTOP_VERSION 1982#ifndef DESKTOP_VERSION
1982 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu ); 1983 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu );
1983 if ( Ir::supported() ) mActionBeam->plug(fileMenu ); 1984 if ( Ir::supported() ) mActionBeam->plug(fileMenu );
1984#endif 1985#endif
1985 fileMenu->insertSeparator(); 1986 fileMenu->insertSeparator();
1986 mActionQuit->plug( fileMenu ); 1987 mActionQuit->plug( fileMenu );
1987#ifdef _WIN32_ 1988#ifdef _WIN32_
1988 mActionImportOL->plug( ImportMenu ); 1989 mActionImportOL->plug( ImportMenu );
1989#endif 1990#endif
1990 // edit menu 1991 // edit menu
1991 mActionUndo->plug( editMenu ); 1992 mActionUndo->plug( editMenu );
1992 mActionRedo->plug( editMenu ); 1993 mActionRedo->plug( editMenu );
1993 editMenu->insertSeparator(); 1994 editMenu->insertSeparator();
1994 mActionCut->plug( editMenu ); 1995 mActionCut->plug( editMenu );
1995 mActionCopy->plug( editMenu ); 1996 mActionCopy->plug( editMenu );
1996 mActionPaste->plug( editMenu ); 1997 mActionPaste->plug( editMenu );
1997 mActionDelete->plug( editMenu ); 1998 mActionDelete->plug( editMenu );
1998 editMenu->insertSeparator(); 1999 editMenu->insertSeparator();
1999 mActionSelectAll->plug( editMenu ); 2000 mActionSelectAll->plug( editMenu );
2000 2001
2001 mActionRemoveVoice->plug( changeMenu ); 2002 mActionRemoveVoice->plug( changeMenu );
2002 // settings menu 2003 // settings menu
2003//US special menuentry to configure the addressbook resources. On KDE 2004//US special menuentry to configure the addressbook resources. On KDE
2004// you do that through the control center !!! 2005// you do that through the control center !!!
2005 mActionConfigResources->plug( settingsMenu ); 2006 mActionConfigResources->plug( settingsMenu );
2006 settingsMenu->insertSeparator(); 2007 settingsMenu->insertSeparator();
2007 2008
2008 mActionConfigKAddressbook->plug( settingsMenu ); 2009 mActionConfigKAddressbook->plug( settingsMenu );
2009 2010
2010 if ( mIsPart ) { 2011 if ( mIsPart ) {
2011 //US not implemented yet 2012 //US not implemented yet
2012 //mActionConfigShortcuts->plug( settingsMenu ); 2013 //mActionConfigShortcuts->plug( settingsMenu );
2013 //mActionConfigureToolbars->plug( settingsMenu ); 2014 //mActionConfigureToolbars->plug( settingsMenu );
2014 2015
2015 } else { 2016 } else {
2016 //US not implemented yet 2017 //US not implemented yet
2017 //mActionKeyBindings->plug( settingsMenu ); 2018 //mActionKeyBindings->plug( settingsMenu );
2018 } 2019 }
2019 2020
2020 settingsMenu->insertSeparator(); 2021 settingsMenu->insertSeparator();
2021 2022
2022 mActionJumpBar->plug( settingsMenu ); 2023 mActionJumpBar->plug( settingsMenu );
2023 mActionDetails->plug( settingsMenu ); 2024 mActionDetails->plug( settingsMenu );
2024 if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop ) 2025 //if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop )
2025 mActionDetails->plug( tb ); 2026 mActionDetails->plug( tb );
2026 settingsMenu->insertSeparator(); 2027 settingsMenu->insertSeparator();
2027 mActionBR->plug(settingsMenu ); 2028 mActionBR->plug(settingsMenu );
2028 settingsMenu->insertSeparator(); 2029 settingsMenu->insertSeparator();
2029 2030
2030 mActionWhoAmI->plug( settingsMenu ); 2031 mActionWhoAmI->plug( settingsMenu );
2031 mActionCategories->plug( settingsMenu ); 2032 mActionCategories->plug( settingsMenu );
2032 2033
2033 2034
2034 mActionWN->plug( helpMenu ); 2035 mActionWN->plug( helpMenu );
2035 mActionSyncHowto->plug( helpMenu ); 2036 mActionSyncHowto->plug( helpMenu );
2036 mActionLicence->plug( helpMenu ); 2037 mActionLicence->plug( helpMenu );
2037 mActionFaq->plug( helpMenu ); 2038 mActionFaq->plug( helpMenu );
2038 mActionAboutKAddressbook->plug( helpMenu ); 2039 mActionAboutKAddressbook->plug( helpMenu );
2039 2040
2040 if (KGlobal::getDesktopSize() > KGlobal::Small ) { 2041 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
2041 2042
2042 mActionSave->plug( tb ); 2043 mActionSave->plug( tb );
2043 mViewManager->getFilterAction()->plug ( tb); 2044 mViewManager->getFilterAction()->plug ( tb);
2044 if (KGlobal::getDesktopSize() == KGlobal::Desktop ) { 2045 if (KGlobal::getDesktopSize() == KGlobal::Desktop ) {
2045 mActionUndo->plug( tb ); 2046 mActionUndo->plug( tb );
2046 mActionDelete->plug( tb ); 2047 mActionDelete->plug( tb );
2047 mActionRedo->plug( tb ); 2048 mActionRedo->plug( tb );
2048 } 2049 }
2049 } else { 2050 } else {
2050 if (KABPrefs::instance()->mMultipleViewsAtOnce ) 2051 mActionSave->plug( tb );
2051 mActionSave->plug( tb ); 2052 tb->enableMoving(false);
2052 } 2053 }
2053 //mActionQuit->plug ( tb ); 2054 //mActionQuit->plug ( tb );
2054 // tb->insertWidget(-1, 0, mIncSearchWidget, 6); 2055 // tb->insertWidget(-1, 0, mIncSearchWidget, 6);
2055 2056
2056 //US link the searchwidget first to this. 2057 //US link the searchwidget first to this.
2057 // The real linkage to the toolbar happens later. 2058 // The real linkage to the toolbar happens later.
2058//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE); 2059//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE);
2059//US tb->insertItem( mIncSearchWidget ); 2060//US tb->insertItem( mIncSearchWidget );
2060/*US 2061/*US
2061 mIncSearchWidget = new IncSearchWidget( tb ); 2062 mIncSearchWidget = new IncSearchWidget( tb );
2062 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 2063 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
2063 SLOT( incrementalSearch( const QString& ) ) ); 2064 SLOT( incrementalSearch( const QString& ) ) );
2064 2065
2065 mJumpButtonBar = new JumpButtonBar( this, this ); 2066 mJumpButtonBar = new JumpButtonBar( this, this );
2066 2067
2067//US topLayout->addWidget( mJumpButtonBar ); 2068//US topLayout->addWidget( mJumpButtonBar );
2068 this->layout()->add( mJumpButtonBar ); 2069 this->layout()->add( mJumpButtonBar );
2069*/ 2070*/
2070 2071
2071#endif //KAB_EMBEDDED 2072#endif //KAB_EMBEDDED
2072 2073
2073 mActionExport2phone->plug( ExportMenu ); 2074 mActionExport2phone->plug( ExportMenu );
2074 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) ); 2075 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) );
2075 syncManager->fillSyncMenu(); 2076 syncManager->fillSyncMenu();
2076 2077
2077} 2078}
2078void KABCore::showLicence() 2079void KABCore::showLicence()
2079{ 2080{
2080 KApplication::showLicence(); 2081 KApplication::showLicence();
2081} 2082}
2082void KABCore::removeVoice() 2083void KABCore::removeVoice()
2083{ 2084{
diff --git a/kaddressbook/kabprefs.cpp b/kaddressbook/kabprefs.cpp
index 3cbcc9a..db123da 100644
--- a/kaddressbook/kabprefs.cpp
+++ b/kaddressbook/kabprefs.cpp
@@ -38,64 +38,69 @@
38 38
39#include "kabprefs.h" 39#include "kabprefs.h"
40 40
41#ifdef DESKTOP_VERSION 41#ifdef DESKTOP_VERSION
42#include <qapplication.h> 42#include <qapplication.h>
43#endif 43#endif
44 44
45KABPrefs *KABPrefs::sInstance = 0; 45KABPrefs *KABPrefs::sInstance = 0;
46static KStaticDeleter<KABPrefs> staticDeleterAB; 46static KStaticDeleter<KABPrefs> staticDeleterAB;
47 47
48KABPrefs::KABPrefs() 48KABPrefs::KABPrefs()
49 : KPimPrefs("kaddressbookrc") 49 : KPimPrefs("kaddressbookrc")
50{ 50{
51 mDetailsFont = QFont("helvetica",12); 51 mDetailsFont = QFont("helvetica",12);
52 KPrefs::setCurrentGroup( "Views" ); 52 KPrefs::setCurrentGroup( "Views" );
53 addItemBool( "HonorSingleClick", &mHonorSingleClick, false ); 53 addItemBool( "HonorSingleClick", &mHonorSingleClick, false );
54 54
55 KPrefs::setCurrentGroup( "General" ); 55 KPrefs::setCurrentGroup( "General" );
56 addItemBool( "AutomaticNameParsing", &mAutomaticNameParsing, true ); 56 addItemBool( "AutomaticNameParsing", &mAutomaticNameParsing, true );
57 addItemInt( "CurrentIncSearchField", &mCurrentIncSearchField, 0 ); 57 addItemInt( "CurrentIncSearchField", &mCurrentIncSearchField, 0 );
58 58
59#ifdef KAB_EMBEDDED 59#ifdef KAB_EMBEDDED
60 addItemBool("AskForQuit",&mAskForQuit,true); 60 addItemBool("AskForQuit",&mAskForQuit,true);
61 addItemBool("ToolBarHor",&mToolBarHor, true ); 61 addItemBool("ToolBarHor",&mToolBarHor, true );
62 addItemBool("ToolBarUp",&mToolBarUp, false ); 62 addItemBool("ToolBarUp",&mToolBarUp, false );
63 addItemBool("SearchWithReturn",&mSearchWithReturn, true ); 63 addItemBool("SearchWithReturn",&mSearchWithReturn, true );
64 addItemFont("DetailsFont",&mDetailsFont); 64 addItemFont("DetailsFont",&mDetailsFont);
65 65
66 66
67#endif //KAB_EMBEDDED 67#endif //KAB_EMBEDDED
68 68
69 KPrefs::setCurrentGroup( "MainWindow" ); 69 KPrefs::setCurrentGroup( "MainWindow" );
70 bool m_visible = false;
71#ifdef DESKTOP_VERSION
72 m_visible = true;
73#endif
74 addItemBool( "FullMenuBarVisible", &mFullMenuBarVisible, m_visible );
70 addItemBool( "JumpButtonBarVisible", &mJumpButtonBarVisible, false ); 75 addItemBool( "JumpButtonBarVisible", &mJumpButtonBarVisible, false );
71 addItemBool( "DetailsPageVisible", &mDetailsPageVisible, true ); 76 addItemBool( "DetailsPageVisible", &mDetailsPageVisible, true );
72 addItemIntList( "ExtensionsSplitter", &mExtensionsSplitter ); 77 addItemIntList( "ExtensionsSplitter", &mExtensionsSplitter );
73 addItemIntList( "DetailsSplitter", &mDetailsSplitter ); 78 addItemIntList( "DetailsSplitter", &mDetailsSplitter );
74 addItemBool( "MultipleViewsAtOnce", &mMultipleViewsAtOnce, true ); 79 addItemBool( "MultipleViewsAtOnce", &mMultipleViewsAtOnce, true );
75 80
76 81
77 KPrefs::setCurrentGroup( "Extensions_General" ); 82 KPrefs::setCurrentGroup( "Extensions_General" );
78 QStringList defaultExtensions; 83 QStringList defaultExtensions;
79 defaultExtensions << "merge"; 84 defaultExtensions << "merge";
80 defaultExtensions << "distribution_list_editor"; 85 defaultExtensions << "distribution_list_editor";
81 addItemInt( "CurrentExtension", &mCurrentExtension, 0 ); 86 addItemInt( "CurrentExtension", &mCurrentExtension, 0 );
82 addItemStringList( "ActiveExtensions", &mActiveExtensions, defaultExtensions ); 87 addItemStringList( "ActiveExtensions", &mActiveExtensions, defaultExtensions );
83 88
84 KPrefs::setCurrentGroup( "Views" ); 89 KPrefs::setCurrentGroup( "Views" );
85 QString defaultView = i18n( "Default Table View" ); 90 QString defaultView = i18n( "Default Table View" );
86 addItemString( "CurrentView", &mCurrentView, defaultView ); 91 addItemString( "CurrentView", &mCurrentView, defaultView );
87 addItemStringList( "ViewNames", &mViewNames, defaultView ); 92 addItemStringList( "ViewNames", &mViewNames, defaultView );
88 93
89 KPrefs::setCurrentGroup( "Filters" ); 94 KPrefs::setCurrentGroup( "Filters" );
90 addItemInt( "CurrentFilter", &mCurrentFilter, 0 ); 95 addItemInt( "CurrentFilter", &mCurrentFilter, 0 );
91 96
92} 97}
93 98
94KABPrefs::~KABPrefs() 99KABPrefs::~KABPrefs()
95{ 100{
96 //qDebug("KABPrefs::~KABPrefs() "); 101 //qDebug("KABPrefs::~KABPrefs() ");
97 if (sInstance == this) 102 if (sInstance == this)
98 sInstance = staticDeleterAB.setObject(0); 103 sInstance = staticDeleterAB.setObject(0);
99} 104}
100 105
101KABPrefs *KABPrefs::instance() 106KABPrefs *KABPrefs::instance()
diff --git a/kaddressbook/kabprefs.h b/kaddressbook/kabprefs.h
index cc8413e..1e3b48f 100644
--- a/kaddressbook/kabprefs.h
+++ b/kaddressbook/kabprefs.h
@@ -36,60 +36,61 @@ class KABPrefs : public KPimPrefs
36 public: 36 public:
37 virtual ~KABPrefs(); 37 virtual ~KABPrefs();
38 38
39 static KABPrefs *instance(); 39 static KABPrefs *instance();
40 40
41 // General 41 // General
42 bool mHonorSingleClick; 42 bool mHonorSingleClick;
43 bool mAutomaticNameParsing; 43 bool mAutomaticNameParsing;
44 int mCurrentIncSearchField; 44 int mCurrentIncSearchField;
45 45
46#ifdef KAB_EMBEDDED 46#ifdef KAB_EMBEDDED
47 // US introduce a nonconst way to return the config object. 47 // US introduce a nonconst way to return the config object.
48 KConfig* getConfig(); 48 KConfig* getConfig();
49 49
50 bool mToolBarHor; 50 bool mToolBarHor;
51 bool mToolBarUp; 51 bool mToolBarUp;
52 bool mAskForQuit; 52 bool mAskForQuit;
53 53
54 54
55 /** Set preferences to default values */ 55 /** Set preferences to default values */
56// void usrSetDefaults(); 56// void usrSetDefaults();
57 57
58 /** Read preferences from config file */ 58 /** Read preferences from config file */
59// void usrReadConfig(); 59// void usrReadConfig();
60 60
61 /** Write preferences to config file */ 61 /** Write preferences to config file */
62// void usrWriteConfig(); 62// void usrWriteConfig();
63#endif //KAB_EMBEDDED 63#endif //KAB_EMBEDDED
64 void usrReadConfig(); 64 void usrReadConfig();
65 65
66 66
67 // GUI 67 // GUI
68 bool mFullMenuBarVisible;
68 bool mJumpButtonBarVisible; 69 bool mJumpButtonBarVisible;
69 bool mDetailsPageVisible; 70 bool mDetailsPageVisible;
70 bool mMultipleViewsAtOnce; 71 bool mMultipleViewsAtOnce;
71 bool mSearchWithReturn; 72 bool mSearchWithReturn;
72 QValueList<int> mExtensionsSplitter; 73 QValueList<int> mExtensionsSplitter;
73 QValueList<int> mDetailsSplitter; 74 QValueList<int> mDetailsSplitter;
74 75
75 // Extensions stuff 76 // Extensions stuff
76 int mCurrentExtension; 77 int mCurrentExtension;
77 QStringList mActiveExtensions; 78 QStringList mActiveExtensions;
78 79
79 // Views stuff 80 // Views stuff
80 QString mCurrentView; 81 QString mCurrentView;
81 QStringList mViewNames; 82 QStringList mViewNames;
82 83
83 // Filter 84 // Filter
84 int mCurrentFilter; 85 int mCurrentFilter;
85 86
86 void setCategoryDefaults(); 87 void setCategoryDefaults();
87 QFont mDetailsFont; 88 QFont mDetailsFont;
88 89
89 private: 90 private:
90 KABPrefs(); 91 KABPrefs();
91 92
92 static KABPrefs *sInstance; 93 static KABPrefs *sInstance;
93}; 94};
94 95
95#endif 96#endif
diff --git a/kaddressbook/kaddressbookview.h b/kaddressbook/kaddressbookview.h
index c134e96..2e91cbc 100644
--- a/kaddressbook/kaddressbookview.h
+++ b/kaddressbook/kaddressbookview.h
@@ -38,64 +38,65 @@ class QDropEvent;
38#include "viewconfigurewidget.h" 38#include "viewconfigurewidget.h"
39#include "filter.h" 39#include "filter.h"
40 40
41namespace KABC { class AddressBook; } 41namespace KABC { class AddressBook; }
42 42
43/** 43/**
44 Base class for all views in kaddressbook. This class implements 44 Base class for all views in kaddressbook. This class implements
45 all the common methods needed to provide a view to the user. 45 all the common methods needed to provide a view to the user.
46 46
47 To implement a specific view (table, card, etc), just inherit from 47 To implement a specific view (table, card, etc), just inherit from
48 this class and implement all the pure virtuals. 48 this class and implement all the pure virtuals.
49 49
50 @author Mike Pilone <mpilone@slac.com> 50 @author Mike Pilone <mpilone@slac.com>
51 */ 51 */
52class KAddressBookView : public QWidget 52class KAddressBookView : public QWidget
53{ 53{
54 Q_OBJECT 54 Q_OBJECT
55 55
56 public: 56 public:
57 enum DefaultFilterType { None = 0, Active = 1, Specific = 2 }; 57 enum DefaultFilterType { None = 0, Active = 1, Specific = 2 };
58 58
59 KAddressBookView( KABC::AddressBook *ab, QWidget *parent, const char *name ); 59 KAddressBookView( KABC::AddressBook *ab, QWidget *parent, const char *name );
60 virtual ~KAddressBookView(); 60 virtual ~KAddressBookView();
61 61
62 /** 62 /**
63 Must be overloaded in subclasses. Should return a list of 63 Must be overloaded in subclasses. Should return a list of
64 all the uids of selected contacts. 64 all the uids of selected contacts.
65 */ 65 */
66 virtual QStringList selectedUids() = 0; 66 virtual QStringList selectedUids() = 0;
67 virtual void doSearch( const QString& s ,KABC::Field *field ) = 0; 67 virtual void doSearch( const QString& s ,KABC::Field *field ) = 0;
68 virtual void scrollUP() = 0; 68 virtual void scrollUP() = 0;
69 virtual void scrollDOWN() = 0; 69 virtual void scrollDOWN() = 0;
70 virtual void setFocusAV() = 0;
70 71
71 /** 72 /**
72 Called whenever this view should read the config. This can be used 73 Called whenever this view should read the config. This can be used
73 as a sign that the config has changed, therefore the view should 74 as a sign that the config has changed, therefore the view should
74 assume the worst and rebuild itself if necessary. For example, 75 assume the worst and rebuild itself if necessary. For example,
75 in a table view this method may be called when the user adds or 76 in a table view this method may be called when the user adds or
76 removes columns from the view. 77 removes columns from the view.
77 78
78 If overloaded in the subclass, do not forget to call super class's 79 If overloaded in the subclass, do not forget to call super class's
79 method. 80 method.
80 81
81 @param config The KConfig object to read from. The group will already 82 @param config The KConfig object to read from. The group will already
82 be set, so do not change the group. 83 be set, so do not change the group.
83 */ 84 */
84 virtual void readConfig( KConfig *config ); 85 virtual void readConfig( KConfig *config );
85 86
86 /** 87 /**
87 Called whenever this view should write the config. The view should not 88 Called whenever this view should write the config. The view should not
88 write out information handled by the application, such as which fields 89 write out information handled by the application, such as which fields
89 are visible. The view should only write out information specific 90 are visible. The view should only write out information specific
90 to itself (i.e.: All information in the ViewConfigWidget) 91 to itself (i.e.: All information in the ViewConfigWidget)
91 92
92 If overloaded in the subclass, do not forget to call the super class's 93 If overloaded in the subclass, do not forget to call the super class's
93 method. 94 method.
94 95
95 @param config The KConfig object to read from. The group will already 96 @param config The KConfig object to read from. The group will already
96 be set, so do not change the group. 97 be set, so do not change the group.
97 */ 98 */
98 virtual void writeConfig( KConfig *config ); 99 virtual void writeConfig( KConfig *config );
99 100
100 /** 101 /**
101 Returns a QString with all the selected email addresses concatenated 102 Returns a QString with all the selected email addresses concatenated
diff --git a/kaddressbook/kcmconfigs/kabconfigwidget.cpp b/kaddressbook/kcmconfigs/kabconfigwidget.cpp
index 936d052..8bf9bb0 100644
--- a/kaddressbook/kcmconfigs/kabconfigwidget.cpp
+++ b/kaddressbook/kcmconfigs/kabconfigwidget.cpp
@@ -90,156 +90,159 @@ KABConfigWidget::KABConfigWidget( KABPrefs* prefs, QWidget *parent, const char *
90{ 90{
91 QVBoxLayout *topLayout = new QVBoxLayout( this, 0, 91 QVBoxLayout *topLayout = new QVBoxLayout( this, 0,
92 KDialog::spacingHint() ); 92 KDialog::spacingHint() );
93 93
94 QTabWidget *tabWidget = new QTabWidget( this ); 94 QTabWidget *tabWidget = new QTabWidget( this );
95 topLayout->addWidget( tabWidget ); 95 topLayout->addWidget( tabWidget );
96 96
97 // General page 97 // General page
98 QWidget *generalPage = new QWidget( this ); 98 QWidget *generalPage = new QWidget( this );
99 QVBoxLayout *layout = new QVBoxLayout( generalPage, KDialog::marginHintSmall(), 99 QVBoxLayout *layout = new QVBoxLayout( generalPage, KDialog::marginHintSmall(),
100 KDialog::spacingHintSmall() ); 100 KDialog::spacingHintSmall() );
101 101
102 102
103 QWidget *hBox = new QWidget( generalPage, "qhbox" ); 103 QWidget *hBox = new QWidget( generalPage, "qhbox" );
104 QHBoxLayout *hboxLayout = new QHBoxLayout( hBox); 104 QHBoxLayout *hboxLayout = new QHBoxLayout( hBox);
105 KPrefsWidFont *detailsFont = 105 KPrefsWidFont *detailsFont =
106 addWidFont(i18n("phone:123"),i18n("Details view font"), 106 addWidFont(i18n("phone:123"),i18n("Details view font"),
107 &(KABPrefs::instance()->mDetailsFont),hBox); 107 &(KABPrefs::instance()->mDetailsFont),hBox);
108 hboxLayout->addWidget(detailsFont->label()); 108 hboxLayout->addWidget(detailsFont->label());
109 hboxLayout->addWidget(detailsFont->preview()); 109 hboxLayout->addWidget(detailsFont->preview());
110 hboxLayout->addWidget(detailsFont->button()); 110 hboxLayout->addWidget(detailsFont->button());
111 hboxLayout->setMargin(KDialog::marginHintSmall() ); 111 hboxLayout->setMargin(KDialog::marginHintSmall() );
112 hboxLayout->setSpacing(KDialog::spacingHintSmall()); 112 hboxLayout->setSpacing(KDialog::spacingHintSmall());
113 //hBox->setBackgroundColor( black); 113 //hBox->setBackgroundColor( black);
114 layout->addWidget( hBox ); 114 layout->addWidget( hBox );
115 115
116 //general groupbox 116 //general groupbox
117 QWidget *vBox = new QWidget( generalPage, "qvbox" ); 117 QWidget *vBox = new QWidget( generalPage, "qvbox" );
118 QVBoxLayout *boxLayout = new QVBoxLayout( vBox ); 118 QVBoxLayout *boxLayout = new QVBoxLayout( vBox );
119 boxLayout->setAlignment( Qt::AlignTop ); 119 boxLayout->setAlignment( Qt::AlignTop );
120 boxLayout->setMargin(KDialog::marginHintSmall() ); 120 boxLayout->setMargin(KDialog::marginHintSmall() );
121 boxLayout->setSpacing( KDialog::spacingHintSmall() ); 121 boxLayout->setSpacing( KDialog::spacingHintSmall() );
122 mMenuBarBox = new QCheckBox( i18n( "Full Menu bar (restart)" ), vBox, "mremenuturn" );
123 boxLayout->addWidget( mMenuBarBox );
122 mSearchReturnBox = new QCheckBox( i18n( "Search only after <return> key pressed" ), vBox, "mreturn" ); 124 mSearchReturnBox = new QCheckBox( i18n( "Search only after <return> key pressed" ), vBox, "mreturn" );
123 boxLayout->addWidget( mSearchReturnBox ); 125 boxLayout->addWidget( mSearchReturnBox );
124 mViewsSingleClickBox = new QCheckBox( i18n( "Honor KDE single click" ), vBox, "msingle" ); 126 mViewsSingleClickBox = new QCheckBox( i18n( "Honor KDE single click" ), vBox, "msingle" );
125 boxLayout->addWidget( mViewsSingleClickBox ); 127 boxLayout->addWidget( mViewsSingleClickBox );
126 128
127 mNameParsing = new QCheckBox( i18n( "Automatic name parsing for new addressees" ), vBox, "mparse" ); 129 mNameParsing = new QCheckBox( i18n( "Automatic name parsing for new addressees" ), vBox, "mparse" );
128 boxLayout->addWidget( mNameParsing ); 130 boxLayout->addWidget( mNameParsing );
129 131
130 mMultipleViewsAtOnce = new QCheckBox( i18n( "Display List and Details at once (restart)" ), vBox, "mdisplay" ); 132 mMultipleViewsAtOnce = new QCheckBox( i18n( "Display List and Details at once (restart)" ), vBox, "mdisplay" );
131 boxLayout->addWidget( mMultipleViewsAtOnce ); 133 boxLayout->addWidget( mMultipleViewsAtOnce );
132 134
133 mAskForQuit = new QCheckBox( i18n( "Ask for quit when closing Ka/Pi" ), vBox, "mquit" ); 135 mAskForQuit = new QCheckBox( i18n( "Ask for quit when closing Ka/Pi" ), vBox, "mquit" );
134 boxLayout->addWidget( mAskForQuit ); 136 boxLayout->addWidget( mAskForQuit );
135 137
136 layout->addWidget( vBox ); 138 layout->addWidget( vBox );
137 139
138 tabWidget->addTab( generalPage, i18n( "General" ) ); 140 tabWidget->addTab( generalPage, i18n( "General" ) );
139 141
140 // Extension page 142 // Extension page
141 QWidget *extensionPage = new QWidget( this ); 143 QWidget *extensionPage = new QWidget( this );
142 QVBoxLayout *extensionLayout = new QVBoxLayout( extensionPage, KDialog::marginHintSmall(), 144 QVBoxLayout *extensionLayout = new QVBoxLayout( extensionPage, KDialog::marginHintSmall(),
143 KDialog::spacingHintSmall() ); 145 KDialog::spacingHintSmall() );
144 146
145 //extensions groupbox 147 //extensions groupbox
146 148
147 QGroupBox* groupBox = new QGroupBox( 0, Qt::Vertical, i18n( "Extensions (restart)" ), extensionPage ); 149 QGroupBox* groupBox = new QGroupBox( 0, Qt::Vertical, i18n( "Extensions (restart)" ), extensionPage );
148 boxLayout = new QVBoxLayout( groupBox->layout() ); 150 boxLayout = new QVBoxLayout( groupBox->layout() );
149 boxLayout->setAlignment( Qt::AlignTop ); 151 boxLayout->setAlignment( Qt::AlignTop );
150 boxLayout->setMargin(KDialog::marginHintSmall()); 152 boxLayout->setMargin(KDialog::marginHintSmall());
151 boxLayout->setSpacing(KDialog::spacingHintSmall()); 153 boxLayout->setSpacing(KDialog::spacingHintSmall());
152 groupBox->layout()->setMargin(1) ; 154 groupBox->layout()->setMargin(1) ;
153 groupBox->layout()->setSpacing(0); 155 groupBox->layout()->setSpacing(0);
154 mExtensionView = new KListView( groupBox ); 156 mExtensionView = new KListView( groupBox );
155 mExtensionView->setAllColumnsShowFocus( true ); 157 mExtensionView->setAllColumnsShowFocus( true );
156 mExtensionView->addColumn( i18n( "Name" ) ); 158 mExtensionView->addColumn( i18n( "Name" ) );
157 mExtensionView->addColumn( i18n( "Description" ) ); 159 mExtensionView->addColumn( i18n( "Description" ) );
158 mExtensionView->setMaximumHeight(80); 160 mExtensionView->setMaximumHeight(80);
159 161
160 boxLayout->addWidget( mExtensionView ); 162 boxLayout->addWidget( mExtensionView );
161 163
162 mConfigureButton = new QPushButton( i18n( "Configure..." ), groupBox ); 164 mConfigureButton = new QPushButton( i18n( "Configure..." ), groupBox );
163 mConfigureButton->setEnabled( false ); 165 mConfigureButton->setEnabled( false );
164 boxLayout->addWidget( mConfigureButton ); 166 boxLayout->addWidget( mConfigureButton );
165 167
166 extensionLayout->addWidget( groupBox ); 168 extensionLayout->addWidget( groupBox );
167 169
170 connect( mMenuBarBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
168 connect( mNameParsing, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 171 connect( mNameParsing, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
169 connect( mViewsSingleClickBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 172 connect( mViewsSingleClickBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
170 connect( mSearchReturnBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 173 connect( mSearchReturnBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
171 connect( mMultipleViewsAtOnce, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 174 connect( mMultipleViewsAtOnce, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
172 connect( mAskForQuit, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 175 connect( mAskForQuit, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
173 connect( mExtensionView, SIGNAL( selectionChanged( QListViewItem* ) ), 176 connect( mExtensionView, SIGNAL( selectionChanged( QListViewItem* ) ),
174 SLOT( selectionChanged( QListViewItem* ) ) ); 177 SLOT( selectionChanged( QListViewItem* ) ) );
175 connect( mExtensionView, SIGNAL( clicked( QListViewItem* ) ), 178 connect( mExtensionView, SIGNAL( clicked( QListViewItem* ) ),
176 SLOT( itemClicked( QListViewItem* ) ) ); 179 SLOT( itemClicked( QListViewItem* ) ) );
177 connect( mConfigureButton, SIGNAL( clicked() ), 180 connect( mConfigureButton, SIGNAL( clicked() ),
178 SLOT( configureExtension() ) ); 181 SLOT( configureExtension() ) );
179 182
180 tabWidget->addTab( extensionPage, i18n( "Extensions" ) ); 183 tabWidget->addTab( extensionPage, i18n( "Extensions" ) );
181 184
182 // Addressee page 185 // Addressee page
183 mAddresseeWidget = new AddresseeWidget( this ); 186 mAddresseeWidget = new AddresseeWidget( this );
184 tabWidget->addTab( mAddresseeWidget, i18n( "Contact" ) ); 187 tabWidget->addTab( mAddresseeWidget, i18n( "Contact" ) );
185 connect( mAddresseeWidget, SIGNAL( modified() ), SLOT( modified() ) ); 188 connect( mAddresseeWidget, SIGNAL( modified() ), SLOT( modified() ) );
186 189
187} 190}
188 191
189void KABConfigWidget::usrReadConfig() 192void KABConfigWidget::usrReadConfig()
190{ 193{
191 KABPrefs* prefs = KABPrefs::instance(); 194 KABPrefs* prefs = KABPrefs::instance();
192 195
193 bool blocked = signalsBlocked(); 196 bool blocked = signalsBlocked();
194 blockSignals( true ); 197 blockSignals( true );
195 198 mMenuBarBox->setChecked( prefs->mFullMenuBarVisible);
196 mNameParsing->setChecked( prefs->mAutomaticNameParsing ); 199 mNameParsing->setChecked( prefs->mAutomaticNameParsing );
197 mViewsSingleClickBox->setChecked( prefs->mHonorSingleClick ); 200 mViewsSingleClickBox->setChecked( prefs->mHonorSingleClick );
198 mSearchReturnBox->setChecked( prefs->mSearchWithReturn ); 201 mSearchReturnBox->setChecked( prefs->mSearchWithReturn );
199 mMultipleViewsAtOnce->setChecked( prefs->mMultipleViewsAtOnce ); 202 mMultipleViewsAtOnce->setChecked( prefs->mMultipleViewsAtOnce );
200 mAskForQuit->setChecked( prefs->mAskForQuit ); 203 mAskForQuit->setChecked( prefs->mAskForQuit );
201 204
202 mAddresseeWidget->restoreSettings(); 205 mAddresseeWidget->restoreSettings();
203 206
204 restoreExtensionSettings(); 207 restoreExtensionSettings();
205 208
206 blockSignals( blocked ); 209 blockSignals( blocked );
207 210
208} 211}
209 212
210void KABConfigWidget::usrWriteConfig() 213void KABConfigWidget::usrWriteConfig()
211{ 214{
212 KABPrefs* prefs = KABPrefs::instance(); 215 KABPrefs* prefs = KABPrefs::instance();
213 216 prefs->mFullMenuBarVisible = mMenuBarBox->isChecked();
214 prefs->mAutomaticNameParsing = mNameParsing->isChecked(); 217 prefs->mAutomaticNameParsing = mNameParsing->isChecked();
215 prefs->mHonorSingleClick = mViewsSingleClickBox->isChecked(); 218 prefs->mHonorSingleClick = mViewsSingleClickBox->isChecked();
216 prefs->mSearchWithReturn = mSearchReturnBox->isChecked(); 219 prefs->mSearchWithReturn = mSearchReturnBox->isChecked();
217 prefs->mMultipleViewsAtOnce = mMultipleViewsAtOnce->isChecked(); 220 prefs->mMultipleViewsAtOnce = mMultipleViewsAtOnce->isChecked();
218 prefs->mAskForQuit = mAskForQuit->isChecked(); 221 prefs->mAskForQuit = mAskForQuit->isChecked();
219 222
220 mAddresseeWidget->saveSettings(); 223 mAddresseeWidget->saveSettings();
221 224
222 saveExtensionSettings(); 225 saveExtensionSettings();
223 226
224} 227}
225 228
226void KABConfigWidget::restoreExtensionSettings() 229void KABConfigWidget::restoreExtensionSettings()
227{ 230{
228 QStringList activeExtensions = KABPrefs::instance()->mActiveExtensions; 231 QStringList activeExtensions = KABPrefs::instance()->mActiveExtensions;
229 232
230 mExtensionView->clear(); 233 mExtensionView->clear();
231 234
232#ifndef KAB_EMBEDDED 235#ifndef KAB_EMBEDDED
233 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/Extension" ); 236 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/Extension" );
234 KTrader::OfferList::ConstIterator it; 237 KTrader::OfferList::ConstIterator it;
235 for ( it = plugins.begin(); it != plugins.end(); ++it ) { 238 for ( it = plugins.begin(); it != plugins.end(); ++it ) {
236 if ( !(*it)->hasServiceType( "KAddressBook/Extension" ) ) 239 if ( !(*it)->hasServiceType( "KAddressBook/Extension" ) )
237 continue; 240 continue;
238 241
239 ExtensionItem *item = new ExtensionItem( mExtensionView, (*it)->name() ); 242 ExtensionItem *item = new ExtensionItem( mExtensionView, (*it)->name() );
240 item->setService( *it ); 243 item->setService( *it );
241 if ( activeExtensions.contains( item->factory()->identifier() ) ) 244 if ( activeExtensions.contains( item->factory()->identifier() ) )
242 item->setOn( true ); 245 item->setOn( true );
243 } 246 }
244#else //KAB_EMBEDDED 247#else //KAB_EMBEDDED
245 ExtensionFactory *extensionFactory = new MergeFactory(); 248 ExtensionFactory *extensionFactory = new MergeFactory();
diff --git a/kaddressbook/kcmconfigs/kabconfigwidget.h b/kaddressbook/kcmconfigs/kabconfigwidget.h
index 1e71fd1..08d71b4 100644
--- a/kaddressbook/kcmconfigs/kabconfigwidget.h
+++ b/kaddressbook/kcmconfigs/kabconfigwidget.h
@@ -37,39 +37,39 @@ class KABPrefs;
37class AddresseeWidget; 37class AddresseeWidget;
38 38
39class KABConfigWidget : public KPrefsWidget 39class KABConfigWidget : public KPrefsWidget
40{ 40{
41 Q_OBJECT 41 Q_OBJECT
42 42
43 public: 43 public:
44 KABConfigWidget(KABPrefs *prefs, QWidget *parent, const char *name = 0 ); 44 KABConfigWidget(KABPrefs *prefs, QWidget *parent, const char *name = 0 );
45 45
46 protected: 46 protected:
47 /** Implement this to read custom configuration widgets. */ 47 /** Implement this to read custom configuration widgets. */
48 virtual void usrReadConfig(); 48 virtual void usrReadConfig();
49 /** Implement this to write custom configuration widgets. */ 49 /** Implement this to write custom configuration widgets. */
50 virtual void usrWriteConfig(); 50 virtual void usrWriteConfig();
51 51
52 52
53 53
54 private slots: 54 private slots:
55 void configureExtension(); 55 void configureExtension();
56 void selectionChanged( QListViewItem* ); 56 void selectionChanged( QListViewItem* );
57 void itemClicked( QListViewItem* ); 57 void itemClicked( QListViewItem* );
58 58
59 private: 59 private:
60 void restoreExtensionSettings(); 60 void restoreExtensionSettings();
61 void saveExtensionSettings(); 61 void saveExtensionSettings();
62 62
63 KListView *mExtensionView; 63 KListView *mExtensionView;
64 QCheckBox *mSearchReturnBox; 64 QCheckBox *mSearchReturnBox;
65 QCheckBox *mNameParsing; 65 QCheckBox *mNameParsing;
66 QCheckBox *mViewsSingleClickBox; 66 QCheckBox *mViewsSingleClickBox;
67 QCheckBox *mMultipleViewsAtOnce; 67 QCheckBox *mMultipleViewsAtOnce;
68 QCheckBox *mAskForQuit; 68 QCheckBox *mAskForQuit;
69 69 QCheckBox *mMenuBarBox;
70 QPushButton *mConfigureButton; 70 QPushButton *mConfigureButton;
71 71
72 AddresseeWidget *mAddresseeWidget; 72 AddresseeWidget *mAddresseeWidget;
73}; 73};
74 74
75#endif 75#endif
diff --git a/kaddressbook/viewmanager.cpp b/kaddressbook/viewmanager.cpp
index 81e0d99..3d0c275 100644
--- a/kaddressbook/viewmanager.cpp
+++ b/kaddressbook/viewmanager.cpp
@@ -77,65 +77,65 @@ ViewManager::ViewManager( KABCore *core, QWidget *parent, const char *name )
77 77
78 mViewDict.setAutoDelete( true ); 78 mViewDict.setAutoDelete( true );
79 79
80 createViewFactories(); 80 createViewFactories();
81} 81}
82 82
83ViewManager::~ViewManager() 83ViewManager::~ViewManager()
84{ 84{
85 unloadViews(); 85 unloadViews();
86 mViewFactoryDict.clear(); 86 mViewFactoryDict.clear();
87} 87}
88void ViewManager::scrollUP() 88void ViewManager::scrollUP()
89{ 89{
90 if ( mActiveView ) 90 if ( mActiveView )
91 mActiveView->scrollUP(); 91 mActiveView->scrollUP();
92} 92}
93void ViewManager::scrollDOWN() 93void ViewManager::scrollDOWN()
94{ 94{
95 if ( mActiveView ) 95 if ( mActiveView )
96 mActiveView->scrollDOWN(); 96 mActiveView->scrollDOWN();
97} 97}
98void ViewManager::restoreSettings() 98void ViewManager::restoreSettings()
99{ 99{
100 mViewNameList = KABPrefs::instance()->mViewNames; 100 mViewNameList = KABPrefs::instance()->mViewNames;
101 QString activeViewName = KABPrefs::instance()->mCurrentView; 101 QString activeViewName = KABPrefs::instance()->mCurrentView;
102 102
103 mActionSelectView->setItems( mViewNameList ); 103 mActionSelectView->setItems( mViewNameList );
104 104
105 // Filter 105 // Filter
106 mFilterList = Filter::restore( mCore->config(), "Filter" ); 106 mFilterList = Filter::restore( mCore->config(), "Filter" );
107 mActionSelectFilter->setItems( filterNames() ); 107 mActionSelectFilter->setItems( filterNames() );
108 mActionSelectFilter->setCurrentItem( KABPrefs::instance()->mCurrentFilter ); 108 mActionSelectFilter->setCurrentItem( KABPrefs::instance()->mCurrentFilter );
109 109 mActionSelectFilter->setComboWidth( 100 );
110 // Tell the views to reread their config, since they may have 110 // Tell the views to reread their config, since they may have
111 // been modified by global settings 111 // been modified by global settings
112 QString _oldgroup = mCore->config()->group(); 112 QString _oldgroup = mCore->config()->group();
113 113
114 QDictIterator<KAddressBookView> it( mViewDict ); 114 QDictIterator<KAddressBookView> it( mViewDict );
115 for ( it.toFirst(); it.current(); ++it ) { 115 for ( it.toFirst(); it.current(); ++it ) {
116 KConfigGroupSaver saver( mCore->config(), it.currentKey() ); 116 KConfigGroupSaver saver( mCore->config(), it.currentKey() );
117 it.current()->readConfig( mCore->config() ); 117 it.current()->readConfig( mCore->config() );
118 } 118 }
119 setActiveView( activeViewName ); 119 setActiveView( activeViewName );
120 120
121 mActionDeleteView->setEnabled( mViewNameList.count() > 1 ); 121 mActionDeleteView->setEnabled( mViewNameList.count() > 1 );
122} 122}
123 123
124void ViewManager::saveSettings() 124void ViewManager::saveSettings()
125{ 125{
126 QString _oldgroup = mCore->config()->group(); 126 QString _oldgroup = mCore->config()->group();
127 127
128 QDictIterator<KAddressBookView> it( mViewDict ); 128 QDictIterator<KAddressBookView> it( mViewDict );
129 for ( it.toFirst(); it.current(); ++it ) { 129 for ( it.toFirst(); it.current(); ++it ) {
130 KConfigGroupSaver saver( mCore->config(), it.currentKey() ); 130 KConfigGroupSaver saver( mCore->config(), it.currentKey() );
131#ifdef DESKTOP_VERSION 131#ifdef DESKTOP_VERSION
132 (*it)->writeConfig( mCore->config() ); 132 (*it)->writeConfig( mCore->config() );
133#else 133#else
134 (*it).writeConfig( mCore->config() ); 134 (*it).writeConfig( mCore->config() );
135#endif 135#endif
136 } 136 }
137 137
138 Filter::save( mCore->config(), "Filter", mFilterList ); 138 Filter::save( mCore->config(), "Filter", mFilterList );
139 KABPrefs::instance()->mCurrentFilter = mActionSelectFilter->currentItem(); 139 KABPrefs::instance()->mCurrentFilter = mActionSelectFilter->currentItem();
140 140
141 // write the view name list 141 // write the view name list
@@ -274,65 +274,65 @@ void ViewManager::setActiveView( const QString &name )
274//US qDebug("ViewManager::setActiveView 6" ); 274//US qDebug("ViewManager::setActiveView 6" );
275 275
276 // Update the inc search widget to show the fields in the new active 276 // Update the inc search widget to show the fields in the new active
277 // view. 277 // view.
278 mCore->setSearchFields( mActiveView->fields() ); 278 mCore->setSearchFields( mActiveView->fields() );
279 279
280//US performance optimization. setActiveFilter calls also mActiveView->refresh() 280//US performance optimization. setActiveFilter calls also mActiveView->refresh()
281//US mActiveView->refresh(); 281//US mActiveView->refresh();
282 282
283 } 283 }
284 else 284 else
285 { 285 {
286 qDebug("ViewManager::setActiveView: unable to find view" ); 286 qDebug("ViewManager::setActiveView: unable to find view" );
287 kdDebug(5720) << "ViewManager::setActiveView: unable to find view\n"; 287 kdDebug(5720) << "ViewManager::setActiveView: unable to find view\n";
288 } 288 }
289} 289}
290 290
291//US added another method with no parameter, since my moc compiler does not support default parameters. 291//US added another method with no parameter, since my moc compiler does not support default parameters.
292void ViewManager::refreshView() 292void ViewManager::refreshView()
293{ 293{
294 refreshView( QString::null ); 294 refreshView( QString::null );
295} 295}
296 296
297void ViewManager::refreshView( const QString &uid ) 297void ViewManager::refreshView( const QString &uid )
298{ 298{
299 if ( mActiveView ) 299 if ( mActiveView )
300 mActiveView->refresh( uid ); 300 mActiveView->refresh( uid );
301} 301}
302 302
303void ViewManager::setFocusAV() 303void ViewManager::setFocusAV()
304{ 304{
305 if ( mActiveView ) 305 if ( mActiveView )
306 mActiveView->setFocus(); 306 mActiveView->setFocusAV();
307} 307}
308void ViewManager::editView() 308void ViewManager::editView()
309{ 309{
310 if ( !mActiveView ) 310 if ( !mActiveView )
311 return; 311 return;
312 312
313 ViewFactory *factory = mViewFactoryDict.find( mActiveView->type() ); 313 ViewFactory *factory = mViewFactoryDict.find( mActiveView->type() );
314 ViewConfigureWidget *wdg = 0; 314 ViewConfigureWidget *wdg = 0;
315 ViewConfigureDialog* dlg = 0; 315 ViewConfigureDialog* dlg = 0;
316 if ( factory ) { 316 if ( factory ) {
317 // Save the filters so the dialog has the latest set 317 // Save the filters so the dialog has the latest set
318 Filter::save( mCore->config(), "Filter", mFilterList ); 318 Filter::save( mCore->config(), "Filter", mFilterList );
319 dlg = new ViewConfigureDialog( 0, mActiveView->caption(), this, "conf_dlg" ); 319 dlg = new ViewConfigureDialog( 0, mActiveView->caption(), this, "conf_dlg" );
320 wdg = factory->configureWidget( mCore->addressBook(), dlg,"conf_wid" ); 320 wdg = factory->configureWidget( mCore->addressBook(), dlg,"conf_wid" );
321 } else { 321 } else {
322 qDebug("ViewManager::editView()::cannot find viewfactory "); 322 qDebug("ViewManager::editView()::cannot find viewfactory ");
323 return; 323 return;
324 } 324 }
325 if ( wdg ) { 325 if ( wdg ) {
326 dlg->setWidget( wdg ); 326 dlg->setWidget( wdg );
327 327
328#ifndef DESKTOP_VERSION 328#ifndef DESKTOP_VERSION
329 //dlg.setMaximumSize( 640, 480 ); 329 //dlg.setMaximumSize( 640, 480 );
330 //dlg->setGeometry( 40,40, 400, 300); 330 //dlg->setGeometry( 40,40, 400, 300);
331 dlg->showMaximized(); 331 dlg->showMaximized();
332#endif 332#endif
333 333
334 KConfigGroupSaver saver( mCore->config(), mActiveView->caption() ); 334 KConfigGroupSaver saver( mCore->config(), mActiveView->caption() );
335 335
336 dlg->restoreSettings( mCore->config() ); 336 dlg->restoreSettings( mCore->config() );
337 337
338 if ( dlg->exec() ) { 338 if ( dlg->exec() ) {
@@ -568,64 +568,65 @@ void ViewManager::doSearch( const QString& s,KABC::Field *field )
568} 568}
569void ViewManager::setActiveFilter( int index ) 569void ViewManager::setActiveFilter( int index )
570{ 570{
571 Filter currentFilter; 571 Filter currentFilter;
572 572
573 if ( ( index - 1 ) < 0 ) 573 if ( ( index - 1 ) < 0 )
574 currentFilter = Filter(); 574 currentFilter = Filter();
575 else 575 else
576 currentFilter = mFilterList[ index - 1 ]; 576 currentFilter = mFilterList[ index - 1 ];
577 577
578 // Check if we have a view. Since the filter combo is created before 578 // Check if we have a view. Since the filter combo is created before
579 // the view, this slot could be called before there is a valid view. 579 // the view, this slot could be called before there is a valid view.
580 if ( mActiveView ) { 580 if ( mActiveView ) {
581 mActiveView->setFilter( currentFilter ); 581 mActiveView->setFilter( currentFilter );
582 mActiveView->refresh(); 582 mActiveView->refresh();
583 emit selected( QString::null ); 583 emit selected( QString::null );
584 } 584 }
585} 585}
586 586
587void ViewManager::configureFilters() 587void ViewManager::configureFilters()
588{ 588{
589 FilterDialog dlg( this ); 589 FilterDialog dlg( this );
590 590
591 dlg.setFilters( mFilterList ); 591 dlg.setFilters( mFilterList );
592 592
593 if ( dlg.exec() ) 593 if ( dlg.exec() )
594 mFilterList = dlg.filters(); 594 mFilterList = dlg.filters();
595 595
596 uint pos = mActionSelectFilter->currentItem(); 596 uint pos = mActionSelectFilter->currentItem();
597 mActionSelectFilter->setItems( filterNames() ); 597 mActionSelectFilter->setItems( filterNames() );
598 mActionSelectFilter->setCurrentItem( pos ); 598 mActionSelectFilter->setCurrentItem( pos );
599 setActiveFilter( pos ); 599 setActiveFilter( pos );
600 //mActionSelectFilter->setComboWidth( 150 );
600} 601}
601 602
602QStringList ViewManager::filterNames() const 603QStringList ViewManager::filterNames() const
603{ 604{
604 QStringList names( i18n( "No Filter" ) ); 605 QStringList names( i18n( "No Filter" ) );
605 606
606 Filter::List::ConstIterator it; 607 Filter::List::ConstIterator it;
607 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it ) 608 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it )
608 names.append( (*it).name() ); 609 names.append( (*it).name() );
609 610
610 return names; 611 return names;
611} 612}
612 613
613int ViewManager::filterPosition( const QString &name ) const 614int ViewManager::filterPosition( const QString &name ) const
614{ 615{
615 int pos = 0; 616 int pos = 0;
616 617
617 Filter::List::ConstIterator it; 618 Filter::List::ConstIterator it;
618 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it, ++pos ) 619 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it, ++pos )
619 if ( name == (*it).name() ) 620 if ( name == (*it).name() )
620 return pos + 1; 621 return pos + 1;
621 622
622 return 0; 623 return 0;
623} 624}
624 625
625void ViewManager::initActions() 626void ViewManager::initActions()
626{ 627{
627//US <ActionList name="view_loadedviews"/> 628//US <ActionList name="view_loadedviews"/>
628//US <Separator/> 629//US <Separator/>
629 630
630#ifdef KAB_EMBEDDED 631#ifdef KAB_EMBEDDED
631 QPopupMenu *viewmenu = (QPopupMenu*)mCore->getViewMenu(); 632 QPopupMenu *viewmenu = (QPopupMenu*)mCore->getViewMenu();
@@ -663,56 +664,55 @@ void ViewManager::initActions()
663#else //KAB_EMBEDDED 664#else //KAB_EMBEDDED
664 action->plug(viewmenu); 665 action->plug(viewmenu);
665#endif //KAB_EMBEDDED 666#endif //KAB_EMBEDDED
666 667
667 mActionDeleteView = new KAction( i18n( "Delete View" ), "view_remove", 0, 668 mActionDeleteView = new KAction( i18n( "Delete View" ), "view_remove", 0,
668 this, SLOT( deleteView() ), 669 this, SLOT( deleteView() ),
669 mCore->actionCollection(), "view_delete" ); 670 mCore->actionCollection(), "view_delete" );
670#ifndef KAB_EMBEDDED 671#ifndef KAB_EMBEDDED
671 mActionDeleteView->setWhatsThis( i18n( "By pressing this button you can delete the actual view, which you have added before." ) ); 672 mActionDeleteView->setWhatsThis( i18n( "By pressing this button you can delete the actual view, which you have added before." ) );
672#else //KAB_EMBEDDED 673#else //KAB_EMBEDDED
673 mActionDeleteView->plug(viewmenu); 674 mActionDeleteView->plug(viewmenu);
674 viewmenu->insertSeparator(); 675 viewmenu->insertSeparator();
675#endif //KAB_EMBEDDED 676#endif //KAB_EMBEDDED
676 677
677#ifndef KAB_EMBEDDED 678#ifndef KAB_EMBEDDED
678 action = new KAction( i18n( "Refresh View" ), "reload", 0, this, 679 action = new KAction( i18n( "Refresh View" ), "reload", 0, this,
679 SLOT( refreshView(const QString &) ), mCore->actionCollection(), 680 SLOT( refreshView(const QString &) ), mCore->actionCollection(),
680 "view_refresh" ); 681 "view_refresh" );
681 action->setWhatsThis( i18n( "The view will be refreshed by pressing this button." ) ); 682 action->setWhatsThis( i18n( "The view will be refreshed by pressing this button." ) );
682#else //KAB_EMBEDDED 683#else //KAB_EMBEDDED
683 action = new KAction( i18n( "Refresh View" ), "reload", 0, this, 684 action = new KAction( i18n( "Refresh View" ), "reload", 0, this,
684 SLOT( refreshView()), mCore->actionCollection(), 685 SLOT( refreshView()), mCore->actionCollection(),
685 "view_refresh" ); 686 "view_refresh" );
686 action->plug(viewmenu); 687 action->plug(viewmenu);
687 viewmenu->insertSeparator(); 688 viewmenu->insertSeparator();
688#endif //KAB_EMBEDDED 689#endif //KAB_EMBEDDED
689 690
690 action = new KAction( i18n( "Edit &Filters..." ), "filter", 0, this, 691 action = new KAction( i18n( "Edit &Filters..." ), "filter", 0, this,
691 SLOT( configureFilters() ), mCore->actionCollection(), 692 SLOT( configureFilters() ), mCore->actionCollection(),
692 "options_edit_filters" ); 693 "options_edit_filters" );
693 694
694 mActionSelectFilter = new KSelectAction( i18n( "Select Filter" ), "filter", mCore->actionCollection(), "select_filter" ); 695 mActionSelectFilter = new KSelectAction( i18n( "Select Filter" ), "filter", mCore->actionCollection(), "select_filter" );
695
696#if KDE_VERSION >= 309 696#if KDE_VERSION >= 309
697 mActionSelectFilter->setMenuAccelsEnabled( false ); 697 mActionSelectFilter->setMenuAccelsEnabled( false );
698#endif 698#endif
699 connect( mActionSelectFilter, SIGNAL( activated( int ) ), 699 connect( mActionSelectFilter, SIGNAL( activated( int ) ),
700 SLOT( setActiveFilter( int ) ) ); 700 SLOT( setActiveFilter( int ) ) );
701 701
702#ifdef KAB_EMBEDDED 702#ifdef KAB_EMBEDDED
703 action->plug(settingsmenu); 703 action->plug(settingsmenu);
704 mActionSelectFilter->plug(viewmenu); 704 mActionSelectFilter->plug(viewmenu);
705#endif //KAB_EMBEDDED 705#endif //KAB_EMBEDDED
706 706
707} 707}
708 708
709void ViewManager::initGUI() 709void ViewManager::initGUI()
710{ 710{
711 QHBoxLayout *layout = new QHBoxLayout( this, 0, 0 ); 711 QHBoxLayout *layout = new QHBoxLayout( this, 0, 0 );
712 mViewWidgetStack = new QWidgetStack( this ); 712 mViewWidgetStack = new QWidgetStack( this );
713 layout->addWidget( mViewWidgetStack ); 713 layout->addWidget( mViewWidgetStack );
714} 714}
715 715
716#ifndef KAB_EMBEDDED 716#ifndef KAB_EMBEDDED
717#include "viewmanager.moc" 717#include "viewmanager.moc"
718#endif //KAB_EMBEDDED 718#endif //KAB_EMBEDDED
diff --git a/kaddressbook/views/kaddressbookcardview.cpp b/kaddressbook/views/kaddressbookcardview.cpp
index a7bf6c9..7f33bb4 100644
--- a/kaddressbook/views/kaddressbookcardview.cpp
+++ b/kaddressbook/views/kaddressbookcardview.cpp
@@ -140,65 +140,70 @@ void AddresseeCardView::startDrag()
140 140
141 141
142/////////////////////////////// 142///////////////////////////////
143// KAddressBookCardView 143// KAddressBookCardView
144 144
145KAddressBookCardView::KAddressBookCardView( KABC::AddressBook *ab, 145KAddressBookCardView::KAddressBookCardView( KABC::AddressBook *ab,
146 QWidget *parent, const char *name ) 146 QWidget *parent, const char *name )
147 : KAddressBookView( ab, parent, name ) 147 : KAddressBookView( ab, parent, name )
148{ 148{
149 mShowEmptyFields = false; 149 mShowEmptyFields = false;
150 150
151 // Init the GUI 151 // Init the GUI
152 QVBoxLayout *layout = new QVBoxLayout(viewWidget()); 152 QVBoxLayout *layout = new QVBoxLayout(viewWidget());
153 153
154 mCardView = new AddresseeCardView(viewWidget(), "mCardView"); 154 mCardView = new AddresseeCardView(viewWidget(), "mCardView");
155 mCardView->setSelectionMode(CardView::Extended); 155 mCardView->setSelectionMode(CardView::Extended);
156 layout->addWidget(mCardView); 156 layout->addWidget(mCardView);
157 157
158 // Connect up the signals 158 // Connect up the signals
159 connect(mCardView, SIGNAL(executed(CardViewItem *)), 159 connect(mCardView, SIGNAL(executed(CardViewItem *)),
160 this, SLOT(addresseeExecuted(CardViewItem *))); 160 this, SLOT(addresseeExecuted(CardViewItem *)));
161 connect(mCardView, SIGNAL(selectionChanged()), 161 connect(mCardView, SIGNAL(selectionChanged()),
162 this, SLOT(addresseeSelected())); 162 this, SLOT(addresseeSelected()));
163 connect(mCardView, SIGNAL(addresseeDropped(QDropEvent*)), 163 connect(mCardView, SIGNAL(addresseeDropped(QDropEvent*)),
164 this, SIGNAL(dropped(QDropEvent*))); 164 this, SIGNAL(dropped(QDropEvent*)));
165 connect(mCardView, SIGNAL(startAddresseeDrag()), 165 connect(mCardView, SIGNAL(startAddresseeDrag()),
166 this, SIGNAL(startDrag())); 166 this, SIGNAL(startDrag()));
167} 167}
168 168
169KAddressBookCardView::~KAddressBookCardView() 169KAddressBookCardView::~KAddressBookCardView()
170{ 170{
171} 171}
172void KAddressBookCardView::setFocusAV()
173{
174 if ( mCardView )
175 mCardView->setFocus();
172 176
177}
173void KAddressBookCardView::scrollUP() 178void KAddressBookCardView::scrollUP()
174{ 179{
175 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 ); 180 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 );
176 QApplication::postEvent( mCardView, ev ); 181 QApplication::postEvent( mCardView, ev );
177 182
178} 183}
179void KAddressBookCardView::scrollDOWN() 184void KAddressBookCardView::scrollDOWN()
180{ 185{
181 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 ); 186 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 );
182 QApplication::postEvent( mCardView, ev ); 187 QApplication::postEvent( mCardView, ev );
183} 188}
184void KAddressBookCardView::readConfig(KConfig *config) 189void KAddressBookCardView::readConfig(KConfig *config)
185{ 190{
186 KAddressBookView::readConfig(config); 191 KAddressBookView::readConfig(config);
187 192
188 // costum colors? 193 // costum colors?
189 if ( config->readBoolEntry( "EnableCustomColors", false ) ) 194 if ( config->readBoolEntry( "EnableCustomColors", false ) )
190 { 195 {
191 QPalette p( mCardView->palette() ); 196 QPalette p( mCardView->palette() );
192 QColor c = p.color(QPalette::Normal, QColorGroup::Base ); 197 QColor c = p.color(QPalette::Normal, QColorGroup::Base );
193 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) ); 198 p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) );
194 c = p.color(QPalette::Normal, QColorGroup::Text ); 199 c = p.color(QPalette::Normal, QColorGroup::Text );
195 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) ); 200 p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) );
196 c = p.color(QPalette::Normal, QColorGroup::Button ); 201 c = p.color(QPalette::Normal, QColorGroup::Button );
197 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) ); 202 p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) );
198 c = p.color(QPalette::Normal, QColorGroup::ButtonText ); 203 c = p.color(QPalette::Normal, QColorGroup::ButtonText );
199 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) ); 204 p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) );
200 c = p.color(QPalette::Normal, QColorGroup::Highlight ); 205 c = p.color(QPalette::Normal, QColorGroup::Highlight );
201 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) ); 206 p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) );
202 c = p.color(QPalette::Normal, QColorGroup::HighlightedText ); 207 c = p.color(QPalette::Normal, QColorGroup::HighlightedText );
203 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) ); 208 p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) );
204 mCardView->viewport()->setPalette( p ); 209 mCardView->viewport()->setPalette( p );
diff --git a/kaddressbook/views/kaddressbookcardview.h b/kaddressbook/views/kaddressbookcardview.h
index 45a9781..8f22d54 100644
--- a/kaddressbook/views/kaddressbookcardview.h
+++ b/kaddressbook/views/kaddressbookcardview.h
@@ -33,64 +33,65 @@
33 33
34#include "cardview.h" 34#include "cardview.h"
35#include "kaddressbookview.h" 35#include "kaddressbookview.h"
36#include "configurecardviewdialog.h" 36#include "configurecardviewdialog.h"
37 37
38class QDragEnterEvent; 38class QDragEnterEvent;
39class QDragEntryEvent; 39class QDragEntryEvent;
40class QDropEvent; 40class QDropEvent;
41class KConfig; 41class KConfig;
42class AddresseeCardView; 42class AddresseeCardView;
43 43
44/** 44/**
45 This view uses the CardView class to create a card view. At some 45 This view uses the CardView class to create a card view. At some
46 point in the future I think this will be the default view of 46 point in the future I think this will be the default view of
47 KAddressBook. 47 KAddressBook.
48 */ 48 */
49class KAddressBookCardView : public KAddressBookView 49class KAddressBookCardView : public KAddressBookView
50{ 50{
51 Q_OBJECT 51 Q_OBJECT
52 52
53 public: 53 public:
54 KAddressBookCardView( KABC::AddressBook *ab, QWidget *parent, 54 KAddressBookCardView( KABC::AddressBook *ab, QWidget *parent,
55 const char *name = 0 ); 55 const char *name = 0 );
56 virtual ~KAddressBookCardView(); 56 virtual ~KAddressBookCardView();
57 void doSearch( const QString& s,KABC::Field *field ); 57 void doSearch( const QString& s,KABC::Field *field );
58 virtual QStringList selectedUids(); 58 virtual QStringList selectedUids();
59 virtual QString type() const { return "Card"; } 59 virtual QString type() const { return "Card"; }
60 60
61 virtual void readConfig(KConfig *config); 61 virtual void readConfig(KConfig *config);
62 virtual void writeConfig(KConfig *); 62 virtual void writeConfig(KConfig *);
63 virtual void scrollUP(); 63 virtual void scrollUP();
64 virtual void scrollDOWN(); 64 virtual void scrollDOWN();
65 virtual void setFocusAV();
65 66
66 public slots: 67 public slots:
67 void refresh(QString uid = QString::null); 68 void refresh(QString uid = QString::null);
68 void setSelected(QString uid/*US = QString::null*/, bool selected/*US = true*/); 69 void setSelected(QString uid/*US = QString::null*/, bool selected/*US = true*/);
69//US added an additional method without parameter 70//US added an additional method without parameter
70 void setSelected(); 71 void setSelected();
71 72
72 protected slots: 73 protected slots:
73 void addresseeExecuted(CardViewItem *item); 74 void addresseeExecuted(CardViewItem *item);
74 void addresseeSelected(); 75 void addresseeSelected();
75 76
76 private: 77 private:
77 AddresseeCardView *mCardView; 78 AddresseeCardView *mCardView;
78 bool mShowEmptyFields; 79 bool mShowEmptyFields;
79}; 80};
80 81
81class AddresseeCardView : public CardView 82class AddresseeCardView : public CardView
82{ 83{
83 Q_OBJECT 84 Q_OBJECT
84 public: 85 public:
85 AddresseeCardView(QWidget *parent, const char *name = 0); 86 AddresseeCardView(QWidget *parent, const char *name = 0);
86 ~AddresseeCardView(); 87 ~AddresseeCardView();
87 88
88 signals: 89 signals:
89 void startAddresseeDrag(); 90 void startAddresseeDrag();
90 void addresseeDropped(QDropEvent *); 91 void addresseeDropped(QDropEvent *);
91 92
92 protected: 93 protected:
93 virtual void dragEnterEvent(QDragEnterEvent *); 94 virtual void dragEnterEvent(QDragEnterEvent *);
94 virtual void dropEvent(QDropEvent *); 95 virtual void dropEvent(QDropEvent *);
95 virtual void startDrag(); 96 virtual void startDrag();
96}; 97};
diff --git a/kaddressbook/views/kaddressbookiconview.cpp b/kaddressbook/views/kaddressbookiconview.cpp
index f4c68b8..41c3cb2 100644
--- a/kaddressbook/views/kaddressbookiconview.cpp
+++ b/kaddressbook/views/kaddressbookiconview.cpp
@@ -182,64 +182,70 @@ class AddresseeIconViewItem : public QIconViewItem
182/////////////////////////////// 182///////////////////////////////
183// KAddressBookView 183// KAddressBookView
184 184
185KAddressBookIconView::KAddressBookIconView( KABC::AddressBook *ab, 185KAddressBookIconView::KAddressBookIconView( KABC::AddressBook *ab,
186 QWidget *parent, const char *name) 186 QWidget *parent, const char *name)
187 : KAddressBookView( ab, parent, name ) 187 : KAddressBookView( ab, parent, name )
188{ 188{
189 // Init the GUI 189 // Init the GUI
190 QVBoxLayout *layout = new QVBoxLayout(viewWidget()); 190 QVBoxLayout *layout = new QVBoxLayout(viewWidget());
191 191
192 mIconView = new AddresseeIconView(viewWidget(), "mIconView"); 192 mIconView = new AddresseeIconView(viewWidget(), "mIconView");
193 layout->addWidget(mIconView); 193 layout->addWidget(mIconView);
194 194
195 // Connect up the signals 195 // Connect up the signals
196 196
197//US method executed is part of KIconView 197//US method executed is part of KIconView
198//US connect(mIconView, SIGNAL(executed(QIconViewItem *)), 198//US connect(mIconView, SIGNAL(executed(QIconViewItem *)),
199//US this, SLOT(addresseeExecuted(QIconViewItem *))); 199//US this, SLOT(addresseeExecuted(QIconViewItem *)));
200 connect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)), 200 connect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)),
201 this, SLOT(addresseeExecuted(QIconViewItem *))); 201 this, SLOT(addresseeExecuted(QIconViewItem *)));
202 202
203 connect(mIconView, SIGNAL(selectionChanged()), 203 connect(mIconView, SIGNAL(selectionChanged()),
204 this, SLOT(addresseeSelected())); 204 this, SLOT(addresseeSelected()));
205 connect(mIconView, SIGNAL(addresseeDropped(QDropEvent*)), 205 connect(mIconView, SIGNAL(addresseeDropped(QDropEvent*)),
206 this, SIGNAL(dropped(QDropEvent*))); 206 this, SIGNAL(dropped(QDropEvent*)));
207 connect(mIconView, SIGNAL(startAddresseeDrag()), 207 connect(mIconView, SIGNAL(startAddresseeDrag()),
208 this, SIGNAL(startDrag())); 208 this, SIGNAL(startDrag()));
209} 209}
210 210
211KAddressBookIconView::~KAddressBookIconView() 211KAddressBookIconView::~KAddressBookIconView()
212{ 212{
213} 213}
214void KAddressBookIconView::setFocusAV()
215{
216 if ( mIconView )
217 mIconView->setFocus();
218}
219
214 220
215void KAddressBookIconView::scrollUP() 221void KAddressBookIconView::scrollUP()
216{ 222{
217 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 ); 223 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 );
218 QApplication::postEvent( mIconView, ev ); 224 QApplication::postEvent( mIconView, ev );
219} 225}
220void KAddressBookIconView::scrollDOWN() 226void KAddressBookIconView::scrollDOWN()
221{ 227{
222 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 ); 228 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 );
223 QApplication::postEvent( mIconView, ev ); 229 QApplication::postEvent( mIconView, ev );
224} 230}
225void KAddressBookIconView::readConfig(KConfig *config) 231void KAddressBookIconView::readConfig(KConfig *config)
226{ 232{
227 KAddressBookView::readConfig(config); 233 KAddressBookView::readConfig(config);
228 234
229//US method executed is part of KIconView 235//US method executed is part of KIconView
230//US disconnect(mIconView, SIGNAL(executed(QIconViewItem *)), 236//US disconnect(mIconView, SIGNAL(executed(QIconViewItem *)),
231//US this, SLOT(addresseeExecuted(QIconViewItem *))); 237//US this, SLOT(addresseeExecuted(QIconViewItem *)));
232 disconnect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)), 238 disconnect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)),
233 this, SLOT(addresseeExecuted(QIconViewItem *))); 239 this, SLOT(addresseeExecuted(QIconViewItem *)));
234 240
235//US method executed is part of KIconView. Use selectionChanged instead 241//US method executed is part of KIconView. Use selectionChanged instead
236/*US 242/*US
237 if (KABPrefs::instance()->mHonorSingleClick) 243 if (KABPrefs::instance()->mHonorSingleClick)
238 connect(mIconView, SIGNAL(executed(QIconViewItem *)), 244 connect(mIconView, SIGNAL(executed(QIconViewItem *)),
239 this, SLOT(addresseeExecuted(QIconViewItem *))); 245 this, SLOT(addresseeExecuted(QIconViewItem *)));
240 else 246 else
241 connect(mIconView, SIGNAL(doubleClicked(QIconViewItem *)), 247 connect(mIconView, SIGNAL(doubleClicked(QIconViewItem *)),
242 this, SLOT(addresseeExecuted(QIconViewItem *))); 248 this, SLOT(addresseeExecuted(QIconViewItem *)));
243*/ 249*/
244 connect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)), 250 connect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)),
245 this, SLOT(addresseeExecuted(QIconViewItem *))); 251 this, SLOT(addresseeExecuted(QIconViewItem *)));
diff --git a/kaddressbook/views/kaddressbookiconview.h b/kaddressbook/views/kaddressbookiconview.h
index acfcd71..b0b9fea 100644
--- a/kaddressbook/views/kaddressbookiconview.h
+++ b/kaddressbook/views/kaddressbookiconview.h
@@ -34,64 +34,65 @@
34#endif //KAB_EMBEDDED 34#endif //KAB_EMBEDDED
35#include "kaddressbookview.h" 35#include "kaddressbookview.h"
36 36
37class QIconViewItem; 37class QIconViewItem;
38class KConfig; 38class KConfig;
39class AddresseeIconView; 39class AddresseeIconView;
40class AddresseeIconViewItem; 40class AddresseeIconViewItem;
41class QIconDragItem; 41class QIconDragItem;
42class KAddressBookIconView; 42class KAddressBookIconView;
43 43
44namespace KABC { class AddressBook; } 44namespace KABC { class AddressBook; }
45 45
46/** This is an example kaddressbook view that is implemented using 46/** This is an example kaddressbook view that is implemented using
47* KIconView. This view is not the most useful view, but it displays 47* KIconView. This view is not the most useful view, but it displays
48* how simple implementing a new view can be. 48* how simple implementing a new view can be.
49*/ 49*/
50class KAddressBookIconView : public KAddressBookView 50class KAddressBookIconView : public KAddressBookView
51{ 51{
52 Q_OBJECT 52 Q_OBJECT
53 53
54 public: 54 public:
55 KAddressBookIconView( KABC::AddressBook *ab, QWidget *parent, 55 KAddressBookIconView( KABC::AddressBook *ab, QWidget *parent,
56 const char *name = 0 ); 56 const char *name = 0 );
57 virtual ~KAddressBookIconView(); 57 virtual ~KAddressBookIconView();
58 58
59 virtual QStringList selectedUids(); 59 virtual QStringList selectedUids();
60 virtual QString type() const { return "Icon"; } 60 virtual QString type() const { return "Icon"; }
61 void doSearch( const QString& s ,KABC::Field *field ); 61 void doSearch( const QString& s ,KABC::Field *field );
62 62
63 virtual void readConfig(KConfig *config); 63 virtual void readConfig(KConfig *config);
64 virtual void scrollUP(); 64 virtual void scrollUP();
65 virtual void scrollDOWN(); 65 virtual void scrollDOWN();
66 virtual void setFocusAV();
66 67
67 public slots: 68 public slots:
68 void refresh(QString uid = QString::null); 69 void refresh(QString uid = QString::null);
69#ifndef KAB_EMBEDDED 70#ifndef KAB_EMBEDDED
70//MOC_SKIP_BEGIN 71//MOC_SKIP_BEGIN
71 void setSelected(QString uid = QString::null, bool selected = true); 72 void setSelected(QString uid = QString::null, bool selected = true);
72//MOC_SKIP_END 73//MOC_SKIP_END
73#else //KAB_EMBEDDED 74#else //KAB_EMBEDDED
74//US my MOC do not like default parameters ??? 75//US my MOC do not like default parameters ???
75 void setSelected(QString uid, bool selected); 76 void setSelected(QString uid, bool selected);
76#endif //KAB_EMBEDDED 77#endif //KAB_EMBEDDED
77 78
78 protected slots: 79 protected slots:
79 void addresseeExecuted(QIconViewItem *item); 80 void addresseeExecuted(QIconViewItem *item);
80 void addresseeSelected(); 81 void addresseeSelected();
81 82
82 private: 83 private:
83 AddresseeIconView *mIconView; 84 AddresseeIconView *mIconView;
84 QPtrList<AddresseeIconViewItem> mIconList; 85 QPtrList<AddresseeIconViewItem> mIconList;
85}; 86};
86 87
87 88
88#ifndef KAB_EMBEDDED 89#ifndef KAB_EMBEDDED
89//MOC_SKIP_BEGIN 90//MOC_SKIP_BEGIN
90class AddresseeIconView : public KIconView 91class AddresseeIconView : public KIconView
91//MOC_SKIP_END 92//MOC_SKIP_END
92#else //KAB_EMBEDDED 93#else //KAB_EMBEDDED
93class AddresseeIconView : public QIconView 94class AddresseeIconView : public QIconView
94#endif //KAB_EMBEDDED 95#endif //KAB_EMBEDDED
95{ 96{
96 Q_OBJECT 97 Q_OBJECT
97 98
diff --git a/kaddressbook/views/kaddressbooktableview.cpp b/kaddressbook/views/kaddressbooktableview.cpp
index 2412170..e40eb9e 100644
--- a/kaddressbook/views/kaddressbooktableview.cpp
+++ b/kaddressbook/views/kaddressbooktableview.cpp
@@ -22,64 +22,70 @@
22#include <klineedit.h> 22#include <klineedit.h>
23#include <klocale.h> 23#include <klocale.h>
24#include <kmessagebox.h> 24#include <kmessagebox.h>
25#include <kurl.h> 25#include <kurl.h>
26#include <kurlrequester.h> 26#include <kurlrequester.h>
27 27
28//US#include "configuretableviewdialog.h" 28//US#include "configuretableviewdialog.h"
29#include "contactlistview.h" 29#include "contactlistview.h"
30#include "kabprefs.h" 30#include "kabprefs.h"
31#include "undocmds.h" 31#include "undocmds.h"
32#include "viewmanager.h" 32#include "viewmanager.h"
33 33
34#include <qlayout.h> 34#include <qlayout.h>
35#include <qheader.h> 35#include <qheader.h>
36#include <qregexp.h> 36#include <qregexp.h>
37 37
38#include "kaddressbooktableview.h" 38#include "kaddressbooktableview.h"
39 39
40 40
41KAddressBookTableView::KAddressBookTableView( KABC::AddressBook *ab, 41KAddressBookTableView::KAddressBookTableView( KABC::AddressBook *ab,
42 QWidget *parent, const char *name ) 42 QWidget *parent, const char *name )
43 : KAddressBookView( ab, parent, name ) 43 : KAddressBookView( ab, parent, name )
44{ 44{
45 mainLayout = new QVBoxLayout( viewWidget(), 2 ); 45 mainLayout = new QVBoxLayout( viewWidget(), 2 );
46 46
47 // The list view will be created when the config is read. 47 // The list view will be created when the config is read.
48 mListView = 0; 48 mListView = 0;
49} 49}
50 50
51KAddressBookTableView::~KAddressBookTableView() 51KAddressBookTableView::~KAddressBookTableView()
52{ 52{
53} 53}
54void KAddressBookTableView::setFocusAV()
55{
56 if ( mListView )
57 mListView->setFocus();
58
59}
54void KAddressBookTableView::scrollUP() 60void KAddressBookTableView::scrollUP()
55{ 61{
56 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 ); 62 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 );
57 QApplication::postEvent( mListView, ev ); 63 QApplication::postEvent( mListView, ev );
58} 64}
59void KAddressBookTableView::scrollDOWN() 65void KAddressBookTableView::scrollDOWN()
60{ 66{
61 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 ); 67 QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 );
62 QApplication::postEvent( mListView, ev ); 68 QApplication::postEvent( mListView, ev );
63} 69}
64void KAddressBookTableView::reconstructListView() 70void KAddressBookTableView::reconstructListView()
65{ 71{
66 if (mListView) 72 if (mListView)
67 { 73 {
68 disconnect(mListView, SIGNAL(selectionChanged()), 74 disconnect(mListView, SIGNAL(selectionChanged()),
69 this, SLOT(addresseeSelected())); 75 this, SLOT(addresseeSelected()));
70 disconnect(mListView, SIGNAL(executed(QListViewItem*)), 76 disconnect(mListView, SIGNAL(executed(QListViewItem*)),
71 this, SLOT(addresseeExecuted(QListViewItem*))); 77 this, SLOT(addresseeExecuted(QListViewItem*)));
72 disconnect(mListView, SIGNAL(doubleClicked(QListViewItem*)), 78 disconnect(mListView, SIGNAL(doubleClicked(QListViewItem*)),
73 this, SLOT(addresseeExecuted(QListViewItem*))); 79 this, SLOT(addresseeExecuted(QListViewItem*)));
74 disconnect(mListView, SIGNAL(startAddresseeDrag()), this, 80 disconnect(mListView, SIGNAL(startAddresseeDrag()), this,
75 SIGNAL(startDrag())); 81 SIGNAL(startDrag()));
76 disconnect(mListView, SIGNAL(returnPressed(QListViewItem*)), 82 disconnect(mListView, SIGNAL(returnPressed(QListViewItem*)),
77 this, SLOT(addresseeExecuted(QListViewItem*))); 83 this, SLOT(addresseeExecuted(QListViewItem*)));
78 84
79 disconnect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, 85 disconnect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this,
80 SIGNAL(dropped(QDropEvent*))); 86 SIGNAL(dropped(QDropEvent*)));
81 delete mListView; 87 delete mListView;
82 } 88 }
83 89
84 mListView = new ContactListView( this, addressBook(), viewWidget() ); 90 mListView = new ContactListView( this, addressBook(), viewWidget() );
85 91
diff --git a/kaddressbook/views/kaddressbooktableview.h b/kaddressbook/views/kaddressbooktableview.h
index 865f8d5..38db7b4 100644
--- a/kaddressbook/views/kaddressbooktableview.h
+++ b/kaddressbook/views/kaddressbooktableview.h
@@ -36,64 +36,65 @@ class ContactListView;
36 36
37 37
38namespace KABC { class AddressBook; } 38namespace KABC { class AddressBook; }
39 39
40/** 40/**
41 * This class is the table view for kaddressbook. This view is a KListView 41 * This class is the table view for kaddressbook. This view is a KListView
42 * with multiple columns for the selected fields. 42 * with multiple columns for the selected fields.
43 * 43 *
44 * @short Table View 44 * @short Table View
45 * @author Don Sanders <dsanders@kde.org> 45 * @author Don Sanders <dsanders@kde.org>
46 * @version 0.1 46 * @version 0.1
47 */ 47 */
48class KAddressBookTableView : public KAddressBookView 48class KAddressBookTableView : public KAddressBookView
49{ 49{
50friend class ContactListView; 50friend class ContactListView;
51 51
52 Q_OBJECT 52 Q_OBJECT
53 53
54 public: 54 public:
55 KAddressBookTableView( KABC::AddressBook *ab, QWidget *parent, 55 KAddressBookTableView( KABC::AddressBook *ab, QWidget *parent,
56 const char *name = 0 ); 56 const char *name = 0 );
57 virtual ~KAddressBookTableView(); 57 virtual ~KAddressBookTableView();
58 58
59 virtual void refresh(QString uid = QString::null); 59 virtual void refresh(QString uid = QString::null);
60 virtual QStringList selectedUids(); 60 virtual QStringList selectedUids();
61 virtual void setSelected(QString uid = QString::null, bool selected = false); 61 virtual void setSelected(QString uid = QString::null, bool selected = false);
62 virtual void readConfig(KConfig *config); 62 virtual void readConfig(KConfig *config);
63 virtual void writeConfig(KConfig *config); 63 virtual void writeConfig(KConfig *config);
64 virtual QString type() const { return "Table"; } 64 virtual QString type() const { return "Table"; }
65 void doSearch( const QString& s ,KABC::Field *field ); 65 void doSearch( const QString& s ,KABC::Field *field );
66 virtual void scrollUP(); 66 virtual void scrollUP();
67 virtual void scrollDOWN(); 67 virtual void scrollDOWN();
68 virtual void setFocusAV();
68 69
69 public slots: 70 public slots:
70 virtual void reconstructListView(); 71 virtual void reconstructListView();
71 72
72 protected slots: 73 protected slots:
73 /** Called whenever the user selects an addressee in the list view. 74 /** Called whenever the user selects an addressee in the list view.
74 */ 75 */
75 void addresseeSelected(); 76 void addresseeSelected();
76 void addresseeDeleted(); 77 void addresseeDeleted();
77 78
78 /** Called whenever the user executes an addressee. In terms of the 79 /** Called whenever the user executes an addressee. In terms of the
79 * list view, this is probably a double click 80 * list view, this is probably a double click
80 */ 81 */
81 void addresseeExecuted(QListViewItem*); 82 void addresseeExecuted(QListViewItem*);
82 83
83 private: 84 private:
84 QVBoxLayout *mainLayout; 85 QVBoxLayout *mainLayout;
85 ContactListView *mListView; 86 ContactListView *mListView;
86}; 87};
87 88
88 89
89class TableViewFactory : public ViewFactory 90class TableViewFactory : public ViewFactory
90{ 91{
91 public: 92 public:
92 KAddressBookView *view( KABC::AddressBook *ab, QWidget *parent, const char *name ) 93 KAddressBookView *view( KABC::AddressBook *ab, QWidget *parent, const char *name )
93 { 94 {
94 return new KAddressBookTableView( ab, parent, name ); 95 return new KAddressBookTableView( ab, parent, name );
95 } 96 }
96 97
97 QString type() const { return "Table"; } 98 QString type() const { return "Table"; }
98 99
99 QString description() const { return i18n( "A listing of contacts in a table. Each cell of " 100 QString description() const { return i18n( "A listing of contacts in a table. Each cell of "