You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdelibs/kded/kdedmodule.h

149 lines
3.7 KiB

/*
This file is part of the KDE libraries
Copyright (c) 2001 Waldo Bastian <bastian@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef __KDEDMODULE_H__
#define __KDEDMODULE_H__
#include <tqobject.h>
#include <dcopobject.h>
#include <ksharedptr.h>
class KDEDModulePrivate;
class Kded;
/**
* The base class for KDED modules.
*
* In KDE 2 and KDE 3, KDED modules are realized as shared
* libraries that are loaded on-demand into kded at runtime.
*
* To write a config module, you have to create a library
* that contains at least one factory function like this:
*
* \code
* extern "C" {
* KDE_EXPORT KDEDModule *create_xyz(TQCString *name)
* {
* return new XYZ(name);
* }
* }
* \endcode
*
* See kdelibs/kded/HOWTO for more detailed documentation.
*
* @author Waldo Bastian <bastian@kde.org>
*/
class KDE_EXPORT KDEDModule : public TQObject, public DCOPObject
{
Q_OBJECT
// For inclusion in KDE4 (since it's BIC) long-needed fix for allowing
// DCOP-based kdedmodules -- Gav <gav@kde.org>.
// K_DCOP
friend class Kded;
public:
/**
* Create a DCOPObject named @p name
*/
KDEDModule(const TQCString &name);
virtual ~KDEDModule();
/**
* Specifies the idle timeout in seconds. The default is 0.
*
* This will call the idle slot @p secs seconds after the last
* reference was removed.
*/
void setIdleTimeout(int secs);
/**
* Reset the idle timeout counter.
*
* (re)starts the timeout counter if no objects are being referenced.
*/
void resetIdle();
/**
* Insert @p obj indexed with @p app and @p key. The
* object will be automatically deleted when the application
* @p app unregisters with DCOP.
*
* Any previous object inserted with the same values for @p app
* and @p key will be removed.
*/
void insert(const TQCString &app, const TQCString &key, KShared *obj);
/**
* Lookup object indexed with @p app and @p key
*/
KShared *find(const TQCString &app, const TQCString &key);
/**
* remove object indexed with @p app and @p key.
* The object will be deleted when it is no more referenced.
*/
void remove(const TQCString &app, const TQCString &key);
/**
* remove all objects indexed with @p app.
* The objects will be deleted when they are no more referenced.
*/
void removeAll(const TQCString &app);
/**
* Returns whether a certain mainwindow has registered itself with KDED
*/
bool isWindowRegistered(long windowId);
public slots:
/**
* Called whenever the last referenced object gets dereferenced.
*
* See also setIdleTimeout()
*
* You may delete the module from this slot.
*/
virtual void idle() { };
signals:
/**
* Emitted when the module is being deleted.
*/
void moduleDeleted(KDEDModule *);
/**
* Emitted when a mainwindow registers itself.
*/
void windowRegistered(long windowId);
/**
* Emitted when a mainwindow unregisters itself.
*/
void windowUnregistered(long windowId);
private:
KDEDModulePrivate *d;
};
#endif