• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdecore
 

tdecore

  • tdecore
kprotocolinfo_tdecore.cpp
1/* This file is part of the KDE libraries
2 Copyright (C) 1999 Torben Weis <weis@kde.org>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License version 2 as published by the Free Software Foundation.
7
8 This library is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 Library General Public License for more details.
12
13 You should have received a copy of the GNU Library General Public License
14 along with this library; see the file COPYING.LIB. If not, write to
15 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16 Boston, MA 02110-1301, USA.
17*/
18
19#ifdef MAKE_TDECORE_LIB //needed for proper linkage (win32)
20#undef TDEIO_EXPORT
21#define TDEIO_EXPORT TDE_EXPORT
22#endif
23
24#define KPROTOCOLINFO_TDECORE
25#include "kprotocolinfo.h"
26#include "kprotocolinfofactory.h"
27
28#include <tdestandarddirs.h>
29#include <tdeglobal.h>
30#include <tdeapplication.h>
31#include <kdebug.h>
32#include <ksimpleconfig.h>
33#include <tdeconfig.h>
34#include <kstringhandler.h>
35
36class KProtocolInfo::KProtocolInfoPrivate
37{
38public:
39 TQString docPath;
40 TQString protClass;
41 KProtocolInfo::ExtraFieldList extraFields;
42 bool showPreviews;
43 bool canRenameFromFile;
44 bool canRenameToFile;
45 bool canDeleteRecursive;
46 bool fileNameUsedForCopying; // true if using UDS_NAME, false if using KURL::fileName() [default]
47 KURL::URIMode uriMode;
48 TQStringList capabilities;
49 TQString proxyProtocol;
50};
51
52//
53// Internal functions:
54//
55KProtocolInfo::KProtocolInfo(const TQString &path)
56 : KSycocaEntry(path)
57{
58 d = new KProtocolInfoPrivate;
59 TQString fullPath = locate("services", path);
60
61 KSimpleConfig config( fullPath, true );
62 config.setGroup( "Protocol" );
63
64 m_name = config.readEntry( "protocol" );
65 m_exec = config.readPathEntry( "exec" );
66 m_isSourceProtocol = config.readBoolEntry( "source", true );
67 m_isHelperProtocol = config.readBoolEntry( "helper", false );
68 m_supportsReading = config.readBoolEntry( "reading", false );
69 m_supportsWriting = config.readBoolEntry( "writing", false );
70 m_supportsMakeDir = config.readBoolEntry( "makedir", false );
71 m_supportsDeleting = config.readBoolEntry( "deleting", false );
72 m_supportsLinking = config.readBoolEntry( "linking", false );
73 m_supportsMoving = config.readBoolEntry( "moving", false );
74 m_canCopyFromFile = config.readBoolEntry( "copyFromFile", false );
75 m_canCopyToFile = config.readBoolEntry( "copyToFile", false );
76 d->canRenameFromFile = config.readBoolEntry( "renameFromFile", false );
77 d->canRenameToFile = config.readBoolEntry( "renameToFile", false );
78 d->canDeleteRecursive = config.readBoolEntry( "deleteRecursive", false );
79 d->fileNameUsedForCopying = config.readEntry( "fileNameUsedForCopying", "FromURL" ) == "Name";
80
81 m_listing = config.readListEntry( "listing" );
82 // Many .protocol files say "Listing=false" when they really mean "Listing=" (i.e. unsupported)
83 if ( m_listing.count() == 1 && m_listing.first() == "false" )
84 m_listing.clear();
85 m_supportsListing = ( m_listing.count() > 0 );
86 m_defaultMimetype = config.readEntry( "defaultMimetype" );
87 m_determineMimetypeFromExtension = config.readBoolEntry( "determineMimetypeFromExtension", true );
88 m_icon = config.readEntry( "Icon", "unknown" );
89 m_config = config.readEntry( "config", m_name );
90 m_maxSlaves = config.readNumEntry( "maxInstances", 1);
91
92 TQString tmp = config.readEntry( "input" );
93 if ( tmp == "filesystem" )
94 m_inputType = KProtocolInfo::T_FILESYSTEM;
95 else if ( tmp == "stream" )
96 m_inputType = KProtocolInfo::T_STREAM;
97 else
98 m_inputType = KProtocolInfo::T_NONE;
99
100 tmp = config.readEntry( "output" );
101 if ( tmp == "filesystem" )
102 m_outputType = KProtocolInfo::T_FILESYSTEM;
103 else if ( tmp == "stream" )
104 m_outputType = KProtocolInfo::T_STREAM;
105 else
106 m_outputType = KProtocolInfo::T_NONE;
107
108 d->docPath = config.readPathEntry( "X-DocPath" );
109 d->protClass = config.readEntry( "Class" ).lower();
110 if (d->protClass[0] != ':')
111 d->protClass.prepend(':');
112
113 TQStringList extraNames = config.readListEntry( "ExtraNames" );
114 TQStringList extraTypes = config.readListEntry( "ExtraTypes" );
115 TQStringList::Iterator it = extraNames.begin();
116 TQStringList::Iterator typeit = extraTypes.begin();
117 for( ; it != extraNames.end() && typeit != extraTypes.end(); ++it, ++typeit ) {
118 d->extraFields.append( ExtraField( *it, *typeit ) );
119 }
120
121 d->showPreviews = config.readBoolEntry( "ShowPreviews", d->protClass == ":local" );
122
123 tmp = config.readEntry( "URIMode", TQString::null ).lower();
124 if (tmp == "rawuri")
125 d->uriMode = KURL::RawURI;
126 else if (tmp == "mailto")
127 d->uriMode = KURL::Mailto;
128 else if (tmp == "url")
129 d->uriMode = KURL::URL;
130 else
131 d->uriMode = KURL::Auto;
132
133 d->capabilities = config.readListEntry( "Capabilities" );
134 d->proxyProtocol = config.readEntry( "ProxiedBy" );
135}
136
137KProtocolInfo::KProtocolInfo( TQDataStream& _str, int offset) :
138 KSycocaEntry( _str, offset)
139{
140 d = new KProtocolInfoPrivate;
141 load( _str );
142}
143
144KProtocolInfo::~KProtocolInfo()
145{
146 delete d;
147}
148
149void
150KProtocolInfo::load( TQDataStream& _str)
151{
152 // You may add new fields at the end. Make sure to update the version
153 // number in tdesycoca.h
154 TQ_INT32 i_inputType, i_outputType;
155 TQ_INT8 i_isSourceProtocol, i_isHelperProtocol,
156 i_supportsListing, i_supportsReading,
157 i_supportsWriting, i_supportsMakeDir,
158 i_supportsDeleting, i_supportsLinking,
159 i_supportsMoving, i_determineMimetypeFromExtension,
160 i_canCopyFromFile, i_canCopyToFile, i_showPreviews,
161 i_uriMode, i_canRenameFromFile, i_canRenameToFile,
162 i_canDeleteRecursive, i_fileNameUsedForCopying;
163
164 _str >> m_name >> m_exec >> m_listing >> m_defaultMimetype
165 >> i_determineMimetypeFromExtension
166 >> m_icon
167 >> i_inputType >> i_outputType
168 >> i_isSourceProtocol >> i_isHelperProtocol
169 >> i_supportsListing >> i_supportsReading
170 >> i_supportsWriting >> i_supportsMakeDir
171 >> i_supportsDeleting >> i_supportsLinking
172 >> i_supportsMoving
173 >> i_canCopyFromFile >> i_canCopyToFile
174 >> m_config >> m_maxSlaves >> d->docPath >> d->protClass
175 >> d->extraFields >> i_showPreviews >> i_uriMode
176 >> d->capabilities >> d->proxyProtocol
177 >> i_canRenameFromFile >> i_canRenameToFile
178 >> i_canDeleteRecursive >> i_fileNameUsedForCopying;
179
180 m_inputType = (Type) i_inputType;
181 m_outputType = (Type) i_outputType;
182 m_isSourceProtocol = (i_isSourceProtocol != 0);
183 m_isHelperProtocol = (i_isHelperProtocol != 0);
184 m_supportsListing = (i_supportsListing != 0);
185 m_supportsReading = (i_supportsReading != 0);
186 m_supportsWriting = (i_supportsWriting != 0);
187 m_supportsMakeDir = (i_supportsMakeDir != 0);
188 m_supportsDeleting = (i_supportsDeleting != 0);
189 m_supportsLinking = (i_supportsLinking != 0);
190 m_supportsMoving = (i_supportsMoving != 0);
191 m_canCopyFromFile = (i_canCopyFromFile != 0);
192 m_canCopyToFile = (i_canCopyToFile != 0);
193 d->canRenameFromFile = (i_canRenameFromFile != 0);
194 d->canRenameToFile = (i_canRenameToFile != 0);
195 d->canDeleteRecursive = (i_canDeleteRecursive != 0);
196 d->fileNameUsedForCopying = (i_fileNameUsedForCopying != 0);
197 m_determineMimetypeFromExtension = (i_determineMimetypeFromExtension != 0);
198 d->showPreviews = (i_showPreviews != 0);
199 d->uriMode = (KURL::URIMode) i_uriMode;
200}
201
202void
203KProtocolInfo::save( TQDataStream& _str)
204{
205 KSycocaEntry::save( _str );
206
207 // You may add new fields at the end. Make sure to update the version
208 // number in tdesycoca.h
209 TQ_INT32 i_inputType, i_outputType;
210 TQ_INT8 i_isSourceProtocol, i_isHelperProtocol,
211 i_supportsListing, i_supportsReading,
212 i_supportsWriting, i_supportsMakeDir,
213 i_supportsDeleting, i_supportsLinking,
214 i_supportsMoving, i_determineMimetypeFromExtension,
215 i_canCopyFromFile, i_canCopyToFile, i_showPreviews,
216 i_uriMode, i_canRenameFromFile, i_canRenameToFile,
217 i_canDeleteRecursive, i_fileNameUsedForCopying;
218
219 i_inputType = (TQ_INT32) m_inputType;
220 i_outputType = (TQ_INT32) m_outputType;
221 i_isSourceProtocol = m_isSourceProtocol ? 1 : 0;
222 i_isHelperProtocol = m_isHelperProtocol ? 1 : 0;
223 i_supportsListing = m_supportsListing ? 1 : 0;
224 i_supportsReading = m_supportsReading ? 1 : 0;
225 i_supportsWriting = m_supportsWriting ? 1 : 0;
226 i_supportsMakeDir = m_supportsMakeDir ? 1 : 0;
227 i_supportsDeleting = m_supportsDeleting ? 1 : 0;
228 i_supportsLinking = m_supportsLinking ? 1 : 0;
229 i_supportsMoving = m_supportsMoving ? 1 : 0;
230 i_canCopyFromFile = m_canCopyFromFile ? 1 : 0;
231 i_canCopyToFile = m_canCopyToFile ? 1 : 0;
232 i_canRenameFromFile = d->canRenameFromFile ? 1 : 0;
233 i_canRenameToFile = d->canRenameToFile ? 1 : 0;
234 i_canDeleteRecursive = d->canDeleteRecursive ? 1 : 0;
235 i_fileNameUsedForCopying = d->fileNameUsedForCopying ? 1 : 0;
236 i_determineMimetypeFromExtension = m_determineMimetypeFromExtension ? 1 : 0;
237 i_showPreviews = d->showPreviews ? 1 : 0;
238 i_uriMode = d->uriMode;
239
240 _str << m_name << m_exec << m_listing << m_defaultMimetype
241 << i_determineMimetypeFromExtension
242 << m_icon
243 << i_inputType << i_outputType
244 << i_isSourceProtocol << i_isHelperProtocol
245 << i_supportsListing << i_supportsReading
246 << i_supportsWriting << i_supportsMakeDir
247 << i_supportsDeleting << i_supportsLinking
248 << i_supportsMoving
249 << i_canCopyFromFile << i_canCopyToFile
250 << m_config << m_maxSlaves << d->docPath << d->protClass
251 << d->extraFields << i_showPreviews << i_uriMode
252 << d->capabilities << d->proxyProtocol
253 << i_canRenameFromFile << i_canRenameToFile
254 << i_canDeleteRecursive << i_fileNameUsedForCopying;
255}
256
257
258//
259// Static functions:
260//
261
262TQStringList KProtocolInfo::protocols()
263{
264 return KProtocolInfoFactory::self()->protocols();
265}
266
267bool KProtocolInfo::isSourceProtocol( const TQString& _protocol )
268{
269 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
270 if ( !prot )
271 return false;
272
273 return prot->m_isSourceProtocol;
274}
275
276bool KProtocolInfo::isFilterProtocol( const TQString& _protocol )
277{
278 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
279 if ( !prot )
280 return false;
281
282 return !prot->m_isSourceProtocol;
283}
284
285bool KProtocolInfo::isHelperProtocol( const TQString& _protocol )
286{
287 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
288 if ( !prot )
289 return false;
290
291 return prot->m_isHelperProtocol;
292}
293
294bool KProtocolInfo::isKnownProtocol( const TQString& _protocol )
295{
296 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
297 return ( prot != 0);
298}
299
300bool KProtocolInfo::supportsListing( const TQString& _protocol )
301{
302 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
303 if ( !prot )
304 return false;
305
306 return prot->m_supportsListing;
307}
308
309TQStringList KProtocolInfo::listing( const TQString& _protocol )
310{
311 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
312 if ( !prot )
313 return TQStringList();
314
315 return prot->m_listing;
316}
317
318bool KProtocolInfo::supportsReading( const TQString& _protocol )
319{
320 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
321 if ( !prot )
322 return false;
323
324 return prot->m_supportsReading;
325}
326
327bool KProtocolInfo::supportsWriting( const TQString& _protocol )
328{
329 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
330 if ( !prot )
331 return false;
332
333 return prot->m_supportsWriting;
334}
335
336bool KProtocolInfo::supportsMakeDir( const TQString& _protocol )
337{
338 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
339 if ( !prot )
340 return false;
341
342 return prot->m_supportsMakeDir;
343}
344
345bool KProtocolInfo::supportsDeleting( const TQString& _protocol )
346{
347 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
348 if ( !prot )
349 return false;
350
351 return prot->m_supportsDeleting;
352}
353
354bool KProtocolInfo::supportsLinking( const TQString& _protocol )
355{
356 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
357 if ( !prot )
358 return false;
359
360 return prot->m_supportsLinking;
361}
362
363bool KProtocolInfo::supportsMoving( const TQString& _protocol )
364{
365 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
366 if ( !prot )
367 return false;
368
369 return prot->m_supportsMoving;
370}
371
372bool KProtocolInfo::canCopyFromFile( const TQString& _protocol )
373{
374 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
375 if ( !prot )
376 return false;
377
378 return prot->m_canCopyFromFile;
379}
380
381
382bool KProtocolInfo::canCopyToFile( const TQString& _protocol )
383{
384 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
385 if ( !prot )
386 return false;
387
388 return prot->m_canCopyToFile;
389}
390
391TQString KProtocolInfo::icon( const TQString& _protocol )
392{
393 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
394 if ( !prot )
395 return TQString::fromLatin1("unknown");
396
397 return prot->m_icon;
398}
399
400TQString KProtocolInfo::config( const TQString& _protocol )
401{
402 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
403 if ( !prot )
404 return TQString::null;
405
406 return TQString("tdeio_%1rc").arg(prot->m_config);
407}
408
409int KProtocolInfo::maxSlaves( const TQString& _protocol )
410{
411 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
412 if ( !prot )
413 return 1;
414
415 return prot->m_maxSlaves;
416}
417
418TQString KProtocolInfo::defaultMimetype( const TQString& _protocol )
419{
420 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
421 if ( !prot )
422 return TQString::null;
423
424 return prot->m_defaultMimetype;
425}
426
427bool KProtocolInfo::determineMimetypeFromExtension( const TQString &_protocol )
428{
429 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol( _protocol );
430 if ( !prot )
431 return true;
432
433 return prot->m_determineMimetypeFromExtension;
434}
435
436TQString KProtocolInfo::exec( const TQString& _protocol )
437{
438 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
439 if ( !prot )
440 return TQString::null;
441
442 return prot->m_exec;
443}
444
445KProtocolInfo::Type KProtocolInfo::inputType( const TQString& _protocol )
446{
447 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
448 if ( !prot )
449 return T_NONE;
450
451 return prot->m_inputType;
452}
453
454KProtocolInfo::Type KProtocolInfo::outputType( const TQString& _protocol )
455{
456 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
457 if ( !prot )
458 return T_NONE;
459
460 return prot->m_outputType;
461}
462
463KProtocolInfo::ExtraFieldList KProtocolInfo::extraFields( const KURL &url )
464{
465 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(url.protocol());
466 if ( !prot )
467 return ExtraFieldList();
468
469 return prot->d->extraFields;
470}
471
472TQString KProtocolInfo::docPath( const TQString& _protocol )
473{
474 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
475 if ( !prot )
476 return TQString::null;
477
478 return prot->d->docPath;
479}
480
481TQString KProtocolInfo::protocolClass( const TQString& _protocol )
482{
483 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
484 if ( !prot )
485 return TQString::null;
486
487 return prot->d->protClass;
488}
489
490bool KProtocolInfo::showFilePreview( const TQString& _protocol )
491{
492 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
493 if ( !prot )
494 return false;
495
496 return prot->d->showPreviews;
497}
498
499KURL::URIMode KProtocolInfo::uriParseMode( const TQString& _protocol )
500{
501 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
502 if ( !prot )
503 return KURL::Auto;
504
505 return prot->d->uriMode;
506}
507
508TQStringList KProtocolInfo::capabilities( const TQString& _protocol )
509{
510 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
511 if ( !prot )
512 return TQStringList();
513
514 return prot->d->capabilities;
515}
516
517TQString KProtocolInfo::proxiedBy( const TQString& _protocol )
518{
519 KProtocolInfo::Ptr prot = KProtocolInfoFactory::self()->findProtocol(_protocol);
520 if ( !prot )
521 return TQString::null;
522
523 return prot->d->proxyProtocol;
524}
525
526bool KProtocolInfo::canRenameFromFile() const
527{
528 return d->canRenameFromFile;
529}
530
531bool KProtocolInfo::canRenameToFile() const
532{
533 return d->canRenameToFile;
534}
535
536bool KProtocolInfo::canDeleteRecursive() const
537{
538 return d->canDeleteRecursive;
539}
540
541KProtocolInfo::FileNameUsedForCopying KProtocolInfo::fileNameUsedForCopying() const
542{
543 return d->fileNameUsedForCopying ? Name : FromURL;
544}
545
546TQDataStream& operator>>( TQDataStream& s, KProtocolInfo::ExtraField& field ) {
547 s >> field.name;
548 s >> field.type;
549 return s;
550}
551
552TQDataStream& operator<<( TQDataStream& s, const KProtocolInfo::ExtraField& field ) {
553 s << field.name;
554 s << field.type;
555 return s;
556}
557
558// KURL based static functions are implemented in ../tdeio/tdeio/kprotocolinfo.cpp
559
560void KProtocolInfo::virtual_hook( int id, void* data )
561{ KSycocaEntry::virtual_hook( id, data ); }
562
KProtocolInfoFactory::protocols
TQStringList protocols()
Returns list of all known protocols.
Definition: kprotocolinfofactory.cpp:66
KProtocolInfoFactory::self
static KProtocolInfoFactory * self()
The instance of the KProtocolInfoFactory.
Definition: kprotocolinfofactory.h:48
KSimpleConfig
KDE Configuration entries.
Definition: ksimpleconfig.h:42
KSycocaEntry
Base class for all Sycoca entries.
Definition: tdesycocaentry.h:38
KURL
Represents and parses a URL.
Definition: kurl.h:128
KURL::protocol
TQString protocol() const
Returns the protocol for the URL.
Definition: kurl.h:367
KURL::URIMode
URIMode
Defines the type of URI we are processing.
Definition: kurl.h:153
KURL::URL
@ URL
Standards compliant URL.
Definition: kurl.h:172
KURL::Auto
@ Auto
Automatically detected.
Definition: kurl.h:158
KURL::Mailto
@ Mailto
Mailto URI.
Definition: kurl.h:178
KURL::RawURI
@ RawURI
Raw URI.
Definition: kurl.h:168
TDEStandardDirs::locate
TQString locate(const char *type, const TQString &filename, const TDEInstance *instance=TDEGlobal::instance())
Definition: tdestandarddirs.cpp:1689

tdecore

Skip menu "tdecore"
  • Main Page
  • Modules
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdecore

Skip menu "tdecore"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdecore by doxygen 1.9.4
This website is maintained by Timothy Pearson.