diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-17 23:39:35 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-17 23:39:35 +0000 |
commit | f48aef5ed7f2e333984766d9ceb02e01ecbd47a7 (patch) | |
tree | 6ed79de882f3051cf7999a9cee2b633d8daabeab /src/itemeffectsmanager.cpp | |
download | dolphin-f48aef5ed7f2e333984766d9ceb02e01ecbd47a7.tar.gz dolphin-f48aef5ed7f2e333984766d9ceb02e01ecbd47a7.zip |
Added old KDE3 version of dolphin
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/dolphin@1076309 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/itemeffectsmanager.cpp')
-rw-r--r-- | src/itemeffectsmanager.cpp | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/src/itemeffectsmanager.cpp b/src/itemeffectsmanager.cpp new file mode 100644 index 0000000..1d1d199 --- /dev/null +++ b/src/itemeffectsmanager.cpp @@ -0,0 +1,189 @@ +/*************************************************************************** + * Copyright (C) 2006 by Peter Penz * + * [email protected] * + * * + * 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. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "itemeffectsmanager.h" +#include <kiconeffect.h> +#include <kapplication.h> +#include <qobjectlist.h> +#include <kglobalsettings.h> +#include <qclipboard.h> +#include <kurldrag.h> +#include <klocale.h> + +#include "dolphin.h" +#include "dolphinstatusbar.h" + +ItemEffectsManager::ItemEffectsManager() +{ + m_pixmapCopy = new QPixmap(); +} + +ItemEffectsManager::~ItemEffectsManager() +{ + delete m_pixmapCopy; + m_pixmapCopy = 0; + + m_highlightedURL = 0; +} + +void ItemEffectsManager::zoomIn() +{ + Dolphin::mainWin().refreshViews(); +} + +void ItemEffectsManager::zoomOut() +{ + Dolphin::mainWin().refreshViews(); +} + +void ItemEffectsManager::activateItem(void* context) +{ + KFileItem* fileInfo = contextFileInfo(context); + const KURL itemURL(fileInfo->url()); + if (m_highlightedURL == itemURL) { + // the item is already highlighted + return; + } + + resetActivatedItem(); + + const QPixmap* itemPixmap = contextPixmap(context); + if (itemPixmap != 0) { + // remember the pixmap and item to be able to + // restore it to the old state later + *m_pixmapCopy = *itemPixmap; + m_highlightedURL = itemURL; + + // apply an icon effect to the item below the mouse pointer + KIconEffect iconEffect; + QPixmap pixmap = iconEffect.apply(*itemPixmap, + KIcon::Desktop, + KIcon::ActiveState); + setContextPixmap(context, pixmap); + } + + if (!Dolphin::mainWin().activeView()->hasSelection()) { + DolphinStatusBar* statusBar = Dolphin::mainWin().activeView()->statusBar(); + statusBar->setMessage(statusBarText(fileInfo), DolphinStatusBar::Default); + } +} + +void ItemEffectsManager::resetActivatedItem() +{ + if (m_highlightedURL.isEmpty()) { + return; + } + + for (void* context = firstContext(); context != 0; context = nextContext(context)) { + KURL itemURL(contextFileInfo(context)->url()); + if (itemURL == m_highlightedURL) { + // the highlighted item has been found and is restored to the default state + KIconEffect iconEffect; + QPixmap pixmap = iconEffect.apply(*m_pixmapCopy, + KIcon::Desktop, + KIcon::DefaultState); + + // TODO: KFileIconView does not emit any signal when the preview has been finished. + // Hence check the size to prevent that a preview is hidden by restoring a + // non-preview pixmap. + const QPixmap* highlightedPixmap = contextPixmap(context); + const bool restore = (pixmap.width() == highlightedPixmap->width()) && + (pixmap.height() == highlightedPixmap->height()); + if (restore) { + setContextPixmap(context, pixmap); + } + break; + } + } + + m_highlightedURL = 0; + + DolphinStatusBar* statusBar = Dolphin::mainWin().activeView()->statusBar(); + statusBar->clear(); +} + +void ItemEffectsManager::updateDisabledItems() +{ + if (!m_disabledItems.isEmpty()) { + // restore all disabled items with their original pixmap + for (void* context = firstContext(); context != 0; context = nextContext(context)) { + const KFileItem* fileInfo = contextFileInfo(context); + const KURL& fileURL = fileInfo->url(); + QValueListIterator<DisabledItem> it = m_disabledItems.begin(); + while (it != m_disabledItems.end()) { + if (fileURL == (*it).url) { + setContextPixmap(context, (*it).pixmap); + } + ++it; + } + } + m_disabledItems.clear(); + } + + if (!Dolphin::mainWin().clipboardContainsCutData()) { + return; + } + + QClipboard* clipboard = QApplication::clipboard(); + QMimeSource* data = clipboard->data(); + if (!KURLDrag::canDecode(data)) { + return; + } + + // The clipboard contains items, which have been cutted. Change the pixmaps of all those + // items to the disabled state. + KURL::List urls; + KURLDrag::decode(data, urls); + for (void* context = firstContext(); context != 0; context = nextContext(context)) { + const KFileItem* fileInfo = contextFileInfo(context); + const KURL& fileURL = fileInfo->url(); + for(KURL::List::ConstIterator it = urls.begin(); it != urls.end(); ++it) { + if (fileURL == (*it)) { + const QPixmap* itemPixmap = contextPixmap(context); + if (itemPixmap != 0) { + // remember old pixmap + DisabledItem disabledItem; + disabledItem.url = fileURL; + disabledItem.pixmap = *itemPixmap; + m_disabledItems.append(disabledItem); + + KIconEffect iconEffect; + QPixmap disabledPixmap = iconEffect.apply(*itemPixmap, + KIcon::Desktop, + KIcon::DisabledState); + setContextPixmap(context, disabledPixmap); + } + break; + } + } + } +} + +QString ItemEffectsManager::statusBarText(KFileItem* fileInfo) const +{ + if (fileInfo->isDir()) { + // KFileItem::getStatusBar() returns "MyDocuments/ Folder" as + // status bar text for a folder 'MyDocuments'. This is adjusted + // to "MyDocuments (Folder)" in Dolphin. + return i18n("%1 (Folder)").arg(fileInfo->name()); + } + + return fileInfo->getStatusBarInfo(); +} |