summaryrefslogtreecommitdiffabout
path: root/kaddressbook/extensionmanager.cpp
Unidiff
Diffstat (limited to 'kaddressbook/extensionmanager.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/extensionmanager.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/kaddressbook/extensionmanager.cpp b/kaddressbook/extensionmanager.cpp
index 98561dc..efbdf17 100644
--- a/kaddressbook/extensionmanager.cpp
+++ b/kaddressbook/extensionmanager.cpp
@@ -1,248 +1,249 @@
1/* 1/*
2 This file is part of KAddressbook. 2 This file is part of KAddressbook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
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 new QHBoxLayout (mWidgetBox );
61 addChild( mWidgetBox ); 62 addChild( mWidgetBox );
62 setResizePolicy(AutoOneFit); 63 setResizePolicy(AutoOneFit);
63 createExtensionWidgets(); 64 createExtensionWidgets();
64 hide(); 65 hide();
65} 66}
66 67
67ExtensionManager::~ExtensionManager() 68ExtensionManager::~ExtensionManager()
68{ 69{
69} 70}
70 71
71void ExtensionManager::restoreSettings() 72void ExtensionManager::restoreSettings()
72{ 73{
73 mActionExtensions->setCurrentItem( KABPrefs::instance()->mCurrentExtension ); 74 mActionExtensions->setCurrentItem( KABPrefs::instance()->mCurrentExtension );
74 int i = 1; 75 int i = 1;
75 mCurrentExtensionWidget = mExtensionWidgetList.at( i-1 ); 76 mCurrentExtensionWidget = mExtensionWidgetList.at( i-1 );
76 while ( mCurrentExtensionWidget ) { 77 while ( mCurrentExtensionWidget ) {
77 if( i != KABPrefs::instance()->mCurrentExtension ) 78 if( i != KABPrefs::instance()->mCurrentExtension )
78 mCurrentExtensionWidget->hide(); 79 mCurrentExtensionWidget->hide();
79 mCurrentExtensionWidget = mExtensionWidgetList.at( ++i-1 ); 80 mCurrentExtensionWidget = mExtensionWidgetList.at( ++i-1 );
80 81
81 } 82 }
82 setActiveExtension( mActionExtensions->currentItem() ); 83 setActiveExtension( mActionExtensions->currentItem() );
83} 84}
84 85
85void ExtensionManager::saveSettings() 86void ExtensionManager::saveSettings()
86{ 87{
87 KABPrefs::instance()->mCurrentExtension = mActionExtensions->currentItem(); 88 KABPrefs::instance()->mCurrentExtension = mActionExtensions->currentItem();
88} 89}
89 90
90void ExtensionManager::reconfigure() 91void ExtensionManager::reconfigure()
91{ 92{
92 saveSettings(); 93 saveSettings();
93 createExtensionWidgets(); 94 createExtensionWidgets();
94 restoreSettings(); 95 restoreSettings();
95} 96}
96 97
97bool ExtensionManager::isQuickEditVisible() const 98bool ExtensionManager::isQuickEditVisible() const
98{ 99{
99 return ( mCurrentExtensionWidget && 100 return ( mCurrentExtensionWidget &&
100 mCurrentExtensionWidget->identifier() == "contact_editor" ); 101 mCurrentExtensionWidget->identifier() == "contact_editor" );
101} 102}
102 103
103void ExtensionManager::setSelectionChanged() 104void ExtensionManager::setSelectionChanged()
104{ 105{
105 if ( mCurrentExtensionWidget ) 106 if ( mCurrentExtensionWidget )
106 mCurrentExtensionWidget->contactsSelectionChanged(); 107 mCurrentExtensionWidget->contactsSelectionChanged();
107} 108}
108 109
109void ExtensionManager::setActiveExtension( int id ) 110void ExtensionManager::setActiveExtension( int id )
110{ 111{
111 //qDebug("+++++++++++++++++++ExtensionManager::setActiveExtension %d ", id); 112 //qDebug("+++++++++++++++++++ExtensionManager::setActiveExtension %d ", id);
112 if ( id == 0 ) { 113 if ( id == 0 ) {
113 hide(); 114 hide();
114 mCurrentExtensionWidget = 0; 115 mCurrentExtensionWidget = 0;
115#ifndef DESKTOP_VERSION 116#ifndef DESKTOP_VERSION
116//US our screen is so small, that we better hide the detailscreen, just in case. 117//US our screen is so small, that we better hide the detailscreen, just in case.
117//US mCore->setDetailsToState( ); 118//US mCore->setDetailsToState( );
118#endif //KAB_EMBEDDED 119#endif //KAB_EMBEDDED
119 } else if ( id > 0 ) { 120 } else if ( id > 0 ) {
120 if ( mCurrentExtensionWidget ) 121 if ( mCurrentExtensionWidget )
121 mCurrentExtensionWidget->hide(); 122 mCurrentExtensionWidget->hide();
122 123
123 mCurrentExtensionWidget = mExtensionWidgetList.at( id - 1 ); 124 mCurrentExtensionWidget = mExtensionWidgetList.at( id - 1 );
124 125
125 if ( mCurrentExtensionWidget ) { 126 if ( mCurrentExtensionWidget ) {
126#ifndef DESKTOP_VERSION 127#ifndef DESKTOP_VERSION
127//US our screen is so small, that we better hide the detailscreen, just in case. 128//US our screen is so small, that we better hide the detailscreen, just in case.
128//US mCore->setDetailsVisible( false ); 129//US mCore->setDetailsVisible( false );
129#endif //KAB_EMBEDDED 130#endif //KAB_EMBEDDED
130 show(); 131 show();
131 mWidgetBox->show(); 132 mWidgetBox->show();
132 mCurrentExtensionWidget->show(); 133 mCurrentExtensionWidget->show();
133 } else { 134 } else {
134 hide(); 135 hide();
135 mCurrentExtensionWidget = 0; 136 mCurrentExtensionWidget = 0;
136#ifndef DESKTOP_VERSION 137#ifndef DESKTOP_VERSION
137//US our screen is so small, that we better hide the detailscreen, just in case. 138//US our screen is so small, that we better hide the detailscreen, just in case.
138//US mCore->setDetailsToState( ); 139//US mCore->setDetailsToState( );
139#endif //KAB_EMBEDDED 140#endif //KAB_EMBEDDED
140 } 141 }
141 } 142 }
142 143
143 emit changedActiveExtension( id ); 144 emit changedActiveExtension( id );
144} 145}
145 146
146void ExtensionManager::createExtensionWidgets() 147void ExtensionManager::createExtensionWidgets()
147{ 148{
148 // clear extension widget list 149 // clear extension widget list
149 mExtensionWidgetList.setAutoDelete( true ); 150 mExtensionWidgetList.setAutoDelete( true );
150 QPtrListIterator<ExtensionWidget> wdgIt( mExtensionWidgetList ); 151 QPtrListIterator<ExtensionWidget> wdgIt( mExtensionWidgetList );
151 ExtensionWidget *wdg = 0; 152 ExtensionWidget *wdg = 0;
152 while ( ( wdg = wdgIt.current() ) != 0 ) 153 while ( ( wdg = wdgIt.current() ) != 0 )
153 mExtensionWidgetList.remove( wdg ); 154 mExtensionWidgetList.remove( wdg );
154 155
155 mExtensionWidgetList.setAutoDelete( false ); 156 mExtensionWidgetList.setAutoDelete( false );
156 157
157 QStringList extensionNames( i18n( "None" ) ); 158 QStringList extensionNames( i18n( "None" ) );
158 159
159 // add addressee editor as default 160 // add addressee editor as default
160 161
161 QHBoxLayout *hbl = new QHBoxLayout (mWidgetBox ); 162 QHBoxLayout *hbl = (QHBoxLayout *) mWidgetBox->layout();;
162 163
163 wdg = new AddresseeEditorWidget( mCore, true, mWidgetBox ); 164 wdg = new AddresseeEditorWidget( mCore, true, mWidgetBox );
164 hbl->addWidget( wdg ); 165 hbl->addWidget( wdg );
165 //wdg->hide(); 166 //wdg->hide();
166 connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ), 167 connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ),
167 SIGNAL( modified( const KABC::Addressee::List& ) ) ); 168 SIGNAL( modified( const KABC::Addressee::List& ) ) );
168 mExtensionWidgetList.append( wdg ); 169 mExtensionWidgetList.append( wdg );
169 extensionNames.append( wdg->title() ); 170 extensionNames.append( wdg->title() );
170 171
171 // load the other extensions 172 // load the other extensions
172 QStringList activeExtensions = KABPrefs::instance()->mActiveExtensions; 173 QStringList activeExtensions = KABPrefs::instance()->mActiveExtensions;
173 174
174#ifndef KAB_EMBEDDED 175#ifndef KAB_EMBEDDED
175 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/Extension" ); 176 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/Extension" );
176 KTrader::OfferList::ConstIterator it; 177 KTrader::OfferList::ConstIterator it;
177 for ( it = plugins.begin(); it != plugins.end(); ++it ) { 178 for ( it = plugins.begin(); it != plugins.end(); ++it ) {
178 if ( !(*it)->hasServiceType( "KAddressBook/Extension" ) ) 179 if ( !(*it)->hasServiceType( "KAddressBook/Extension" ) )
179 continue; 180 continue;
180 181
181 KLibFactory *factory = KLibLoader::self()->factory( (*it)->library().latin1() ); 182 KLibFactory *factory = KLibLoader::self()->factory( (*it)->library().latin1() );
182 if ( !factory ) { 183 if ( !factory ) {
183 kdDebug(5720) << "ExtensionManager::loadExtensions(): Factory creation failed" << endl; 184 //kdDebug(5720) << "ExtensionManager::loadExtensions(): Factory creation failed" << endl;
184 continue; 185 continue;
185 } 186 }
186 187
187 ExtensionFactory *extensionFactory = static_cast<ExtensionFactory*>( factory ); 188 ExtensionFactory *extensionFactory = static_cast<ExtensionFactory*>( factory );
188 189
189 if ( !extensionFactory ) { 190 if ( !extensionFactory ) {
190 kdDebug(5720) << "ExtensionManager::loadExtensions(): Cast failed" << endl; 191 //kdDebug(5720) << "ExtensionManager::loadExtensions(): Cast failed" << endl;
191 continue; 192 continue;
192 } 193 }
193 194
194 if ( !activeExtensions.contains( extensionFactory->identifier() ) ) 195 if ( !activeExtensions.contains( extensionFactory->identifier() ) )
195 continue; 196 continue;
196 197
197 wdg = extensionFactory->extension( mCore, this ); 198 wdg = extensionFactory->extension( mCore, this );
198 if ( wdg ) { 199 if ( wdg ) {
199 //wdg->hide(); 200 //wdg->hide();
200 connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ), 201 connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ),
201 SIGNAL( modified( const KABC::Addressee::List& ) ) ); 202 SIGNAL( modified( const KABC::Addressee::List& ) ) );
202 mExtensionWidgetList.append( wdg ); 203 mExtensionWidgetList.append( wdg );
203 extensionNames.append( wdg->title() ); 204 extensionNames.append( wdg->title() );
204 } 205 }
205 } 206 }
206#else //KAB_EMBEDDED 207#else //KAB_EMBEDDED
207 //load Mergefactory/extension 208 //load Mergefactory/extension
208 ExtensionFactory *extensionFactory = new MergeFactory(); 209 ExtensionFactory *extensionFactory = new MergeFactory();
209 if ( activeExtensions.contains( extensionFactory->identifier() ) ) 210 if ( activeExtensions.contains( extensionFactory->identifier() ) )
210 { 211 {
211 wdg = extensionFactory->extension( mCore, mWidgetBox ); 212 wdg = extensionFactory->extension( mCore, mWidgetBox );
212 if ( wdg ) { 213 if ( wdg ) {
213 hbl->addWidget( wdg ); 214 hbl->addWidget( wdg );
214 //wdg->hide(); 215 //wdg->hide();
215 connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ), 216 connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ),
216 SIGNAL( modified( const KABC::Addressee::List& ) ) ); 217 SIGNAL( modified( const KABC::Addressee::List& ) ) );
217 mExtensionWidgetList.append( wdg ); 218 mExtensionWidgetList.append( wdg );
218 extensionNames.append( wdg->title() ); 219 extensionNames.append( wdg->title() );
219 } 220 }
220 } 221 }
221 222
222 //load DistributionListfactory/extension 223 //load DistributionListfactory/extension
223 extensionFactory = new DistributionListFactory(); 224 extensionFactory = new DistributionListFactory();
224 if (activeExtensions.contains( extensionFactory->identifier() ) ) 225 if (activeExtensions.contains( extensionFactory->identifier() ) )
225 { 226 {
226 wdg = extensionFactory->extension( mCore, mWidgetBox ); 227 wdg = extensionFactory->extension( mCore, mWidgetBox );
227 if ( wdg ) { 228 if ( wdg ) {
228 hbl->addWidget( wdg ); 229 hbl->addWidget( wdg );
229 //wdg->hide(); 230 //wdg->hide();
230 connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ), 231 connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ),
231 SIGNAL( modified( const KABC::Addressee::List& ) ) ); 232 SIGNAL( modified( const KABC::Addressee::List& ) ) );
232 mExtensionWidgetList.append( wdg ); 233 mExtensionWidgetList.append( wdg );
233 extensionNames.append( wdg->title() ); 234 extensionNames.append( wdg->title() );
234 } 235 }
235 } 236 }
236 237
237 hbl->addStretch(); 238 hbl->addStretch();
238 239
239#endif //KAB_EMBEDDED 240#endif //KAB_EMBEDDED
240 241
241 242
242 mActionExtensions->setItems( extensionNames ); 243 mActionExtensions->setItems( extensionNames );
243 mCurrentExtensionWidget = 0; 244 mCurrentExtensionWidget = 0;
244} 245}
245 246
246#ifndef KAB_EMBEDDED 247#ifndef KAB_EMBEDDED
247#include "extensionmanager.moc" 248#include "extensionmanager.moc"
248#endif //KAB_EMBEDDED 249#endif //KAB_EMBEDDED