• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

Nepomuk-Core

  • sources
  • kde-4.12
  • kdelibs
  • nepomuk-core
  • services
  • storage
datamanagementcommand.h
Go to the documentation of this file.
1 /*
2  This file is part of the Nepomuk KDE project.
3  Copyright (C) 2010 Sebastian Trueg <trueg@kde.org>
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Lesser General Public
7  License as published by the Free Software Foundation; either
8  version 2.1 of the License, or (at your option) version 3, or any
9  later version accepted by the membership of KDE e.V. (or its
10  successor approved by the membership of KDE e.V.), which shall
11  act as a proxy defined in Section 6 of version 3 of the license.
12 
13  This library is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  Lesser General Public License for more details.
17 
18  You should have received a copy of the GNU Lesser General Public
19  License along with this library. If not, see <http://www.gnu.org/licenses/>.
20 */
21 
22 #ifndef DATAMANAGEMENTCOMMAND_H
23 #define DATAMANAGEMENTCOMMAND_H
24 
25 #include <QRunnable>
26 #include <QtCore/QVariant>
27 #include <QtDBus/QDBusMessage>
28 
29 #include "dbustypes.h"
30 #include "simpleresource.h"
31 #include "simpleresourcegraph.h"
32 #include "datamanagement.h"
33 #include "datamanagementmodel.h"
34 
35 
36 namespace Nepomuk2 {
37 
38 QUrl decodeUrl(const QString& urlsString);
39 QList<QUrl> decodeUrls(const QStringList& urlStrings);
40 QString encodeUrl(const QUrl& url);
41 
42 class DataManagementCommand : public QRunnable
43 {
44 public:
45  DataManagementCommand(DataManagementModel* model, const QDBusMessage& msg);
46  virtual ~DataManagementCommand();
47 
48  void run();
49 
50  DataManagementModel* model() const { return m_model; }
51 
52 protected:
59  virtual QVariant runCommand() = 0;
60 
61 private:
62  DataManagementModel* m_model;
63  QDBusMessage m_msg;
64 };
65 
66 class AddPropertyCommand : public DataManagementCommand
67 {
68 public:
69  AddPropertyCommand(const QList<QUrl>& res,
70  const QUrl& property,
71  const QVariantList& values,
72  const QString& app,
73  Nepomuk2::DataManagementModel* model,
74  const QDBusMessage& msg)
75  : DataManagementCommand(model, msg),
76  m_resources(res),
77  m_property(property),
78  m_values(values),
79  m_app(app) {}
80 
81 private:
82  QVariant runCommand() {
83  model()->addProperty(m_resources, m_property, m_values, m_app);
84  return QVariant();
85  }
86 
87  QList<QUrl> m_resources;
88  QUrl m_property;
89  QVariantList m_values;
90  QString m_app;
91 };
92 
93 class SetPropertyCommand : public DataManagementCommand
94 {
95 public:
96  SetPropertyCommand(const QList<QUrl>& res,
97  const QUrl& property,
98  const QVariantList& values,
99  const QString& app,
100  Nepomuk2::DataManagementModel* model,
101  const QDBusMessage& msg)
102  : DataManagementCommand(model, msg),
103  m_resources(res),
104  m_property(property),
105  m_values(values),
106  m_app(app) {}
107 
108 private:
109  QVariant runCommand() {
110  model()->setProperty(m_resources, m_property, m_values, m_app);
111  return QVariant();
112  }
113 
114  QList<QUrl> m_resources;
115  QUrl m_property;
116  QVariantList m_values;
117  QString m_app;
118 };
119 
120 class CreateResourceCommand : public DataManagementCommand
121 {
122 public:
123  CreateResourceCommand(const QList<QUrl>& resources,
124  const QString& label,
125  const QString& desc,
126  const QString& app,
127  Nepomuk2::DataManagementModel* model,
128  const QDBusMessage& msg)
129  : DataManagementCommand(model, msg),
130  m_resources(resources),
131  m_label(label),
132  m_desc(desc),
133  m_app(app) {}
134 
135 private:
136  QVariant runCommand() {
137  return model()->createResource(m_resources, m_label, m_desc, m_app);
138  }
139 
140  QList<QUrl> m_resources;
141  QString m_label;
142  QString m_desc;
143  QString m_app;
144 };
145 
146 class StoreResourcesCommand : public DataManagementCommand
147 {
148 public:
149  StoreResourcesCommand(const SimpleResourceGraph& resources,
150  const QString& app,
151  int identificationMode,
152  int flags,
153  const QHash<QUrl, QVariant>& additionalMetadata,
154  Nepomuk2::DataManagementModel* model,
155  const QDBusMessage& msg)
156  : DataManagementCommand(model, msg),
157  m_resources(resources),
158  m_app(app),
159  m_identificationMode(Nepomuk2::StoreIdentificationMode(identificationMode)),
160  m_flags(flags),
161  m_additionalMetadata(additionalMetadata) {}
162 
163 private:
164  QVariant runCommand() {
165  QHash<QUrl,QUrl> uriMappings
166  = model()->storeResources(m_resources, m_app, m_identificationMode, m_flags, m_additionalMetadata);
167 
168  QHash<QString, QString> mappings;
169  QHash<QUrl, QUrl>::const_iterator it = uriMappings.constBegin();
170  for( ; it != uriMappings.constEnd(); it++ ) {
171  mappings.insert( DBus::convertUri( it.key() ),
172  DBus::convertUri( it.value() ) );
173  }
174 
175  return QVariant::fromValue(mappings);
176  }
177 
178  SimpleResourceGraph m_resources;
179  QString m_app;
180  Nepomuk2::StoreIdentificationMode m_identificationMode;
181  Nepomuk2::StoreResourcesFlags m_flags;
182  QHash<QUrl, QVariant> m_additionalMetadata;
183 };
184 
185 class MergeResourcesCommand : public DataManagementCommand
186 {
187 public:
188  MergeResourcesCommand(const QList<QUrl>& resources,
189  const QString& app,
190  Nepomuk2::DataManagementModel* model,
191  const QDBusMessage& msg)
192  : DataManagementCommand(model, msg),
193  m_resources(resources),
194  m_app(app) {}
195 
196 private:
197  QVariant runCommand() {
198  model()->mergeResources(m_resources, m_app);
199  return QVariant();
200  }
201 
202  QList<QUrl> m_resources;
203  QString m_app;
204 };
205 
206 class RemoveResourcesByApplicationCommand : public DataManagementCommand
207 {
208 public:
209  RemoveResourcesByApplicationCommand(const QList<QUrl>& res,
210  const QString& app,
211  int flags,
212  Nepomuk2::DataManagementModel* model,
213  const QDBusMessage& msg)
214  : DataManagementCommand(model, msg),
215  m_resources(res),
216  m_app(app),
217  m_flags(flags) {}
218 
219 private:
220  QVariant runCommand() {
221  model()->removeDataByApplication(m_resources, m_flags, m_app);
222  return QVariant();
223  }
224 
225  QList<QUrl> m_resources;
226  QString m_app;
227  Nepomuk2::RemovalFlags m_flags;
228 };
229 
230 class RemoveDataByApplicationCommand : public DataManagementCommand
231 {
232 public:
233  RemoveDataByApplicationCommand(const QString& app,
234  int flags,
235  Nepomuk2::DataManagementModel* model,
236  const QDBusMessage& msg)
237  : DataManagementCommand(model, msg),
238  m_app(app),
239  m_flags(flags) {}
240 
241 private:
242  QVariant runCommand() {
243  model()->removeDataByApplication(m_flags, m_app);
244  return QVariant();
245  }
246 
247  QString m_app;
248  Nepomuk2::RemovalFlags m_flags;
249 };
250 
251 class RemovePropertiesCommand : public DataManagementCommand
252 {
253 public:
254  RemovePropertiesCommand(const QList<QUrl>& res,
255  const QList<QUrl>& properties,
256  const QString& app,
257  Nepomuk2::DataManagementModel* model,
258  const QDBusMessage& msg)
259  : DataManagementCommand(model, msg),
260  m_resources(res),
261  m_properties(properties),
262  m_app(app) {}
263 
264 private:
265  QVariant runCommand() {
266  model()->removeProperties(m_resources, m_properties, m_app);
267  return QVariant();
268  }
269 
270  QList<QUrl> m_resources;
271  QList<QUrl> m_properties;
272  QString m_app;
273 };
274 
275 class RemovePropertyCommand : public DataManagementCommand
276 {
277 public:
278  RemovePropertyCommand(const QList<QUrl>& res,
279  const QUrl& property,
280  const QVariantList& values,
281  const QString& app,
282  Nepomuk2::DataManagementModel* model,
283  const QDBusMessage& msg)
284  : DataManagementCommand(model, msg),
285  m_resources(res),
286  m_property(property),
287  m_values(values),
288  m_app(app) {}
289 
290 private:
291  QVariant runCommand() {
292  model()->removeProperty(m_resources, m_property, m_values, m_app);
293  return QVariant();
294  }
295 
296  QList<QUrl> m_resources;
297  QUrl m_property;
298  QVariantList m_values;
299  QString m_app;
300 };
301 
302 class RemoveResourcesCommand : public DataManagementCommand
303 {
304 public:
305  RemoveResourcesCommand(const QList<QUrl>& res,
306  const QString& app,
307  int flags,
308  Nepomuk2::DataManagementModel* model,
309  const QDBusMessage& msg)
310  : DataManagementCommand(model, msg),
311  m_resources(res),
312  m_app(app),
313  m_flags(flags) {}
314 
315 private:
316  QVariant runCommand() {
317  model()->removeResources(m_resources, m_flags, m_app);
318  return QVariant();
319  }
320 
321  QList<QUrl> m_resources;
322  QString m_app;
323  Nepomuk2::RemovalFlags m_flags;
324 };
325 
326 class DescribeResourcesCommand : public DataManagementCommand
327 {
328 public:
329  DescribeResourcesCommand(const QList<QUrl>& res,
330  Nepomuk2::DescribeResourcesFlags flags,
331  const QList<QUrl>& targetParties,
332  Nepomuk2::DataManagementModel* model,
333  const QDBusMessage& msg)
334  : DataManagementCommand(model, msg),
335  m_resources(res),
336  m_flags(flags),
337  m_targetParties(targetParties) {}
338 
339 private:
340  QVariant runCommand() {
341  return QVariant::fromValue(model()->describeResources(m_resources, m_flags, m_targetParties).toList());
342  }
343 
344  QList<QUrl> m_resources;
345  Nepomuk2::DescribeResourcesFlags m_flags;
346  QList<QUrl> m_targetParties;
347 };
348 
349 class ImportResourcesCommand : public DataManagementCommand
350 {
351 public:
352  ImportResourcesCommand(const QUrl& url,
353  Soprano::RdfSerialization serialization,
354  const QString& userSerialization,
355  int identificationMode,
356  int flags,
357  const PropertyHash& additionalProps,
358  const QString& app,
359  Nepomuk2::DataManagementModel* model,
360  const QDBusMessage& msg)
361  : DataManagementCommand(model, msg),
362  m_url(url),
363  m_serialization(serialization),
364  m_userSerialization(userSerialization),
365  m_identificationMode(Nepomuk2::StoreIdentificationMode(identificationMode)),
366  m_flags(flags),
367  m_additionalProperties(additionalProps),
368  m_app(app) {}
369 
370 private:
371  QVariant runCommand() {
372  model()->importResources(m_url, m_app, m_serialization, m_userSerialization, m_identificationMode, m_flags, m_additionalProperties);
373  return QVariant();
374  }
375 
376  QUrl m_url;
377  Soprano::RdfSerialization m_serialization;
378  QString m_userSerialization;
379  Nepomuk2::StoreIdentificationMode m_identificationMode;
380  Nepomuk2::StoreResourcesFlags m_flags;
381  PropertyHash m_additionalProperties;
382  QString m_app;
383 };
384 
385 class ExportResourcesCommand : public DataManagementCommand
386 {
387 public:
388  ExportResourcesCommand(const QList<QUrl>& res,
389  Soprano::RdfSerialization serialization,
390  const QString& userSerialization,
391  Nepomuk2::DescribeResourcesFlags flags,
392  const QList<QUrl>& targetParties,
393  Nepomuk2::DataManagementModel* model,
394  const QDBusMessage& msg)
395  : DataManagementCommand(model, msg),
396  m_resources(res),
397  m_serialization(serialization),
398  m_userSerialization(userSerialization),
399  m_flags(flags),
400  m_targetParties(targetParties) {}
401 
402 private:
403  QVariant runCommand() {
404  return QVariant::fromValue(model()->exportResources(m_resources, m_serialization, m_userSerialization, m_flags, m_targetParties));
405  }
406 
407  QList<QUrl> m_resources;
408  Soprano::RdfSerialization m_serialization;
409  QString m_userSerialization;
410  Nepomuk2::DescribeResourcesFlags m_flags;
411  QList<QUrl> m_targetParties;
412 };
413 }
414 
415 #endif
Nepomuk2::StoreIdentificationMode
StoreIdentificationMode
The identification mode used by storeResources().
Definition: datamanagement.h:349
Nepomuk2::ExportResourcesCommand
Definition: datamanagementcommand.h:385
Nepomuk2::RemoveResourcesCommand::RemoveResourcesCommand
RemoveResourcesCommand(const QList< QUrl > &res, const QString &app, int flags, Nepomuk2::DataManagementModel *model, const QDBusMessage &msg)
Definition: datamanagementcommand.h:305
Nepomuk2::AddPropertyCommand::AddPropertyCommand
AddPropertyCommand(const QList< QUrl > &res, const QUrl &property, const QVariantList &values, const QString &app, Nepomuk2::DataManagementModel *model, const QDBusMessage &msg)
Definition: datamanagementcommand.h:69
Nepomuk2::ImportResourcesCommand
Definition: datamanagementcommand.h:349
Nepomuk2::DataManagementModel::storeResources
QHash< QUrl, QUrl > storeResources(const SimpleResourceGraph &resources, const QString &app, Nepomuk2::StoreIdentificationMode identificationMode=Nepomuk2::IdentifyNew, Nepomuk2::StoreResourcesFlags flags=Nepomuk2::NoStoreResourcesFlags, const QHash< QUrl, QVariant > &additionalMetadata=(QHash< QUrl, QVariant >()))
Definition: datamanagementmodel.cpp:1285
Nepomuk2::RemoveResourcesByApplicationCommand
Definition: datamanagementcommand.h:206
Nepomuk2::DataManagementModel::removeResources
void removeResources(const QList< QUrl > &resources, Nepomuk2::RemovalFlags flags, const QString &app)
Remove resources from the database.
Definition: datamanagementmodel.cpp:907
Nepomuk2::CreateResourceCommand::CreateResourceCommand
CreateResourceCommand(const QList< QUrl > &resources, const QString &label, const QString &desc, const QString &app, Nepomuk2::DataManagementModel *model, const QDBusMessage &msg)
Definition: datamanagementcommand.h:123
Nepomuk2::DataManagementCommand::runCommand
virtual QVariant runCommand()=0
Reimplement this method.
Nepomuk2::DataManagementModel::mergeResources
void mergeResources(const QList< QUrl > &resources, const QString &app)
Merges all the resources into one.
Definition: datamanagementmodel.cpp:1608
Nepomuk2::RemoveDataByApplicationCommand::RemoveDataByApplicationCommand
RemoveDataByApplicationCommand(const QString &app, int flags, Nepomuk2::DataManagementModel *model, const QDBusMessage &msg)
Definition: datamanagementcommand.h:233
Nepomuk2::DataManagementModel::removeProperty
void removeProperty(const QList< QUrl > &resources, const QUrl &property, const QVariantList &values, const QString &app)
Remove the property property with values from each resource in resources.
Definition: datamanagementmodel.cpp:617
QHash
QRunnable
Nepomuk2::MergeResourcesCommand::MergeResourcesCommand
MergeResourcesCommand(const QList< QUrl > &resources, const QString &app, Nepomuk2::DataManagementModel *model, const QDBusMessage &msg)
Definition: datamanagementcommand.h:188
Nepomuk2::DataManagementModel::setProperty
void setProperty(const QList< QUrl > &resources, const QUrl &property, const QVariantList &values, const QString &app)
Set, ie.
Definition: datamanagementmodel.cpp:465
Nepomuk2::RemovePropertyCommand
Definition: datamanagementcommand.h:275
Nepomuk2::DataManagementCommand::DataManagementCommand
DataManagementCommand(DataManagementModel *model, const QDBusMessage &msg)
Definition: datamanagementcommand.cpp:49
Nepomuk2::SimpleResourceGraph
Definition: simpleresourcegraph.h:48
Nepomuk2::RemovePropertiesCommand
Definition: datamanagementcommand.h:251
Nepomuk2::describeResources
DescribeResourcesJob * describeResources(const QList< QUrl > &resources, DescribeResourcesFlags flags=NoDescribeResourcesFlags, const QList< QUrl > &targetParties=QList< QUrl >())
Retrieve all information about a set of resources.
Definition: datamanagement.cpp:171
Nepomuk2::DataManagementModel::createResource
QUrl createResource(const QList< QUrl > &types, const QString &label, const QString &description, const QString &app)
Create a new resource with several types.
Definition: datamanagementmodel.cpp:814
Nepomuk2::RemoveResourcesCommand
Definition: datamanagementcommand.h:302
Nepomuk2::DescribeResourcesCommand::DescribeResourcesCommand
DescribeResourcesCommand(const QList< QUrl > &res, Nepomuk2::DescribeResourcesFlags flags, const QList< QUrl > &targetParties, Nepomuk2::DataManagementModel *model, const QDBusMessage &msg)
Definition: datamanagementcommand.h:329
Nepomuk2::CreateResourceCommand
Definition: datamanagementcommand.h:120
Nepomuk2::DataManagementCommand
Definition: datamanagementcommand.h:42
Nepomuk2::DataManagementCommand::model
DataManagementModel * model() const
Definition: datamanagementcommand.h:50
Nepomuk2::DataManagementModel::addProperty
void addProperty(const QList< QUrl > &resources, const QUrl &property, const QVariantList &values, const QString &app)
Add property with values to each resource from resources.
Definition: datamanagementmodel.cpp:321
Nepomuk2::DBus::convertUri
QString convertUri(const QUrl &uri)
Definition: dbustypes.cpp:33
Nepomuk2::DataManagementModel::importResources
void importResources(const QUrl &url, const QString &app, Soprano::RdfSerialization serialization, const QString &userSerialization=QString(), Nepomuk2::StoreIdentificationMode identificationMode=Nepomuk2::IdentifyNew, Nepomuk2::StoreResourcesFlags flags=Nepomuk2::NoStoreResourcesFlags, const QHash< QUrl, QVariant > &additionalMetadata=(QHash< QUrl, QVariant >()))
Import an RDF graph from a URL.
Definition: datamanagementmodel.cpp:1558
Nepomuk2::AddPropertyCommand
Definition: datamanagementcommand.h:66
Nepomuk2::RemovePropertiesCommand::RemovePropertiesCommand
RemovePropertiesCommand(const QList< QUrl > &res, const QList< QUrl > &properties, const QString &app, Nepomuk2::DataManagementModel *model, const QDBusMessage &msg)
Definition: datamanagementcommand.h:254
Nepomuk2::DataManagementModel::removeDataByApplication
void removeDataByApplication(const QList< QUrl > &resources, RemovalFlags flags, const QString &app)
Remove all information about resources from the database which have been created by a specific applic...
Definition: datamanagementmodel.cpp:948
Nepomuk2::RemoveDataByApplicationCommand
Definition: datamanagementcommand.h:230
simpleresource.h
Nepomuk2::PropertyHash
QMultiHash< QUrl, QVariant > PropertyHash
Definition: simpleresource.h:37
Nepomuk2::DataManagementCommand::~DataManagementCommand
virtual ~DataManagementCommand()
Definition: datamanagementcommand.cpp:56
Nepomuk2::ExportResourcesCommand::ExportResourcesCommand
ExportResourcesCommand(const QList< QUrl > &res, Soprano::RdfSerialization serialization, const QString &userSerialization, Nepomuk2::DescribeResourcesFlags flags, const QList< QUrl > &targetParties, Nepomuk2::DataManagementModel *model, const QDBusMessage &msg)
Definition: datamanagementcommand.h:388
datamanagement.h
simpleresourcegraph.h
Nepomuk2::SetPropertyCommand::SetPropertyCommand
SetPropertyCommand(const QList< QUrl > &res, const QUrl &property, const QVariantList &values, const QString &app, Nepomuk2::DataManagementModel *model, const QDBusMessage &msg)
Definition: datamanagementcommand.h:96
Nepomuk2::decodeUrls
QList< QUrl > decodeUrls(const QStringList &urlStrings)
Definition: datamanagementcommand.cpp:103
Nepomuk2::SetPropertyCommand
Definition: datamanagementcommand.h:93
Nepomuk2::ImportResourcesCommand::ImportResourcesCommand
ImportResourcesCommand(const QUrl &url, Soprano::RdfSerialization serialization, const QString &userSerialization, int identificationMode, int flags, const PropertyHash &additionalProps, const QString &app, Nepomuk2::DataManagementModel *model, const QDBusMessage &msg)
Definition: datamanagementcommand.h:352
Nepomuk2::DescribeResourcesCommand
Definition: datamanagementcommand.h:326
datamanagementmodel.h
Nepomuk2::RemovePropertyCommand::RemovePropertyCommand
RemovePropertyCommand(const QList< QUrl > &res, const QUrl &property, const QVariantList &values, const QString &app, Nepomuk2::DataManagementModel *model, const QDBusMessage &msg)
Definition: datamanagementcommand.h:278
Nepomuk2::DataManagementModel::removeProperties
void removeProperties(const QList< QUrl > &resources, const QList< QUrl > &properties, const QString &app)
Remove all statements involving any proerty from properties from all resources in resources...
Definition: datamanagementmodel.cpp:713
Nepomuk2::encodeUrl
QString encodeUrl(const QUrl &url)
Definition: datamanagementcommand.cpp:113
Nepomuk2::StoreResourcesCommand::StoreResourcesCommand
StoreResourcesCommand(const SimpleResourceGraph &resources, const QString &app, int identificationMode, int flags, const QHash< QUrl, QVariant > &additionalMetadata, Nepomuk2::DataManagementModel *model, const QDBusMessage &msg)
Definition: datamanagementcommand.h:149
Nepomuk2::DataManagementCommand::run
void run()
Definition: datamanagementcommand.cpp:60
Nepomuk2::StoreResourcesCommand
Definition: datamanagementcommand.h:146
Nepomuk2::decodeUrl
QUrl decodeUrl(const QString &urlsString)
Definition: datamanagementcommand.cpp:96
Nepomuk2::RemoveResourcesByApplicationCommand::RemoveResourcesByApplicationCommand
RemoveResourcesByApplicationCommand(const QList< QUrl > &res, const QString &app, int flags, Nepomuk2::DataManagementModel *model, const QDBusMessage &msg)
Definition: datamanagementcommand.h:209
Nepomuk2::MergeResourcesCommand
Definition: datamanagementcommand.h:185
dbustypes.h
Nepomuk2::DataManagementModel
Definition: datamanagementmodel.h:39
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:48:08 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

Nepomuk-Core

Skip menu "Nepomuk-Core"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal