summaryrefslogtreecommitdiffabout
authorulf69 <ulf69>2004-07-16 23:25:52 (UTC)
committer ulf69 <ulf69>2004-07-16 23:25:52 (UTC)
commite87df879ceaa743c95d2b48c291c3c35f8ed6b3f (patch) (side-by-side diff)
treef144099674f805ca7775d6d8a4129871887869de
parentb78f5351ef7432aae4104ed306b52975c91eacb0 (diff)
downloadkdepimpi-e87df879ceaa743c95d2b48c291c3c35f8ed6b3f.zip
kdepimpi-e87df879ceaa743c95d2b48c291c3c35f8ed6b3f.tar.gz
kdepimpi-e87df879ceaa743c95d2b48c291c3c35f8ed6b3f.tar.bz2
load the sharp dtm lib automatically if it exists
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/xxportmanager.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/kaddressbook/xxportmanager.cpp b/kaddressbook/xxportmanager.cpp
index 4798ffe..2962951 100644
--- a/kaddressbook/xxportmanager.cpp
+++ b/kaddressbook/xxportmanager.cpp
@@ -36,216 +36,223 @@ $Id$
#include <kdebug.h>
#include <kdialogbase.h>
#include <klocale.h>
#include <kmessagebox.h>
#ifndef KAB_EMBEDDED
#include <ktrader.h>
#else //KAB_EMBEDDED
extern "C"
{
void* init_kaddrbk_csv_xxport();
void* init_kaddrbk_kde2_xxport();
void* init_kaddrbk_vcard_xxport();
}
#endif //KAB_EMBEDDED
#include <libkdepim/addresseeview.h>
#include "kabcore.h"
#include "undocmds.h"
#include "xxportselectdialog.h"
#include "xxportmanager.h"
KURL XXPortManager::importURL = KURL();
QString XXPortManager::importData = QString::null;
class PreviewDialog : public KDialogBase
{
public:
PreviewDialog( const KABC::Addressee &addr,
QWidget *parent, const char *name = 0 );
};
XXPortManager::XXPortManager( KABCore *core, QObject *parent, const char *name )
: QObject( parent, name ), mCore( core ), mShowPreview( false )
{
loadPlugins();
}
XXPortManager::~XXPortManager()
{
}
void XXPortManager::restoreSettings()
{
}
void XXPortManager::saveSettings()
{
}
void XXPortManager::importVCard( const KURL &url )
{
importVCard( url, false );
}
void XXPortManager::importVCard( const KURL &url, bool showPreview )
{
importURL = url;
mShowPreview = showPreview;
slotImport( "vcard", "<empty>" );
mShowPreview = false;
importURL = KURL();
}
void XXPortManager::importVCard( const QString &vCard, bool showPreview )
{
importData = vCard;
mShowPreview = showPreview;
slotImport( "vcard", "<empty>" );
mShowPreview = false;
importData = "";
}
void XXPortManager::slotImport( const QString &identifier, const QString &data )
{
XXPortObject *obj = mXXPortObjects[ identifier ];
if ( !obj ) {
KMessageBox::error( mCore, i18n( "<qt>No import plugin available for <b>%1</b>.</qt>" ).arg( identifier ) );
return;
}
KABC::Resource *resource = mCore->requestResource( mCore );
if ( !resource )
return;
KABC::AddresseeList list = obj->importContacts( data );
KABC::AddresseeList::Iterator it;
bool imported = false;
for ( it = list.begin(); it != list.end(); ++it ) {
if ( mShowPreview ) {
PreviewDialog dlg( *it, mCore );
if ( !dlg.exec() )
continue;
}
-
+
(*it).setResource( resource );
// We use a PwNewCommand so the user can undo it.
PwNewCommand *command = new PwNewCommand( mCore->addressBook(), *it );
UndoStack::instance()->push( command );
RedoStack::instance()->clear();
imported = true;
}
-
+
if ( imported ) {
KMessageBox::information( mCore, i18n( "contacts successfully imported." ) );
-
+
emit modified();
}
}
void XXPortManager::slotExport( const QString &identifier, const QString &data )
{
XXPortObject *obj = mXXPortObjects[ identifier ];
if ( !obj ) {
KMessageBox::error( mCore, i18n( "<qt>No export plugin available for <b>%1</b>.</qt>" ).arg( identifier ) );
return;
}
KABC::AddresseeList addrList;
XXPortSelectDialog dlg( mCore, obj->requiresSorting(), mCore );
if ( dlg.exec() )
addrList = dlg.contacts();
else
return;
if ( !obj->exportContacts( addrList, data ) )
KMessageBox::error( mCore, i18n( "Unable to export contacts." ) );
else
KMessageBox::information( mCore, i18n( "contacts successfully exported." ) );
}
void XXPortManager::loadPlugins()
{
mXXPortObjects.clear();
#ifndef KAB_EMBEDDED
KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/XXPort" );
KTrader::OfferList::ConstIterator it;
for ( it = plugins.begin(); it != plugins.end(); ++it ) {
if ( !(*it)->hasServiceType( "KAddressBook/XXPort" ) )
continue;
-
+
KLibFactory *factory = KLibLoader::self()->factory( (*it)->library().latin1() );
if ( !factory ) {
kdDebug(5720) << "XXPortManager::loadExtensions(): Factory creation failed" << endl;
continue;
}
XXPortFactory *xxportFactory = static_cast<XXPortFactory*>( factory );
if ( !xxportFactory ) {
kdDebug(5720) << "XXPortManager::loadExtensions(): Cast failed" << endl;
continue;
}
-
+
#else //KAB_EMBEDDED
QList<XXPortFactory> factorylist;
factorylist.append(static_cast<XXPortFactory*>(init_kaddrbk_csv_xxport()));
factorylist.append(static_cast<XXPortFactory*>(init_kaddrbk_kde2_xxport()));
factorylist.append(static_cast<XXPortFactory*>(init_kaddrbk_vcard_xxport()));
//add the opie import library dynamically
KLibFactory *factory = KLibLoader::self()->factory( "microkaddrbk_opie_xxport" );
if ( factory ) {
XXPortFactory *xxportFactory = static_cast<XXPortFactory*>( factory );
factorylist.append(xxportFactory);
}
//add the qtopia import library dynamically
factory = KLibLoader::self()->factory( "microkaddrbk_qtopia_xxport" );
if ( factory ) {
XXPortFactory *xxportFactory = static_cast<XXPortFactory*>( factory );
factorylist.append(xxportFactory);
}
-
- QListIterator<XXPortFactory> it(factorylist);
+
+ //add the sharp import library dynamically
+ factory = KLibLoader::self()->factory( "microkaddrbk_sharpdtm_xxport" );
+ if ( factory ) {
+ XXPortFactory *xxportFactory = static_cast<XXPortFactory*>( factory );
+ factorylist.append(xxportFactory);
+ }
+
+ QListIterator<XXPortFactory> it(factorylist);
for ( ; it.current(); ++it )
{
XXPortFactory *xxportFactory = it.current();
#endif //KAB_EMBEDDED
XXPortObject *obj = xxportFactory->xxportObject( mCore->addressBook(), mCore );
if ( obj ) {
mCore->addGUIClient( obj );
mXXPortObjects.insert( obj->identifier(), obj );
connect( obj, SIGNAL( exportActivated( const QString&, const QString& ) ),
this, SLOT( slotExport( const QString&, const QString& ) ) );
connect( obj, SIGNAL( importActivated( const QString&, const QString& ) ),
this, SLOT( slotImport( const QString&, const QString& ) ) );
}
}
}
PreviewDialog::PreviewDialog( const KABC::Addressee &addr, QWidget *parent,
const char *name )
: KDialogBase( Plain, i18n( "Contact Preview" ), Ok | Cancel, Ok, parent,
name, true, true )
{
QWidget *page = plainPage();
QVBoxLayout *layout = new QVBoxLayout( page, marginHint(), spacingHint() );
-
+
KPIM::AddresseeView *view = new KPIM::AddresseeView( page );
view->setAddressee( addr );
layout->addWidget( view );
resize( 400, 300 );
}
#ifndef KAB_EMBEDDED
#include "xxportmanager.moc"
#endif //KAB_EMBEDDED