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.
216 lines
5.3 KiB
216 lines
5.3 KiB
/***************************************************************************
|
|
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
|