(link to other tutorials in SVN) |
(link to kns2 users list) |
||
| Line 1: | Line 1: | ||
This tutorial informs about how to use Get Hot New Stuff collaborative data sharing features in your KDE application. | This tutorial informs about how to use Get Hot New Stuff collaborative data sharing features in your KDE application. | ||
Complementary to this tutorial, there is a [http://websvn.kde.org/*checkout*/trunk/KDE/kdelibs/knewstuff/doc/porting.txt porting guide] for KDE 3 developers and [http://websvn.kde.org/*checkout*/trunk/KDE/kdelibs/knewstuff/doc/tutorial.txt another tutorial] in SVN. | Complementary to this tutorial, there is a [http://websvn.kde.org/*checkout*/trunk/KDE/kdelibs/knewstuff/doc/porting.txt porting guide] for KDE 3 developers and [http://websvn.kde.org/*checkout*/trunk/KDE/kdelibs/knewstuff/doc/tutorial.txt another tutorial] in SVN. | ||
| + | The [[Projects/KNS2/Users|KNS2-enabled application list]] is also a good reference to find similar applications. | ||
== Terminology == | == Terminology == | ||
This tutorial informs about how to use Get Hot New Stuff collaborative data sharing features in your KDE application. Complementary to this tutorial, there is a porting guide for KDE 3 developers and another tutorial in SVN. The KNS2-enabled application list is also a good reference to find similar applications.
Contents |
First some basic terminology just to get us all on the same page. KHotNewStuff2 is the new library that implements the GHNS freedesktop.org specification for downloading and uploading user data. It will also support DXS (Desktop Exchange Service)
There are a many good examples for how to use khotnewstuff2 in the KDE-Edu module. Look at their source code for examples if needed, but it's basically a 2-part process to get download into your app.
A .knsrc file is just a file telling the library which options to use for a given application. It also lists where providers can be found, where uploads should be sent, etc. Anyway, the format of the file is an ini file with one group:
[KNewStuff2]
ProvidersUrl=
InstallationCommand=
Uncompress=
TargetDir=
InstallPath=
StandardResource=
AbsoluteInstallPath=
CustomName=
CachePolicy=
ChecksumPolicy=
SignaturePolicy=
Scope=
install( FILES yourdata.knsrc DESTINATION ${CONFIG_INSTALL_DIR} )
khotnewstuff4 yourdata.knsrc
static KNS::Entry::List download();
KNS::Entry::List entries = KNS::Engine::download();
// list of changed entries
foreach(KNS::Entry* entry, entries) {
// care only about installed ones
if (entry->status() == KNS::Entry::Installed) {
// do something with the installed entries
}
}
}
qDeleteAll(entries);
KNS::Engine engine(0);
if (engine.init("wallpaper.knsrc")) {
KNS::Entry::List entries = engine.downloadDialogModal(this);
if (entries.size() > 0) {
// do something with the modified entries here if you want
// such as rescaning your data folder or whatnot
m_model->reload();
}
}