#include "dolphintabbar.h"
#include "dolphinviewcontainer.h"
+#include <KAcceleratorManager>
#include <KConfigGroup>
-#include <KShell>
-#include <kio/global.h>
#include <KIO/CommandLauncherJob>
-#include <KAcceleratorManager>
#include <KLocalizedString>
+#include <KShell>
+#include <kio/global.h>
#include <QApplication>
#include <QDropEvent>
-DolphinTabWidget::DolphinTabWidget(DolphinNavigatorsWidgetAction *navigatorsWidget, QWidget* parent) :
- QTabWidget(parent),
- m_lastViewedTab(nullptr),
- m_navigatorsWidget{navigatorsWidget}
+DolphinTabWidget::DolphinTabWidget(DolphinNavigatorsWidgetAction *navigatorsWidget, QWidget *parent)
+ : QTabWidget(parent)
+ , m_lastViewedTab(nullptr)
+ , m_navigatorsWidget{navigatorsWidget}
{
KAcceleratorManager::setNoAccel(this);
- connect(this, &DolphinTabWidget::tabCloseRequested,
- this, QOverload<int>::of(&DolphinTabWidget::closeTab));
- connect(this, &DolphinTabWidget::currentChanged,
- this, &DolphinTabWidget::currentTabChanged);
-
- DolphinTabBar* tabBar = new DolphinTabBar(this);
- connect(tabBar, &DolphinTabBar::openNewActivatedTab,
- this, QOverload<int>::of(&DolphinTabWidget::openNewActivatedTab));
- connect(tabBar, &DolphinTabBar::tabDropEvent,
- this, &DolphinTabWidget::tabDropEvent);
- connect(tabBar, &DolphinTabBar::tabDetachRequested,
- this, &DolphinTabWidget::detachTab);
+ connect(this, &DolphinTabWidget::tabCloseRequested, this, QOverload<int>::of(&DolphinTabWidget::closeTab));
+ connect(this, &DolphinTabWidget::currentChanged, this, &DolphinTabWidget::currentTabChanged);
+
+ DolphinTabBar *tabBar = new DolphinTabBar(this);
+ connect(tabBar, &DolphinTabBar::openNewActivatedTab, this, QOverload<int>::of(&DolphinTabWidget::openNewActivatedTab));
+ connect(tabBar, &DolphinTabBar::tabDropEvent, this, &DolphinTabWidget::tabDropEvent);
+ connect(tabBar, &DolphinTabBar::tabDetachRequested, this, &DolphinTabWidget::detachTab);
tabBar->hide();
setTabBar(tabBar);
setUsesScrollButtons(true);
}
-DolphinTabPage* DolphinTabWidget::currentTabPage() const
+DolphinTabPage *DolphinTabWidget::currentTabPage() const
{
return tabPageAt(currentIndex());
}
-DolphinTabPage* DolphinTabWidget::nextTabPage() const
+DolphinTabPage *DolphinTabWidget::nextTabPage() const
{
const int index = currentIndex() + 1;
return tabPageAt(index < count() ? index : 0);
}
-DolphinTabPage* DolphinTabWidget::prevTabPage() const
+DolphinTabPage *DolphinTabWidget::prevTabPage() const
{
const int index = currentIndex() - 1;
return tabPageAt(index >= 0 ? index : (count() - 1));
}
-DolphinTabPage* DolphinTabWidget::tabPageAt(const int index) const
+DolphinTabPage *DolphinTabWidget::tabPageAt(const int index) const
{
- return static_cast<DolphinTabPage*>(widget(index));
+ return static_cast<DolphinTabPage *>(widget(index));
}
-void DolphinTabWidget::saveProperties(KConfigGroup& group) const
+void DolphinTabWidget::saveProperties(KConfigGroup &group) const
{
const int tabCount = count();
group.writeEntry("Tab Count", tabCount);
group.writeEntry("Active Tab Index", currentIndex());
for (int i = 0; i < tabCount; ++i) {
- const DolphinTabPage* tabPage = tabPageAt(i);
+ const DolphinTabPage *tabPage = tabPageAt(i);
group.writeEntry("Tab Data " % QString::number(i), tabPage->saveState());
}
}
-void DolphinTabWidget::readProperties(const KConfigGroup& group)
+void DolphinTabWidget::readProperties(const KConfigGroup &group)
{
const int tabCount = group.readEntry("Tab Count", 0);
for (int i = 0; i < tabCount; ++i) {
oldNavigatorState = m_navigatorsWidget->secondaryUrlNavigator()->visualState();
}
- const DolphinViewContainer* oldActiveViewContainer = currentTabPage()->activeViewContainer();
+ const DolphinViewContainer *oldActiveViewContainer = currentTabPage()->activeViewContainer();
Q_ASSERT(oldActiveViewContainer);
openNewActivatedTab(oldActiveViewContainer->url());
- DolphinViewContainer* newActiveViewContainer = currentTabPage()->activeViewContainer();
+ DolphinViewContainer *newActiveViewContainer = currentTabPage()->activeViewContainer();
Q_ASSERT(newActiveViewContainer);
// The URL navigator of the new tab should have the same editable state
newActiveViewContainer->view()->setFocus();
}
-void DolphinTabWidget::openNewActivatedTab(const QUrl& primaryUrl, const QUrl& secondaryUrl)
+void DolphinTabWidget::openNewActivatedTab(const QUrl &primaryUrl, const QUrl &secondaryUrl)
{
openNewTab(primaryUrl, secondaryUrl);
if (GeneralSettings::openNewTabAfterLastTab()) {
}
}
-void DolphinTabWidget::openNewTab(const QUrl& primaryUrl, const QUrl& secondaryUrl, DolphinTabWidget::NewTabPosition position)
+void DolphinTabWidget::openNewTab(const QUrl &primaryUrl, const QUrl &secondaryUrl, DolphinTabWidget::NewTabPosition position)
{
- QWidget* focusWidget = QApplication::focusWidget();
+ QWidget *focusWidget = QApplication::focusWidget();
- DolphinTabPage* tabPage = new DolphinTabPage(primaryUrl, secondaryUrl, this);
+ DolphinTabPage *tabPage = new DolphinTabPage(primaryUrl, secondaryUrl, this);
tabPage->setActive(false);
- connect(tabPage, &DolphinTabPage::activeViewChanged,
- this, &DolphinTabWidget::activeViewChanged);
- connect(tabPage, &DolphinTabPage::activeViewUrlChanged,
- this, &DolphinTabWidget::tabUrlChanged);
+ connect(tabPage, &DolphinTabPage::activeViewChanged, this, &DolphinTabWidget::activeViewChanged);
+ connect(tabPage, &DolphinTabPage::activeViewUrlChanged, this, &DolphinTabWidget::tabUrlChanged);
connect(tabPage->activeViewContainer(), &DolphinViewContainer::captionChanged, this, [this, tabPage]() {
const int tabIndex = indexOf(tabPage);
Q_ASSERT(tabIndex >= 0);
}
}
-void DolphinTabWidget::openDirectories(const QList<QUrl>& dirs, bool splitView)
+void DolphinTabWidget::openDirectories(const QList<QUrl> &dirs, bool splitView)
{
Q_ASSERT(dirs.size() > 0);
QList<QUrl>::const_iterator it = dirs.constBegin();
while (it != dirs.constEnd()) {
- const QUrl& primaryUrl = *(it++);
+ const QUrl &primaryUrl = *(it++);
const std::optional<ViewIndex> viewIndexAtDirectory = viewOpenAtDirectory(primaryUrl);
// When the user asks for a URL that's already open,
somethingWasAlreadyOpen = true;
activateViewContainerAt(viewIndexAtDirectory.value());
} else if (splitView && (it != dirs.constEnd())) {
- const QUrl& secondaryUrl = *(it++);
+ const QUrl &secondaryUrl = *(it++);
if (somethingWasAlreadyOpen) {
openNewTab(primaryUrl, secondaryUrl);
} else {
}
}
-void DolphinTabWidget::openFiles(const QList<QUrl>& files, bool splitView)
+void DolphinTabWidget::openFiles(const QList<QUrl> &files, bool splitView)
{
Q_ASSERT(files.size() > 0);
// Get all distinct directories from 'files'.
QList<QUrl> dirsThatNeedToBeOpened;
QList<QUrl> dirsThatWereAlreadyOpen;
- for (const QUrl& file : files) {
+ for (const QUrl &file : files) {
const QUrl dir(file.adjusted(QUrl::RemoveFilename | QUrl::StripTrailingSlash));
if (dirsThatNeedToBeOpened.contains(dir) || dirsThatWereAlreadyOpen.contains(dir)) {
continue;
// tabs, there is no need to split 'files' accordingly, as
// the DolphinView will just ignore invalid selections.
for (int i = 0; i < tabCount; ++i) {
- DolphinTabPage* tabPage = tabPageAt(i);
+ DolphinTabPage *tabPage = tabPageAt(i);
tabPage->markUrlsAsSelected(files);
tabPage->markUrlAsCurrent(files.first());
if (i < oldTabCount) {
return;
}
- DolphinTabPage* tabPage = tabPageAt(index);
+ DolphinTabPage *tabPage = tabPageAt(index);
Q_EMIT rememberClosedTab(tabPage->activeViewContainer()->url(), tabPage->saveState());
removeTab(index);
setCurrentIndex(index >= 0 ? index : (count() - 1));
}
-void DolphinTabWidget::restoreClosedTab(const QByteArray& state)
+void DolphinTabWidget::restoreClosedTab(const QByteArray &state)
{
openNewActivatedTab();
currentTabPage()->restoreState(state);
void DolphinTabWidget::copyToInactiveSplitView()
{
- const DolphinTabPage* tabPage = tabPageAt(currentIndex());
- DolphinViewContainer* activeViewContainer = currentTabPage()->activeViewContainer();
+ const DolphinTabPage *tabPage = tabPageAt(currentIndex());
+ DolphinViewContainer *activeViewContainer = currentTabPage()->activeViewContainer();
if (!tabPage->splitViewEnabled() || activeViewContainer->view()->selectedItems().isEmpty()) {
return;
}
void DolphinTabWidget::moveToInactiveSplitView()
{
- const DolphinTabPage* tabPage = tabPageAt(currentIndex());
- DolphinViewContainer* activeViewContainer = currentTabPage()->activeViewContainer();
+ const DolphinTabPage *tabPage = tabPageAt(currentIndex());
+ DolphinViewContainer *activeViewContainer = currentTabPage()->activeViewContainer();
if (!tabPage->splitViewEnabled() || activeViewContainer->view()->selectedItems().isEmpty()) {
return;
}
QStringList args;
- const DolphinTabPage* tabPage = tabPageAt(index);
+ const DolphinTabPage *tabPage = tabPageAt(index);
args << tabPage->primaryViewContainer()->url().url();
if (tabPage->splitViewEnabled()) {
args << tabPage->secondaryViewContainer()->url().url();
void DolphinTabWidget::openNewActivatedTab(int index)
{
Q_ASSERT(index >= 0);
- const DolphinTabPage* tabPage = tabPageAt(index);
+ const DolphinTabPage *tabPage = tabPageAt(index);
openNewActivatedTab(tabPage->activeViewContainer()->url());
}
-void DolphinTabWidget::tabDropEvent(int index, QDropEvent* event)
+void DolphinTabWidget::tabDropEvent(int index, QDropEvent *event)
{
if (index >= 0) {
- DolphinView* view = tabPageAt(index)->activeViewContainer()->view();
+ DolphinView *view = tabPageAt(index)->activeViewContainer()->view();
view->dropUrls(view->url(), event, view);
} else {
const auto urls = event->mimeData()->urls();
}
}
-void DolphinTabWidget::tabUrlChanged(const QUrl& url)
+void DolphinTabWidget::tabUrlChanged(const QUrl &url)
{
- const int index = indexOf(qobject_cast<QWidget*>(sender()));
+ const int index = indexOf(qobject_cast<QWidget *>(sender()));
if (index >= 0) {
tabBar()->setTabText(index, tabName(tabPageAt(index)));
tabBar()->setTabToolTip(index, url.toDisplayString(QUrl::PreferLocalFile));
if (tabPage->splitViewEnabled() && !m_navigatorsWidget->secondaryUrlNavigator()) {
m_navigatorsWidget->createSecondaryUrlNavigator();
}
- DolphinViewContainer* viewContainer = tabPage->activeViewContainer();
+ DolphinViewContainer *viewContainer = tabPage->activeViewContainer();
Q_EMIT activeViewChanged(viewContainer);
Q_EMIT currentUrlChanged(viewContainer->url());
tabPage->setActive(true);
Q_EMIT tabCountChanged(count());
}
-QString DolphinTabWidget::tabName(DolphinTabPage* tabPage) const
+QString DolphinTabWidget::tabName(DolphinTabPage *tabPage) const
{
if (!tabPage) {
return QString();
}
-
+ // clang-format off
QString name;
if (tabPage->splitViewEnabled()) {
if (tabPage->primaryViewActive()) {
} else {
name = tabPage->activeViewContainer()->caption();
}
+ // clang-format on
// Make sure that a '&' inside the directory name is displayed correctly
// and not misinterpreted as a keyboard shortcut in QTabBar::setTabText()
return viewContainer;
}
-const std::optional<const DolphinTabWidget::ViewIndex> DolphinTabWidget::viewOpenAtDirectory(const QUrl& directory) const
+const std::optional<const DolphinTabWidget::ViewIndex> DolphinTabWidget::viewOpenAtDirectory(const QUrl &directory) const
{
int i = currentIndex();
if (i < 0) {
}
i = (i + 1) % count();
- }
- while (i != currentIndex());
+ } while (i != currentIndex());
return std::nullopt;
}
-const std::optional<const DolphinTabWidget::ViewIndex> DolphinTabWidget::viewShowingItem(const QUrl& item) const
+const std::optional<const DolphinTabWidget::ViewIndex> DolphinTabWidget::viewShowingItem(const QUrl &item) const
{
// The item might not be loaded yet even though it exists. So instead
// we check if the folder containing the item is showing its contents.
}
i = (i + 1) % count();
- }
- while (i != currentIndex());
+ } while (i != currentIndex());
return std::nullopt;
}