#include "filemetadatatooltip.h"
#include <KIcon>
#include <KIO/PreviewJob>
+#include <KSharedConfig>
#include <QApplication>
#include <QDesktopWidget>
m_fileMetaDataToolTip(0),
m_toolTipRequested(false),
m_metaDataRequested(false),
+ m_appliedWaitCursor(false),
m_item(),
m_itemRect()
{
- static FileMetaDataToolTip* sharedToolTip = 0;
- if (sharedToolTip == 0) {
- sharedToolTip = new FileMetaDataToolTip();
- // TODO: Using K_GLOBAL_STATIC would be preferable to maintain the
- // instance, but the cleanup of KFileMetaDataWidget at this stage does
- // not work.
- }
- m_fileMetaDataToolTip = sharedToolTip;
- connect(m_fileMetaDataToolTip, SIGNAL(metaDataRequestFinished(KFileItemList)),
- this, SLOT(slotMetaDataRequestFinished()));
-
m_dolphinModel = static_cast<DolphinModel*>(m_proxyModel->sourceModel());
connect(parent, SIGNAL(entered(const QModelIndex&)),
this, SLOT(requestToolTip(const QModelIndex&)));
connect(parent->verticalScrollBar(), SIGNAL(valueChanged(int)),
this, SLOT(hideToolTip()));
+ Q_ASSERT(m_view);
m_view->viewport()->installEventFilter(this);
m_view->installEventFilter(this);
}
void ToolTipManager::hideToolTip()
{
- QApplication::restoreOverrideCursor();
+ if (m_appliedWaitCursor) {
+ QApplication::restoreOverrideCursor();
+ m_appliedWaitCursor = false;
+ }
m_toolTipRequested = false;
m_metaDataRequested = false;
m_showToolTipTimer->stop();
m_contentRetrievalTimer->stop();
- m_fileMetaDataToolTip->setItems(KFileItemList());
- m_fileMetaDataToolTip->hide();
-}
+ delete m_fileMetaDataToolTip;
+ m_fileMetaDataToolTip = 0;}
+
bool ToolTipManager::eventFilter(QObject* watched, QEvent* event)
{
// Only start the retrieving of the content, when the mouse has been over this
// item for 200 milliseconds. This prevents a lot of useless preview jobs and
// meta data retrieval, when passing rapidly over a lot of items.
+ Q_ASSERT(!m_fileMetaDataToolTip);
+ m_fileMetaDataToolTip = new FileMetaDataToolTip(m_view);
+ connect(m_fileMetaDataToolTip, SIGNAL(metaDataRequestFinished(KFileItemList)),
+ this, SLOT(slotMetaDataRequestFinished()));
+
m_contentRetrievalTimer->start();
m_showToolTipTimer->start();
m_toolTipRequested = true;
// Request a preview of the item
m_fileMetaDataToolTip->setPreview(QPixmap());
- KIO::PreviewJob* job = KIO::filePreview(KFileItemList() << m_item, 256, 256);
+ KIO::PreviewJob* job = KIO::filePreview(KFileItemList() << m_item, QSize(256, 256));
connect(job, SIGNAL(gotPreview(const KFileItem&, const QPixmap&)),
this, SLOT(setPreviewPix(const KFileItem&, const QPixmap&)));
void ToolTipManager::showToolTip()
{
Q_ASSERT(m_toolTipRequested);
- QApplication::restoreOverrideCursor();
+ if (m_appliedWaitCursor) {
+ QApplication::restoreOverrideCursor();
+ m_appliedWaitCursor = false;
+ }
if (QApplication::mouseButtons() & Qt::LeftButton) {
return;
}
if (m_fileMetaDataToolTip->preview().isNull() || m_metaDataRequested) {
+ Q_ASSERT(!m_appliedWaitCursor);
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+ m_appliedWaitCursor = true;
return;
}