Development/Tutorials/Collaboration/HotNewStuff/Introduction
Development/Tutorials/Collaboration/HotNewStuff/Introduction
Languages: عربي | Asturianu | Català | Česky | Kaszëbsczi | Dansk | Deutsch | English | Esperanto | Español | Eesti | فارسی | Suomi | Français | Galego | Italiano | 日本語 | 한국어 | Norwegian | Polski | Português Brasileiro | Română | Русский | Svenska | Slovenčina | Slovenščina | српски | Türkçe | Tiếng Việt | Українська | 简体中文 | 繁體中文
Tutorial Series | HotNewStuff |
Previous | Getting started with KDE development |
What's Next | n/a |
Further Reading | n/a |
Overview
Here is a small example of an application that asks openDesktop.org for wallpapers. It lets the user install them into the system wallpaper directory.
The Code
The example consists of just one c++ source file.
//khotnewstuff.cpp
- include <kapplication.h>
- include <kdebug.h>
- include <klocale.h>
- include <kcmdlineargs.h>
- include <kaboutdata.h>
- include <knewstuff3/downloaddialog.h>
int main(int argc, char **argv)
{
KAboutData about("khotnewstuff_example", 0, ki18n("KHotNewStuff"), "0.4");
about.setProgramIconName("get-hot-new-stuff");
KApplication i;
KNS3::DownloadDialog dialog(args->arg(0));
dialog.exec();
foreach (const KNS3::Entry& e, dialog.changedEntries()) {
kDebug() << "Changed Entry: " << e.name();
}
return 0;
}
The Configuration File (.knsrc)
For this to work, a file that sets up KNewStuff khotnewstuff_example.knsrc is needed. The file has to be in kde/share/config/khotnewstuff_example.knsrc. (The name of the file is taken from the about data).
[KNewStuff3]
ProvidersUrl=http://download.kde.org/ocs/providers.xml
Categories=KDE Wallpaper 1920x1200,KDE Wallpaper 1600x1200
TargetDir=wallpapers
Uncompress=archive
Uncompress can be one of: always, never or archive:
- always: assume all downloaded files are archives and need to be extracted
- never: never try to extract the file
- archive: if the file is an archive, uncompress it, otherwise just pass it on
You have different options to set the target install directory:
- StandardResource: standard ressouce dir, such as .kde/share/wallpapers. This is what KStandardDirs::locateLocal(name) will return.
- TargetDir: a directory in the share/apps section, such as .kde/share/apps/wallpapers. This is what KStandardDirs::locateLocal("data", name) will return.
Linking in CMakeLists.txt
To link against KNS3, just link against ${KDE4_KNEWSTUFF3_LIBS}. Example:
target_link_libraries(ktexteditor_codesnippets_core
${KDE4_KDEUI_LIBS} ${KDE4_KTEXTEDITOR_LIBS} ${KDE4_KNEWSTUFF3_LIBS})