diff options
Diffstat (limited to 'src/views')
| -rw-r--r-- | src/views/dolphinitemlistview.cpp | 1 | ||||
| -rw-r--r-- | src/views/dolphinremoteencoding.cpp | 3 | ||||
| -rw-r--r-- | src/views/dolphinview.cpp | 81 | ||||
| -rw-r--r-- | src/views/dolphinview.h | 21 | ||||
| -rw-r--r-- | src/views/dolphinviewactionhandler.cpp | 2 | ||||
| -rw-r--r-- | src/views/tooltips/dolphinfilemetadatawidget.cpp | 2 | ||||
| -rw-r--r-- | src/views/versioncontrol/kversioncontrolplugin.h | 5 | ||||
| -rw-r--r-- | src/views/versioncontrol/versioncontrolobserver.cpp | 11 | ||||
| -rw-r--r-- | src/views/versioncontrol/versioncontrolobserver.h | 2 |
9 files changed, 102 insertions, 26 deletions
diff --git a/src/views/dolphinitemlistview.cpp b/src/views/dolphinitemlistview.cpp index 864d180c8..923589246 100644 --- a/src/views/dolphinitemlistview.cpp +++ b/src/views/dolphinitemlistview.cpp @@ -73,6 +73,7 @@ void DolphinItemListView::readSettings() beginTransaction(); setEnabledSelectionToggles(GeneralSettings::showSelectionToggle()); + setHighlightEntireRow(DetailsModeSettings::leadingPadding()); setSupportsItemExpanding(itemLayoutSupportsItemExpanding(itemLayout())); updateFont(); diff --git a/src/views/dolphinremoteencoding.cpp b/src/views/dolphinremoteencoding.cpp index 41b3b6890..c7c8b09d1 100644 --- a/src/views/dolphinremoteencoding.cpp +++ b/src/views/dolphinremoteencoding.cpp @@ -90,7 +90,7 @@ void DolphinRemoteEncoding::fillMenu() QMenu* menu = m_menu->menu(); menu->clear(); - + menu->addAction(i18n("Default"), this, SLOT(slotDefault()), 0)->setCheckable(true); for (int i = 0; i < m_encodingDescriptions.size();i++) { QAction* action = new QAction(m_encodingDescriptions.at(i), this); action->setCheckable(true); @@ -100,7 +100,6 @@ void DolphinRemoteEncoding::fillMenu() menu->addSeparator(); menu->addAction(i18n("Reload"), this, SLOT(slotReload()), 0); - menu->addAction(i18n("Default"), this, SLOT(slotDefault()), 0)->setCheckable(true); m_idDefault = m_encodingDescriptions.size() + 2; connect(menu, &QMenu::triggered, this, &DolphinRemoteEncoding::slotItemSelected); diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 9a063d857..0a9783fe1 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -8,6 +8,7 @@ #include "dolphinview.h" #include "dolphin_generalsettings.h" +#include "dolphin_detailsmodesettings.h" #include "dolphinitemlistview.h" #include "dolphinnewfilemenuobserver.h" #include "draganddrophelper.h" @@ -59,6 +60,7 @@ #include <QScrollBar> #include <QSize> #include <QTimer> +#include <QToolTip> #include <QVBoxLayout> DolphinView::DolphinView(const QUrl& url, QWidget* parent) : @@ -200,6 +202,8 @@ DolphinView::DolphinView(const QUrl& url, QWidget* parent) : this, &DolphinView::slotRoleEditingCanceled); connect(m_view->header(), &KItemListHeader::columnWidthChangeFinished, this, &DolphinView::slotHeaderColumnWidthChangeFinished); + connect(m_view->header(), &KItemListHeader::leadingPaddingChanged, + this, &DolphinView::slotLeadingPaddingWidthChanged); KItemListSelectionManager* selectionManager = controller->selectionManager(); connect(selectionManager, &KItemListSelectionManager::selectionChanged, @@ -918,6 +922,11 @@ bool DolphinView::eventFilter(QObject* watched, QEvent* event) if (watched == m_view) { m_dragging = false; } + break; + + case QEvent::ToolTip: + tryShowNameToolTip(event); + default: break; } @@ -974,12 +983,14 @@ void DolphinView::slotItemActivated(int index) } } -void DolphinView::slotItemsActivated(const KItemSet& indexes) +void DolphinView::slotItemsActivated(const KItemSet &indexes) { Q_ASSERT(indexes.count() >= 2); abortTwoClicksRenaming(); + const auto modifiers = QGuiApplication::keyboardModifiers(); + if (indexes.count() > 5) { QString question = i18np("Are you sure you want to open 1 item?", "Are you sure you want to open %1 items?", indexes.count()); const int answer = KMessageBox::warningYesNo(this, question); @@ -995,8 +1006,15 @@ void DolphinView::slotItemsActivated(const KItemSet& indexes) KFileItem item = m_model->fileItem(index); const QUrl& url = openItemAsFolderUrl(item); - if (!url.isEmpty()) { // Open folders in new tabs - Q_EMIT tabRequested(url); + if (!url.isEmpty()) { + // Open folders in new tabs or in new windows depending on the modifier + // The ctrl+shift behavior is ignored because we are handling multiple items + // keep in sync with KUrlNavigator::slotNavigatorButtonClicked + if (modifiers & Qt::ShiftModifier && !(modifiers & Qt::ControlModifier)) { + Q_EMIT windowRequested(url); + } else { + Q_EMIT tabRequested(url); + } } else { items.append(item); } @@ -1013,10 +1031,21 @@ void DolphinView::slotItemMiddleClicked(int index) { const KFileItem& item = m_model->fileItem(index); const QUrl& url = openItemAsFolderUrl(item); + const auto modifiers = QGuiApplication::keyboardModifiers(); if (!url.isEmpty()) { - Q_EMIT tabRequested(url); + // keep in sync with KUrlNavigator::slotNavigatorButtonClicked + if (modifiers & Qt::ShiftModifier) { + Q_EMIT activeTabRequested(url); + } else { + Q_EMIT tabRequested(url); + } } else if (isTabsForFilesEnabled()) { - Q_EMIT tabRequested(item.url()); + // keep in sync with KUrlNavigator::slotNavigatorButtonClicked + if (modifiers & Qt::ShiftModifier) { + Q_EMIT activeTabRequested(item.url()); + } else { + Q_EMIT tabRequested(item.url()); + } } } @@ -1091,6 +1120,10 @@ void DolphinView::slotHeaderContextMenuRequested(const QPointF& pos) QActionGroup* widthsGroup = new QActionGroup(menu); const bool autoColumnWidths = props.headerColumnWidths().isEmpty(); + QAction* toggleLeadingPaddingAction = menu->addAction(i18nc("@action:inmenu", "Leading Column Padding")); + toggleLeadingPaddingAction->setCheckable(true); + toggleLeadingPaddingAction->setChecked(view->header()->leadingPadding() > 0); + QAction* autoAdjustWidthsAction = menu->addAction(i18nc("@action:inmenu", "Automatic Column Widths")); autoAdjustWidthsAction->setCheckable(true); autoAdjustWidthsAction->setChecked(autoColumnWidths); @@ -1121,6 +1154,8 @@ void DolphinView::slotHeaderContextMenuRequested(const QPointF& pos) } props.setHeaderColumnWidths(columnWidths); header->setAutomaticColumnResizing(false); + } else if (action == toggleLeadingPaddingAction) { + header->setLeadingPadding(toggleLeadingPaddingAction->isChecked() ? 20 : 0); } else { // Show or hide the selected role const QByteArray selectedRole = action->data().toByteArray(); @@ -1173,6 +1208,13 @@ void DolphinView::slotHeaderColumnWidthChangeFinished(const QByteArray& role, qr props.setHeaderColumnWidths(columnWidths); } +void DolphinView::slotLeadingPaddingWidthChanged(qreal width) +{ + ViewProperties props(viewPropertiesUrl()); + DetailsModeSettings::setLeadingPadding(int(width)); + m_view->writeSettings(); +} + void DolphinView::slotItemHovered(int index) { const KFileItem item = m_model->fileItem(index); @@ -1617,13 +1659,15 @@ void DolphinView::updateViewState() void DolphinView::hideToolTip(const ToolTipManager::HideBehavior behavior) { -#ifdef HAVE_BALOO if (GeneralSettings::showToolTips()) { +#ifdef HAVE_BALOO m_toolTipManager->hideToolTip(behavior); - } #else Q_UNUSED(behavior) #endif + } else if (m_mode == DolphinView::IconsView) { + QToolTip::hideText(); + } } void DolphinView::slotTwoClicksRenamingTimerTimeout() @@ -1964,6 +2008,7 @@ void DolphinView::applyViewProperties(const ViewProperties& props) } else { header->setAutomaticColumnResizing(true); } + header->setLeadingPadding(DetailsModeSettings::leadingPadding()); } m_view->endTransaction(); @@ -2138,3 +2183,25 @@ void DolphinView::updatePlaceholderLabel() m_placeholderLabel->setVisible(true); } + +void DolphinView::tryShowNameToolTip(QEvent* event) +{ + if (!GeneralSettings::showToolTips() && m_mode == DolphinView::IconsView) { + QHelpEvent *hoverEvent = reinterpret_cast<QHelpEvent *>(event); + const std::optional<int> index = m_view->itemAt(hoverEvent->pos()); + + if (!index.has_value()) { + return; + } + + // Check whether the filename has been elided + const bool isElided = m_view->isElided(index.value()); + + if(isElided) { + const KFileItem item = m_model->fileItem(index.value()); + const QString text = item.text(); + const QPoint pos = mapToGlobal(hoverEvent->pos()); + QToolTip::showText(pos, text); + } + } +} diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index 75c9dd985..e93ca4fa0 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -425,13 +425,13 @@ Q_SIGNALS: /** * Is emitted when clicking on an item with the left mouse button. */ - void itemActivated(const KFileItem& item); + void itemActivated(const KFileItem &item); /** * Is emitted when multiple items have been activated by e. g. * context menu open with. */ - void itemsActivated(const KFileItemList& items); + void itemsActivated(const KFileItemList &items); /** * Is emitted if items have been added or deleted. @@ -444,6 +444,16 @@ Q_SIGNALS: void tabRequested(const QUrl& url); /** + * Is emitted if a new tab should be opened for the URL \a url and set as active. + */ + void activeTabRequested(const QUrl &url); + + /** + * Is emitted if a new window should be opened for the URL \a url. + */ + void windowRequested(const QUrl &url); + + /** * Is emitted if the view mode (IconsView, DetailsView, * PreviewsView) has been changed. */ @@ -458,7 +468,7 @@ Q_SIGNALS: /** Is emitted if the 'grouped sorting' property has been changed. */ void groupedSortingChanged(bool groupedSorting); - /** Is emmited in reaction to a requestStatusBarText() call. + /** Is emitted in reaction to a requestStatusBarText() call. * @see requestStatusBarText() */ void statusBarTextChanged(QString statusBarText); @@ -619,12 +629,13 @@ private Q_SLOTS: void activate(); void slotItemActivated(int index); - void slotItemsActivated(const KItemSet& indexes); + void slotItemsActivated(const KItemSet &indexes); void slotItemMiddleClicked(int index); void slotItemContextMenuRequested(int index, const QPointF& pos); void slotViewContextMenuRequested(const QPointF& pos); void slotHeaderContextMenuRequested(const QPointF& pos); void slotHeaderColumnWidthChangeFinished(const QByteArray& role, qreal current); + void slotLeadingPaddingWidthChanged(qreal width); void slotItemHovered(int index); void slotItemUnhovered(int index); void slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event); @@ -852,6 +863,8 @@ private: void updatePlaceholderLabel(); + void tryShowNameToolTip(QEvent* event); + private: void updatePalette(); void showLoadingPlaceholder(); diff --git a/src/views/dolphinviewactionhandler.cpp b/src/views/dolphinviewactionhandler.cpp index 47247ec35..2e524f8f2 100644 --- a/src/views/dolphinviewactionhandler.cpp +++ b/src/views/dolphinviewactionhandler.cpp @@ -213,7 +213,7 @@ void DolphinViewActionHandler::createActions() viewModeActions->addAction(compactAction); viewModeActions->addAction(detailsAction); viewModeActions->setToolBarMode(KSelectAction::MenuMode); - connect(viewModeActions, QOverload<QAction*>::of(&KSelectAction::triggered), this, &DolphinViewActionHandler::slotViewModeActionTriggered); + connect(viewModeActions, &KSelectAction::triggered, this, &DolphinViewActionHandler::slotViewModeActionTriggered); QAction* zoomInAction = KStandardAction::zoomIn(this, &DolphinViewActionHandler::zoomIn, diff --git a/src/views/tooltips/dolphinfilemetadatawidget.cpp b/src/views/tooltips/dolphinfilemetadatawidget.cpp index b147135bf..e914593fb 100644 --- a/src/views/tooltips/dolphinfilemetadatawidget.cpp +++ b/src/views/tooltips/dolphinfilemetadatawidget.cpp @@ -66,7 +66,7 @@ DolphinFileMetaDataWidget::DolphinFileMetaDataWidget(QWidget* parent) : QHBoxLayout* layout = new QHBoxLayout(this); layout->addWidget(m_preview); - layout->addSpacing(layout->margin()); + layout->addSpacing(layout->contentsMargins().left()); layout->addLayout(textLayout); } diff --git a/src/views/versioncontrol/kversioncontrolplugin.h b/src/views/versioncontrol/kversioncontrolplugin.h index c908be247..d3a39fbd6 100644 --- a/src/views/versioncontrol/kversioncontrolplugin.h +++ b/src/views/versioncontrol/kversioncontrolplugin.h @@ -45,7 +45,6 @@ class KFileItem; * - Add the following lines at the top of fileviewsvnplugin.cpp: * <code> * #include <KPluginFactory> - * #include <KPluginLoader> * K_PLUGIN_CLASS_WITH_JSON(FileViewSvnPlugin, "fileviewsvnplugin.json") * </code> * @@ -143,8 +142,8 @@ public: virtual QString fileName() const = 0; /** - * Returns the path of the local repository root for the versionned directory - * Returns an emtpy QString when directory is not part of a working copy + * Returns the path of the local repository root for the versioned directory + * Returns an empty QString when directory is not part of a working copy */ virtual QString localRepositoryRoot(const QString& directory) const; diff --git a/src/views/versioncontrol/versioncontrolobserver.cpp b/src/views/versioncontrol/versioncontrolobserver.cpp index 6766aa479..a773aef6b 100644 --- a/src/views/versioncontrol/versioncontrolobserver.cpp +++ b/src/views/versioncontrol/versioncontrolobserver.cpp @@ -14,7 +14,6 @@ #include <KLocalizedString> #include <KPluginFactory> -#include <KPluginLoader> #include <KPluginMetaData> #include <QTimer> @@ -136,7 +135,7 @@ void VersionControlObserver::slotItemsChanged(const KItemRangeList& itemRanges, { Q_UNUSED(itemRanges) - // Because "version" role is emitted by VCS plugin (ourselfs) we don't need to + // Because "version" role is emitted by VCS plugin (ourselves) we don't need to // analyze it and update directory item states information. So lets check if // there is only "version". if ( !(roles.count() == 1 && roles.contains("version")) ) { @@ -164,7 +163,7 @@ void VersionControlObserver::verifyDirectory() // by an immediate verification. m_dirVerificationTimer->setInterval(500); } else { - // View was versionned but should not be anymore + // View was versioned but should not be anymore updateItemStates(); } } else if ((m_plugin = searchPlugin(rootItem.url()))) { @@ -280,15 +279,13 @@ void VersionControlObserver::initPlugins() // all fileview version control plugins and remember them in 'plugins'. const QStringList enabledPlugins = VersionControlSettings::enabledPlugins(); - const QVector<KPluginMetaData> plugins = KPluginLoader::findPlugins(QStringLiteral("dolphin/vcs")); + const QVector<KPluginMetaData> plugins = KPluginMetaData::findPlugins(QStringLiteral("dolphin/vcs")); QSet<QString> loadedPlugins; for (const auto &p : plugins) { if (enabledPlugins.contains(p.name())) { - KPluginLoader loader(p.fileName()); - KPluginFactory *factory = loader.factory(); - KVersionControlPlugin *plugin = factory->create<KVersionControlPlugin>(); + auto plugin = KPluginFactory::instantiatePlugin<KVersionControlPlugin>(p).plugin; if (plugin) { m_plugins.append(plugin); loadedPlugins += p.name(); diff --git a/src/views/versioncontrol/versioncontrolobserver.h b/src/views/versioncontrol/versioncontrolobserver.h index 6e3977fb2..064a3088f 100644 --- a/src/views/versioncontrol/versioncontrolobserver.h +++ b/src/views/versioncontrol/versioncontrolobserver.h @@ -95,7 +95,7 @@ private Q_SLOTS: /** * Is invoked if the thread m_updateItemStatesThread has been finished - * and applys the item states. + * and applies the item states. */ void slotThreadFinished(); |
