kpilot/lib

pluginfactory.h

00001 #ifndef _KPILOT_PLUGINFACTORY_H
00002 #define _KPILOT_PLUGINFACTORY_H
00003 /* KPilot
00004 **
00005 ** Copyright (C) 2005-2006 by Adriaan de Groot <groot@kde.org>
00006 **
00007 */
00008 
00009 /*
00010 ** This program is free software; you can redistribute it and/or modify
00011 ** it under the terms of the GNU Lesser General Public License as published by
00012 ** the Free Software Foundation; either version 2.1 of the License, or
00013 ** (at your option) any later version.
00014 **
00015 ** This program is distributed in the hope that it will be useful,
00016 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00018 ** GNU Lesser General Public License for more details.
00019 **
00020 ** You should have received a copy of the GNU Lesser General Public License
00021 ** along with this program in a file called COPYING; if not, write to
00022 ** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
00023 ** MA 02110-1301, USA.
00024 */
00025 
00026 /*
00027 ** Bug reports and questions can be sent to kde-pim@kde.org
00028 */
00029 
00030 #include <qwidget.h>
00031 
00032 #include <kdebug.h>
00033 #include <klibloader.h>
00034 
00037 class KPilotLink;
00038 
00039 
00040 
00043 template <class Widget, class Action> class ConduitFactory : public KLibFactory
00044 {
00045 public:
00046     ConduitFactory(QObject *parent = 0, const char *name = 0) :
00047         KLibFactory(parent,name)
00048         { fInstance = new KInstance(name); } ;
00049     virtual ~ConduitFactory()
00050         { delete fInstance; } ;
00051 
00052 protected:
00053     virtual QObject *createObject(
00054         QObject* parent = 0,
00055         const char* name = 0,
00056         const char* classname = "QObject",
00057         const QStringList &args = QStringList() )
00058     {
00059         if (qstrcmp(classname,"ConduitConfigBase")==0)
00060         {
00061             QWidget *w = dynamic_cast<QWidget *>(parent);
00062             if (w) return new Widget(w,name);
00063             else
00064             {
00065                 WARNINGKPILOT << "Could not cast parent to widget." << endl;
00066                 return 0L;
00067             }
00068         }
00069 
00070         if (qstrcmp(classname,"SyncAction")==0)
00071         {
00072             KPilotLink *d = 0L;
00073             if (parent) d = dynamic_cast<KPilotLink *>(parent);
00074 
00075             if (d || !parent)
00076             {
00077                 if (!parent)
00078                 {
00079                     kdDebug() << k_funcinfo << ": Using NULL device." << endl;
00080                 }
00081                 return new Action(d,name,args);
00082             }
00083             else
00084             {
00085                 WARNINGKPILOT << "Could not cast parent to KPilotLink" << endl;
00086                 return 0L;
00087             }
00088         }
00089         return 0L;
00090     }
00091 
00092     KInstance *fInstance;
00093 } ;
00094 
00095 #endif
00096 
KDE Home | KDE Accessibility Home | Description of Access Keys