summaryrefslogtreecommitdiffabout
path: root/kaddressbook/extensionmanager.cpp
Unidiff
Diffstat (limited to 'kaddressbook/extensionmanager.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/extensionmanager.cpp54
1 files changed, 28 insertions, 26 deletions
diff --git a/kaddressbook/extensionmanager.cpp b/kaddressbook/extensionmanager.cpp
index 9114cdc..98561dc 100644
--- a/kaddressbook/extensionmanager.cpp
+++ b/kaddressbook/extensionmanager.cpp
@@ -14,175 +14,177 @@
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23#include <qlayout.h> 23#include <qlayout.h>
24#include <qapplication.h> 24#include <qapplication.h>
25#include <kactionclasses.h> 25#include <kactionclasses.h>
26#include <kconfig.h> 26#include <kconfig.h>
27#include <kdebug.h> 27#include <kdebug.h>
28#include <klocale.h> 28#include <klocale.h>
29 29
30#ifndef KAB_EMBEDDED 30#ifndef KAB_EMBEDDED
31#include <ktrader.h> 31#include <ktrader.h>
32#else //KAB_EMBEDDED 32#else //KAB_EMBEDDED
33#include <features/mergewidget.h> 33#include <features/mergewidget.h>
34#include <features/distributionlistwidget.h> 34#include <features/distributionlistwidget.h>
35#endif //KAB_EMBEDDED 35#endif //KAB_EMBEDDED
36 36
37#include "addresseeeditorwidget.h" 37#include "addresseeeditorwidget.h"
38#include "kabcore.h" 38#include "kabcore.h"
39#include "kabprefs.h" 39#include "kabprefs.h"
40 40
41#include "extensionmanager.h" 41#include "extensionmanager.h"
42 42
43ExtensionManager::ExtensionManager( KABCore *core, QWidget *parent, 43ExtensionManager::ExtensionManager( KABCore *core, QWidget *parent,
44 const char *name ) 44 const char *name )
45 : QScrollView( parent, name ), mCore( core ), mCurrentExtensionWidget( 0 ) 45 : QScrollView( parent, name ), mCore( core ), mCurrentExtensionWidget( 0 )
46{ 46{
47#ifdef KAB_EMBEDDED 47#ifdef KAB_EMBEDDED
48//US QPopupMenu *settingsmenu = (QPopupMenu*)mCore->getSettingsMenu(); 48//US QPopupMenu *settingsmenu = (QPopupMenu*)mCore->getSettingsMenu();
49 QWidget *settingsmenu = (QWidget*)mCore->getSettingsMenu(); 49 QWidget *settingsmenu = (QWidget*)mCore->getSettingsMenu();
50#endif //KAB_EMBEDDED 50#endif //KAB_EMBEDDED
51 51
52 mActionExtensions = new KSelectAction( i18n( "Show Extension Bar" ), 0, 52 mActionExtensions = new KSelectAction( i18n( "Show Extension Bar" ), 0,
53 mCore->actionCollection(), 53 mCore->actionCollection(),
54 "options_show_extensions" ); 54 "options_show_extensions" );
55 55
56 mActionExtensions->plug( settingsmenu ); 56 mActionExtensions->plug( settingsmenu );
57 57
58 connect( mActionExtensions, SIGNAL( activated( int ) ), 58 connect( mActionExtensions, SIGNAL( activated( int ) ),
59 SLOT( setActiveExtension( int ) ) ); 59 SLOT( setActiveExtension( int ) ) );
60 mWidgetBox = new QWidget( viewport() ); 60 mWidgetBox = new QWidget( viewport() );
61 addChild( mWidgetBox ); 61 addChild( mWidgetBox );
62 setResizePolicy(AutoOneFit); 62 setResizePolicy(AutoOneFit);
63 createExtensionWidgets(); 63 createExtensionWidgets();
64 hide(); 64 hide();
65} 65}
66 66
67ExtensionManager::~ExtensionManager() 67ExtensionManager::~ExtensionManager()
68{ 68{
69} 69}
70 70
71void ExtensionManager::restoreSettings() 71void ExtensionManager::restoreSettings()
72{ 72{
73 mActionExtensions->setCurrentItem( KABPrefs::instance()->mCurrentExtension ); 73 mActionExtensions->setCurrentItem( KABPrefs::instance()->mCurrentExtension );
74 int i = 1; 74 int i = 1;
75 mCurrentExtensionWidget = mExtensionWidgetList.at( i-1 ); 75 mCurrentExtensionWidget = mExtensionWidgetList.at( i-1 );
76 while ( mCurrentExtensionWidget ) { 76 while ( mCurrentExtensionWidget ) {
77 if( i != KABPrefs::instance()->mCurrentExtension ) 77 if( i != KABPrefs::instance()->mCurrentExtension )
78 mCurrentExtensionWidget->hide(); 78 mCurrentExtensionWidget->hide();
79 mCurrentExtensionWidget = mExtensionWidgetList.at( ++i-1 ); 79 mCurrentExtensionWidget = mExtensionWidgetList.at( ++i-1 );
80 80
81 } 81 }
82 setActiveExtension( mActionExtensions->currentItem() ); 82 setActiveExtension( mActionExtensions->currentItem() );
83} 83}
84 84
85void ExtensionManager::saveSettings() 85void ExtensionManager::saveSettings()
86{ 86{
87 KABPrefs::instance()->mCurrentExtension = mActionExtensions->currentItem(); 87 KABPrefs::instance()->mCurrentExtension = mActionExtensions->currentItem();
88} 88}
89 89
90void ExtensionManager::reconfigure() 90void ExtensionManager::reconfigure()
91{ 91{
92 saveSettings(); 92 saveSettings();
93 createExtensionWidgets(); 93 createExtensionWidgets();
94 restoreSettings(); 94 restoreSettings();
95} 95}
96 96
97bool ExtensionManager::isQuickEditVisible() const 97bool ExtensionManager::isQuickEditVisible() const
98{ 98{
99 return ( mCurrentExtensionWidget && 99 return ( mCurrentExtensionWidget &&
100 mCurrentExtensionWidget->identifier() == "contact_editor" ); 100 mCurrentExtensionWidget->identifier() == "contact_editor" );
101} 101}
102 102
103void ExtensionManager::setSelectionChanged() 103void ExtensionManager::setSelectionChanged()
104{ 104{
105 if ( mCurrentExtensionWidget ) 105 if ( mCurrentExtensionWidget )
106 mCurrentExtensionWidget->contactsSelectionChanged(); 106 mCurrentExtensionWidget->contactsSelectionChanged();
107} 107}
108 108
109void ExtensionManager::setActiveExtension( int id ) 109void ExtensionManager::setActiveExtension( int id )
110{ 110{
111 //qDebug("+++++++++++++++++++ExtensionManager::setActiveExtension %d ", id); 111 //qDebug("+++++++++++++++++++ExtensionManager::setActiveExtension %d ", id);
112 if ( id == 0 ) { 112 if ( id == 0 ) {
113 hide(); 113 hide();
114 mCurrentExtensionWidget = 0; 114 mCurrentExtensionWidget = 0;
115#ifndef DESKTOP_VERSION 115#ifndef DESKTOP_VERSION
116//US our screen is so small, that we better hide the detailscreen, just in case. 116//US our screen is so small, that we better hide the detailscreen, just in case.
117 mCore->setDetailsToState( ); 117//US mCore->setDetailsToState( );
118#endif //KAB_EMBEDDED 118#endif //KAB_EMBEDDED
119 } else if ( id > 0 ) { 119 } else if ( id > 0 ) {
120 if ( mCurrentExtensionWidget ) 120 if ( mCurrentExtensionWidget )
121 mCurrentExtensionWidget->hide(); 121 mCurrentExtensionWidget->hide();
122 122
123 mCurrentExtensionWidget = mExtensionWidgetList.at( id - 1 ); 123 mCurrentExtensionWidget = mExtensionWidgetList.at( id - 1 );
124 124
125 if ( mCurrentExtensionWidget ) { 125 if ( mCurrentExtensionWidget ) {
126#ifndef DESKTOP_VERSION 126#ifndef DESKTOP_VERSION
127//US our screen is so small, that we better hide the detailscreen, just in case. 127//US our screen is so small, that we better hide the detailscreen, just in case.
128 mCore->setDetailsVisible( false ); 128//US mCore->setDetailsVisible( false );
129#endif //KAB_EMBEDDED 129#endif //KAB_EMBEDDED
130 show(); 130 show();
131 mWidgetBox->show(); 131 mWidgetBox->show();
132 mCurrentExtensionWidget->show(); 132 mCurrentExtensionWidget->show();
133 } else { 133 } else {
134 hide(); 134 hide();
135 mCurrentExtensionWidget = 0; 135 mCurrentExtensionWidget = 0;
136#ifndef DESKTOP_VERSION 136#ifndef DESKTOP_VERSION
137//US our screen is so small, that we better hide the detailscreen, just in case. 137//US our screen is so small, that we better hide the detailscreen, just in case.
138 mCore->setDetailsToState( ); 138//US mCore->setDetailsToState( );
139#endif //KAB_EMBEDDED 139#endif //KAB_EMBEDDED
140 } 140 }
141 } 141 }
142
143 emit changedActiveExtension( id );
142} 144}
143 145
144void ExtensionManager::createExtensionWidgets() 146void ExtensionManager::createExtensionWidgets()
145{ 147{
146 // clear extension widget list 148 // clear extension widget list
147 mExtensionWidgetList.setAutoDelete( true ); 149 mExtensionWidgetList.setAutoDelete( true );
148 QPtrListIterator<ExtensionWidget> wdgIt( mExtensionWidgetList ); 150 QPtrListIterator<ExtensionWidget> wdgIt( mExtensionWidgetList );
149 ExtensionWidget *wdg = 0; 151 ExtensionWidget *wdg = 0;
150 while ( ( wdg = wdgIt.current() ) != 0 ) 152 while ( ( wdg = wdgIt.current() ) != 0 )
151 mExtensionWidgetList.remove( wdg ); 153 mExtensionWidgetList.remove( wdg );
152 154
153 mExtensionWidgetList.setAutoDelete( false ); 155 mExtensionWidgetList.setAutoDelete( false );
154 156
155 QStringList extensionNames( i18n( "None" ) ); 157 QStringList extensionNames( i18n( "None" ) );
156 158
157 // add addressee editor as default 159 // add addressee editor as default
158 160
159 QHBoxLayout *hbl = new QHBoxLayout (mWidgetBox ); 161 QHBoxLayout *hbl = new QHBoxLayout (mWidgetBox );
160 162
161 wdg = new AddresseeEditorWidget( mCore, true, mWidgetBox ); 163 wdg = new AddresseeEditorWidget( mCore, true, mWidgetBox );
162 hbl->addWidget( wdg ); 164 hbl->addWidget( wdg );
163 //wdg->hide(); 165 //wdg->hide();
164 connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ), 166 connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ),
165 SIGNAL( modified( const KABC::Addressee::List& ) ) ); 167 SIGNAL( modified( const KABC::Addressee::List& ) ) );
166 mExtensionWidgetList.append( wdg ); 168 mExtensionWidgetList.append( wdg );
167 extensionNames.append( wdg->title() ); 169 extensionNames.append( wdg->title() );
168 170
169 // load the other extensions 171 // load the other extensions
170 QStringList activeExtensions = KABPrefs::instance()->mActiveExtensions; 172 QStringList activeExtensions = KABPrefs::instance()->mActiveExtensions;
171 173
172#ifndef KAB_EMBEDDED 174#ifndef KAB_EMBEDDED
173 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/Extension" ); 175 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/Extension" );
174 KTrader::OfferList::ConstIterator it; 176 KTrader::OfferList::ConstIterator it;
175 for ( it = plugins.begin(); it != plugins.end(); ++it ) { 177 for ( it = plugins.begin(); it != plugins.end(); ++it ) {
176 if ( !(*it)->hasServiceType( "KAddressBook/Extension" ) ) 178 if ( !(*it)->hasServiceType( "KAddressBook/Extension" ) )
177 continue; 179 continue;
178 180
179 KLibFactory *factory = KLibLoader::self()->factory( (*it)->library().latin1() ); 181 KLibFactory *factory = KLibLoader::self()->factory( (*it)->library().latin1() );
180 if ( !factory ) { 182 if ( !factory ) {
181 kdDebug(5720) << "ExtensionManager::loadExtensions(): Factory creation failed" << endl; 183 kdDebug(5720) << "ExtensionManager::loadExtensions(): Factory creation failed" << endl;
182 continue; 184 continue;
183 } 185 }
184 186
185 ExtensionFactory *extensionFactory = static_cast<ExtensionFactory*>( factory ); 187 ExtensionFactory *extensionFactory = static_cast<ExtensionFactory*>( factory );
186 188
187 if ( !extensionFactory ) { 189 if ( !extensionFactory ) {
188 kdDebug(5720) << "ExtensionManager::loadExtensions(): Cast failed" << endl; 190 kdDebug(5720) << "ExtensionManager::loadExtensions(): Cast failed" << endl;
@@ -203,44 +205,44 @@ void ExtensionManager::createExtensionWidgets()
203 } 205 }
204#else //KAB_EMBEDDED 206#else //KAB_EMBEDDED
205 //load Mergefactory/extension 207 //load Mergefactory/extension
206 ExtensionFactory *extensionFactory = new MergeFactory(); 208 ExtensionFactory *extensionFactory = new MergeFactory();
207 if ( activeExtensions.contains( extensionFactory->identifier() ) ) 209 if ( activeExtensions.contains( extensionFactory->identifier() ) )
208 { 210 {
209 wdg = extensionFactory->extension( mCore, mWidgetBox ); 211 wdg = extensionFactory->extension( mCore, mWidgetBox );
210 if ( wdg ) { 212 if ( wdg ) {
211 hbl->addWidget( wdg ); 213 hbl->addWidget( wdg );
212 //wdg->hide(); 214 //wdg->hide();
213 connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ), 215 connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ),
214 SIGNAL( modified( const KABC::Addressee::List& ) ) ); 216 SIGNAL( modified( const KABC::Addressee::List& ) ) );
215 mExtensionWidgetList.append( wdg ); 217 mExtensionWidgetList.append( wdg );
216 extensionNames.append( wdg->title() ); 218 extensionNames.append( wdg->title() );
217 } 219 }
218 } 220 }
219 221
220 //load DistributionListfactory/extension 222 //load DistributionListfactory/extension
221 extensionFactory = new DistributionListFactory(); 223 extensionFactory = new DistributionListFactory();
222 if (activeExtensions.contains( extensionFactory->identifier() ) ) 224 if (activeExtensions.contains( extensionFactory->identifier() ) )
223 { 225 {
224 wdg = extensionFactory->extension( mCore, mWidgetBox ); 226 wdg = extensionFactory->extension( mCore, mWidgetBox );
225 if ( wdg ) { 227 if ( wdg ) {
226 hbl->addWidget( wdg ); 228 hbl->addWidget( wdg );
227 //wdg->hide(); 229 //wdg->hide();
228 connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ), 230 connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ),
229 SIGNAL( modified( const KABC::Addressee::List& ) ) ); 231 SIGNAL( modified( const KABC::Addressee::List& ) ) );
230 mExtensionWidgetList.append( wdg ); 232 mExtensionWidgetList.append( wdg );
231 extensionNames.append( wdg->title() ); 233 extensionNames.append( wdg->title() );
232 } 234 }
233 } 235 }
234 236
235 hbl->addStretch(); 237 hbl->addStretch();
236 238
237#endif //KAB_EMBEDDED 239#endif //KAB_EMBEDDED
238 240
239 241
240 mActionExtensions->setItems( extensionNames ); 242 mActionExtensions->setItems( extensionNames );
241 mCurrentExtensionWidget = 0; 243 mCurrentExtensionWidget = 0;
242} 244}
243 245
244#ifndef KAB_EMBEDDED 246#ifndef KAB_EMBEDDED
245#include "extensionmanager.moc" 247#include "extensionmanager.moc"
246#endif //KAB_EMBEDDED 248#endif //KAB_EMBEDDED