┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dolphintabbar.cpp10
-rw-r--r--src/dolphintabbar.h1
-rw-r--r--src/dolphintabpage.cpp11
-rw-r--r--src/dolphintabpage.h7
-rw-r--r--src/dolphintabwidget.cpp19
-rw-r--r--src/dolphintabwidget.h2
6 files changed, 50 insertions, 0 deletions
diff --git a/src/dolphintabbar.cpp b/src/dolphintabbar.cpp
index f6af9932d..b942c4fd3 100644
--- a/src/dolphintabbar.cpp
+++ b/src/dolphintabbar.cpp
@@ -9,6 +9,7 @@
#include <KLocalizedString>
#include <QDragEnterEvent>
+#include <QInputDialog>
#include <QMenu>
#include <QMimeData>
#include <QTimer>
@@ -157,6 +158,8 @@ void DolphinTabBar::contextMenuEvent(QContextMenuEvent *event)
QAction *closeOtherTabsAction = menu.addAction(QIcon::fromTheme(QStringLiteral("tab-close-other")), i18nc("@action:inmenu", "Close Other Tabs"));
QAction *closeTabAction = menu.addAction(QIcon::fromTheme(QStringLiteral("tab-close")), i18nc("@action:inmenu", "Close Tab"));
+ QAction *renameTabAction = menu.addAction(QIcon::fromTheme(QStringLiteral("edit-rename")), i18nc("@action:inmenu", "Rename Tab"));
+
QAction *selectedAction = menu.exec(event->globalPos());
if (selectedAction == newTabAction) {
Q_EMIT openNewActivatedTab(index);
@@ -172,6 +175,13 @@ void DolphinTabBar::contextMenuEvent(QContextMenuEvent *event)
}
} else if (selectedAction == closeTabAction) {
Q_EMIT tabCloseRequested(index);
+ } else if (selectedAction == renameTabAction) {
+ bool renamed = false;
+ const QString tabNewName = QInputDialog::getText(this, i18n("Rename Tab"), i18n("New tab name:"), QLineEdit::Normal, tabText(index), &renamed);
+
+ if (renamed) {
+ Q_EMIT tabRenamed(index, tabNewName);
+ }
}
return;
diff --git a/src/dolphintabbar.h b/src/dolphintabbar.h
index 4a59199be..f176fb6d2 100644
--- a/src/dolphintabbar.h
+++ b/src/dolphintabbar.h
@@ -21,6 +21,7 @@ Q_SIGNALS:
void tabDragMoveEvent(int index, QDragMoveEvent *event);
void tabDropEvent(int index, QDropEvent *event);
void tabDetachRequested(int index);
+ void tabRenamed(int index, const QString &name);
protected:
void dragEnterEvent(QDragEnterEvent *event) override;
diff --git a/src/dolphintabpage.cpp b/src/dolphintabpage.cpp
index dbc1ff147..4a061e3ec 100644
--- a/src/dolphintabpage.cpp
+++ b/src/dolphintabpage.cpp
@@ -13,6 +13,7 @@
#include <QGridLayout>
#include <QStyle>
#include <QVariantAnimation>
+#include <quuid.h>
DolphinTabPage::DolphinTabPage(const QUrl &primaryUrl, const QUrl &secondaryUrl, QWidget *parent)
: QWidget(parent)
@@ -342,6 +343,16 @@ void DolphinTabPage::setActive(bool active)
activeViewContainer()->setActive(active);
}
+void DolphinTabPage::setTitle(const QString &name)
+{
+ m_title = QString(name);
+}
+
+QString DolphinTabPage::title()
+{
+ return m_title;
+}
+
void DolphinTabPage::slotAnimationFinished()
{
for (int i = 0; i < m_splitter->count(); ++i) {
diff --git a/src/dolphintabpage.h b/src/dolphintabpage.h
index 4a8bd365a..5dafcd5dc 100644
--- a/src/dolphintabpage.h
+++ b/src/dolphintabpage.h
@@ -13,7 +13,9 @@
#include <QPointer>
#include <QSplitter>
#include <QUrl>
+#include <QUuid>
#include <QWidget>
+#include <quuid.h>
class DolphinNavigatorsWidgetAction;
class DolphinViewContainer;
@@ -140,6 +142,10 @@ public:
void switchActiveView();
+ void setTitle(const QString &name);
+
+ QString title();
+
Q_SIGNALS:
void activeViewChanged(DolphinViewContainer *viewContainer);
void activeViewUrlChanged(const QUrl &url);
@@ -201,6 +207,7 @@ private:
bool m_primaryViewActive;
bool m_splitViewEnabled;
bool m_active;
+ QString m_title;
};
class DolphinTabPageSplitterHandle : public QSplitterHandle
diff --git a/src/dolphintabwidget.cpp b/src/dolphintabwidget.cpp
index 5ad2a368c..41b2a3eb9 100644
--- a/src/dolphintabwidget.cpp
+++ b/src/dolphintabwidget.cpp
@@ -38,6 +38,7 @@ DolphinTabWidget::DolphinTabWidget(DolphinNavigatorsWidgetAction *navigatorsWidg
connect(tabBar, &DolphinTabBar::tabDragMoveEvent, this, &DolphinTabWidget::tabDragMoveEvent);
connect(tabBar, &DolphinTabBar::tabDropEvent, this, &DolphinTabWidget::tabDropEvent);
connect(tabBar, &DolphinTabBar::tabDetachRequested, this, &DolphinTabWidget::detachTab);
+ connect(tabBar, &DolphinTabBar::tabRenamed, this, &DolphinTabWidget::renameTab);
setTabBar(tabBar);
setDocumentMode(true);
@@ -122,6 +123,13 @@ void DolphinTabWidget::refreshViews()
void DolphinTabWidget::updateTabName(int index)
{
Q_ASSERT(index >= 0);
+
+ if (!tabPageAt(index)->title().isEmpty()) {
+ QString name = tabPageAt(index)->title();
+ tabBar()->setTabText(index, name);
+ return;
+ }
+
tabBar()->setTabText(index, tabName(tabPageAt(index)));
}
@@ -472,6 +480,16 @@ void DolphinTabWidget::currentTabChanged(int index)
m_lastViewedTab = tabPage;
}
+void DolphinTabWidget::renameTab(int index, const QString &name)
+{
+ if (name.isEmpty()) {
+ updateTabName(index);
+ } else {
+ tabPageAt(index)->setTitle(name);
+ tabBar()->setTabText(index, name);
+ }
+}
+
void DolphinTabWidget::tabInserted(int index)
{
QTabWidget::tabInserted(index);
@@ -506,6 +524,7 @@ QString DolphinTabWidget::tabName(DolphinTabPage *tabPage) const
if (!tabPage) {
return QString();
}
+
// clang-format off
QString name;
if (tabPage->splitViewEnabled()) {
diff --git a/src/dolphintabwidget.h b/src/dolphintabwidget.h
index 52d3fd626..3d9ba3a51 100644
--- a/src/dolphintabwidget.h
+++ b/src/dolphintabwidget.h
@@ -229,6 +229,8 @@ private Q_SLOTS:
void currentTabChanged(int index);
+ void renameTab(int index, const QString &name);
+
protected:
void tabInserted(int index) override;
void tabRemoved(int index) override;