┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/views
diff options
context:
space:
mode:
Diffstat (limited to 'src/views')
-rw-r--r--src/views/dolphinviewactionhandler.cpp51
-rw-r--r--src/views/tooltips/tooltipmanager.cpp20
-rw-r--r--src/views/tooltips/tooltipmanager.h2
3 files changed, 24 insertions, 49 deletions
diff --git a/src/views/dolphinviewactionhandler.cpp b/src/views/dolphinviewactionhandler.cpp
index 2e524f8f2..c02d7856b 100644
--- a/src/views/dolphinviewactionhandler.cpp
+++ b/src/views/dolphinviewactionhandler.cpp
@@ -8,6 +8,7 @@
#include "dolphinviewactionhandler.h"
#include "dolphindebug.h"
+#include "kitemviews/kfileitemlisttostring.h"
#include "kitemviews/kfileitemmodel.h"
#include "settings/viewpropertiesdialog.h"
#include "views/zoomlevelinfo.h"
@@ -763,49 +764,25 @@ void DolphinViewActionHandler::slotCopyPath()
void DolphinViewActionHandler::slotSelectionChanged(const KFileItemList& selection)
{
QString basicActionsMenuText;
- switch (selection.count()) {
- case 0:
+ if (selection.isEmpty()) {
basicActionsMenuText =
i18nc("@action:inmenu menu with actions like copy, paste, rename. The user's selection is empty when this text is shown.",
"Actions for Current View");
- break;
- case 1:
- basicActionsMenuText =
- i18nc("@action:inmenu menu with actions like copy, paste, rename. %1 is the name of the singular selected file/folder.",
- "Actions for \"%1\"", selection.first().name());
- break;
- case 2:
- basicActionsMenuText =
- i18nc("@action:inmenu menu with actions like copy, paste, rename. %1 and %2 are names of files/folders.",
- "Actions for \"%1\" and \"%2\"", selection.first().name(), selection.last().name());
- break;
- case 3:
- basicActionsMenuText =
- i18nc("@action:inmenu menu with actions like copy, paste, rename. %1, %2 and %3 are names of files/folders.",
- "Actions for \"%1\", \"%2\" and \"%3\"",
- selection.first().name(), selection.at(1).name(), selection.last().name());
- break;
- default:
- basicActionsMenuText = QString();
- break;
+ } else {
+ QFontMetrics fontMetrics = QMenu().fontMetrics();
+ // i18n: @action:inmenu menu with actions like copy, paste, rename.
+ // %1 is a textual representation of the currently selected files or folders. This can be the name of
+ // the file/files like "file1" or "file1, file2 and file3" or an aggregate like "8 Selected Folders".
+ // If this sort of word puzzle can not be correctly translated in your language, translate it as "NULL" (without the quotes)
+ // and a fallback will be used.
+ basicActionsMenuText = i18n("Actions for %1", fileItemListToString(selection, fontMetrics.averageCharWidth() * 40, fontMetrics, ItemsState::Selected));
}
- // At some point the added clarity from the text starts being less important than the menu width.
- if (basicActionsMenuText.isEmpty() || basicActionsMenuText.length() > 40) {
+ if (basicActionsMenuText == QStringLiteral("NULL")) {
const KFileItemListProperties properties(selection);
- if (properties.isFile()) {
- basicActionsMenuText =
- i18ncp("@action:inmenu menu with actions like copy, paste, rename. %1 is the amount of selected files/folders.",
- "Actions for One Selected File", "Actions for %1 Selected Files", selection.count());
- } else if (properties.isDirectory()) {
- basicActionsMenuText =
- i18ncp("@action:inmenu menu with actions like copy, paste, rename. %1 is the amount of selected files/folders.",
- "Actions for One Selected Folder", "Actions for %1 Selected Folders", selection.count());
- } else {
- basicActionsMenuText =
- i18ncp("@action:inmenu menu with actions like copy, paste, rename. %1 is the amount of selected files/folders.",
- "Actions for One Selected Item", "Actions for %1 Selected Items", selection.count());
- }
+ basicActionsMenuText =
+ i18ncp("@action:inmenu menu with actions like copy, paste, rename. %1 is the amount of selected files/folders.",
+ "Actions for One Selected Item", "Actions for %1 Selected Items", selection.count());
}
QAction *basicActionsMenu = m_actionCollection->action(QStringLiteral("basic_actions"));
diff --git a/src/views/tooltips/tooltipmanager.cpp b/src/views/tooltips/tooltipmanager.cpp
index 54af9c94c..e80d45e61 100644
--- a/src/views/tooltips/tooltipmanager.cpp
+++ b/src/views/tooltips/tooltipmanager.cpp
@@ -61,6 +61,13 @@ ToolTipManager::ToolTipManager(QWidget* parent) :
connect(m_contentRetrievalTimer, &QTimer::timeout, this, &ToolTipManager::startContentRetrieval);
Q_ASSERT(m_contentRetrievalTimer->interval() < m_showToolTipTimer->interval());
+
+ // Only start the retrieving of the content, when the mouse has been over this
+ // item for 200 milliseconds. This prevents a lot of useless preview jobs and
+ // meta data retrieval, when passing rapidly over a lot of items.
+ m_fileMetaDataWidget = new DolphinFileMetaDataWidget(parent);
+ connect(m_fileMetaDataWidget, &DolphinFileMetaDataWidget::metaDataRequestFinished, this, &ToolTipManager::slotMetaDataRequestFinished);
+ connect(m_fileMetaDataWidget, &DolphinFileMetaDataWidget::urlActivated, this, &ToolTipManager::urlActivated);
}
ToolTipManager::~ToolTipManager()
@@ -69,7 +76,7 @@ ToolTipManager::~ToolTipManager()
void ToolTipManager::showToolTip(const KFileItem& item, const QRectF& itemRect, QWindow *transientParent)
{
- hideToolTip();
+ hideToolTip(HideBehavior::Instantly);
m_itemRect = itemRect.toRect();
@@ -78,15 +85,6 @@ void ToolTipManager::showToolTip(const KFileItem& item, const QRectF& itemRect,
m_transientParent = transientParent;
- // Only start the retrieving of the content, when the mouse has been over this
- // item for 200 milliseconds. This prevents a lot of useless preview jobs and
- // meta data retrieval, when passing rapidly over a lot of items.
- m_fileMetaDataWidget.reset(new DolphinFileMetaDataWidget());
- connect(m_fileMetaDataWidget.data(), &DolphinFileMetaDataWidget::metaDataRequestFinished,
- this, &ToolTipManager::slotMetaDataRequestFinished);
- connect(m_fileMetaDataWidget.data(), &DolphinFileMetaDataWidget::urlActivated,
- this, &ToolTipManager::urlActivated);
-
m_contentRetrievalTimer->start();
m_showToolTipTimer->start();
m_toolTipRequested = true;
@@ -220,7 +218,7 @@ void ToolTipManager::showToolTip()
if (!m_tooltipWidget) {
m_tooltipWidget.reset(new KToolTipWidget());
}
- m_tooltipWidget->showBelow(m_itemRect, m_fileMetaDataWidget.data(), m_transientParent);
+ m_tooltipWidget->showBelow(m_itemRect, m_fileMetaDataWidget, m_transientParent);
m_toolTipRequested = false;
}
diff --git a/src/views/tooltips/tooltipmanager.h b/src/views/tooltips/tooltipmanager.h
index 3688e815c..066393344 100644
--- a/src/views/tooltips/tooltipmanager.h
+++ b/src/views/tooltips/tooltipmanager.h
@@ -77,7 +77,7 @@ private:
QWindow* m_transientParent;
QScopedPointer<KToolTipWidget> m_tooltipWidget;
- QScopedPointer<DolphinFileMetaDataWidget> m_fileMetaDataWidget;
+ DolphinFileMetaDataWidget *m_fileMetaDataWidget;
bool m_toolTipRequested;
bool m_metaDataRequested;