#include "dolphintabpage.h"
#include "dolphinviewcontainer.h"
-#include <QApplication>
#include <KConfigGroup>
+#include <KRun>
#include <KShell>
#include <kio/global.h>
-#include <KRun>
+
+#include <QApplication>
+#include <QDropEvent>
DolphinTabWidget::DolphinTabWidget(QWidget* parent) :
QTabWidget(parent),
- m_placesSelectorVisible(true)
+ m_placesSelectorVisible(true),
+ m_lastViewedTab(0)
{
- connect(this, SIGNAL(tabCloseRequested(int)),
- this, SLOT(closeTab(int)));
- connect(this, SIGNAL(currentChanged(int)),
- this, SLOT(currentTabChanged(int)));
+ connect(this, &DolphinTabWidget::tabCloseRequested,
+ this, static_cast<void (DolphinTabWidget::*)(int)>(&DolphinTabWidget::closeTab));
+ connect(this, &DolphinTabWidget::currentChanged,
+ this, &DolphinTabWidget::currentTabChanged);
DolphinTabBar* tabBar = new DolphinTabBar(this);
- connect(tabBar, SIGNAL(openNewActivatedTab(int)),
- this, SLOT(openNewActivatedTab(int)));
- connect(tabBar, SIGNAL(tabDropEvent(int,QDropEvent*)),
- this, SLOT(tabDropEvent(int,QDropEvent*)));
- connect(tabBar, SIGNAL(tabDetachRequested(int)),
- this, SLOT(detachTab(int)));
+ connect(tabBar, &DolphinTabBar::openNewActivatedTab,
+ this, static_cast<void (DolphinTabWidget::*)(int)>(&DolphinTabWidget::openNewActivatedTab));
+ connect(tabBar, &DolphinTabBar::tabDropEvent,
+ this, &DolphinTabWidget::tabDropEvent);
+ connect(tabBar, &DolphinTabBar::tabDetachRequested,
+ this, &DolphinTabWidget::detachTab);
tabBar->hide();
setTabBar(tabBar);
return tabPageAt(currentIndex());
}
+DolphinTabPage* DolphinTabWidget::nextTabPage() const
+{
+ const int index = currentIndex() + 1;
+ return tabPageAt(index < count() ? index : 0);
+}
+
+DolphinTabPage* DolphinTabWidget::prevTabPage() const
+{
+ const int index = currentIndex() - 1;
+ return tabPageAt(index >= 0 ? index : (count() - 1));
+}
+
DolphinTabPage* DolphinTabWidget::tabPageAt(const int index) const
{
return static_cast<DolphinTabPage*>(widget(index));
DolphinTabPage* tabPage = new DolphinTabPage(primaryUrl, secondaryUrl, this);
tabPage->setPlacesSelectorVisible(m_placesSelectorVisible);
- connect(tabPage, SIGNAL(activeViewChanged(DolphinViewContainer*)),
- this, SIGNAL(activeViewChanged(DolphinViewContainer*)));
- connect(tabPage, SIGNAL(activeViewUrlChanged(QUrl)),
- this, SLOT(tabUrlChanged(QUrl)));
+ connect(tabPage, &DolphinTabPage::activeViewChanged,
+ this, &DolphinTabWidget::activeViewChanged);
+ connect(tabPage, &DolphinTabPage::activeViewUrlChanged,
+ this, &DolphinTabWidget::tabUrlChanged);
addTab(tabPage, QIcon::fromTheme(KIO::iconNameForUrl(primaryUrl)), tabName(primaryUrl));
if (focusWidget) {
{
if (index >= 0) {
DolphinView* view = tabPageAt(index)->activeViewContainer()->view();
- view->dropUrls(view->url(), event);
+ view->dropUrls(view->url(), event, view);
}
}
void DolphinTabWidget::currentTabChanged(int index)
{
- DolphinViewContainer* viewContainer = tabPageAt(index)->activeViewContainer();
+ // last-viewed tab deactivation
+ if (DolphinTabPage* tabPage = tabPageAt(m_lastViewedTab)) {
+ tabPage->setActive(false);
+ }
+ DolphinTabPage* tabPage = tabPageAt(index);
+ DolphinViewContainer* viewContainer = tabPage->activeViewContainer();
emit activeViewChanged(viewContainer);
emit currentUrlChanged(viewContainer->url());
- viewContainer->view()->setFocus();
+ tabPage->setActive(true);
+ m_lastViewedTab = index;
}
void DolphinTabWidget::tabInserted(int index)
QString DolphinTabWidget::tabName(const QUrl& url) const
{
QString name;
- if (url == QUrl("file:///")) {
+ if (url == QUrl(QStringLiteral("file:///"))) {
name = '/';
} else {
name = url.adjusted(QUrl::StripTrailingSlash).fileName();
} else {
// Make sure that a '&' inside the directory name is displayed correctly
// and not misinterpreted as a keyboard shortcut in QTabBar::setTabText()
- name.replace('&', "&&");
+ name.replace('&', QLatin1String("&&"));
}
}
return name;