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

libs/libkipi/libkipi

  • sources
  • kde-4.12
  • kdegraphics
  • libs
  • libkipi
  • libkipi
interface.cpp
Go to the documentation of this file.
1 
34 #include "interface.moc"
35 
36 // Qt includes
37 
38 #include <QPixmap>
39 
40 // KDE includes
41 
42 #include <kdeversion.h>
43 #include <kdebug.h>
44 #include <kfileitem.h>
45 #include <kimageio.h>
46 #include <kio/previewjob.h>
47 
48 // Local includes
49 
50 #include "version.h"
51 #include "imageinfo.h"
52 #include "imagecollection.h"
53 #include "imagecollectionselector.h"
54 #include "imageinfoshared.h"
55 #include "pluginloader.h"
56 #include "uploadwidget.h"
57 
58 // Macros
59 
60 #define PrintWarningMessageFeature(feature) \
61  kWarning() << "This should only be invoked if the host application supports " \
62  "KIPI::Features (" << feature << "). If host application do " \
63  "support that, then this function should have been overridden " \
64  "in the KIPI host interface."
65 
66 #define PrintWarningMessage() kWarning() << "This method should have been overridden in the kipi host interface."
67 
68 namespace KIPI
69 {
70 
71 Interface::Interface(QObject* const parent, const char* name)
72  : QObject(parent)
73 {
74  setObjectName(name);
75 }
76 
77 Interface::~Interface()
78 {
79 }
80 
81 QString Interface::version()
82 {
83  return QString(kipi_version);
84 }
85 
86 void Interface::refreshImages(const KUrl::List&)
87 {
88  PrintWarningMessage();
89 }
90 
91 bool Interface::hasFeature(Features feature) const
92 {
93  return (features() & feature) != 0;
94 }
95 
96 bool Interface::hasFeature( const QString& feature ) const
97 {
98  if ( feature == "CollectionsHaveComments" )
99  return hasFeature( CollectionsHaveComments );
100  else if ( feature == "CollectionsHaveCategory" )
101  return hasFeature( CollectionsHaveCategory );
102  else if ( feature == "CollectionsHaveCreationDate" )
103  return hasFeature( CollectionsHaveCreationDate );
104  else if ( feature == "ImagesHasComments" )
105  return hasFeature( ImagesHasComments );
106  else if ( feature == "ImagesHasTime" )
107  return hasFeature( ImagesHasTime );
108  else if ( feature == "ImagesHasTitlesWritable" )
109  return hasFeature( ImagesHasTitlesWritable );
110  else if ( feature == "HostSupportsThumbnails" )
111  return hasFeature( HostSupportsThumbnails );
112  else if ( feature == "HostSupportsReadWriteLock" )
113  return hasFeature( HostSupportsReadWriteLock );
114  else if ( feature == "HostSupportsDateRanges" )
115  return hasFeature( HostSupportsDateRanges );
116  else if ( feature == "HostAcceptNewImages" )
117  return hasFeature( HostAcceptNewImages );
118  else if ( feature == "HostSupportsProgressBar" )
119  return hasFeature( HostSupportsProgressBar );
120  else if ( feature == "HostSupportsTags" )
121  return hasFeature( HostSupportsTags );
122  else if ( feature == "HostSupportsRating" )
123  return hasFeature( HostSupportsRating );
124  else if ( feature == "HostSupportsPickLabel" )
125  return hasFeature( HostSupportsPickLabel );
126  else if ( feature == "HostSupportsColorLabel" )
127  return hasFeature( HostSupportsColorLabel );
128  else if ( feature == "HostSupportsItemReservation" )
129  return hasFeature( HostSupportsItemReservation );
130  else
131  {
132  kWarning() << "Unknown feature asked for in KIPI::Interface::hasFeature(): " << feature;
133  return false;
134  }
135 }
136 
137 bool Interface::addImage(const KUrl&, QString&)
138 {
139  PrintWarningMessageFeature("AcceptNewImages");
140  return false;
141 }
142 
143 void Interface::delImage(const KUrl&)
144 {
145  PrintWarningMessage();
146 }
147 
148 ImageCollection Interface::currentAlbum()
149 {
150  PrintWarningMessage();
151  return ImageCollection();
152 }
153 
154 ImageCollection Interface::currentSelection()
155 {
156  PrintWarningMessage();
157  return ImageCollection();
158 }
159 
160 QList<ImageCollection> Interface::allAlbums()
161 {
162  PrintWarningMessage();
163  return QList<ImageCollection>();
164 }
165 
166 int Interface::features() const
167 {
168  PrintWarningMessage();
169  return 0;
170 }
171 
172 void Interface::thumbnail(const KUrl& url, int size)
173 {
174  thumbnails(KUrl::List() << url, size);
175 }
176 
177 void Interface::thumbnails(const KUrl::List& list, int size)
178 {
179  PrintWarningMessageFeature("HostSupportsThumbnails");
180 
181 #if KDE_IS_VERSION(4,7,0)
182  KFileItemList items;
183  for (KUrl::List::ConstIterator it = list.begin() ; it != list.end() ; ++it)
184  {
185  if ((*it).isValid())
186  items.append(KFileItem(KFileItem::Unknown, KFileItem::Unknown, *it, true));
187  }
188  KIO::PreviewJob* job = KIO::filePreview(items, QSize(size, size));
189 #else
190  KIO::PreviewJob *job = KIO::filePreview(list, size);
191 #endif
192 
193  connect(job, SIGNAL(gotPreview(KFileItem,QPixmap)),
194  this, SLOT(gotKDEPreview(KFileItem,QPixmap)));
195 
196  connect(job, SIGNAL(failed(KFileItem)),
197  this, SLOT(failedKDEPreview(KFileItem)));
198 }
199 
200 void Interface::gotKDEPreview(const KFileItem& item, const QPixmap& pix)
201 {
202  emit gotThumbnail(item.url(), pix);
203 }
204 
205 void Interface::failedKDEPreview(const KFileItem& item)
206 {
207  emit gotThumbnail(item.url(), QPixmap());
208 }
209 
210 QVariant Interface::hostSetting(const QString& settingName)
211 {
212  PrintWarningMessage();
213 
214  if (settingName == QString("WriteMetadataUpdateFiletimeStamp"))
215  {
216  return false;
217  }
218  else if (settingName == QString("WriteMetadataToRAW"))
219  {
220  return false;
221  }
222  if (settingName == QString("UseXMPSidecar4Reading"))
223  {
224  return false;
225  }
226  if (settingName == QString("MetadataWritingMode"))
227  {
228  return 0;
229  }
230  else if (settingName == QString("FileExtensions") || settingName == QString("ImagesExtensions"))
231  {
232  // Return a list of images file extensions supported by KDE.
233  QStringList KDEImagetypes = KImageIO::mimeTypes( KImageIO::Reading );
234  QString imagesFileFilter = KDEImagetypes.join(" ");
235  return QString( imagesFileFilter.toLower() + ' ' + imagesFileFilter.toUpper() );
236  }
237  else if (settingName == QString("RawExtensions"))
238  {
239  }
240  else if (settingName == QString("VideoExtensions"))
241  {
242  }
243  else if (settingName == QString("AudioExtensions"))
244  {
245  }
246 
247  return QVariant();
248 }
249 
250 QAbstractItemModel* Interface::getTagTree() const
251 {
252  PrintWarningMessage();
253  return 0;
254 }
255 
256 QString Interface::progressScheduled(const QString& title, bool canBeCanceled, bool hasThumb) const
257 {
258  PrintWarningMessageFeature("HostSupportsProgressBar");
259  Q_UNUSED(title);
260  Q_UNUSED(canBeCanceled);
261  Q_UNUSED(hasThumb);
262  return QString();
263 }
264 
265 void Interface::progressValueChanged(const QString& id, float percent)
266 {
267  PrintWarningMessageFeature("HostSupportsProgressBar");
268  Q_UNUSED(id);
269  Q_UNUSED(percent);
270 }
271 
272 void Interface::progressStatusChanged(const QString& id, const QString& status)
273 {
274  PrintWarningMessageFeature("HostSupportsProgressBar");
275  Q_UNUSED(id);
276  Q_UNUSED(status);
277 }
278 
279 void Interface::progressThumbnailChanged(const QString& id, const QPixmap& thumb)
280 {
281  PrintWarningMessageFeature("HostSupportsProgressBar");
282  Q_UNUSED(id);
283  Q_UNUSED(thumb);
284 }
285 
286 void Interface::progressCompleted(const QString& id)
287 {
288  PrintWarningMessageFeature("HostSupportsProgressBar");
289  Q_UNUSED(id);
290 }
291 
292 bool Interface::reserveForAction(const KUrl&, QObject* const, const QString&) const
293 {
294  PrintWarningMessageFeature("HostSupportsItemReservation");
295  return false;
296 }
297 
298 void Interface::clearReservation(const KUrl&, QObject* const)
299 {
300  PrintWarningMessageFeature("HostSupportsItemReservation");
301 }
302 
303 bool Interface::itemIsReserved(const KUrl&, QString* const) const
304 {
305  PrintWarningMessageFeature("HostSupportsItemReservation");
306  return false;
307 }
308 
309 FileReadWriteLock* Interface::createReadWriteLock(const KUrl&) const
310 {
311  // Dont print warning as we use the feature from low-level kipi libraries without testing for support
312  //PrintWarningMessageFeature("HostSupportsReadWriteLock");
313  return 0;
314 }
315 
316 void Interface::aboutToEdit(const KUrl&, EditHints)
317 {
318 }
319 
320 void Interface::editingFinished(const KUrl&, EditHints)
321 {
322 }
323 
324 
325 // -----------------------------------------------------------------------------------------------------------
326 
327 FileReadLocker::FileReadLocker(Interface* const iface, const KUrl& url)
328  : d(iface->createReadWriteLock(url))
329 {
330  relock();
331 }
332 
333 FileReadLocker::FileReadLocker(ImageInfoShared* const info)
334  : d(info->createReadWriteLock())
335 {
336  relock();
337 }
338 
339 FileReadLocker::~FileReadLocker()
340 {
341  unlock();
342 }
343 
344 FileReadWriteLock* FileReadLocker::fileReadWriteLock() const
345 {
346  return d;
347 }
348 
349 void FileReadLocker::relock()
350 {
351  if (d)
352  {
353  d->lockForRead();
354  }
355 }
356 
357 void FileReadLocker::unlock()
358 {
359  if (d)
360  {
361  d->unlock();
362  }
363 }
364 
365 // -----------------------------------------------------------------------------------------------------------
366 
367 FileWriteLocker::FileWriteLocker(Interface* const iface, const KUrl& url)
368  : d(iface->createReadWriteLock(url))
369 {
370  relock();
371 }
372 
373 FileWriteLocker::FileWriteLocker(ImageInfoShared* const info)
374  : d(info->createReadWriteLock())
375 {
376  relock();
377 }
378 
379 FileWriteLocker::~FileWriteLocker()
380 {
381  unlock();
382 }
383 
384 FileReadWriteLock* FileWriteLocker::fileReadWriteLock() const
385 {
386  return d;
387 }
388 
389 void FileWriteLocker::relock()
390 {
391  if (d)
392  {
393  d->lockForWrite();
394  }
395 }
396 
397 void FileWriteLocker::unlock()
398 {
399  if (d)
400  {
401  d->unlock();
402  }
403 }
404 
405 // -----------------------------------------------------------------------------------------------------------
406 
407 EditHintScope::EditHintScope(Interface* const iface, const KUrl& url, EditHints hints)
408  : iface(iface), url(url), hints(hints)
409 {
410  if (iface)
411  {
412  iface->aboutToEdit(url, hints);
413  }
414 }
415 
416 EditHintScope::~EditHintScope()
417 {
418  if (iface)
419  {
420  iface->editingFinished(url, hints);
421  }
422 }
423 
424 void EditHintScope::changeAborted()
425 {
426  hints |= HintEditAborted;
427 }
428 
429 
430 } // namespace KIPI
KIPI::Interface::progressValueChanged
virtual void progressValueChanged(const QString &id, float percent)
To manage progress state from plugin to host application.
Definition: interface.cpp:265
KIPI::Interface::reserveForAction
virtual bool reserveForAction(const KUrl &url, QObject *const reservingObject, const QString &descriptionOfAction) const
Supported if HostSupportsItemReservation.
Definition: interface.cpp:292
KIPI::Interface::hasFeature
bool hasFeature(Features feature) const
Tells whether the host application under which the plugin currently executes a given feature...
Definition: interface.cpp:91
KIPI::HostSupportsProgressBar
This feature specifies that collections are a creation date associated to them.
Definition: interface.h:88
KIPI::HostSupportsColorLabel
This feature specifies whether the host application supports pick label values for images...
Definition: interface.h:94
KIPI::Interface::aboutToEdit
virtual void aboutToEdit(const KUrl &url, EditHints hints)
Supported if HostSupportsEditHints.
Definition: interface.cpp:316
KIPI::HostSupportsPickLabel
This feature specifies that host application has mechanism to lock/unlock items to prevent concurent ...
Definition: interface.h:93
KIPI::Interface::Interface
Interface(QObject *const parent, const char *name=0)
Definition: interface.cpp:71
KIPI::FileReadLocker::FileReadLocker
FileReadLocker(Interface *const iface, const KUrl &url)
Definition: interface.cpp:327
pluginloader.h
===========================================================This file is a part of digiKam project htt...
KIPI::ImageCollection
Holds info about the collection from KIPI host application.
Definition: imagecollection.h:58
PrintWarningMessageFeature
#define PrintWarningMessageFeature(feature)
Definition: interface.cpp:60
KIPI::FileReadWriteLock
Definition: interface.h:122
KIPI::CollectionsHaveCategory
This feature specifies whether the plugin can change the title for images.
Definition: interface.h:86
KIPI::CollectionsHaveComments
Definition: interface.h:79
KIPI::FileReadWriteLock::unlock
virtual void unlock()=0
KIPI::Interface::~Interface
virtual ~Interface()
Definition: interface.cpp:77
imageinfo.h
===========================================================This file is a part of digiKam project htt...
KIPI::Features
Features
Definition: interface.h:77
KIPI::HostSupportsDateRanges
This feature specifies that images has a date associated with it, which the host application can disp...
Definition: interface.h:82
KIPI::Interface::gotThumbnail
void gotThumbnail(const KUrl &, const QPixmap &)
Emit when host application has redered item thumbnail.
KIPI::Interface::progressCompleted
virtual void progressCompleted(const QString &id)
Definition: interface.cpp:286
KIPI::HostSupportsRating
This feature specifies whether the host application supports keywords for images. ...
Definition: interface.h:90
KIPI::FileReadWriteLock::lockForRead
virtual void lockForRead()=0
KIPI::CollectionsHaveCreationDate
This feature specifies that collections are category associated to them ('travels', 'friends', 'monuments', etc.).
Definition: interface.h:87
KIPI::Interface
Definition: interface.h:158
KIPI::HostSupportsReadWriteLock
This feature specifies that host application can provide image thumbnails.
Definition: interface.h:92
QObject
KIPI::Interface::clearReservation
virtual void clearReservation(const KUrl &url, QObject *const reservingObject)
Supported if HostSupportsItemReservation.
Definition: interface.cpp:298
KIPI::Interface::progressScheduled
virtual QString progressScheduled(const QString &title, bool canBeCanceled, bool hasThumb) const
Ask to Kipi host application to prepare progress manager for a new entry.
Definition: interface.cpp:256
KIPI::Interface::currentSelection
virtual ImageCollection currentSelection()=0
Current selection in a thumbnail view for example.
Definition: interface.cpp:154
KIPI::Interface::delImage
virtual void delImage(const KUrl &)
Tells to host application that a new image has been removed.
Definition: interface.cpp:143
KIPI::Interface::features
virtual int features() const =0
Return a bitwise or of the KIPI::Features that thus application support.
Definition: interface.cpp:166
uploadwidget.h
===========================================================This file is a part of digiKam project htt...
KIPI::FileWriteLocker::unlock
void unlock()
Definition: interface.cpp:397
imagecollectionselector.h
===========================================================This file is a part of digiKam project htt...
imageinfoshared.h
===========================================================This file is a part of digiKam project htt...
KIPI::FileWriteLocker::~FileWriteLocker
~FileWriteLocker()
Definition: interface.cpp:379
KIPI::Interface::addImage
virtual bool addImage(const KUrl &, QString &err)
Tells to host application that a new image has been made available to it.
Definition: interface.cpp:137
KIPI::Interface::allAlbums
virtual QList< ImageCollection > allAlbums()=0
Returns a list of albums.
Definition: interface.cpp:160
KIPI::ImagesHasComments
This feature specifies that albums have descriptions associated to them.
Definition: interface.h:80
KIPI::HostSupportsItemReservation
This feature specifies whether the host application supports color label values for images...
Definition: interface.h:95
KIPI::Interface::createReadWriteLock
virtual FileReadWriteLock * createReadWriteLock(const KUrl &url) const
Supported if HostSupportsReadWriteLock Creates a ReadWriteLock for the given URL. ...
Definition: interface.cpp:309
KIPI::FileReadLocker::~FileReadLocker
~FileReadLocker()
Definition: interface.cpp:339
KIPI::HintEditAborted
The operation indicated as "about to be done" has been aborted / did not result in a change...
Definition: interface.h:113
KIPI::Interface::refreshImages
virtual void refreshImages(const KUrl::List &)
Tells to host application that the following images has changed on disk.
Definition: interface.cpp:86
KIPI::FileWriteLocker::fileReadWriteLock
FileReadWriteLock * fileReadWriteLock() const
Definition: interface.cpp:384
KIPI::ImagesHasTime
This feature specifies that images in the host application has descriptions associated to them...
Definition: interface.h:81
KIPI::Interface::currentAlbum
virtual ImageCollection currentAlbum()=0
Returns list of all images in current album.
Definition: interface.cpp:148
KIPI::Interface::thumbnails
virtual void thumbnails(const KUrl::List &list, int size)
Ask to Kipi host application to render thumbnails for a list of images.
Definition: interface.cpp:177
KIPI::EditHintScope::~EditHintScope
~EditHintScope()
Definition: interface.cpp:416
PrintWarningMessage
#define PrintWarningMessage()
Definition: interface.cpp:66
KIPI::ImageInfoShared
See ImageInfo documentation for details.
Definition: imageinfoshared.h:62
KIPI::Interface::itemIsReserved
virtual bool itemIsReserved(const KUrl &url, QString *const descriptionOfAction=0) const
Supported if HostSupportsItemReservation.
Definition: interface.cpp:303
KIPI::FileWriteLocker::relock
void relock()
Definition: interface.cpp:389
KIPI::EditHintScope::changeAborted
void changeAborted()
Definition: interface.cpp:424
KIPI::HostSupportsThumbnails
This feature specifies whether the host application supports rating values for images.
Definition: interface.h:91
imagecollection.h
===========================================================This file is a part of digiKam project htt...
KIPI::FileWriteLocker::FileWriteLocker
FileWriteLocker(Interface *const iface, const KUrl &url)
Definition: interface.cpp:367
KIPI::HostAcceptNewImages
This feature specifies whether the host application supports that the user can specify a date range f...
Definition: interface.h:83
KIPI::Interface::hostSetting
virtual QVariant hostSetting(const QString &settingName)
Tells to host application to return a setting to share with plugins.
Definition: interface.cpp:210
KIPI::FileReadLocker::unlock
void unlock()
Definition: interface.cpp:357
KIPI::EditHintScope::EditHintScope
EditHintScope(Interface *const iface, const KUrl &url, EditHints hints)
Definition: interface.cpp:407
KIPI::Interface::progressThumbnailChanged
virtual void progressThumbnailChanged(const QString &id, const QPixmap &thumb)
Definition: interface.cpp:279
KIPI::HostSupportsTags
This feature specifies whether the host application has a progress manager available to report progre...
Definition: interface.h:89
KIPI::FileReadLocker::fileReadWriteLock
FileReadWriteLock * fileReadWriteLock() const
Definition: interface.cpp:344
KIPI::Interface::progressStatusChanged
virtual void progressStatusChanged(const QString &id, const QString &status)
Definition: interface.cpp:272
KIPI::Interface::version
static QString version()
Returns a string version of libkipi release ID.
Definition: interface.cpp:81
KIPI::Interface::thumbnail
virtual void thumbnail(const KUrl &url, int size)
Tells to host application to render a thumbnail for an image.
Definition: interface.cpp:172
KIPI::FileReadWriteLock::lockForWrite
virtual void lockForWrite()=0
KIPI::FileReadLocker::relock
void relock()
Definition: interface.cpp:349
KIPI::Interface::getTagTree
virtual QAbstractItemModel * getTagTree() const
Definition: interface.cpp:250
KIPI::Interface::editingFinished
virtual void editingFinished(const KUrl &url, EditHints hints)
Definition: interface.cpp:320
KIPI::ImagesHasTitlesWritable
This feature specifies that the host application do accept new images.
Definition: interface.h:85
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:45:21 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

libs/libkipi/libkipi

Skip menu "libs/libkipi/libkipi"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdegraphics API Reference

Skip menu "kdegraphics API Reference"
  •     libkdcraw
  •     libkexiv2
  •     libkipi
  •     libksane
  • okular

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