(→Writing a KPart) |
|||
| Line 1: | Line 1: | ||
= Introduction = | = Introduction = | ||
| − | [http://kontact.kde.org/ Kontact] is a KDE [http://pim.kde.org/ PIM] (personal information management) framework that allows embedding several pim applications like kmail and korganizer as plugins into one window. Kontact plugins are [http://api.kde.org/4.x-api/kdelibs-apidocs/kparts/html/classKParts_1_1Part.html KParts] that get loaded at runtime. | + | [http://kontact.kde.org/ Kontact] is a KDE [http://pim.kde.org/ PIM] (personal information management) framework that allows embedding several pim applications like kmail and korganizer as plugins into one window. Kontact plugins are [http://api.kde.org/4.x-api/kdelibs-apidocs/kparts/html/classKParts_1_1Part.html KParts] that get loaded at runtime. So, this is a good time to learn how to write a kPart... Read on. |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
= Writing a KPart = | = Writing a KPart = | ||
| Line 115: | Line 104: | ||
You can use konqueror to display your kpart: konqueror -> Settings -> Configure Konqueror -> Web browsing -> Plugins | You can use konqueror to display your kpart: konqueror -> Settings -> Configure Konqueror -> Web browsing -> Plugins | ||
| + | |||
| + | = Kontact integration = | ||
| + | |||
| + | To integrate your KPart into kontact, you will need to have a .desktop file like this: | ||
| + | <pre> | ||
| + | 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 | ||
| + | </pre> | ||
= See also = | = See also = | ||
Contents |
Kontact is a KDE PIM (personal information management) framework that allows embedding several pim applications like kmail and korganizer as plugins into one window. Kontact plugins are KParts that get loaded at runtime. So, this is a good time to learn how to write a kPart... Read on.
The following is what you do
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})
main.cpp
int main (int argc, char *argv[]) {
const QByteArray& ba=QByteArray("test");
const KLocalizedString name=ki18n("myName");
KAboutData aboutData( ba, ba, name, ba, name);
KCmdLineArgs::init( argc, argv, &aboutData );
KApplication khello;
mypartmainwindow* mw=new mypartmainwindow();
mw->show();
khello.exec();
}
mypart.h
class mypart:public KParts::Part {
Q_OBJECT
public:
mypart(QObject *parent=0);
};
class mypartmainwindow:public KParts::MainWindow {
Q_OBJECT
public:
mypartmainwindow(QWidget* parent=0,
Qt::WindowFlags f=KDE_DEFAULT_WINDOWFLAGS);
};
mypart.cpp
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);
}
To compile, link and run the code above, use
cmake . && make && ./kdepart
You can use konqueror to display your kpart: konqueror -> Settings -> Configure Konqueror -> Web browsing -> Plugins
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