summaryrefslogtreecommitdiffstats
path: root/src/sq_filethumbview.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/sq_filethumbview.h')
-rw-r--r--src/sq_filethumbview.h215
1 files changed, 215 insertions, 0 deletions
diff --git a/src/sq_filethumbview.h b/src/sq_filethumbview.h
new file mode 100644
index 0000000..b6e8481
--- /dev/null
+++ b/src/sq_filethumbview.h
@@ -0,0 +1,215 @@
+/***************************************************************************
+ sq_fileiconview.h - description
+ -------------------
+ begin : Mon Mar 15 2004
+ copyright : (C) 2004 by Baryshev Dmitry
+ email : ksquirrel.iv@gmail.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 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef SQ_FILETHUMBVIEW_H
+#define SQ_FILETHUMBVIEW_H
+
+#include <tqguardedptr.h>
+#include <tqsize.h>
+
+#include "sq_fileiconviewbase.h"
+#include "sq_thumbnailinfo.h"
+
+class TQHBox;
+class TQToolButton;
+class TQTimer;
+
+class SQ_ProgressBox;
+class SQ_ThumbnailLoadJob;
+class SQ_FileThumbViewItem;
+
+/*
+ * SQ_FileThumbView represents thumbnail view. Can also update thumbnails (with the help of
+ * SQ_ThumbnailLoadJob) and show extended tooltips.
+ */
+
+class SQ_FileThumbView : public SQ_FileIconViewBase
+{
+ TQ_OBJECT
+
+
+ public:
+ SQ_FileThumbView(TQWidget *parent = 0, const char *name = "");
+ ~SQ_FileThumbView();
+
+ bool lazy() const;
+
+ void setLazy(bool l, int delay);
+
+ void setAddRows(int rows);
+
+ void rebuildCachedPixmaps();
+
+ /*
+ * Reimplement insertItem() to enable/disable inserting
+ * directories (depends on current settings) and inserting thumbnails.
+ */
+ virtual void insertItem(KFileItem *i);
+
+ /*
+ * Append new items to thumbnail generating job.
+ */
+ void addItemsToJob(const KFileItemList &items, bool append = true);
+
+ /*
+ * Delete item from thumbnail generating job.
+ */
+ void itemRemoved(KFileItem *i);
+ void itemsRemoved(const KFileItemList &);
+
+ /*
+ * Internal.
+ */
+ virtual void updateView(bool)
+ {}
+
+ /*
+ * Clear current view and insert "..".
+ */
+ virtual void clearView();
+
+ /*
+ * All files are listed. Do something important.
+ */
+ virtual void listingCompleted();
+
+ /*
+ * Create job, connect signals and start updating
+ */
+ void doStartThumbnailUpdate(const KFileItemList &list);
+
+ /*
+ * Is thumbnail job running ?
+ */
+ bool updateRunning() const;
+
+ /*
+ * Insert ".." item.
+ */
+ virtual void insertCdUpItem(const KURL &base);
+
+ /*
+ * Don't start thumbnail job until thumbnail view is hidden.
+ */
+ void waitForShowEvent();
+
+ SQ_ProgressBox* progressBox() const;
+
+ protected:
+ virtual void resizeEvent(TQResizeEvent *);
+ virtual void startDrag();
+
+ /*
+ * Show event. Let's start thumbnail job, if needed.
+ */
+ virtual void showEvent(TQShowEvent *);
+
+ private:
+
+ /*
+ * rebuild "pending" thumbnail for supported items
+ */
+ void rebuildPendingPixmap(bool dir = false);
+
+ KFileItemList itemsToUpdate(bool fromAll = false);
+
+ public slots:
+ /*
+ * Start and stop thumbnail update job.
+ */
+ void startThumbnailUpdate();
+ void stopThumbnailUpdate();
+
+ /*
+ * One thumbnail is loaded. Let's update KFileItem's pixmap.
+ */
+ void setThumbnailPixmap(const KFileItem* fileItem, const SQ_Thumbnail&);
+
+ protected slots:
+ /*
+ * Start or stop thumbnail update.
+ */
+ void slotThumbnailUpdateToggle();
+
+ private slots:
+
+ void slotContentsMoving(int, int);
+ void slotDelayedContentsMoving();
+ void slotDelayedAddItems();
+
+ public:
+ /*
+ * Layout box with progress bar and "stop" button.
+ */
+ SQ_ProgressBox *m_progressBox;
+
+ /*
+ * "Stop" button.
+ */
+ TQToolButton *buttonStop;
+
+ private:
+ TQGuardedPtr<SQ_ThumbnailLoadJob> thumbJob;
+
+ /*
+ * "Pending" thumbnail.
+ */
+ TQPixmap pending;
+
+ TQTimer *timerScroll, *timerAdd;
+
+ TQPixmap directoryCache, pendingCache;
+ TQSize pixelSize;
+
+ KFileItemList newItems;
+ bool newItemsAppend;
+
+ /*
+ * Thumbnail job won't start until isPending
+ * is false. It means, that thumbnail view currently is hidden.
+ */
+ bool isPending;
+ bool m_lazy;
+ int lazyDelay;
+ int m_rows;
+};
+
+inline
+void SQ_FileThumbView::waitForShowEvent()
+{
+ isPending = true;
+}
+
+inline
+SQ_ProgressBox* SQ_FileThumbView::progressBox() const
+{
+ return m_progressBox;
+}
+
+inline
+bool SQ_FileThumbView::lazy() const
+{
+ return m_lazy;
+}
+
+inline
+void SQ_FileThumbView::setAddRows(int rows)
+{
+ m_rows = rows;
+}
+
+#endif