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.
ksquirrel/ksquirrel/sq_filethumbview.h

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