kresources Library API Documentation

The KDE Resource library

Version 3.4.0

The KDE Resource framework can be used to manage resources of different types, organized in families. The Resource framework is for example used for addressbook resources in libkabc and for calendar resources in libkcal.

When you want to use the framework for a new family, you need to

When you want to add a new resource type to an existing resource family, you need to

Example:

resourceexample.h:

#include <kconfig.h> #include <kresources/resource.h> class ResourceExample : public KRES::Resource { public: ResourceExample( const KConfig * ); ~ResourceExample(); void writeConfig( KConfig *config ); private: QString mLocation; QString mPassword; }

resourceexample.cpp:

#include <kconfig.h> #include "resourceexample.h" ResourceExample::ResourceExample( const KConfig *config ) : Resource( config ) { if ( config ) { mLocation = config->readPathEntry( "Location" ); mPassword = KStringHandler::obscure( config->readEntry( "Password" ) ); } else { mLocation = ""; // Or some sensible default mPassword = ""; } } void ResourceExample::writeConfig( KConfig *config ) { KRES::Resource::writeConfig( config ); config->writePathEntry( "Location", mLocation ); config->writeEntry( "Password", KStringHandler::obscure( mPassword ) ); } extern "C" { KRES::ResourceExample *config_widget( QWidget *parent ) { return new ResourceExampleConfig( parent, "Configure Example Resource" ); } KRES::Resource *resource( const KConfig *config ) { return new ResourceExample( config ); } }

resourceexampleconfig.h:

#include <klineedit.h> #include <kresources/resourceconfigwidget.h> #include "resourceexample.h" class ResourceExampleConfig : public KRES::ResourceConfigWidget { Q_OBJECT public: ResourceExampleConfig( QWidget *parent = 0, const char *name = 0 ); public slots: virtual void loadSettings( KRES::Resource *resource); virtual void saveSettings( KRES::Resource *resource ); private: KLineEdit *mLocationEdit; KLineEdit *mPasswordEdit; };

resourceexampleconfig.cpp:

#include <qlayout.h> #include <qlabel.h" #include <kresources/resourceconfigwidget.h> #include "resourceexample.h" #include "resourceexampleconfig.h" ResourceExampleConfig::ResourceExampleConfig( QWidget *parent, const char *name ) : KRES::ResourceConfigWidget( parent, name ) { QGridLayout *mainLayout = new QGridLayout( this, 2, 2 ); QLabel *label = new QLabel( i18n( "Location:" ), this ); mHostEdit = new KLineEdit( this ); mainLayout->addWidget( label, 1, 0 ); mainLayout->addWidget( mHostEdit, 1, 1 ); label = new QLabel( i18n( "Password:" ), this ); mPasswordEdit = new KLineEdit( this ); mPasswordEdit->setEchoMode( QLineEdit::Password ); mainLayout->addWidget( label, 2, 0 ); mainLayout->addWidget( mPasswordEdit, 2, 1 ); } void ResourceExampleConfig::loadSettings( KRES::Resource *resource ) { ResourceExample *res = dynamic_cast<ResourceExample *>( resource ); if ( res ) { mHostEdit->setText( res->host() ); mPasswordEdit->setText( res->password() ); } else kdDebug() << "ERROR: ResourceExampleConfig::loadSettings(): no ResourceExample, cast failed" << endl; } void ResourceExampleConfig::saveSettings( KRES::Resource *resource ) { ResourceExample *res = dynamic_cast<ResourceExample *>( resource ); if ( res ) { res->setHost( mHostEdit->text() ); res->setPassword( mPasswordEdit->text() ); } else kdDebug() << "ERROR: ResourceExampleConfig::saveSettings(): no ResourceExample, cast failed" << endl; }

resourceexample.desktop:

[Desktop Entry] Type=Service [Misc] Encoding=UTF-8 Name=Example Resource [Plugin] Type=exchange X-KDE-Library=resourceexample

Makefile.am

kde_module_LTLIBRARIES = resourceexample.la resourceexample_la_SOURCES = resourceexample.cpp resourceexampleconfig.cpp resourceexample_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN) resourceexample_la_LIBADD = -lkresources servicedir = $(kde_datadir)/resources/example service_DATA = resourceexample.desktop
KDE Logo
This file is part of the documentation for kresources Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Apr 12 23:24:18 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003