diff options
| author | Peter Penz <[email protected]> | 2010-03-30 20:19:32 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2010-03-30 20:19:32 +0000 |
| commit | 47d31139224f9bfded4626803626a58afe3eb748 (patch) | |
| tree | d07122b133b9865bb982177706376478651d1ea7 /src/dolphincontroller.cpp | |
| parent | 25ffe18e65543cacd07be2628a60f10316375dd3 (diff) | |
Split the class DolphinController into the two classes DolphinViewController and ViewModeController.
The ViewModeController offers a defined interface to control view mode implementations like icons view, details view and column view. The DolphinViewController allows those view mode implementations to control the parent DolphinView in a limited way.
svn path=/trunk/KDE/kdebase/apps/; revision=1109228
Diffstat (limited to 'src/dolphincontroller.cpp')
| -rw-r--r-- | src/dolphincontroller.cpp | 275 |
1 files changed, 0 insertions, 275 deletions
diff --git a/src/dolphincontroller.cpp b/src/dolphincontroller.cpp deleted file mode 100644 index b61c126b5..000000000 --- a/src/dolphincontroller.cpp +++ /dev/null @@ -1,275 +0,0 @@ -/*************************************************************************** - * 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 "dolphincontroller.h" -#include "zoomlevelinfo.h" - -#include <kdirmodel.h> -#include <QAbstractProxyModel> -#include <QApplication> -#include <QClipboard> -#include <QDir> - -Qt::MouseButtons DolphinController::m_mouseButtons = Qt::NoButton; - -DolphinController::DolphinController(DolphinView* dolphinView) : - QObject(dolphinView), - m_zoomLevel(0), - m_nameFilter(), - m_url(), - m_dolphinView(dolphinView), - m_itemView(0), - m_versionControlActions() -{ -} - -DolphinController::~DolphinController() -{ -} - -void DolphinController::setUrl(const KUrl& url) -{ - if (m_url != url) { - m_url = url; - emit cancelPreviews(); - emit urlChanged(url); - } -} - -void DolphinController::redirectToUrl(const KUrl& url) -{ - m_url = url; -} - -void DolphinController::setItemView(QAbstractItemView* view) -{ - if (m_itemView != 0) { - disconnect(m_itemView, SIGNAL(pressed(const QModelIndex&)), - this, SLOT(updateMouseButtonState())); - } - - m_itemView = view; - - if (m_itemView != 0) { - m_zoomLevel = ZoomLevelInfo::zoomLevelForIconSize(m_itemView->iconSize()); - - // TODO: this is a workaround until Qt-issue 176832 has been fixed - connect(m_itemView, SIGNAL(pressed(const QModelIndex&)), - this, SLOT(updateMouseButtonState())); - } -} - -void DolphinController::triggerContextMenuRequest(const QPoint& pos, - const QList<QAction*>& customActions) -{ - emit activated(); - emit requestContextMenu(pos, customActions); -} - -void DolphinController::requestActivation() -{ - emit activated(); -} - -void DolphinController::indicateDroppedUrls(const KFileItem& destItem, - const KUrl& destPath, - QDropEvent* event) -{ - emit urlsDropped(destItem, destPath, event); -} - - -void DolphinController::indicateSortingChange(DolphinView::Sorting sorting) -{ - emit sortingChanged(sorting); -} - -void DolphinController::indicateSortOrderChange(Qt::SortOrder order) -{ - emit sortOrderChanged(order); -} - -void DolphinController::indicateSortFoldersFirstChange(bool foldersFirst) -{ - emit sortFoldersFirstChanged(foldersFirst); -} - -void DolphinController::indicateAdditionalInfoChange(const KFileItemDelegate::InformationList& info) -{ - emit additionalInfoChanged(info); -} - -void DolphinController::indicateActivationChange(bool active) -{ - emit activationChanged(active); -} - -void DolphinController::setNameFilter(const QString& nameFilter) -{ - if (nameFilter != m_nameFilter) { - m_nameFilter = nameFilter; - emit nameFilterChanged(nameFilter); - } -} - -QString DolphinController::nameFilter() const -{ - return m_nameFilter; -} - -void DolphinController::setZoomLevel(int level) -{ - Q_ASSERT(level >= ZoomLevelInfo::minimumLevel()); - Q_ASSERT(level <= ZoomLevelInfo::maximumLevel()); - if (level != m_zoomLevel) { - m_zoomLevel = level; - emit zoomLevelChanged(m_zoomLevel); - } -} - -void DolphinController::setVersionControlActions(QList<QAction*> actions) -{ - m_versionControlActions = actions; -} - -QList<QAction*> DolphinController::versionControlActions(const KFileItemList& items) -{ - emit requestVersionControlActions(items); - // All view implementations are connected with the signal requestVersionControlActions() - // (see ViewExtensionFactory) and will invoke DolphinController::setVersionControlActions(), - // so that the context dependent actions can be returned. - return m_versionControlActions; -} - -void DolphinController::handleKeyPressEvent(QKeyEvent* event) -{ - Q_ASSERT(m_itemView != 0); - - const QItemSelectionModel* selModel = m_itemView->selectionModel(); - const QModelIndex currentIndex = selModel->currentIndex(); - const bool trigger = currentIndex.isValid() - && ((event->key() == Qt::Key_Return) || (event->key() == Qt::Key_Enter)) - && !selModel->selectedIndexes().isEmpty(); - if (!trigger) { - return; - } - - // Emit the signal itemTriggered() for all selected files. - // Several selected directories are opened in separate tabs, - // one selected directory will get opened in the view. - QModelIndexList dirQueue; - const QModelIndexList indexList = selModel->selectedIndexes(); - foreach (const QModelIndex& index, indexList) { - if (itemForIndex(index).isDir()) { - dirQueue << index; - } else { - emit itemTriggered(itemForIndex(index)); - } - } - - if (dirQueue.length() == 1) { - // open directory in the view - emit itemTriggered(itemForIndex(dirQueue[0])); - } else { - // open directories in separate tabs - foreach(const QModelIndex& dir, dirQueue) { - emit tabRequested(itemForIndex(dir).url()); - } - } -} - -void DolphinController::replaceUrlByClipboard() -{ - const QClipboard* clipboard = QApplication::clipboard(); - QString text; - if (clipboard->mimeData(QClipboard::Selection)->hasText()) { - text = clipboard->mimeData(QClipboard::Selection)->text(); - } else if (clipboard->mimeData(QClipboard::Clipboard)->hasText()) { - text = clipboard->mimeData(QClipboard::Clipboard)->text(); - } - if (!text.isEmpty() && QDir::isAbsolutePath(text)) { - m_dolphinView->setUrl(KUrl(text)); - } -} - -void DolphinController::emitHideToolTip() -{ - emit hideToolTip(); -} - -void DolphinController::emitItemTriggered(const KFileItem& item) -{ - emit itemTriggered(item); -} - -KFileItem DolphinController::itemForIndex(const QModelIndex& index) const -{ - Q_ASSERT(m_itemView != 0); - - QAbstractProxyModel* proxyModel = static_cast<QAbstractProxyModel*>(m_itemView->model()); - KDirModel* dirModel = static_cast<KDirModel*>(proxyModel->sourceModel()); - const QModelIndex dirIndex = proxyModel->mapToSource(index); - return dirModel->itemForIndex(dirIndex); -} - -void DolphinController::triggerItem(const QModelIndex& index) -{ - if (m_mouseButtons & Qt::LeftButton) { - const KFileItem item = itemForIndex(index); - if (index.isValid() && (index.column() == KDirModel::Name)) { - emit itemTriggered(item); - } else { - m_itemView->clearSelection(); - emit itemEntered(KFileItem()); - } - } -} - -void DolphinController::requestTab(const QModelIndex& index) -{ - if (m_mouseButtons & Qt::MidButton) { - const KFileItem item = itemForIndex(index); - const bool validRequest = index.isValid() && - (index.column() == KDirModel::Name) && - (item.isDir() || m_dolphinView->isTabsForFilesEnabled()); - if (validRequest) { - emit tabRequested(item.url()); - } - } -} - -void DolphinController::emitItemEntered(const QModelIndex& index) -{ - KFileItem item = itemForIndex(index); - if (!item.isNull()) { - emit itemEntered(item); - } -} - -void DolphinController::emitViewportEntered() -{ - emit viewportEntered(); -} - -void DolphinController::updateMouseButtonState() -{ - m_mouseButtons = QApplication::mouseButtons(); -} - -#include "dolphincontroller.moc" |
