You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
3.7 KiB
160 lines
3.7 KiB
/* ============================================================
|
|
*
|
|
* This file is a part of digiKam project
|
|
* http://www.digikam.org
|
|
*
|
|
* Date : 2004-06-26
|
|
* Description : Albums lister.
|
|
*
|
|
* Copyright (C) 2004-2005 by Renchi Raju <renchi@pooh.tam.uiuc.edu>
|
|
* Copyright (C) 2007-2009 by Gilles Caulier <caulier dot gilles at gmail dot com>
|
|
* Copyright (C) 2007 by Arnd Baecker <arnd dot baecker at web dot de>
|
|
*
|
|
* This program is free software; you can redistribute it
|
|
* and/or modify it under the terms of the GNU General
|
|
* Public License as published by the Free Software Foundation;
|
|
* either version 2, or (at your option)
|
|
* any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* ============================================================ */
|
|
|
|
#ifndef ALBUMLISTER_H
|
|
#define ALBUMLISTER_H
|
|
|
|
/** @file albumlister.h */
|
|
|
|
// TQt includes.
|
|
|
|
#include <tqobject.h>
|
|
#include <tqcstring.h>
|
|
|
|
// Local includes.
|
|
|
|
#include "imageinfo.h"
|
|
|
|
namespace TDEIO
|
|
{
|
|
class Job;
|
|
}
|
|
|
|
namespace Digikam
|
|
{
|
|
|
|
class Album;
|
|
class AlbumListerPriv;
|
|
|
|
/**
|
|
* Manages imageinfo
|
|
*
|
|
* does listing of imageinfo for the current album and controls the lifetime
|
|
* of the imageinfo. tdeioslaves are used for listing the imageinfo
|
|
* corresponding to an album. Similar to the albummanager, frontend entities need
|
|
* to connect to the AlbumLister for notifications of new Images, deletion of
|
|
* Images or refreshing of currently listed Image.
|
|
*/
|
|
class AlbumLister : public TQObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
/** @enum MatchingCondition
|
|
* Possible logical matching condition used to sort tags id.
|
|
*/
|
|
enum MatchingCondition
|
|
{
|
|
OrCondition = 0,
|
|
AndCondition
|
|
};
|
|
|
|
/** @enum RatingCondition
|
|
* Possible conditions used to filter rating: >=, =, <=.
|
|
*/
|
|
enum RatingCondition
|
|
{
|
|
GreaterEqualCondition = 0,
|
|
EqualCondition,
|
|
LessEqualCondition
|
|
};
|
|
|
|
public:
|
|
|
|
static AlbumLister* instance();
|
|
|
|
~AlbumLister();
|
|
|
|
/**
|
|
* Opens an album to lists its items
|
|
*/
|
|
void openAlbum(Album *album);
|
|
void stop();
|
|
|
|
/**
|
|
* Reread an albums item list
|
|
*/
|
|
void refresh();
|
|
|
|
void setNamesFilter(const TQString& namesFilter);
|
|
|
|
void setDayFilter(const TQValueList<TQDateTime>& days);
|
|
|
|
void setTagFilter(const TQValueList<int>& tags, const MatchingCondition& matchingCond,
|
|
bool showUnTagged=false);
|
|
|
|
void setRatingFilter(int rating, const RatingCondition& ratingCond);
|
|
|
|
void setMimeTypeFilter(int mimeTypeFilter);
|
|
|
|
void setTextFilter(const TQString& text);
|
|
|
|
void setRecurseAlbums(bool recursive);
|
|
void setRecurseTags(bool recursive);
|
|
|
|
/**
|
|
* Trigger a recreation of the given ImageInfo object
|
|
* for the next refresh.
|
|
*/
|
|
void invalidateItem(const ImageInfo *item);
|
|
|
|
bool tagFiltersIsActive();
|
|
|
|
signals:
|
|
|
|
void signalNewItems(const ImageInfoList& items);
|
|
void signalDeleteItem(ImageInfo* item);
|
|
void signalNewFilteredItems(const ImageInfoList& items);
|
|
void signalDeleteFilteredItem(ImageInfo* item);
|
|
void signalClear();
|
|
void signalCompleted();
|
|
void signalItemsTextFilterMatch(bool);
|
|
void signalItemsFilterMatch(bool);
|
|
|
|
private slots:
|
|
|
|
void slotFilterItems();
|
|
|
|
void slotResult(TDEIO::Job* job);
|
|
void slotData(TDEIO::Job* job, const TQByteArray& data);
|
|
|
|
private:
|
|
|
|
AlbumLister();
|
|
bool matchesFilter(const ImageInfo* info, bool& foundText);
|
|
|
|
private:
|
|
|
|
AlbumListerPriv *d;
|
|
|
|
static AlbumLister *m_instance;
|
|
|
|
};
|
|
|
|
} // namespace Digikam
|
|
|
|
#endif /* ALBUMLISTER_H */
|