/*************************************************************************** sq_fileiconviewbase.cpp - description ------------------- begin : ??? Feb 22 2005 copyright : (C) 2005 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. * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include #include #include #include "ksquirrel.h" #include "sq_fileiconviewbase.h" #include "sq_config.h" SQ_FileIconViewBase::SQ_FileIconViewBase(TQWidget *parent, const char *name) : KFileIconView(parent, name) { toolTip = new KonqFileTip(this); slotResetToolTip(); disconnect(this, TQ_SIGNAL(onViewport()), this, 0); disconnect(this, TQ_SIGNAL(onItem(TQIconViewItem *)), this, 0); connect(this, TQ_SIGNAL(onViewport()), this, TQ_SLOT(slotRemoveToolTip())); connect(this, TQ_SIGNAL(onItem(TQIconViewItem *)), this, TQ_SLOT(slotShowToolTip(TQIconViewItem *))); } SQ_FileIconViewBase::~SQ_FileIconViewBase() { slotRemoveToolTip(); } void SQ_FileIconViewBase::slotResetToolTip() { SQ_Config::instance()->setGroup("Fileview"); toolTip->setOptions(true, SQ_Config::instance()->readBoolEntry("tooltips_preview", false), SQ_Config::instance()->readNumEntry("tooltips_lines", 6)); } // Show extended tooltip for item under mouse cursor void SQ_FileIconViewBase::slotShowToolTip(TQIconViewItem *item) { SQ_Config::instance()->setGroup("Fileview"); if(!SQ_Config::instance()->readBoolEntry("tooltips", false) || (!KSquirrel::app()->isActiveWindow() && SQ_Config::instance()->readBoolEntry("tooltips_inactive", true))) return; // remove previous tootip and stop timer slotRemoveToolTip(); KFileIconViewItem *fitem = dynamic_cast(item); if(!fitem) return; KFileItem *f = fitem->fileInfo(); if(f) toolTip->setItem(f, fitem->rect(), fitem->pixmap()); } bool SQ_FileIconViewBase::eventFilter(TQObject *o, TQEvent *e) { if(o == viewport() || o == this) { int type = e->type(); if(type == TQEvent::Leave || type == TQEvent::FocusOut || type == TQEvent::Hide) slotRemoveToolTip(); } return KFileIconView::eventFilter(o, e); } /* * Remove tootip. */ void SQ_FileIconViewBase::slotRemoveToolTip() { toolTip->setItem(0); } // Accept drag void SQ_FileIconViewBase::dragEnterEvent(TQDragEnterEvent *e) { e->accept(true); } /* * Handle double clicks. */ void SQ_FileIconViewBase::contentsMouseDoubleClickEvent(TQMouseEvent *e) { TQIconView::contentsMouseDoubleClickEvent(e); TQIconViewItem *item = findItem(e->pos()); // double click on item if(item) emit doubleClicked(item, e->globalPos()); // double click in viewport, lets invoke browser else emit invokeBrowser(); } void SQ_FileIconViewBase::updateView(const KFileItem *i) { KFileIconViewItem *item = viewItem(i); if(item) initItemMy(item, i, true); } KFileIconViewItem* SQ_FileIconViewBase::viewItem(const KFileItem *item) { return item ? reinterpret_cast((void *)item->extraData(this)) : 0; } void SQ_FileIconViewBase::initItemMy(KFileIconViewItem *item, const KFileItem *i, bool upd) { if(upd) item->setText(i->text(), true, true); // determine current sorting type TQDir::SortSpec spec = KFileView::sorting(); if(spec & TQDir::Time) item->setKey(sortingKey((unsigned long)i->time(TDEIO::UDS_MODIFICATION_TIME), i->isDir(), spec)); else if(spec & TQDir::Size) item->setKey(sortingKey(i->size(), i->isDir(), spec)); else item->setKey(sortingKey(i->text(), i->isDir(), spec)); } #include "sq_fileiconviewbase.moc"