• Skip to content
  • Skip to link menu
KDE 4.2 API Reference
  • KDE API Reference
  • API Reference
  • Sitemap
  • Contact Us
 

digikam

albumdb.h

Go to the documentation of this file.
00001 /* ============================================================
00002  *
00003  * This file is a part of digiKam project
00004  * http://www.digikam.org
00005  *
00006  * Date        : 2004-06-18
00007  * Description :database album interface.
00008  *
00009  * Copyright (C) 2004-2005 by Renchi Raju <renchi@pooh.tam.uiuc.edu>
00010  * Copyright (C) 2006-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
00011  * Copyright (C) 2006-2008 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
00012  *
00013  * This program is free software; you can redistribute it
00014  * and/or modify it under the terms of the GNU General
00015  * Public License as published by the Free Software Foundation;
00016  * either version 2, or (at your option)
00017  * any later version.
00018  *
00019  * This program is distributed in the hope that it will be useful,
00020  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00021  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00022  * GNU General Public License for more details.
00023  *
00024  * ============================================================ */
00025 
00028 #ifndef ALBUMDB_H
00029 #define ALBUMDB_H
00030 
00031 // Qt includes.
00032 
00033 #include <QString>
00034 #include <QList>
00035 #include <QStringList>
00036 #include <QDateTime>
00037 #include <QPair>
00038 #include <QMap>
00039 #include <QUuid>
00040 
00041 // KDE includes.
00042 
00043 #include <kurl.h>
00044 
00045 // Local includes.
00046 
00047 #include "albuminfo.h"
00048 #include "databasefields.h"
00049 #include "databaseaccess.h"
00050 #include "digikam_export.h"
00051 
00052 namespace Digikam
00053 {
00054 
00055 class DatabaseBackend;
00056 class AlbumDBPriv;
00057 
00058 class DIGIKAM_EXPORT AlbumDB
00059 {
00060 public:
00061 
00069     void setSetting(const QString& keyword, const QString& value);
00070 
00078     QString getSetting(const QString& keyword);
00079 
00086     void getFilterSettings(QStringList *imageFilter, QStringList *videoFilter, QStringList *audioFilter);
00087 
00092     void getUserFilterSettings(QString *imageFilterString, QString *videoFilterString, QString *audioFilterString);
00093 
00097     void setFilterSettings(const QStringList &imageFilter, const QStringList &videoFilter, const QStringList &audioFilter);
00098 
00104     void setUserFilterSettings(const QStringList &imageFilter, const QStringList &videoFilter, const QStringList &audioFilter);
00105 
00110     void setUserFilterSettings(const QString &imageFilterString, const QString &videoFilterString, const QString &audioFilterString);
00111 
00115     void addToUserImageFilterSettings(const QString &filterString);
00116 
00121     QUuid databaseUuid();
00122 
00123     // ----------- AlbumRoot operations -----------
00124 
00129     QList<AlbumRootInfo> getAlbumRoots();
00130 
00141     int addAlbumRoot(AlbumRoot::Type type, const QString &identifier, const QString &specificPath, const QString &label);
00142 
00147     void deleteAlbumRoot(int rootId);
00148 
00153     void setAlbumRootLabel(int rootId, const QString &newLabel);
00154 
00158     void changeAlbumRootType(int rootId, AlbumRoot::Type newType);
00159 
00160     // ----------- Album Listing operations -----------
00165     AlbumInfo::List scanAlbums();
00166 
00171     TagInfo::List scanTags();
00172 
00177     SearchInfo::List scanSearches();
00178 
00182     QList<AlbumShortInfo> getAlbumShortInfos();
00183 
00184     // ----------- Operations on PAlbums -----------
00185 
00195     int addAlbum(int albumRootId, const QString& relativePath,
00196                  const QString& caption,
00197                  const QDate& date, const QString& collection);
00198 
00199     /*
00200     int addAlbum(const QString& albumRoot, const QString& relativePath,
00201                  const QString& caption,
00202                  const QDate& date, const QString& collection);
00203     */
00204 
00214     int  getAlbumForPath(int albumRootId, const QString& relativePath, bool create = true);
00215 
00216     //int  getAlbumForPath(const QString &albumRoot, const QString& relativePath, bool create = true);
00217 
00224     QList<int> getAlbumAndSubalbumsForPath(int albumRootId, const QString& relativePath);
00225 
00226     /* *
00227      * List the urls of all subalbums of the album specified by albumRoot and path.
00228      * @param onlyDirectSubalbums if this is true, only first-level subalbums are returned,
00229      *                            if false, all levels of children are returned (include subalbums of subalbums).
00230      */
00231     //QStringList getSubalbumsForPath(const QString &albumRoot, const QString& path, bool onlyDirectSubalbums = true);
00232 
00238     void deleteAlbum(int albumID);
00239 
00245     bool copyAlbumProperties(int srcAlbumID, int dstAlbumID);
00246 
00254     void renameAlbum(int albumID, const QString& url, bool renameSubalbums);
00255 
00261     void setAlbumCaption(int albumID, const QString& caption);
00262 
00268     void setAlbumCollection(int albumID, const QString& collection);
00269 
00275     void setAlbumDate(int albumID, const QDate& date);
00276 
00282     void setAlbumIcon(int albumID, qlonglong iconID);
00283 
00291     bool getAlbumIcon(int albumID, int *iconAlbumRootId, QString *iconAlbumRelativePath);
00292 
00298     int getAlbumRootId(int albumID);
00299 
00305     //QString getAlbumPath(int albumID);
00306 
00313     QString getAlbumRelativePath(int albumID);
00314 
00320     QDate getAlbumLowestDate(int albumID);
00321 
00327     QDate getAlbumHighestDate(int albumID);
00328 
00334     QDate getAlbumAverageDate(int albumID);
00335 
00340     QMap<int, int> getNumberOfImagesInAlbums();
00341 
00342     // ----------- Operations on TAlbums -----------
00343 
00354     int addTag(int parentTagID, const QString& name,
00355                const QString& iconKDE, qlonglong iconID);
00356 
00363     QList<int> getTagsFromTagPaths(const QStringList &tagPaths, bool create);
00364 
00369     //TODO move to other place (AlbumManager)
00370     QList<int> getRecentlyAssignedTags() const;
00371 
00377     void deleteTag(int tagID);
00378 
00384     void setTagName(int tagID, const QString& name);
00385 
00394     void setTagIcon(int tagID, const QString& iconKDE, qlonglong iconID);
00395 
00406     bool getTagIcon(int tagID, int *iconAlbumRootId, QString *iconAlbumRelativePath, QString *icon);
00407 
00414     void setTagParentID(int tagID, int newParentTagID);
00415 
00416     // ----------- Operations on SAlbums -----------
00417 
00424     int addSearch(DatabaseSearch::Type type, const QString& name, const QString &query);
00425 
00432     void updateSearch(int searchID, DatabaseSearch::Type type,
00433                       const QString& name, const QString &query);
00434 
00439     void deleteSearch(int searchID);
00440 
00444     void deleteSearches(DatabaseSearch::Type type);
00445 
00449     SearchInfo getSearchInfo(int searchId);
00450 
00454     QString getSearchQuery(int searchId);
00455 
00456     // ----------- Adding and deleting Items -----------
00461     qlonglong addItem(int albumID, const QString& name,
00462                       DatabaseItem::Status status,
00463                       DatabaseItem::Category category,
00464                       const QDateTime& modificationDate,
00465                       int fileSize,
00466                       const QString& uniqueHash);
00467 
00473     void deleteItem(int albumID, const QString& file);
00474 
00483     void removeItemsFromAlbum(int albumID);
00484 
00493     void removeItems(QList<qlonglong> itemIDs, QList<int> albumIDs = QList<int>());
00494 
00499     void deleteRemovedItems();
00500 
00505     void deleteRemovedItems(QList<int> albumIDs);
00506 
00507     // ----------- Finding items -----------
00508 
00515     qlonglong getImageId(int albumID, const QString& name);
00516 
00517     enum ItemSortOrder
00518     {
00519         NoItemSorting,
00520         ByItemName,
00521         ByItemPath,
00522         ByItemDate,
00523         ByItemRating
00524     };
00525 
00534     QStringList getItemNamesInAlbum(int albumID, bool recurssive=false);
00535 
00540     QList<ItemScanInfo> getItemScanInfos(int albumID);
00541 
00549     QStringList getItemURLsInAlbum(int albumID, ItemSortOrder order = NoItemSorting);
00550 
00556     QList<qlonglong> getItemIDsInAlbum(int albumID);
00557 
00565     QMap<qlonglong, QString> getItemIDsAndURLsInAlbum(int albumID);
00566 
00575     QStringList getItemURLsInTag(int tagID, bool recursive = false);
00576 
00583     QList<qlonglong> getItemIDsInTag(int tagID, bool recursive = false);
00584 
00588     QList<QDateTime> getAllCreationDates();
00589 
00594     QMap<QDateTime, int> getAllCreationDatesAndNumberOfImages();
00595 
00596     // ----------- Item properties -----------
00597 
00603     int getItemAlbum(qlonglong imageID);
00604 
00610     QString getItemName(qlonglong imageID);
00611 
00615     ItemShortInfo getItemShortInfo(qlonglong imageID);
00616 
00620     ItemScanInfo getItemScanInfo(qlonglong imageID);
00621 
00627     void updateItem(qlonglong imageID,
00628                     DatabaseItem::Category category,
00629                     const QDateTime& modificationDate,
00630                     int fileSize,
00631                     const QString& uniqueHash);
00632 
00645     QVariantList getImagesFields(qlonglong imageID, DatabaseFields::Images imagesFields);
00646 
00664     void addImageInformation(qlonglong imageID, const QVariantList &infos,
00665                              DatabaseFields::ImageInformation fields = DatabaseFields::ImageInformationAll);
00666 
00673     void changeImageInformation(qlonglong imageID, const QVariantList &infos,
00674                                 DatabaseFields::ImageInformation fields = DatabaseFields::ImageInformationAll);
00675 
00679     QVariantList getImageInformation(qlonglong imageID,
00680                                      DatabaseFields::ImageInformation infoFields = DatabaseFields::ImageInformationAll);
00681 
00706     void addImageMetadata(qlonglong imageID, const QVariantList &infos,
00707                            DatabaseFields::ImageMetadata fields = DatabaseFields::ImageMetadataAll);
00708 
00714     void changeImageMetadata(qlonglong imageID, const QVariantList &infos,
00715                              DatabaseFields::ImageMetadata fields = DatabaseFields::ImageMetadataAll);
00716 
00720     QVariantList getImageMetadata(qlonglong imageID,
00721                                   DatabaseFields::ImageMetadata metadataFields = DatabaseFields::ImageMetadataAll);
00722 
00740     void addImagePosition(qlonglong imageID, const QVariantList &infos,
00741                            DatabaseFields::ImagePositions fields = DatabaseFields::ImagePositionsAll);
00742 
00748     void changeImagePosition(qlonglong imageID, const QVariantList &infos,
00749                              DatabaseFields::ImagePositions fields = DatabaseFields::ImagePositionsAll);
00750 
00754     QVariantList getImagePosition(qlonglong imageID,
00755                                   DatabaseFields::ImagePositions positionFields = DatabaseFields::ImagePositionsAll);
00756 
00760     void removeImagePosition(qlonglong imageid);
00761 
00765     QList<CommentInfo> getImageComments(qlonglong imageID);
00766 
00782     int setImageComment(qlonglong imageID, const QString &comment, DatabaseComment::Type type,
00783                         const QString &language = QString(), const QString &author = QString(),
00784                         const QDateTime &date = QDateTime());
00785 
00795     void changeImageComment(int commentId, qlonglong imageID, const QVariantList &infos,
00796                             DatabaseFields::ImageComments fields = DatabaseFields::ImageCommentsAll);
00797 
00798 
00802     void removeImageComment(int commentId, qlonglong imageid);
00803 
00807     QString getImageProperty(qlonglong imageID, const QString &property);
00808 
00812     void setImageProperty(qlonglong imageID, const QString &property, const QString &value);
00813 
00818     QList<CopyrightInfo> getImageCopyright(qlonglong imageID, const QString &property = QString());
00819 
00823     enum CopyrightPropertyUnique
00824     {
00825         PropertyUnique,
00826         PropertyExtraValueUnique,
00827         PropertyNoConstraint
00828     };
00829     void setImageCopyrightProperty(qlonglong imageID, const QString &property,
00830                                    const QString &value, const QString &extraValue = QString(),
00831                                    CopyrightPropertyUnique uniqueness = PropertyUnique);
00832 
00837     bool hasHaarFingerprints();
00838 
00845     QList<qlonglong> getDirtyOrMissingFingerprints();
00846     QStringList getDirtyOrMissingFingerprintURLs();
00847 
00853     //QDateTime getItemDate(qlonglong imageID);
00854 
00860     //int getItemRating(qlonglong imageID);
00861 
00869     //bool setItemDate(qlonglong imageID, const QDateTime& datetime);
00870 
00876     //void setItemRating(qlonglong imageID, int rating);
00877 
00878 
00885     //QDateTime getItemDate(int albumID, const QString& name);
00886 
00887 
00896     //bool setItemDate(int albumID, const QString& name,
00897       //               const QDateTime& datetime);
00898 
00904     //QString getItemCaption(qlonglong imageID);
00905 
00912     //QString getItemCaption(int albumID, const QString& name);
00913 
00919     //void setItemCaption(qlonglong imageID, const QString& caption);
00920 
00927     //void setItemCaption(int albumID, const QString& name, const QString& caption);
00928 
00929 
00930     // ----------- Items and their tags -----------
00931 
00937     void addItemTag(qlonglong imageID, int tagID);
00938 
00945     void addItemTag(int albumID, const QString& name, int tagID);
00946 
00951     void addTagsToItems(QList<qlonglong> imageIDs, QList<int> tagIDs);
00952 
00958     void removeItemTag(qlonglong imageID, int tagID);
00959 
00964     void removeItemAllTags(qlonglong imageID);
00965 
00970     void removeTagsFromItems(QList<qlonglong> imageIDs, QList<int> tagIDs);
00971 
00977     QStringList getItemTagNames(qlonglong imageID);
00978 
00984     QList<int> getItemTagIDs(qlonglong imageID);
00985 
00992     bool hasTags(const QList<qlonglong>& imageIDList);
00993 
01000     QList<int> getItemCommonTagIDs(const QList<qlonglong>& imageIDList);
01001 
01006     QMap<int, int> getNumberOfImagesInTags();
01007 
01008     // ----------- Moving and Copying Items -----------
01009 
01018     void moveItem(int srcAlbumID, const QString& srcName,
01019                   int dstAlbumID, const QString& dstName);
01020 
01031     int copyItem(int srcAlbumID, const QString& srcName,
01032                  int dstAlbumID, const QString& dstName);
01033 
01037     void copyImageAttributes(qlonglong srcId, qlonglong destId);
01038 
01039 
01040     // ----------- Download history methods -----------
01041 
01046     int findInDownloadHistory(const QString &identifier, const QString &name, int fileSize, const QDateTime &date);
01047 
01052     int addToDownloadHistory(const QString &identifier, const QString &name, int fileSize, const QDateTime &date);
01053 
01054     // ----------- Static helper methods for constructing SQL queries -----------
01055 
01056     static QStringList imagesFieldList(DatabaseFields::Images fields);
01057     static QStringList imageInformationFieldList(DatabaseFields::ImageInformation fields);
01058     static QStringList imageMetadataFieldList(DatabaseFields::ImageMetadata fields);
01059     static QStringList imagePositionsFieldList(DatabaseFields::ImagePositions fields);
01060     static QStringList imageCommentsFieldList(DatabaseFields::ImageComments fields);
01061     static void addBoundValuePlaceholders(QString &query, int count);
01062 
01063 private:
01064 
01065     friend class Digikam::DatabaseAccess;
01066 
01070     AlbumDB(DatabaseBackend *backend);
01071 
01075     ~AlbumDB();
01076 
01077 private:
01078 
01079     AlbumDBPriv* d;
01080 };
01081 
01082 }  // namespace Digikam
01083 
01084 #endif /* ALBUMDB_H */

digikam

Skip menu "digikam"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members

API Reference

Skip menu "API Reference"
  • digikam
Generated for API Reference by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal