summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--microkde/kresources/factory.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/microkde/kresources/factory.cpp b/microkde/kresources/factory.cpp
index 4e4456d..78e3b43 100644
--- a/microkde/kresources/factory.cpp
+++ b/microkde/kresources/factory.cpp
@@ -3,203 +3,204 @@
3 3
4 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 4 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
5 Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org> 5 Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
6 Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org> 6 Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
7 7
8 This library is free software; you can redistribute it and/or 8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Library General Public 9 modify it under the terms of the GNU Library General Public
10 License as published by the Free Software Foundation; either 10 License as published by the Free Software Foundation; either
11 version 2 of the License, or (at your option) any later version. 11 version 2 of the License, or (at your option) any later version.
12 12
13 This library is distributed in the hope that it will be useful, 13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Library General Public License for more details. 16 Library General Public License for more details.
17 17
18 You should have received a copy of the GNU Library General Public License 18 You should have received a copy of the GNU Library General Public License
19 along with this library; see the file COPYING.LIB. If not, write to 19 along with this library; see the file COPYING.LIB. If not, write to
20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA. 21 Boston, MA 02111-1307, USA.
22*/ 22*/
23 23
24#include <kdebug.h> 24#include <kdebug.h>
25#include <klocale.h> 25#include <klocale.h>
26#include <ksimpleconfig.h> 26#include <ksimpleconfig.h>
27#include <kstandarddirs.h> 27#include <kstandarddirs.h>
28#include <kstaticdeleter.h> 28#include <kstaticdeleter.h>
29//#ifndef DESKTOP_VERSION 29//#ifndef DESKTOP_VERSION
30#include <klibloader.h> 30#include <klibloader.h>
31//#endif 31//#endif
32#include <qfile.h> 32#include <qfile.h>
33 33
34#include "resource.h" 34#include "resource.h"
35#include "factory.h" 35#include "factory.h"
36 36
37using namespace KRES; 37using namespace KRES;
38 38
39QDict<Factory> *Factory::mSelves = 0; 39QDict<Factory> *Factory::mSelves = 0;
40static KStaticDeleter< QDict<Factory> > staticDeleter; 40static KStaticDeleter< QDict<Factory> > staticDeleter;
41 41
42Factory *Factory::self( const QString& resourceFamily) 42Factory *Factory::self( const QString& resourceFamily)
43{ 43{
44 44
45 45
46 Factory *factory = 0; 46 Factory *factory = 0;
47 if ( !mSelves ) 47 if ( !mSelves )
48 { 48 {
49 mSelves = staticDeleter.setObject( new QDict<Factory> ); 49 mSelves = staticDeleter.setObject( new QDict<Factory> );
50 } 50 }
51 51
52 factory = mSelves->find( resourceFamily ); 52 factory = mSelves->find( resourceFamily );
53 53
54 if ( !factory ) { 54 if ( !factory ) {
55 factory = new Factory( resourceFamily); 55 factory = new Factory( resourceFamily);
56 mSelves->insert( resourceFamily, factory ); 56 mSelves->insert( resourceFamily, factory );
57 } 57 }
58 58
59 return factory; 59 return factory;
60} 60}
61 61
62Factory::Factory( const QString& resourceFamily) : 62Factory::Factory( const QString& resourceFamily) :
63 mResourceFamily( resourceFamily ) 63 mResourceFamily( resourceFamily )
64{ 64{
65//US so far we have three types available for resourceFamily "contact" 65//US so far we have three types available for resourceFamily "contact"
66// and that are "file", "dir", "ldap" 66// and that are "file", "dir", "ldap"
67/*US 67/*US
68 68
69 KTrader::OfferList plugins = KTrader::self()->query( "KResources/Plugin", QString( "[X-KDE-ResourceFamily] == '%1'" ) 69 KTrader::OfferList plugins = KTrader::self()->query( "KResources/Plugin", QString( "[X-KDE-ResourceFamily] == '%1'" )
70 .arg( resourceFamily ) ); 70 .arg( resourceFamily ) );
71 KTrader::OfferList::ConstIterator it; 71 KTrader::OfferList::ConstIterator it;
72 for ( it = plugins.begin(); it != plugins.end(); ++it ) { 72 for ( it = plugins.begin(); it != plugins.end(); ++it ) {
73 QVariant type = (*it)->property( "X-KDE-ResourceType" ); 73 QVariant type = (*it)->property( "X-KDE-ResourceType" );
74 if ( !type.toString().isEmpty() ) 74 if ( !type.toString().isEmpty() )
75 mTypeMap.insert( type.toString(), *it ); 75 mTypeMap.insert( type.toString(), *it );
76 } 76 }
77*/ 77*/
78 78
79//US new 79//US new
80 PluginInfo* info = new PluginInfo; 80 PluginInfo* info = new PluginInfo;
81 info->library = "microkabc_file"; 81 info->library = "microkabc_file";
82 info->nameLabel = i18n( "file" ); 82 info->nameLabel = i18n( "file" );
83 info->descriptionLabel = i18n( "Choose one file" ); 83 info->descriptionLabel = i18n( "Choose one file" );
84 mTypeMap.insert( "file", info ); 84 mTypeMap.insert( "file", info );
85 85
86 info = new PluginInfo; 86 info = new PluginInfo;
87 info->library = "microkabc_dir"; 87 info->library = "microkabc_dir";
88 info->nameLabel = i18n( "dir" ); 88 info->nameLabel = i18n( "dir" );
89 info->descriptionLabel = i18n( "Choose a directory with may files" ); 89 info->descriptionLabel = i18n( "Choose a directory with may files" );
90 mTypeMap.insert( "dir", info ); 90 mTypeMap.insert( "dir", info );
91 91
92 info = new PluginInfo; 92 info = new PluginInfo;
93 info->library = "microkabc_ldap"; 93 info->library = "microkabc_ldap";
94 info->nameLabel = i18n( "ldap" ); 94 info->nameLabel = i18n( "ldap" );
95 info->descriptionLabel = i18n( "No description available" ); 95 info->descriptionLabel = i18n( "No description available" );
96 mTypeMap.insert( "ldap", info ); 96 mTypeMap.insert( "ldap", info );
97 97
98 //US add opie plugin only, if the library exists. 98 //US add opie plugin only, if the library exists.
99 /*US
99 QString libname = "microkabc_opie"; 100 QString libname = "microkabc_opie";
100 QString path = KLibLoader::findLibrary( QFile::encodeName( libname ) ); 101 QString path = KLibLoader::findLibrary( QFile::encodeName( libname ) );
101 if ( !path.isEmpty() ) 102 if ( !path.isEmpty() )
102 { 103 {
103 info = new PluginInfo; 104 info = new PluginInfo;
104 info->library = libname; 105 info->library = libname;
105 info->nameLabel = i18n( "opie" ); 106 info->nameLabel = i18n( "opie" );
106 info->descriptionLabel = i18n( "Opie PIM Addressbook." ); 107 info->descriptionLabel = i18n( "Opie PIM Addressbook." );
107 mTypeMap.insert( "opie", info ); 108 mTypeMap.insert( "opie", info );
108 } 109 }
109 110 */
110 //US add qtopia plugin only, if the library exists. 111 //US add qtopia plugin only, if the library exists.
111 libname = "microkabc_qtopia"; 112 libname = "microkabc_qtopia";
112 path = KLibLoader::findLibrary( QFile::encodeName( libname ) ); 113 path = KLibLoader::findLibrary( QFile::encodeName( libname ) );
113 if ( !path.isEmpty() ) 114 if ( !path.isEmpty() )
114 { 115 {
115 info = new PluginInfo; 116 info = new PluginInfo;
116 info->library = libname; 117 info->library = libname;
117 info->nameLabel = i18n( "qtopia" ); 118 info->nameLabel = i18n( "qtopia" );
118 info->descriptionLabel = i18n( "Qtopia PIM Addressbook." ); 119 info->descriptionLabel = i18n( "Qtopia PIM Addressbook." );
119 mTypeMap.insert( "qtopia", info ); 120 mTypeMap.insert( "qtopia", info );
120 } 121 }
121 122
122 //US add sharp plugin only, if the library exists. 123 //US add sharp plugin only, if the library exists.
123 libname = "microkabc_sharpdtm"; 124 libname = "microkabc_sharpdtm";
124 path = KLibLoader::findLibrary( QFile::encodeName( libname ) ); 125 path = KLibLoader::findLibrary( QFile::encodeName( libname ) );
125 if ( !path.isEmpty() ) 126 if ( !path.isEmpty() )
126 { 127 {
127 info = new PluginInfo; 128 info = new PluginInfo;
128 info->library = libname; 129 info->library = libname;
129 info->nameLabel = i18n( "sharp" ); 130 info->nameLabel = i18n( "sharp" );
130 info->descriptionLabel = i18n( "Sharp DTM Addressbook." ); 131 info->descriptionLabel = i18n( "Sharp DTM Addressbook." );
131 mTypeMap.insert( "sharp", info ); 132 mTypeMap.insert( "sharp", info );
132 } 133 }
133 134
134 135
135} 136}
136 137
137Factory::~Factory() 138Factory::~Factory()
138{ 139{
139} 140}
140 141
141QStringList Factory::typeNames() const 142QStringList Factory::typeNames() const
142{ 143{
143//US method QMap::keys() not available yet. SO collect the data manually 144//US method QMap::keys() not available yet. SO collect the data manually
144//US return mTypeMap.keys(); 145//US return mTypeMap.keys();
145 146
146 QStringList result; 147 QStringList result;
147 148
148 QMap<QString, PluginInfo*>::ConstIterator it; 149 QMap<QString, PluginInfo*>::ConstIterator it;
149 for( it = mTypeMap.begin(); it != mTypeMap.end(); ++it ) { 150 for( it = mTypeMap.begin(); it != mTypeMap.end(); ++it ) {
150 result << it.key().latin1(); 151 result << it.key().latin1();
151// qDebug("Factory::typeNames() : %s ", it.key().latin1()); 152// qDebug("Factory::typeNames() : %s ", it.key().latin1());
152 153
153 } 154 }
154 return result; 155 return result;
155} 156}
156 157
157ConfigWidget *Factory::configWidget( const QString& type, QWidget *parent ) 158ConfigWidget *Factory::configWidget( const QString& type, QWidget *parent )
158{ 159{
159 if ( type.isEmpty() || !mTypeMap.contains( type ) ) 160 if ( type.isEmpty() || !mTypeMap.contains( type ) )
160 return 0; 161 return 0;
161 162
162//US KService::Ptr ptr = mTypeMap[ type ]; 163//US KService::Ptr ptr = mTypeMap[ type ];
163//US KLibFactory *factory = KLibLoader::self()->factory( ptr->library().latin1() ); 164//US KLibFactory *factory = KLibLoader::self()->factory( ptr->library().latin1() );
164 PluginInfo* pi = mTypeMap[ type ]; 165 PluginInfo* pi = mTypeMap[ type ];
165 KLibFactory *factory = (KLibFactory *)KLibLoader::self()->factory( pi->library.latin1() ); 166 KLibFactory *factory = (KLibFactory *)KLibLoader::self()->factory( pi->library.latin1() );
166 if ( !factory ) { 167 if ( !factory ) {
167 qDebug("KRES::Factory::configWidget(): Factory creation failed for library %s", pi->library.latin1()); 168 qDebug("KRES::Factory::configWidget(): Factory creation failed for library %s", pi->library.latin1());
168 kdDebug() << "KRES::Factory::configWidget(): Factory creation failed" << endl; 169 kdDebug() << "KRES::Factory::configWidget(): Factory creation failed" << endl;
169 return 0; 170 return 0;
170 } 171 }
171 172
172 PluginFactoryBase *pluginFactory = static_cast<PluginFactoryBase *>( factory ); 173 PluginFactoryBase *pluginFactory = static_cast<PluginFactoryBase *>( factory );
173 174
174 if ( !pluginFactory ) { 175 if ( !pluginFactory ) {
175 qDebug("KRES::Factory::configWidget(): no plugin factory for library %s", pi->library.latin1()); 176 qDebug("KRES::Factory::configWidget(): no plugin factory for library %s", pi->library.latin1());
176 kdDebug() << "KRES::Factory::configWidget(): no plugin factory." << endl; 177 kdDebug() << "KRES::Factory::configWidget(): no plugin factory." << endl;
177 return 0; 178 return 0;
178 } 179 }
179 180
180 ConfigWidget *wdg = pluginFactory->configWidget( parent ); 181 ConfigWidget *wdg = pluginFactory->configWidget( parent );
181 if ( !wdg ) { 182 if ( !wdg ) {
182//US kdDebug() << "'" << ptr->library() << "' is not a " + mResourceFamily + " plugin." << endl; 183//US kdDebug() << "'" << ptr->library() << "' is not a " + mResourceFamily + " plugin." << endl;
183 qDebug("%s is not a %s plugin.", pi->library.latin1(), mResourceFamily.latin1()); 184 qDebug("%s is not a %s plugin.", pi->library.latin1(), mResourceFamily.latin1());
184 return 0; 185 return 0;
185 } 186 }
186 return wdg; 187 return wdg;
187 188
188} 189}
189 190
190QString Factory::typeName( const QString &type ) const 191QString Factory::typeName( const QString &type ) const
191{ 192{
192 if ( type.isEmpty() || !mTypeMap.contains( type ) ) 193 if ( type.isEmpty() || !mTypeMap.contains( type ) )
193 return QString(); 194 return QString();
194 195
195 196
196//US KService::Ptr ptr = mTypeMap[ type ]; 197//US KService::Ptr ptr = mTypeMap[ type ];
197//US return ptr->name(); 198//US return ptr->name();
198 PluginInfo* pi = mTypeMap[ type ]; 199 PluginInfo* pi = mTypeMap[ type ];
199 return pi->nameLabel; 200 return pi->nameLabel;
200 201
201} 202}
202 203
203QString Factory::typeDescription( const QString &type ) const 204QString Factory::typeDescription( const QString &type ) const
204{ 205{
205 if ( type.isEmpty() || !mTypeMap.contains( type ) ) 206 if ( type.isEmpty() || !mTypeMap.contains( type ) )