• Skip to content
  • Skip to link menu
KDE 4.4 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-2009 by Gilles Caulier <caulier dot gilles at gmail dot com>
00011  * Copyright (C) 2006-2009 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 
00026 #ifndef ALBUMDB_H
00027 #define ALBUMDB_H
00028 
00029 // Qt includes
00030 
00031 #include <QtCore/QString>
00032 #include <QtCore/QList>
00033 #include <QtCore/QStringList>
00034 #include <QtCore/QDateTime>
00035 #include <QtCore/QPair>
00036 #include <QtCore/QMap>
00037 #include <QtCore/QUuid>
00038 
00039 // KDE includes
00040 
00041 #include <kurl.h>
00042 
00043 // Local includes
00044 
00045 #include "albuminfo.h"
00046 #include "databasefields.h"
00047 #include "databaseaccess.h"
00048 #include "digikam_export.h"
00049 
00050 namespace Digikam
00051 {
00052 
00053 class DatabaseBackend;
00054 class AlbumDBPriv;
00055 
00056 class DIGIKAM_DATABASE_EXPORT AlbumDB
00057 {
00058 public:
00059 
00067     void setSetting(const QString& keyword, const QString& value);
00068 
00076     QString getSetting(const QString& keyword);
00077 
00084     void getFilterSettings(QStringList *imageFilter, QStringList *videoFilter, QStringList *audioFilter);
00085 
00090     void getUserFilterSettings(QString *imageFilterString, QString *videoFilterString, QString *audioFilterString);
00091 
00095     void setFilterSettings(const QStringList& imageFilter, const QStringList& videoFilter, const QStringList& audioFilter);
00096 
00102     void setUserFilterSettings(const QStringList& imageFilter, const QStringList& videoFilter, const QStringList& audioFilter);
00103 
00108     void setUserFilterSettings(const QString& imageFilterString, const QString& videoFilterString, const QString& audioFilterString);
00109 
00113     void addToUserImageFilterSettings(const QString& filterString);
00114 
00119     QUuid databaseUuid();
00120 
00121     // ----------- AlbumRoot operations -----------
00122 
00127     QList<AlbumRootInfo> getAlbumRoots();
00128 
00139     int addAlbumRoot(AlbumRoot::Type type, const QString& identifier, const QString& specificPath, const QString& label);
00140 
00145     void deleteAlbumRoot(int rootId);
00146 
00152     void migrateAlbumRoot(int rootId, const QString& identifier);
00153 
00158     void setAlbumRootLabel(int rootId, const QString& newLabel);
00159 
00163     void changeAlbumRootType(int rootId, AlbumRoot::Type newType);
00164 
00165     // ----------- Album Listing operations -----------
00170     AlbumInfo::List scanAlbums();
00171 
00176     TagInfo::List scanTags();
00177 
00182     SearchInfo::List scanSearches();
00183 
00187     QList<AlbumShortInfo> getAlbumShortInfos();
00188 
00189     // ----------- Operations on PAlbums -----------
00190 
00200     int addAlbum(int albumRootId, const QString& relativePath,
00201                  const QString& caption,
00202                  const QDate& date, const QString& collection);
00203 
00204     /*
00205     int addAlbum(const QString& albumRoot, const QString& relativePath,
00206                  const QString& caption,
00207                  const QDate& date, const QString& collection);
00208     */
00209 
00219     int  getAlbumForPath(int albumRootId, const QString& relativePath, bool create = true);
00220 
00221     //int  getAlbumForPath(const QString& albumRoot, const QString& relativePath, bool create = true);
00222 
00229     QList<int> getAlbumAndSubalbumsForPath(int albumRootId, const QString& relativePath);
00230 
00231     /* *
00232      * List the urls of all subalbums of the album specified by albumRoot and path.
00233      * @param onlyDirectSubalbums if this is true, only first-level subalbums are returned,
00234      *                            if false, all levels of children are returned (include subalbums of subalbums).
00235      */
00236     //QStringList getSubalbumsForPath(const QString& albumRoot, const QString& path, bool onlyDirectSubalbums = true);
00237 
00242     QList<int> getAlbumsOnAlbumRoot(int albumRootId);
00243 
00249     void deleteAlbum(int albumID);
00250 
00254     void makeStaleAlbum(int albumID);
00255 
00260     void deleteStaleAlbums();
00261 
00267     bool copyAlbumProperties(int srcAlbumID, int dstAlbumID);
00268 
00272     void renameAlbum(int albumID, int newAlbumRootId, const QString& newRelativePath);
00273 
00279     void setAlbumCaption(int albumID, const QString& caption);
00280 
00286     void setAlbumCategory(int albumID, const QString& category);
00287 
00293     void setAlbumDate(int albumID, const QDate& date);
00294 
00300     void setAlbumIcon(int albumID, qlonglong iconID);
00301 
00309     bool getAlbumIcon(int albumID, int *iconAlbumRootId, QString *iconAlbumRelativePath);
00310 
00316     int getAlbumRootId(int albumID);
00317 
00323     //QString getAlbumPath(int albumID);
00324 
00331     QString getAlbumRelativePath(int albumID);
00332 
00338     QDate getAlbumLowestDate(int albumID);
00339 
00345     QDate getAlbumHighestDate(int albumID);
00346 
00352     QDate getAlbumAverageDate(int albumID);
00353 
00358     QMap<int, int> getNumberOfImagesInAlbums();
00359 
00360     // ----------- Operations on TAlbums -----------
00361 
00372     int addTag(int parentTagID, const QString& name,
00373                const QString& iconKDE, qlonglong iconID);
00374 
00381     QList<int> getTagsFromTagPaths(const QStringList& tagPaths, bool create);
00382 
00387     //TODO move to other place (AlbumManager)
00388     QList<int> getRecentlyAssignedTags() const;
00389 
00395     void deleteTag(int tagID);
00396 
00402     void setTagName(int tagID, const QString& name);
00403 
00412     void setTagIcon(int tagID, const QString& iconKDE, qlonglong iconID);
00413 
00424     bool getTagIcon(int tagID, int *iconAlbumRootId, QString *iconAlbumRelativePath, QString *icon);
00425 
00432     void setTagParentID(int tagID, int newParentTagID);
00433 
00434     // ----------- Operations on SAlbums -----------
00435 
00442     int addSearch(DatabaseSearch::Type type, const QString& name, const QString& query);
00443 
00450     void updateSearch(int searchID, DatabaseSearch::Type type,
00451                       const QString& name, const QString& query);
00452 
00457     void deleteSearch(int searchID);
00458 
00462     void deleteSearches(DatabaseSearch::Type type);
00463 
00467     SearchInfo getSearchInfo(int searchId);
00468 
00472     QString getSearchQuery(int searchId);
00473 
00474     // ----------- Adding and deleting Items -----------
00479     qlonglong addItem(int albumID, const QString& name,
00480                       DatabaseItem::Status status,
00481                       DatabaseItem::Category category,
00482                       const QDateTime& modificationDate,
00483                       int fileSize,
00484                       const QString& uniqueHash);
00485 
00491     void deleteItem(int albumID, const QString& file);
00492 
00501     void removeItemsFromAlbum(int albumID);
00502 
00511     void removeItems(QList<qlonglong> itemIDs, QList<int> albumIDs = QList<int>());
00512 
00517     void deleteRemovedItems();
00518 
00523     void deleteRemovedItems(QList<int> albumIDs);
00524 
00525     // ----------- Finding items -----------
00526 
00533     qlonglong getImageId(int albumID, const QString& name);
00534 
00535     enum ItemSortOrder
00536     {
00537         NoItemSorting,
00538         ByItemName,
00539         ByItemPath,
00540         ByItemDate,
00541         ByItemRating
00542     };
00543 
00552     QStringList getItemNamesInAlbum(int albumID, bool recurssive=false);
00553 
00558     QList<ItemScanInfo> getItemScanInfos(int albumID);
00559 
00567     QStringList getItemURLsInAlbum(int albumID, ItemSortOrder order = NoItemSorting);
00568 
00574     QList<qlonglong> getItemIDsInAlbum(int albumID);
00575 
00583     QMap<qlonglong, QString> getItemIDsAndURLsInAlbum(int albumID);
00584 
00593     QStringList getItemURLsInTag(int tagID, bool recursive = false);
00594 
00601     QList<qlonglong> getItemIDsInTag(int tagID, bool recursive = false);
00602 
00606     QList<QDateTime> getAllCreationDates();
00607 
00612     QMap<QDateTime, int> getAllCreationDatesAndNumberOfImages();
00613 
00614     // ----------- Item properties -----------
00615 
00621     int getItemAlbum(qlonglong imageID);
00622 
00628     QString getItemName(qlonglong imageID);
00629 
00633     ItemShortInfo getItemShortInfo(qlonglong imageID);
00634 
00638     ItemShortInfo getItemShortInfo(int albumRootId, const QString& relativePath, const QString& name);
00639 
00643     ItemScanInfo getItemScanInfo(qlonglong imageID);
00644 
00650     void updateItem(qlonglong imageID,
00651                     DatabaseItem::Category category,
00652                     const QDateTime& modificationDate,
00653                     int fileSize,
00654                     const QString& uniqueHash);
00655 
00668     QVariantList getImagesFields(qlonglong imageID, DatabaseFields::Images imagesFields);
00669 
00687     void addImageInformation(qlonglong imageID, const QVariantList& infos,
00688                              DatabaseFields::ImageInformation fields = DatabaseFields::ImageInformationAll);
00689 
00696     void changeImageInformation(qlonglong imageID, const QVariantList& infos,
00697                                 DatabaseFields::ImageInformation fields = DatabaseFields::ImageInformationAll);
00698 
00702     QVariantList getImageInformation(qlonglong imageID,
00703                                      DatabaseFields::ImageInformation infoFields = DatabaseFields::ImageInformationAll);
00704 
00729     void addImageMetadata(qlonglong imageID, const QVariantList& infos,
00730                            DatabaseFields::ImageMetadata fields = DatabaseFields::ImageMetadataAll);
00731 
00737     void changeImageMetadata(qlonglong imageID, const QVariantList& infos,
00738                              DatabaseFields::ImageMetadata fields = DatabaseFields::ImageMetadataAll);
00739 
00743     QVariantList getImageMetadata(qlonglong imageID,
00744                                   DatabaseFields::ImageMetadata metadataFields = DatabaseFields::ImageMetadataAll);
00745 
00763     void addImagePosition(qlonglong imageID, const QVariantList& infos,
00764                            DatabaseFields::ImagePositions fields = DatabaseFields::ImagePositionsAll);
00765 
00771     void changeImagePosition(qlonglong imageID, const QVariantList& infos,
00772                              DatabaseFields::ImagePositions fields = DatabaseFields::ImagePositionsAll);
00773 
00777     QVariantList getImagePosition(qlonglong imageID,
00778                                   DatabaseFields::ImagePositions positionFields = DatabaseFields::ImagePositionsAll);
00779 
00783     void removeImagePosition(qlonglong imageid);
00784 
00788     QList<CommentInfo> getImageComments(qlonglong imageID);
00789 
00805     int setImageComment(qlonglong imageID, const QString& comment, DatabaseComment::Type type,
00806                         const QString& language = QString(), const QString& author = QString(),
00807                         const QDateTime& date = QDateTime());
00808 
00818     void changeImageComment(int commentId, qlonglong imageID, const QVariantList& infos,
00819                             DatabaseFields::ImageComments fields = DatabaseFields::ImageCommentsAll);
00820 
00821 
00825     void removeImageComment(int commentId, qlonglong imageid);
00826 
00830     QString getImageProperty(qlonglong imageID, const QString& property);
00831 
00835     void setImageProperty(qlonglong imageID, const QString& property, const QString& value);
00836     void removeImageProperty(qlonglong imageID, const QString& property);
00837 
00842     QList<CopyrightInfo> getImageCopyright(qlonglong imageID, const QString& property = QString());
00843 
00847     enum CopyrightPropertyUnique
00848     {
00849         PropertyUnique,
00850         PropertyExtraValueUnique,
00851         PropertyNoConstraint
00852     };
00853     void setImageCopyrightProperty(qlonglong imageID, const QString& property,
00854                                    const QString& value, const QString& extraValue = QString(),
00855                                    CopyrightPropertyUnique uniqueness = PropertyUnique);
00856 
00862     void removeImageCopyrightProperties(qlonglong imageID, const QString& property = QString(),
00863                                         const QString& extraValue = QString(),
00864                                         const QString& value = QString() /* NOTE parameter order */);
00869     bool hasHaarFingerprints();
00870 
00877     QList<qlonglong> getDirtyOrMissingFingerprints();
00878     QStringList getDirtyOrMissingFingerprintURLs();
00879 
00888     QList<ItemScanInfo> getIdenticalFiles(qlonglong id);
00889     QList<ItemScanInfo> getIdenticalFiles(int fileSize, const QString& uniqueHash, qlonglong sourceId = -1);
00895     //QDateTime getItemDate(qlonglong imageID);
00896 
00902     //int getItemRating(qlonglong imageID);
00903 
00911     //bool setItemDate(qlonglong imageID, const QDateTime& datetime);
00912 
00918     //void setItemRating(qlonglong imageID, int rating);
00919 
00920 
00927     //QDateTime getItemDate(int albumID, const QString& name);
00928 
00929 
00938     //bool setItemDate(int albumID, const QString& name,
00939       //               const QDateTime& datetime);
00940 
00946     //QString getItemCaption(qlonglong imageID);
00947 
00954     //QString getItemCaption(int albumID, const QString& name);
00955 
00961     //void setItemCaption(qlonglong imageID, const QString& caption);
00962 
00969     //void setItemCaption(int albumID, const QString& name, const QString& caption);
00970 
00971 
00972     // ----------- Items and their tags -----------
00973 
00979     void addItemTag(qlonglong imageID, int tagID);
00980 
00987     void addItemTag(int albumID, const QString& name, int tagID);
00988 
00993     void addTagsToItems(QList<qlonglong> imageIDs, QList<int> tagIDs);
00994 
01000     void removeItemTag(qlonglong imageID, int tagID);
01001 
01007     void removeItemAllTags(qlonglong imageID, QList<int> currentTagIds);
01008 
01013     void removeTagsFromItems(QList<qlonglong> imageIDs, QList<int> tagIDs);
01014 
01020     QStringList getItemTagNames(qlonglong imageID);
01021 
01027     QList<int> getItemTagIDs(qlonglong imageID);
01028 
01035     bool hasTags(const QList<qlonglong>& imageIDList);
01036 
01043     QList<int> getItemCommonTagIDs(const QList<qlonglong>& imageIDList);
01044 
01049     QMap<int, int> getNumberOfImagesInTags();
01050 
01055     QMap<QString,int> getImageFormatStatistics();
01056 
01057     // ----------- Moving and Copying Items -----------
01058 
01067     void moveItem(int srcAlbumID, const QString& srcName,
01068                   int dstAlbumID, const QString& dstName);
01069 
01080     int copyItem(int srcAlbumID, const QString& srcName,
01081                  int dstAlbumID, const QString& dstName);
01082 
01086     void copyImageAttributes(qlonglong srcId, qlonglong destId);
01087 
01088 
01089     // ----------- Download history methods -----------
01090 
01095     int findInDownloadHistory(const QString& identifier, const QString& name, int fileSize, const QDateTime& date);
01096 
01101     int addToDownloadHistory(const QString& identifier, const QString& name, int fileSize, const QDateTime& date);
01102 
01103     // ----------- Static helper methods for constructing SQL queries -----------
01104 
01105     static QStringList imagesFieldList(DatabaseFields::Images fields);
01106     static QStringList imageInformationFieldList(DatabaseFields::ImageInformation fields);
01107     static QStringList imageMetadataFieldList(DatabaseFields::ImageMetadata fields);
01108     static QStringList imagePositionsFieldList(DatabaseFields::ImagePositions fields);
01109     static QStringList imageCommentsFieldList(DatabaseFields::ImageComments fields);
01110     static void addBoundValuePlaceholders(QString& query, int count);
01111 
01112 private:
01113 
01114     friend class Digikam::DatabaseAccess;
01115 
01119     AlbumDB(DatabaseBackend *backend);
01120 
01124     ~AlbumDB();
01125 
01126 private:
01127 
01128     AlbumDBPriv* const d;
01129 };
01130 
01131 }  // namespace Digikam
01132 
01133 #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.9-20090814
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