/usr/include/kontactinterface/plugin.h is in kdepimlibs5-dev 4:4.14.10-7+b2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 | /*
This file is part of the KDE Kontact Plugin Interface Library.
Copyright (c) 2001 Matthias Hoelzer-Kluepfel <mhk@kde.org>
Copyright (c) 2002-2003 Daniel Molkentin <molkentin@kde.org>
Copyright (c) 2003 Cornelius Schumacher <schumacher@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 KONTACTINTERFACE_PLUGIN_H
#define KONTACTINTERFACE_PLUGIN_H
#include "kontactinterface_export.h"
#include <kpluginfactory.h>
#include <kxmlguiclient.h>
#include <QtCore/QList>
#include <QtCore/QObject>
class KAboutData;
class KAction;
class KConfig;
class KConfigGroup;
class QDropEvent;
class QMimeData;
class QStringList;
class QWidget;
namespace KParts {
class ReadOnlyPart;
}
/**
Exports Kontact plugin.
*/
#define EXPORT_KONTACT_PLUGIN( pluginclass, pluginname ) \
class Instance \
{ \
public: \
static QObject *createInstance( QWidget *, QObject *parent, const QVariantList &list ) \
{ return new pluginclass( static_cast<KontactInterface::Core*>( parent ), list ); } \
}; \
K_PLUGIN_FACTORY( KontactPluginFactory, registerPlugin< pluginclass > \
( QString(), Instance::createInstance ); ) \
K_EXPORT_PLUGIN( KontactPluginFactory( "kontact_" #pluginname "plugin" ) )
/**
Increase this version number whenever you make a change in the API.
*/
#define KONTACT_PLUGIN_VERSION 9
namespace KontactInterface {
class Core;
class Summary;
/**
* @short Base class for all Plugins in Kontact.
*
* Inherit from it to get a plugin. It can insert an icon into the sidepane,
* add widgets to the widgetstack and add menu items via XMLGUI.
*/
class KONTACTINTERFACE_EXPORT Plugin : public QObject, virtual public KXMLGUIClient
{
Q_OBJECT
public:
/**
* Creates a new plugin.
*
* @param core The core object that manages the plugin.
* @param parent The parent object.
* @param appName The name of the application that
* provides the part. This is the name used for DBus registration.
* It's ok to have several plugins using the same application name.
* @param pluginName The unique name of the plugin. Defaults to appName if not set.
*/
Plugin( Core *core, QObject *parent, const char *appName, const char *pluginName = 0 );
/**
* Destroys the plugin.
*/
virtual ~Plugin();
/**
* Sets the @p identifier of the plugin.
*/
void setIdentifier( const QString &identifier );
/**
* Returns the identifier of the plugin.
*/
QString identifier() const;
/**
* Sets the localized @p title of the plugin.
*/
void setTitle( const QString &title );
/**
* Returns the localized title of the plugin.
*/
QString title() const;
/**
* Sets the @p icon name that is used for the plugin.
*/
void setIcon( const QString &icon );
/**
* Returns the icon name that is used for the plugin.
*/
QString icon() const;
/**
* Sets the @p name of executable (if existent).
*/
void setExecutableName( const QString &name );
/**
* Returns the name of the executable (if existent).
*/
QString executableName() const;
/**
* Set @p name of library which contains the KPart used by this plugin.
*/
void setPartLibraryName( const QByteArray &name );
/**
* Create the D-Bus interface for the given @p serviceType, if this
* plugin provides it. Returns @c true on success, @c false otherwise.
* @param serviceType the D-Bus service type to create an interface for
*/
virtual bool createDBUSInterface( const QString &serviceType );
/**
* Reimplement this method and return whether a standalone application
* is still running. This is only required if your part is also available
* as standalone application.
*/
virtual bool isRunningStandalone() const;
/**
* Reimplement this method if your application needs a different approach to be brought
* in the foreground. The default behaviour is calling the binary.
* This is only required if your part is also available as standalone application.
*/
virtual void bringToForeground();
/**
* Reimplement this method if you want to add your credits to the Kontact
* about dialog.
*/
virtual const KAboutData *aboutData() const;
/**
* You can use this method if you need to access the current part. You can be
* sure that you always get the same pointer as long as the part has not been
* deleted.
*/
KParts::ReadOnlyPart *part();
/**
* Reimplement this method and return the a path relative to "data" to the tips file.
* The tips file contains hints/tips that are displayed at the beginning of the program
* as "tip of the day". It has nothing to do with tooltips.
*/
virtual QString tipFile() const;
/**
* This function is called when the plugin is selected by the user before the
* widget of the KPart belonging to the plugin is raised.
*/
virtual void select();
/**
* Called by kontact when the plugin is selected by the user.
* Calls the virtual method select(), but also handles some standard behavior
* like "invisible toolbar actions".
*/
void aboutToSelect();
/**
* This function is called whenever the config dialog has been closed
* successfully.
*/
virtual void configUpdated();
/**
* Reimplement this method if you want to add a widget for your application
* to Kontact's summary page.
*
* @param parent The parent widget of the summary widget.
*/
virtual Summary *createSummaryWidget( QWidget *parent );
/**
* Returns whether the plugin provides a part that should be shown in the sidebar.
*/
virtual bool showInSideBar() const;
/**
* Set if the plugin provides a part that should be shown in the sidebar.
* @param hasPart shows part in sidebar if set as @c true
*/
void setShowInSideBar( bool hasPart );
/**
* Reimplement this method if you want to add checks before closing the
* main kontact window. Return true if it's OK to close the window.
* If any loaded plugin returns false from this method, then the
* main kontact window will not close.
*/
virtual bool queryClose() const;
/**
* Registers the client at DBus and returns the dbus identifier.
*/
QString registerClient();
/**
* Return the weight of the plugin. The higher the weight the lower it will
* be displayed in the sidebar. The default implementation returns 0.
*/
virtual int weight() const;
/**
* Inserts a custom "New" @p action.
* @param action the new action to insert
*/
void insertNewAction( KAction *action );
/**
* Inserts a custom "Sync" @p action.
* @param action the custom Sync action to insert
*/
void insertSyncAction( KAction *action );
/**
* Returns the list of custom "New" actions.
*/
QList<KAction*> newActions() const;
/**
* Returns the list of custom "Sync" actions.
*/
QList<KAction*> syncActions() const;
/**
* Returns a list of action names that shall be hidden in the main toolbar.
*/
virtual QStringList invisibleToolbarActions() const;
/**
* Returns whether the plugin can handle the drag object of the given mime type.
*/
virtual bool canDecodeMimeData( const QMimeData *data ) const;
/**
* Process drop event.
*/
virtual void processDropEvent( QDropEvent * );
/**
* Session management: read properties
*/
virtual void readProperties( const KConfigGroup & );
/**
* Session management: save properties
*/
virtual void saveProperties( KConfigGroup & );
/**
* Returns a pointer to the kontact core object.
*/
Core *core() const;
/**
* Sets whether the plugin shall be disabled.
*/
void setDisabled( bool value );
/**
* Returns whether the plugin is disabled.
*/
bool disabled() const;
/**
* @since 4.13
*/
virtual void shortcutChanged();
public Q_SLOTS:
/**
* @internal usage
*
* This slot is called whenever the configuration has been changed.
*/
void slotConfigUpdated();
protected:
/**
* Reimplement and return the part here. Reimplementing createPart() is
* mandatory!
*/
virtual KParts::ReadOnlyPart *createPart() = 0;
/**
* Returns the loaded part.
*/
KParts::ReadOnlyPart *loadPart();
/**
* Virtual hook for BC extension.
*/
virtual void virtual_hook( int id, void *data );
private:
//@cond PRIVATE
class Private;
Private *const d;
Q_PRIVATE_SLOT( d, void partDestroyed() )
//@endcond
};
}
#endif
|