X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/add0f6db79cd016c1aa89bc8e9942b08f3e41443..0772ebc3aaa1ea4717aedcdd7dacc95dedf8a307:/src/dolphinview.cpp diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index 6fad094f7..ae120777a 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -57,12 +57,12 @@ #include "dolphindetailsview.h" #include "dolphin_detailsmodesettings.h" #include "dolphiniconsview.h" -#include "dolphinsettings.h" +#include "settings/dolphinsettings.h" #include "dolphin_generalsettings.h" #include "draganddrophelper.h" #include "folderexpander.h" #include "renamedialog.h" -#include "tooltipmanager.h" +#include "tooltips/tooltipmanager.h" #include "viewproperties.h" #include "zoomlevelinfo.h" @@ -87,6 +87,7 @@ DolphinView::DolphinView(QWidget* parent, m_storedCategorizedSorting(false), m_tabsForFiles(false), m_isContextMenuOpen(false), + m_ignoreViewProperties(false), m_mode(DolphinView::IconsView), m_topLayout(0), m_controller(0), @@ -233,7 +234,7 @@ void DolphinView::setMode(Mode mode) } emit modeChanged(); - + updateZoomLevel(oldZoomLevel); if (m_showPreview) { loadDirectory(viewPropsUrl); @@ -389,7 +390,7 @@ void DolphinView::setZoomLevel(int level) } else if (level > ZoomLevelInfo::maximumLevel()) { level = ZoomLevelInfo::maximumLevel(); } - + if (level != zoomLevel()) { m_controller->setZoomLevel(level); m_previewGenerator->updatePreviews(); @@ -455,6 +456,8 @@ void DolphinView::reload() void DolphinView::refresh() { + m_ignoreViewProperties = false; + const bool oldActivationState = m_active; const int oldZoomLevel = m_controller->zoomLevel(); m_active = true; @@ -522,7 +525,7 @@ QString DolphinView::statusBarText() const int folderCount = 0; int fileCount = 0; KIO::filesize_t totalFileSize = 0; - + if (hasSelection()) { // give a summary of the status of the selected files const KFileItemList list = selectedItems(); @@ -544,13 +547,13 @@ QString DolphinView::statusBarText() const } ++it; } - + if (folderCount + fileCount == 1) { // if only one item is selected, show the filename const QString name = list.first().name(); text = (folderCount == 1) ? i18nc("@info:status", "%1 selected", name) : i18nc("@info:status", "%1 selected (%2)", - name, KIO::convertSize(totalFileSize)); + name, KIO::convertSize(totalFileSize)); } else { // at least 2 items are selected const QString foldersText = i18ncp("@info:status", "1 Folder selected", "%1 Folders selected", folderCount); @@ -610,7 +613,7 @@ void DolphinView::renameSelectedItems() if (itemCount < 1) { return; } - + if (itemCount > 1) { // More than one item has been selected for renaming. Open // a rename dialog and rename all items afterwards. @@ -626,7 +629,7 @@ void DolphinView::renameSelectedItems() // TODO: check how this can be integrated into KIO::FileUndoManager/KonqOperations // as one operation instead of n rename operations like it is done now... Q_ASSERT(newName.contains('#')); - + // currently the items are sorted by the selection order, resort // them by the file name qSort(items.begin(), items.end(), lessThan); @@ -650,7 +653,7 @@ void DolphinView::renameSelectedItems() } } else if (DolphinSettings::instance().generalSettings()->renameInline()) { Q_ASSERT(itemCount == 1); - + if (isColumnViewActive()) { m_columnView->editItem(items.first()); } else { @@ -660,7 +663,7 @@ void DolphinView::renameSelectedItems() } } else { Q_ASSERT(itemCount == 1); - + RenameDialog dialog(this, items); if (dialog.exec() == QDialog::Rejected) { return; @@ -702,18 +705,13 @@ void DolphinView::deleteSelectedItems() void DolphinView::cutSelectedItems() { QMimeData* mimeData = selectionMimeData(); - const KUrl::List kdeUrls = simplifiedSelectedUrls(); - const KUrl::List mostLocalUrls; - KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, true); + KonqMimeData::addIsCutSelection(mimeData, true); QApplication::clipboard()->setMimeData(mimeData); } void DolphinView::copySelectedItems() { QMimeData* mimeData = selectionMimeData(); - const KUrl::List kdeUrls = selectedUrls(); - const KUrl::List mostLocalUrls; - KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, false); QApplication::clipboard()->setMimeData(mimeData); } @@ -742,10 +740,10 @@ void DolphinView::setShowPreview(bool show) m_showPreview = show; m_previewGenerator->setPreviewShown(show); - + const int oldZoomLevel = m_controller->zoomLevel(); emit showPreviewChanged(); - + // Enabling or disabling the preview might change the icon size of the view. // As the view does not emit a signal when the icon size has been changed, // the used zoom level of the controller must be adjusted manually: @@ -847,7 +845,7 @@ bool DolphinView::eventFilter(QObject* watched, QEvent* event) m_controller->requestActivation(); } break; - + case QEvent::MouseButtonPress: if ((watched == itemView()->viewport()) && (m_expandedViews.count() > 0)) { // Listening to a mousebutton press event to delete expanded views is a @@ -858,13 +856,19 @@ bool DolphinView::eventFilter(QObject* watched, QEvent* event) deleteExpandedViews(); } break; - + case QEvent::DragEnter: if (watched == itemView()->viewport()) { setActive(true); } break; - + + case QEvent::KeyPress: + if ((watched == itemView()) && (m_toolTipManager != 0)) { + m_toolTipManager->hideTip(); + } + break; + default: break; } @@ -1052,6 +1056,11 @@ bool DolphinView::isTabsForFilesEnabled() const return m_tabsForFiles; } +bool DolphinView::itemsExpandable() const +{ + return (m_detailsView != 0) && m_detailsView->itemsExpandable(); +} + void DolphinView::emitContentsMoved() { // only emit the contents moved signal if: @@ -1153,6 +1162,10 @@ KUrl DolphinView::viewPropertiesUrl() const void DolphinView::applyViewProperties(const KUrl& url) { + if (m_ignoreViewProperties) { + return; + } + if (isColumnViewActive() && rootUrl().isParentOf(url)) { // The column view is active, hence don't apply the view properties // of sub directories (represented by columns) to the view. The @@ -1165,11 +1178,11 @@ void DolphinView::applyViewProperties(const KUrl& url) const Mode mode = props.viewMode(); if (m_mode != mode) { const int oldZoomLevel = m_controller->zoomLevel(); - + m_mode = mode; createView(); emit modeChanged(); - + updateZoomLevel(oldZoomLevel); } if (itemView() == 0) { @@ -1213,15 +1226,22 @@ void DolphinView::applyViewProperties(const KUrl& url) if (showPreview != m_showPreview) { m_showPreview = showPreview; m_previewGenerator->setPreviewShown(showPreview); - + const int oldZoomLevel = m_controller->zoomLevel(); emit showPreviewChanged(); - + // Enabling or disabling the preview might change the icon size of the view. // As the view does not emit a signal when the icon size has been changed, // the used zoom level of the controller must be adjusted manually: updateZoomLevel(oldZoomLevel); } + + if (DolphinSettings::instance().generalSettings()->globalViewProps()) { + // During the lifetime of a DolphinView instance the global view properties + // should not be changed. This allows e. g. to split a view and use different + // view properties for each view. + m_ignoreViewProperties = true; + } } void DolphinView::createView() @@ -1253,6 +1273,7 @@ void DolphinView::createView() Q_ASSERT(view != 0); view->installEventFilter(this); view->viewport()->installEventFilter(this); + setFocusProxy(view); if (m_mode != ColumnView) { // Give the view the ability to auto-expand its directories on hovering @@ -1315,15 +1336,16 @@ void DolphinView::deleteView() // before deleting the view: Otherwise when having a split // view the other view will get the focus and will request // an activation (see DolphinView::eventFilter()). + setFocusProxy(0); setFocus(); m_topLayout->removeWidget(view); view->close(); - + disconnect(view); m_controller->disconnect(view); view->disconnect(); - + bool deleteView = true; foreach (const QAbstractItemView* expandedView, m_expandedViews) { if (view == expandedView) { @@ -1337,7 +1359,7 @@ void DolphinView::deleteView() view->deleteLater(); } view = 0; - + m_iconsView = 0; m_detailsView = 0; m_columnView = 0; @@ -1403,7 +1425,7 @@ KUrl::List DolphinView::simplifiedSelectedUrls() const { KUrl::List list = selectedUrls(); if (itemsExpandable() ) { - list = KonqOperations::simplifiedUrlList(list); + list = KDirModel::simplifiedUrlList(list); } return list; } @@ -1419,11 +1441,6 @@ void DolphinView::deleteExpandedViews() m_expandedViews.clear(); } -bool DolphinView::itemsExpandable() const -{ - return (m_detailsView != 0) && m_detailsView->itemsExpandable(); -} - QMimeData* DolphinView::selectionMimeData() const { if (isColumnViewActive()) {