Development/Tutorials/Writing kontact plugins
< Development | Tutorials
Kontact plugins are KParts that get loaded at runtime. To integrate your KPart into kontact, you will need to have a .desktop file like this:
ls /home/kde-devel/kde/share/kde4/services/kontact/ akregatorplugin.desktop knotesplugin.desktop akregatorplugin3.2.desktop korganizerplugin.desktop journalplugin.desktop newstickerplugin.desktop kaddressbookplugin.desktop plannerplugin.desktop karmplugin.desktop specialdatesplugin.desktop kmailplugin.desktop summaryplugin.desktop kmobiletools.desktop todoplugin.desktop knodeplugin.desktop weatherplugin.desktop
Writing a KPart
The following is what you do
- write a subclass mypart of KParts::Part
- because setWidget is protected
- use a Widget in it and use setWidget to get your widget into the KPart
- write a subclass mypartmainwindow of KParts::MainWindow
- because createGUI is protected
- write main.cpp
- use new mypart(mw) to get your part into your main window
CMakeLists.txt
PROJECT( kdepart ) FIND_PACKAGE(KDE4 REQUIRED) INCLUDE_DIRECTORIES(${KDE4_INCLUDES} .) SET(kdepartSources main.cpp mypart.cpp) KDE4_ADD_EXECUTABLE(kdepart ${kdepartSources}) TARGET_LINK_LIBRARIES(kdepart ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS})
mypart.cpp
- include <kdebug.h>
- include <KPushButton>
- include "mypart.h"
- include <QWidget>
mypart::mypart(QObject* parent)
{
kDebug() << "Entering mypart";
QWidget* mywidget=new QWidget();
KPushButton* button=new KPushButton("ho",mywidget);
setWidget(mywidget);
}
mypartmainwindow::mypartmainwindow(QWidget* parent, Qt::WindowFlags f)
{
kDebug() << "Entering mypartmainwindow";
mypart* mypart1=new mypart(this);
mypart1->embed(this);
}
Using your kPart
You can use konqueror to display your kpart: konqueror -> Settings -> Configure Konqueror -> Web browsing -> Plugins
See also
- http://pim.kde.org/development/tutorials/creatingplugins.php - tutorial for KDE 3
- http://api.kde.org/4.x-api/kdelibs-apidocs/kparts/html/classKParts_1_1MainWindow.html - the mainwindow where you display your kpart in