summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/extensionmanager.cpp54
-rw-r--r--kaddressbook/extensionmanager.h3
2 files changed, 30 insertions, 27 deletions
diff --git a/kaddressbook/extensionmanager.cpp b/kaddressbook/extensionmanager.cpp
index 9114cdc..98561dc 100644
--- a/kaddressbook/extensionmanager.cpp
+++ b/kaddressbook/extensionmanager.cpp
@@ -1,246 +1,248 @@
/*
This file is part of KAddressbook.
Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
As a special exception, permission is given to link this program
with any edition of Qt, and distribute the resulting executable,
without including the source code for Qt in the source distribution.
*/
#include <qlayout.h>
#include <qapplication.h>
#include <kactionclasses.h>
#include <kconfig.h>
#include <kdebug.h>
#include <klocale.h>
-#ifndef KAB_EMBEDDED
+#ifndef KAB_EMBEDDED
#include <ktrader.h>
-#else //KAB_EMBEDDED
+#else //KAB_EMBEDDED
#include <features/mergewidget.h>
#include <features/distributionlistwidget.h>
#endif //KAB_EMBEDDED
#include "addresseeeditorwidget.h"
#include "kabcore.h"
#include "kabprefs.h"
#include "extensionmanager.h"
ExtensionManager::ExtensionManager( KABCore *core, QWidget *parent,
const char *name )
: QScrollView( parent, name ), mCore( core ), mCurrentExtensionWidget( 0 )
{
#ifdef KAB_EMBEDDED
//US QPopupMenu *settingsmenu = (QPopupMenu*)mCore->getSettingsMenu();
QWidget *settingsmenu = (QWidget*)mCore->getSettingsMenu();
#endif //KAB_EMBEDDED
mActionExtensions = new KSelectAction( i18n( "Show Extension Bar" ), 0,
mCore->actionCollection(),
"options_show_extensions" );
mActionExtensions->plug( settingsmenu );
-
+
connect( mActionExtensions, SIGNAL( activated( int ) ),
SLOT( setActiveExtension( int ) ) );
mWidgetBox = new QWidget( viewport() );
addChild( mWidgetBox );
setResizePolicy(AutoOneFit);
createExtensionWidgets();
hide();
}
ExtensionManager::~ExtensionManager()
{
}
void ExtensionManager::restoreSettings()
{
mActionExtensions->setCurrentItem( KABPrefs::instance()->mCurrentExtension );
int i = 1;
mCurrentExtensionWidget = mExtensionWidgetList.at( i-1 );
while ( mCurrentExtensionWidget ) {
- if( i != KABPrefs::instance()->mCurrentExtension )
+ if( i != KABPrefs::instance()->mCurrentExtension )
mCurrentExtensionWidget->hide();
mCurrentExtensionWidget = mExtensionWidgetList.at( ++i-1 );
-
+
}
setActiveExtension( mActionExtensions->currentItem() );
}
void ExtensionManager::saveSettings()
{
KABPrefs::instance()->mCurrentExtension = mActionExtensions->currentItem();
}
void ExtensionManager::reconfigure()
{
saveSettings();
createExtensionWidgets();
- restoreSettings();
+ restoreSettings();
}
bool ExtensionManager::isQuickEditVisible() const
{
return ( mCurrentExtensionWidget &&
mCurrentExtensionWidget->identifier() == "contact_editor" );
}
void ExtensionManager::setSelectionChanged()
{
if ( mCurrentExtensionWidget )
mCurrentExtensionWidget->contactsSelectionChanged();
}
void ExtensionManager::setActiveExtension( int id )
{
//qDebug("+++++++++++++++++++ExtensionManager::setActiveExtension %d ", id);
if ( id == 0 ) {
hide();
mCurrentExtensionWidget = 0;
-#ifndef DESKTOP_VERSION
-//US our screen is so small, that we better hide the detailscreen, just in case.
- mCore->setDetailsToState( );
-#endif //KAB_EMBEDDED
+#ifndef DESKTOP_VERSION
+//US our screen is so small, that we better hide the detailscreen, just in case.
+//US mCore->setDetailsToState( );
+#endif //KAB_EMBEDDED
} else if ( id > 0 ) {
if ( mCurrentExtensionWidget )
mCurrentExtensionWidget->hide();
mCurrentExtensionWidget = mExtensionWidgetList.at( id - 1 );
-
+
if ( mCurrentExtensionWidget ) {
-#ifndef DESKTOP_VERSION
-//US our screen is so small, that we better hide the detailscreen, just in case.
- mCore->setDetailsVisible( false );
-#endif //KAB_EMBEDDED
- show();
+#ifndef DESKTOP_VERSION
+//US our screen is so small, that we better hide the detailscreen, just in case.
+//US mCore->setDetailsVisible( false );
+#endif //KAB_EMBEDDED
+ show();
mWidgetBox->show();
mCurrentExtensionWidget->show();
} else {
hide();
mCurrentExtensionWidget = 0;
-#ifndef DESKTOP_VERSION
-//US our screen is so small, that we better hide the detailscreen, just in case.
- mCore->setDetailsToState( );
-#endif //KAB_EMBEDDED
+#ifndef DESKTOP_VERSION
+//US our screen is so small, that we better hide the detailscreen, just in case.
+//US mCore->setDetailsToState( );
+#endif //KAB_EMBEDDED
}
}
+
+ emit changedActiveExtension( id );
}
void ExtensionManager::createExtensionWidgets()
{
// clear extension widget list
mExtensionWidgetList.setAutoDelete( true );
QPtrListIterator<ExtensionWidget> wdgIt( mExtensionWidgetList );
ExtensionWidget *wdg = 0;
while ( ( wdg = wdgIt.current() ) != 0 )
mExtensionWidgetList.remove( wdg );
mExtensionWidgetList.setAutoDelete( false );
QStringList extensionNames( i18n( "None" ) );
// add addressee editor as default
QHBoxLayout *hbl = new QHBoxLayout (mWidgetBox );
wdg = new AddresseeEditorWidget( mCore, true, mWidgetBox );
hbl->addWidget( wdg );
//wdg->hide();
connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ),
SIGNAL( modified( const KABC::Addressee::List& ) ) );
mExtensionWidgetList.append( wdg );
extensionNames.append( wdg->title() );
// load the other extensions
QStringList activeExtensions = KABPrefs::instance()->mActiveExtensions;
-#ifndef KAB_EMBEDDED
+#ifndef KAB_EMBEDDED
KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/Extension" );
KTrader::OfferList::ConstIterator it;
for ( it = plugins.begin(); it != plugins.end(); ++it ) {
if ( !(*it)->hasServiceType( "KAddressBook/Extension" ) )
continue;
KLibFactory *factory = KLibLoader::self()->factory( (*it)->library().latin1() );
if ( !factory ) {
kdDebug(5720) << "ExtensionManager::loadExtensions(): Factory creation failed" << endl;
continue;
}
ExtensionFactory *extensionFactory = static_cast<ExtensionFactory*>( factory );
if ( !extensionFactory ) {
kdDebug(5720) << "ExtensionManager::loadExtensions(): Cast failed" << endl;
continue;
}
if ( !activeExtensions.contains( extensionFactory->identifier() ) )
continue;
wdg = extensionFactory->extension( mCore, this );
if ( wdg ) {
//wdg->hide();
connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ),
SIGNAL( modified( const KABC::Addressee::List& ) ) );
mExtensionWidgetList.append( wdg );
extensionNames.append( wdg->title() );
}
}
#else //KAB_EMBEDDED
//load Mergefactory/extension
ExtensionFactory *extensionFactory = new MergeFactory();
if ( activeExtensions.contains( extensionFactory->identifier() ) )
{
wdg = extensionFactory->extension( mCore, mWidgetBox );
if ( wdg ) {
hbl->addWidget( wdg );
//wdg->hide();
connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ),
SIGNAL( modified( const KABC::Addressee::List& ) ) );
mExtensionWidgetList.append( wdg );
extensionNames.append( wdg->title() );
}
}
-
+
//load DistributionListfactory/extension
extensionFactory = new DistributionListFactory();
if (activeExtensions.contains( extensionFactory->identifier() ) )
{
wdg = extensionFactory->extension( mCore, mWidgetBox );
if ( wdg ) {
hbl->addWidget( wdg );
//wdg->hide();
connect( wdg, SIGNAL( modified( const KABC::Addressee::List& ) ),
SIGNAL( modified( const KABC::Addressee::List& ) ) );
mExtensionWidgetList.append( wdg );
extensionNames.append( wdg->title() );
}
}
-
+
hbl->addStretch();
#endif //KAB_EMBEDDED
-
-
+
+
mActionExtensions->setItems( extensionNames );
mCurrentExtensionWidget = 0;
}
-#ifndef KAB_EMBEDDED
+#ifndef KAB_EMBEDDED
#include "extensionmanager.moc"
#endif //KAB_EMBEDDED
diff --git a/kaddressbook/extensionmanager.h b/kaddressbook/extensionmanager.h
index 8f64a50..611a037 100644
--- a/kaddressbook/extensionmanager.h
+++ b/kaddressbook/extensionmanager.h
@@ -23,66 +23,67 @@
#ifndef EXTENSIONMANAGER_H
#define EXTENSIONMANAGER_H
#include <qhbox.h>
#include <qscrollview.h>
#include <qptrlist.h>
#include <extensionwidget.h>
class KABCore;
class KSelectAction;
class ExtensionManager : public QScrollView
{
Q_OBJECT
public:
ExtensionManager( KABCore *core, QWidget *parent, const char *name = 0 );
~ExtensionManager();
/**
Restores the extension manager specific settings.
*/
void restoreSettings();
/**
Saves the extension manager specific settings.
*/
void saveSettings();
/**
Rereads the extension manager specific settings with some
additional initialization stuff.
*/
void reconfigure();
/**
Returns whether the quickedit extension is currently visible.
*/
bool isQuickEditVisible() const;
public slots:
void setSelectionChanged();
signals:
void modified( const KABC::Addressee::List& );
+ void changedActiveExtension( int id );
private slots:
void setActiveExtension( int id );
private:
void createExtensionWidgets();
KABCore *mCore;
QWidget *mWidgetBox;
ExtensionWidget *mCurrentExtensionWidget;
QPtrList<ExtensionWidget> mExtensionWidgetList;
KSelectAction *mActionExtensions;
-
+
};
#endif