• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

kleopatra

  • sources
  • kde-4.12
  • kdepim
  • kleopatra
  • kgpgconf
configuration.cpp
Go to the documentation of this file.
1 /* -*- mode: c++; c-basic-offset:4 -*-
2  configuration.cpp
3 
4  This file is part of Kleopatra, the KDE keymanager
5  Copyright (c) 2007 Klarälvdalens Datakonsult AB
6 
7  Kleopatra is free software; you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation; either version 2 of the License, or
10  (at your option) any later version.
11 
12  Kleopatra is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program; if not, write to the Free Software
19  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 
21  In addition, as a special exception, the copyright holders give
22  permission to link the code of this program with any edition of
23  the Qt library by Trolltech AS, Norway (or with modified versions
24  of Qt that use the same license as Qt), and distribute linked
25  combinations including the two. You must obey the GNU General
26  Public License in all respects for all of the code used other than
27  Qt. If you modify this file, you may extend this exception to
28  your version of the file, but you are not obligated to do so. If
29  you do not wish to do so, delete this exception statement from
30  your version.
31 */
32 
33 #include "configuration.h"
34 
35 #include <KDebug>
36 #include <KLocale>
37 
38 #include <QStringList>
39 
40 #include <cassert>
41 
42 namespace {
43 
44 
45 static QString gpgconf_unescape( const QString& str )
46 {
47  // Looks like it's the same rules as KUrl.
48  return KUrl::fromPercentEncoding( str.toUtf8() );
49 }
50 
51 static QString gpgconf_escape( const QString& str )
52 {
53  // Escape special chars (including ':' and '%')
54  QString enc = QLatin1String(KUrl::toPercentEncoding( str )); // and convert to utf8 first (to get %12%34 for one special char)
55  // Also encode commas, for lists.
56  enc.replace( QLatin1Char(','), QLatin1String("%2c") );
57  return enc;
58 }
59 
60 static QString urlpart_encode( const QString& str )
61 {
62  QString enc( str );
63  enc.replace( QLatin1Char('%'), QLatin1String("%25") ); // first!
64  enc.replace( QLatin1Char(':'), QLatin1String("%3a") );
65  //kDebug() <<" urlpart_encode:" << str <<" ->" << enc;
66  return enc;
67 }
68 
69 static QString urlpart_decode( const QString& str )
70 {
71  return KUrl::fromPercentEncoding( str.toLatin1() );
72 }
73 
74 static KUrl parseUrl( ConfigEntry::ArgType argType, const QString& str )
75 {
76  if ( argType == ConfigEntry::LdapUrl ) {
77  // The format is HOSTNAME:PORT:USERNAME:PASSWORD:BASE_DN
78  QStringList items = str.split( QLatin1Char(':') );
79  if ( items.count() == 5 )
80  {
81  QStringList::const_iterator it = items.constBegin();
82  KUrl url;
83  url.setProtocol( QLatin1String("ldap") );
84  url.setHost( urlpart_decode( *it++ ) );
85  url.setPort( (*it++).toInt() );
86  url.setPath( QLatin1String("/") ); // workaround KUrl parsing bug
87  url.setUserName( urlpart_decode( *it++ ) );
88  url.setPassword( urlpart_decode( *it++ ) );
89  url.setQuery( urlpart_decode( *it ) );
90  return url;
91  }
92  else
93  kWarning() << "parseURL: malformed LDAP server:" << str;
94  }
95  // other URLs : assume wellformed URL syntax.
96  return KUrl( str );
97 }
98 
99 
100 // The opposite of parseURL
101 static QString splitUrl( ConfigEntry::ArgType argType, const KUrl& url )
102 {
103  if ( argType == ConfigEntry::LdapUrl ) { // LDAP server
104  // The format is HOSTNAME:PORT:USERNAME:PASSWORD:BASE_DN
105  assert( url.protocol() == QLatin1String("ldap") );
106  return urlpart_encode( url.host() ) + QLatin1Char(':') +
107  QString::number( url.port() ) + QLatin1Char(':') +
108  urlpart_encode( url.userName() ) + QLatin1Char(':') +
109  urlpart_encode( url.password() ) + QLatin1Char(':') +
110  // KUrl automatically encoded the query (e.g. for spaces inside it),
111  // so decode it before writing it out to gpgconf (issue119)
112  urlpart_encode( KUrl::fromPercentEncoding( url.query().mid(1).toLatin1() ) );
113  }
114  return url.path();
115 }
116 
117 }
118 
119 Config::Config()
120 {
121 }
122 
123 Config::~Config()
124 {
125  qDeleteAll( m_components );
126 }
127 
128 QStringList Config::componentList() const
129 {
130  return m_components.keys();
131 }
132 
133 ConfigComponent* Config::component( const QString& name ) const
134 {
135  return m_components[name];
136 }
137 
138 void Config::addComponent( ConfigComponent* component )
139 {
140  assert( component );
141  if ( m_components.contains( component->name() ) )
142  return;
143  m_components[component->name()] = component;
144 }
145 
146 ConfigComponent::ConfigComponent( const QString& name ) : m_name( name )
147 {
148 }
149 
150 ConfigComponent::~ConfigComponent()
151 {
152  qDeleteAll( m_groups );
153 }
154 
155 QString ConfigComponent::name() const
156 {
157  return m_name;
158 }
159 
160 void ConfigComponent::setName( const QString& name )
161 {
162  m_name = name;
163 }
164 
165 QString ConfigComponent::description() const
166 {
167  return m_description;
168 }
169 
170 void ConfigComponent::setDescription( const QString& description )
171 {
172  m_description = description;
173 }
174 
175 QStringList ConfigComponent::groupList() const
176 {
177  return m_groups.keys();
178 }
179 
180 ConfigGroup* ConfigComponent::group( const QString& name ) const
181 {
182  return m_groups[name];
183 }
184 
185 void ConfigComponent::addGroup( ConfigGroup* group )
186 {
187  assert( group );
188  if ( m_groups.contains( group->name() ) )
189  return;
190  m_groups[group->name()] = group;
191 }
192 
193 
194 ConfigEntry* ConfigComponent::entry( const QString& name ) const
195 {
196  if ( m_entries.contains( name ) )
197  return m_entries[name];
198  Q_FOREACH ( ConfigGroup* const i, m_groups )
199  {
200  if ( ConfigEntry* const entry = i->entry( name ) )
201  {
202  m_entries[name] = entry;
203  return entry;
204  }
205  }
206  return 0;
207 }
208 
209 ConfigGroup::ConfigGroup( const QString& name ) : m_name( name )
210 {
211 }
212 
213 bool ConfigGroup::isEmpty() const
214 {
215  return m_entries.isEmpty();
216 }
217 
218 ConfigGroup::~ConfigGroup()
219 {
220  qDeleteAll( m_entries );
221 }
222 
223 QString ConfigGroup::name() const
224 {
225  return m_name;
226 }
227 
228 void ConfigGroup::setName( const QString& name )
229 {
230  m_name = name;
231 }
232 
233 QString ConfigGroup::description() const
234 {
235  return m_description;
236 }
237 
238 void ConfigGroup::setDescription( const QString& description )
239 {
240  m_description = description;
241 }
242 
243 QStringList ConfigGroup::entryList() const
244 {
245  return m_entries.keys();
246 }
247 
248 ConfigEntry* ConfigGroup::entry( const QString& name ) const
249 {
250  return m_entries[name];
251 }
252 
253 void ConfigGroup::addEntry( ConfigEntry* entry )
254 {
255  assert( entry );
256  if ( m_entries.contains( entry->name() ) )
257  return;
258  m_entries[entry->name()] = entry;
259 }
260 
261 ConfigEntry::ConfigEntry( const QString& name ) : m_dirty( false ), m_name( name ), m_mutability( ConfigEntry::UnspecifiedMutability ), m_useDefault( false ), m_argType( None ), m_isList( false )
262 {
263 }
264 
265 bool ConfigEntry::isDirty() const
266 {
267  return m_dirty;
268 }
269 
270 void ConfigEntry::unsetDirty()
271 {
272  m_dirty = false;
273 }
274 
275 QString ConfigEntry::name() const
276 {
277  return m_name;
278 }
279 
280 void ConfigEntry::setName( const QString& name )
281 {
282  if ( m_name == name )
283  return;
284  m_name = name;
285  m_dirty = true;
286 }
287 
288 QString ConfigEntry::description() const
289 {
290  return m_description;
291 }
292 
293 void ConfigEntry::setDescription( const QString& desc )
294 {
295  if ( m_description == desc )
296  return;
297  m_description = desc;
298  m_dirty = true;
299 }
300 
301 void ConfigEntry::setMutability( Mutability mutability )
302 {
303  if ( m_mutability == mutability )
304  return;
305  m_mutability = mutability;
306  m_dirty = true;
307 }
308 
309 ConfigEntry::Mutability ConfigEntry::mutability() const
310 {
311  return m_mutability;
312 }
313 
314 bool ConfigEntry::useBuiltInDefault() const
315 {
316  return m_useDefault;
317 }
318 
319 void ConfigEntry::setUseBuiltInDefault( bool useDefault )
320 {
321  if ( useDefault == m_useDefault )
322  return;
323  m_useDefault = useDefault;
324  m_dirty = true;
325 }
326 
327 void ConfigEntry::setArgType( ArgType type, ListType listType )
328 {
329  m_argType = type;
330  m_isList = listType == List;
331 }
332 
333 ConfigEntry::ArgType ConfigEntry::argType() const
334 {
335  return m_argType;
336 }
337 
338 QString ConfigEntry::typeDescription() const
339 {
340  const bool list = isList();
341 
342  switch ( m_argType )
343  {
344  case None:
345  return list ? i18nc( "as in \"verbosity level\"", "Level" ) : i18n( "Set/Unset" );
346  case String:
347  return list ? i18n( "String List" ) : i18n( "String" );
348  case Int:
349  return list ? i18n( "List of Integers" ) : i18n( "Integer" );
350  case UInt:
351  return list ? i18n( "List of Unsigned Integers" ) : i18n( "Unsigned Integer " );
352  case Path:
353  return list ? i18n( "Path List" ) : i18n( "Path" );
354  case Url:
355  return list ? i18n( "List of URLs" ) : i18n( "URL" );
356  case LdapUrl:
357  return list ? i18n( "List of LDAP URLs" ) : i18n( "LDAP URL" );
358  case DirPath:
359  return list ? i18n( "Directory Path List" ) : i18n( "Directory Path" );
360  }
361  return QString();
362 }
363 
364 bool ConfigEntry::isList() const
365 {
366  return m_isList;
367 }
368 
369 bool ConfigEntry::boolValue() const
370 {
371  assert( m_argType == None );
372  assert( !isList() );
373  return m_value.toBool();
374 }
375 
376 QString ConfigEntry::stringValue() const
377 {
378  return toString( NoEscape );
379 }
380 
381 int ConfigEntry::intValue() const
382 {
383  assert( m_argType == Int );
384  assert( !isList() );
385  return m_value.toInt();
386 }
387 
388 unsigned int ConfigEntry::uintValue() const
389 {
390  assert( m_argType == UInt );
391  assert( !isList() );
392  return m_value.toUInt();
393 }
394 
395 KUrl ConfigEntry::urlValue() const
396 {
397  assert( m_argType == Path || m_argType == Url || m_argType == LdapUrl );
398  assert( !isList() );
399  QString str = m_value.toString();
400  if ( m_argType == Path )
401  {
402  KUrl url;
403  url.setPath( str );
404  return url;
405  }
406  return parseUrl( m_argType, str );
407 }
408 
409 bool ConfigEntry::isStringType() const
410 {
411  return ( m_argType == String
412  || m_argType == Path
413  || m_argType == Url
414  || m_argType == LdapUrl );
415 }
416 
417 QStringList ConfigEntry::stringValueList() const
418 {
419  assert( isStringType() );
420  assert( isList() );
421  return m_value.toStringList();
422 }
423 
424 QList<int> ConfigEntry::intValueList() const
425 {
426  assert( m_argType == Int );
427  assert( isList() );
428  QList<int> ret;
429  QList<QVariant> lst = m_value.toList();
430  for( QList<QVariant>::const_iterator it = lst.constBegin(); it != lst.constEnd(); ++it ) {
431  ret.append( (*it).toInt() );
432  }
433  return ret;
434 }
435 
436 QList<unsigned int> ConfigEntry::uintValueList() const
437 {
438  assert( m_argType == UInt );
439  assert( isList() );
440  QList<unsigned int> ret;
441  QList<QVariant> lst = m_value.toList();
442  for( QList<QVariant>::const_iterator it = lst.constBegin(); it != lst.constEnd(); ++it ) {
443  ret.append( (*it).toUInt() );
444  }
445  return ret;
446 }
447 
448 KUrl::List ConfigEntry::urlValueList() const
449 {
450  assert( m_argType == Path || m_argType == Url || m_argType == LdapUrl );
451  assert( isList() );
452  const QStringList lst = m_value.toStringList();
453 
454  KUrl::List ret;
455  Q_FOREACH( const QString &i, lst )
456  {
457  if ( m_argType == Path ) {
458  KUrl url;
459  url.setPath( i );
460  ret << url;
461  } else {
462  ret << parseUrl( m_argType, i );
463  }
464  }
465  return ret;
466 }
467 
468 void ConfigEntry::setValueFromRawString( const QString& raw )
469 {
470  m_value = stringToValue( raw, Unescape );
471 }
472 
473 void ConfigEntry::setValueFromUiString( const QString& raw )
474 {
475  m_value = stringToValue( raw, DoNotUnescape );
476 }
477 
478 void ConfigEntry::setBoolValue( bool b )
479 {
480  assert( m_argType == None );
481  assert( !isList() );
482  // A "no arg" option is either set or not set.
483  // Being set means mSet==true + m_value==true, being unset means resetToDefault(), i.e. both false
484  m_value = b;
485  m_dirty = true;
486 }
487 
488 void ConfigEntry::setStringValue( const QString& str )
489 {
490  m_value = stringToValue( str, DoNotUnescape );
491  // When setting a string to empty (and there's no default), we need to act like resetToDefault
492  // Otherwise we try e.g. "ocsp-responder:0:" and gpgconf answers:
493  // "gpgconf: argument required for option ocsp-responder"
494  m_dirty = true;
495 }
496 
497 void ConfigEntry::setIntValue( int i )
498 {
499  assert( m_argType == Int );
500  assert( !isList() );
501  m_value = i;
502  m_dirty = true;
503 }
504 
505 void ConfigEntry::setUIntValue( unsigned int i )
506 {
507  m_value = i;
508  m_dirty = true;
509 }
510 
511 void ConfigEntry::setURLValue( const KUrl& url )
512 {
513  QString str = splitUrl( m_argType, url );
514  m_value = str;
515  m_dirty = true;
516 }
517 
518 void ConfigEntry::setNumberOfTimesSet( uint i )
519 {
520  assert( m_argType == None );
521  assert( isList() );
522  setUIntValue( i );
523 }
524 
525 
526 unsigned int ConfigEntry::numberOfTimesSet() const
527 {
528  assert( m_argType == None );
529  assert( isList() );
530  return m_value.toUInt();
531 }
532 
533 void ConfigEntry::setStringValueList( const QStringList& lst )
534 {
535  m_value = lst;
536  m_dirty = true;
537 }
538 
539 void ConfigEntry::setIntValueList( const QList<int>& lst )
540 {
541  QList<QVariant> ret;
542  for( QList<int>::const_iterator it = lst.begin(); it != lst.end(); ++it ) {
543  ret << QVariant( *it );
544  }
545  m_value = ret;
546  m_dirty = true;
547 }
548 
549 void ConfigEntry::setUIntValueList( const QList<unsigned int>& lst )
550 {
551  QList<QVariant> ret;
552  for( QList<unsigned int>::const_iterator it = lst.begin(); it != lst.end(); ++it ) {
553  ret << QVariant( *it );
554  }
555  m_value = ret;
556  m_dirty = true;
557 }
558 
559 void ConfigEntry::setURLValueList( const KUrl::List& urls )
560 {
561  QStringList lst;
562  Q_FOREACH( const KUrl& i, urls ) {
563  lst << splitUrl( m_argType, i );
564  }
565  m_value = lst;
566  m_dirty = true;
567 }
568 
569 QString ConfigEntry::outputString() const
570 {
571  return toString( Quote );
572 }
573 
574 QVariant ConfigEntry::stringToValue( const QString& str, UnescapeMode mode ) const
575 {
576  const bool isString = isStringType();
577  const bool unescape = mode & Unescape;
578  if ( isList() ) {
579  QList<QVariant> lst;
580  const QStringList items = str.split( QLatin1Char(','), QString::SkipEmptyParts );
581  for( QStringList::const_iterator valit = items.constBegin(); valit != items.constEnd(); ++valit ) {
582  QString val = *valit;
583  if ( isString ) {
584  if ( val.isEmpty() ) {
585  lst << QVariant( QString() );
586  continue;
587  }
588  else if ( unescape ) {
589  if( val.startsWith( QLatin1Char('"') ) )
590  val = val.mid( 1 );
591  else // see README.gpgconf
592  kWarning() << "String value should start with '\"' :" << val;
593  }
594  }
595  lst << QVariant( unescape ? gpgconf_unescape( val ) : val );
596  }
597  return lst;
598  } else { // not a list
599  QString val( str );
600  if ( isString ) {
601  if ( val.isEmpty() )
602  return QVariant( QString() ); // not set [ok with lists too?]
603  else if ( unescape ) {
604  if( val.startsWith( QLatin1Char('"') ) )
605  val = val.mid( 1 );
606  else // see README.gpgconf
607  kWarning() << "String value should start with '\"' :" << val;
608  }
609  }
610  return QVariant( unescape ? gpgconf_unescape( val ) : val );
611  }
612 }
613 
614 
615 QString ConfigEntry::toString( ConfigEntry::EscapeMode mode ) const
616 {
617  const bool escape = mode & Escape;
618  const bool quote = mode & Quote;
619 
620  // Basically the opposite of stringToValue
621  if ( isStringType() ) {
622  if ( m_value.isNull() )
623  return QString();
624  else if ( isList() ) { // string list
625  QStringList lst = m_value.toStringList();
626  if ( escape || quote ) {
627  for( QStringList::iterator it = lst.begin(); it != lst.end(); ++it ) {
628  if ( !(*it).isNull() )
629  {
630  if ( escape )
631  *it = gpgconf_escape( *it );
632  if ( quote )
633  *it = (*it).prepend( QLatin1Char('\"') );
634  }
635  }
636  }
637  QString res = lst.join( QLatin1String(",") );
638  //kDebug(5150) <<"toString:" << res;
639  return res;
640  } else { // normal string
641  QString res = m_value.toString();
642  if ( escape )
643  res = gpgconf_escape( res );
644  if ( quote )
645  res = res.prepend( QLatin1Char('\"') );
646  return res;
647  }
648  }
649  if ( !isList() ) // non-list non-string
650  {
651  if ( m_argType == None ) {
652  return m_value.toBool() ? QString::fromLatin1( "1" ) : QString();
653  } else { // some int
654  assert( m_argType == Int || m_argType == UInt );
655  return m_value.toString(); // int to string conversion
656  }
657  }
658 
659  // Lists (of other types than strings)
660  if ( m_argType == None ) {
661  const int numTimesSet = numberOfTimesSet();
662  return numTimesSet > 0 ? QString::number( numTimesSet ) : QString();
663  }
664  QStringList ret;
665  QList<QVariant> lst = m_value.toList();
666  QList<QVariant>::const_iterator end(lst.constEnd());
667  for( QList<QVariant>::const_iterator it = lst.constBegin(); it != end; ++it ) {
668  ret << (*it).toString(); // QVariant does the conversion
669  }
670  return ret.join( QLatin1String(",") );
671 }
672 
ConfigGroup::isEmpty
bool isEmpty() const
Definition: configuration.cpp:213
ConfigEntry::outputString
QString outputString() const
Definition: configuration.cpp:569
ConfigEntry::Url
Definition: configuration.h:139
ConfigEntry::setUIntValue
void setUIntValue(unsigned int)
Definition: configuration.cpp:505
ConfigComponent::groupList
QStringList groupList() const
Definition: configuration.cpp:175
Config::component
ConfigComponent * component(const QString &name) const
Definition: configuration.cpp:133
ConfigEntry::intValueList
QList< int > intValueList() const
Definition: configuration.cpp:424
ConfigEntry::setBoolValue
void setBoolValue(bool)
Definition: configuration.cpp:478
ConfigEntry::argType
ArgType argType() const
Definition: configuration.cpp:333
ConfigEntry::setStringValueList
void setStringValueList(const QStringList &)
Definition: configuration.cpp:533
description
const char * description
Definition: kleopatraapplication.cpp:92
Kleo::Formatting::type
QString type(const GpgME::Key &key)
ConfigEntry::uintValueList
QList< unsigned int > uintValueList() const
Definition: configuration.cpp:436
ConfigComponent::name
QString name() const
Definition: configuration.cpp:155
ConfigEntry::ArgType
ArgType
Definition: configuration.h:133
ConfigComponent::entry
ConfigEntry * entry(const QString &name) const
Definition: configuration.cpp:194
ConfigEntry::DirPath
Definition: configuration.h:141
ConfigGroup::entry
ConfigEntry * entry(const QString &name) const
Definition: configuration.cpp:248
ConfigComponent::ConfigComponent
ConfigComponent(const QString &name)
Definition: configuration.cpp:146
ConfigEntry::setValueFromUiString
void setValueFromUiString(const QString &str)
Definition: configuration.cpp:473
ConfigEntry::typeDescription
QString typeDescription() const
Human-readable (i.e.
Definition: configuration.cpp:338
ConfigEntry::uintValue
unsigned int uintValue() const
Definition: configuration.cpp:388
ConfigEntry::setUseBuiltInDefault
void setUseBuiltInDefault(bool useDefault)
Definition: configuration.cpp:319
ConfigEntry::ListType
ListType
Definition: configuration.h:144
ConfigEntry::ConfigEntry
ConfigEntry(const QString &name)
Definition: configuration.cpp:261
ConfigEntry::setDescription
void setDescription(const QString &description)
Definition: configuration.cpp:293
ConfigEntry::setNumberOfTimesSet
void setNumberOfTimesSet(unsigned int)
Definition: configuration.cpp:518
ConfigEntry::setIntValue
void setIntValue(int)
Definition: configuration.cpp:497
ConfigEntry::stringValueList
QStringList stringValueList() const
Definition: configuration.cpp:417
ConfigEntry::setValueFromRawString
void setValueFromRawString(const QString &str)
Definition: configuration.cpp:468
Config::componentList
QStringList componentList() const
Definition: configuration.cpp:128
ConfigGroup::setDescription
void setDescription(const QString &description)
Definition: configuration.cpp:238
ConfigEntry::String
Definition: configuration.h:135
ConfigComponent::group
ConfigGroup * group(const QString &name) const
Definition: configuration.cpp:180
ConfigGroup::addEntry
void addEntry(ConfigEntry *entry)
Definition: configuration.cpp:253
ConfigEntry::LdapUrl
Definition: configuration.h:140
ConfigGroup::setName
void setName(const QString &name)
Definition: configuration.cpp:228
ConfigEntry::stringValue
QString stringValue() const
Definition: configuration.cpp:376
ConfigEntry::None
Definition: configuration.h:134
ConfigComponent::~ConfigComponent
~ConfigComponent()
Definition: configuration.cpp:150
ConfigGroup::ConfigGroup
ConfigGroup(const QString &name)
Definition: configuration.cpp:209
ConfigEntry::Path
Definition: configuration.h:138
ConfigComponent
Definition: configuration.h:64
ConfigComponent::description
QString description() const
Definition: configuration.cpp:165
configuration.h
ConfigGroup::~ConfigGroup
~ConfigGroup()
Definition: configuration.cpp:218
Config::addComponent
void addComponent(ConfigComponent *component)
Definition: configuration.cpp:138
ConfigEntry::boolValue
bool boolValue() const
Definition: configuration.cpp:369
ConfigGroup
Definition: configuration.h:94
ConfigComponent::setDescription
void setDescription(const QString &description)
Definition: configuration.cpp:170
ConfigEntry::UInt
Definition: configuration.h:137
ConfigEntry::mutability
Mutability mutability() const
Definition: configuration.cpp:309
ConfigEntry::setName
void setName(const QString &name)
Definition: configuration.cpp:280
ConfigEntry::urlValue
KUrl urlValue() const
Definition: configuration.cpp:395
Config::~Config
~Config()
Definition: configuration.cpp:123
ConfigGroup::description
QString description() const
Definition: configuration.cpp:233
ConfigEntry::setStringValue
void setStringValue(const QString &)
Definition: configuration.cpp:488
ConfigEntry::setIntValueList
void setIntValueList(const QList< int > &)
Definition: configuration.cpp:539
ConfigEntry::setURLValue
void setURLValue(const KUrl &)
Definition: configuration.cpp:511
ConfigEntry::setMutability
void setMutability(Mutability mutability)
Definition: configuration.cpp:301
ConfigEntry::Mutability
Mutability
Definition: configuration.h:127
ConfigEntry::numberOfTimesSet
unsigned int numberOfTimesSet() const
Definition: configuration.cpp:526
ConfigComponent::setName
void setName(const QString &name)
Definition: configuration.cpp:160
ConfigEntry::setURLValueList
void setURLValueList(const KUrl::List &)
Definition: configuration.cpp:559
ConfigEntry::unsetDirty
void unsetDirty()
Definition: configuration.cpp:270
ConfigEntry::intValue
int intValue() const
Definition: configuration.cpp:381
ConfigEntry::Int
Definition: configuration.h:136
ConfigEntry::setArgType
void setArgType(ArgType type, ListType listType)
Definition: configuration.cpp:327
ConfigComponent::addGroup
void addGroup(ConfigGroup *group)
Definition: configuration.cpp:185
ConfigEntry::name
QString name() const
Definition: configuration.cpp:275
ConfigEntry::List
Definition: configuration.h:146
name
const char * name
Definition: uiserver/selectcertificatecommand.cpp:114
ConfigEntry::urlValueList
KUrl::List urlValueList() const
Definition: configuration.cpp:448
ConfigEntry::useBuiltInDefault
bool useBuiltInDefault() const
Definition: configuration.cpp:314
ConfigGroup::entryList
QStringList entryList() const
Definition: configuration.cpp:243
ConfigEntry::setUIntValueList
void setUIntValueList(const QList< unsigned int > &)
Definition: configuration.cpp:549
ConfigEntry
Definition: configuration.h:123
ConfigEntry::isDirty
bool isDirty() const
Definition: configuration.cpp:265
ConfigEntry::description
QString description() const
Definition: configuration.cpp:288
ConfigGroup::name
QString name() const
Definition: configuration.cpp:223
QList< int >
Config::Config
Config()
Definition: configuration.cpp:119
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:56:40 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kleopatra

Skip menu "kleopatra"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal