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.
digikam/digikam/libs/thumbbar/thumbbar.h

240 lines
5.4 KiB

/* ============================================================
*
* This file is a part of digiKam project
* http://www.digikam.org
*
* Date : 2004-11-22
* Description : a bar widget to display image thumbnails
*
* Copyright (C) 2004-2005 by Renchi Raju <renchi@pooh.tam.uiuc.edu>
* Copyright (C) 2005-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
*
* 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 THUMBBAR_H
#define THUMBBAR_H
// TQt includes.
#include <tqstring.h>
#include <tqscrollview.h>
#include <tqtooltip.h>
// KDE includes.
#include <kurl.h>
// Local includes.
#include "digikam_export.h"
namespace Digikam
{
class ThumbBarItem;
class ThumbBarToolTip;
class ThumbBarViewPriv;
class ThumbBarItemPriv;
class DIGIKAM_EXPORT ThumbBarToolTipSettings
{
public:
ThumbBarToolTipSettings()
{
showToolTips = true;
showFileName = true;
showFileDate = false;
showFileSize = false;
showImageType = false;
showImageDim = true;
showPhotoMake = true;
showPhotoDate = true;
showPhotoFocal = true;
showPhotoExpo = true;
showPhotoMode = true;
showPhotoFlash = false;
showPhotoWB = false;
};
bool showToolTips;
bool showFileName;
bool showFileDate;
bool showFileSize;
bool showImageType;
bool showImageDim;
bool showPhotoMake;
bool showPhotoDate;
bool showPhotoFocal;
bool showPhotoExpo;
bool showPhotoMode;
bool showPhotoFlash;
bool showPhotoWB;
};
// -------------------------------------------------------------------------
class DIGIKAM_EXPORT ThumbBarView : public TQScrollView
{
Q_OBJECT
TQ_OBJECT
public:
enum Orientation
{
Horizontal=0,
Vertical
};
public:
ThumbBarView(TQWidget* tqparent, int orientation=Vertical, bool exifRotate=true,
ThumbBarToolTipSettings settings=ThumbBarToolTipSettings());
virtual ~ThumbBarView();
int countItems();
KURL::List itemsURLs();
void clear(bool updateView=true);
void triggerUpdate();
void removeItem(ThumbBarItem* item);
void setSelected(ThumbBarItem* item);
void ensureItemVisible(ThumbBarItem* item);
void setExifRotate(bool exifRotate);
bool getExifRotate();
void setToolTipSettings(const ThumbBarToolTipSettings &settings);
ThumbBarToolTipSettings& getToolTipSettings();
ThumbBarItem* currentItem() const;
ThumbBarItem* firstItem() const;
ThumbBarItem* lastItem() const;
ThumbBarItem* findItem(const TQPoint& pos) const;
ThumbBarItem* findItemByURL(const KURL& url) const;
void refreshThumbs(const KURL::List& urls);
void tqinvalidateThumb(ThumbBarItem* item);
signals:
void signalItemSelected(ThumbBarItem*);
void signalURLSelected(const KURL&);
void signalItemAdded();
protected:
int getOrientation();
int getTileSize();
int getMargin();
void resizeEvent(TQResizeEvent*);
void contentsMousePressEvent(TQMouseEvent*);
void contentsMouseMoveEvent(TQMouseEvent*);
void contentsMouseReleaseEvent(TQMouseEvent*);
void contentsWheelEvent(TQWheelEvent*);
void insertItem(ThumbBarItem* item);
void rearrangeItems();
void repaintItem(ThumbBarItem* item);
virtual void viewportPaintEvent(TQPaintEvent*);
virtual void startDrag();
protected slots:
void slotUpdate();
private slots:
void slotGotThumbnail(const KURL&, const TQPixmap&);
void slotFailedThumbnail(const KURL&);
private:
ThumbBarViewPriv* d;
friend class ThumbBarItem;
};
// -------------------------------------------------------------------------
class DIGIKAM_EXPORT ThumbBarItem
{
public:
ThumbBarItem(ThumbBarView *view, const KURL& url);
virtual ~ThumbBarItem();
KURL url() const;
ThumbBarItem* next() const;
ThumbBarItem* prev() const;
int position() const;
TQRect rect() const;
TQPixmap* pixmap() const;
void tqrepaint();
private:
ThumbBarItemPriv* d;
friend class ThumbBarView;
};
// -------------------------------------------------------------------------
class DIGIKAM_EXPORT ThumbBarToolTip : public TQToolTip
{
public:
ThumbBarToolTip(ThumbBarView *tqparent);
virtual ~ThumbBarToolTip(){};
protected:
const uint m_maxStringLen;
TQString m_headBeg;
TQString m_headEnd;
TQString m_cellBeg;
TQString m_cellMid;
TQString m_cellEnd;
TQString m_cellSpecBeg;
TQString m_cellSpecMid;
TQString m_cellSpecEnd;
ThumbBarView *m_view;
protected:
TQString breakString(const TQString& input);
virtual TQString tipContentExtraData(ThumbBarItem*){ return TQString(); };
private:
void maybeTip(const TQPoint& pos);
TQString tipContent(ThumbBarItem* item);
};
} // NameSpace Digikam
#endif /* THUMBBAR_H */