Use tab for switching active split

REVIEW: 128564
REVIEW: 110970
BUGS: 171743
This commit is contained in:
Martin T. H. Sandsmark 2016-07-31 19:16:18 +02:00
parent 1bdebe6d7c
commit b706108206
7 changed files with 45 additions and 1 deletions

View file

@ -323,6 +323,18 @@ void DolphinTabPage::slotViewUrlRedirection(const QUrl& oldUrl, const QUrl& newU
emit activeViewUrlChanged(newUrl); emit activeViewUrlChanged(newUrl);
} }
void DolphinTabPage::switchActiveView()
{
if (!m_splitViewEnabled) {
return;
}
if (m_primaryViewActive) {
m_secondaryViewContainer->setActive(true);
} else {
m_primaryViewContainer->setActive(true);
}
}
DolphinViewContainer* DolphinTabPage::createViewContainer(const QUrl& url) const DolphinViewContainer* DolphinTabPage::createViewContainer(const QUrl& url) const
{ {
DolphinViewContainer* container = new DolphinViewContainer(url, m_splitter); DolphinViewContainer* container = new DolphinViewContainer(url, m_splitter);
@ -332,5 +344,8 @@ DolphinViewContainer* DolphinTabPage::createViewContainer(const QUrl& url) const
connect(view, &DolphinView::activated, connect(view, &DolphinView::activated,
this, &DolphinTabPage::slotViewActivated); this, &DolphinTabPage::slotViewActivated);
connect(view, &DolphinView::toggleActiveViewRequested,
this, &DolphinTabPage::switchActiveView);
return container; return container;
} }

View file

@ -149,6 +149,8 @@ private slots:
*/ */
void slotViewUrlRedirection(const QUrl& oldUrl, const QUrl& newUrl); void slotViewUrlRedirection(const QUrl& oldUrl, const QUrl& newUrl);
void switchActiveView();
private: private:
/** /**
* Creates a new view container and does the default initialization. * Creates a new view container and does the default initialization.

View file

@ -62,6 +62,10 @@
<label>Show selection toggle</label> <label>Show selection toggle</label>
<default>true</default> <default>true</default>
</entry> </entry>
<entry name="UseTabForSwitchingSplitView" type="Bool">
<label>Use tab for switching between right and left split</label>
<default>false</default>
</entry>
<entry name="ShowToolTips" type="Bool"> <entry name="ShowToolTips" type="Bool">
<label>Show tooltips</label> <label>Show tooltips</label>
<default>false</default> <default>false</default>

View file

@ -41,7 +41,8 @@ BehaviorSettingsPage::BehaviorSettingsPage(const QUrl& url, QWidget* parent) :
m_naturalSorting(0), m_naturalSorting(0),
m_caseSensitiveSorting(0), m_caseSensitiveSorting(0),
m_caseInsensitiveSorting(0), m_caseInsensitiveSorting(0),
m_renameInline(0) m_renameInline(0),
m_useTabForSplitViewSwitch(0)
{ {
QVBoxLayout* topLayout = new QVBoxLayout(this); QVBoxLayout* topLayout = new QVBoxLayout(this);
@ -78,11 +79,15 @@ BehaviorSettingsPage::BehaviorSettingsPage(const QUrl& url, QWidget* parent) :
// 'Inline renaming of items' // 'Inline renaming of items'
m_renameInline = new QCheckBox(i18nc("option:check", "Rename inline"), this); m_renameInline = new QCheckBox(i18nc("option:check", "Rename inline"), this);
// 'Use tab for switching between right and left split'
m_useTabForSplitViewSwitch = new QCheckBox(i18nc("option:check", "Use tab for switching between right and left split view"), this);
topLayout->addWidget(viewPropsBox); topLayout->addWidget(viewPropsBox);
topLayout->addWidget(sortingPropsBox); topLayout->addWidget(sortingPropsBox);
topLayout->addWidget(m_showToolTips); topLayout->addWidget(m_showToolTips);
topLayout->addWidget(m_showSelectionToggle); topLayout->addWidget(m_showSelectionToggle);
topLayout->addWidget(m_renameInline); topLayout->addWidget(m_renameInline);
topLayout->addWidget(m_useTabForSplitViewSwitch);
topLayout->addStretch(); topLayout->addStretch();
loadSettings(); loadSettings();
@ -95,6 +100,7 @@ BehaviorSettingsPage::BehaviorSettingsPage(const QUrl& url, QWidget* parent) :
connect(m_caseInsensitiveSorting, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed); connect(m_caseInsensitiveSorting, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
connect(m_caseSensitiveSorting, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed); connect(m_caseSensitiveSorting, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
connect(m_renameInline, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed); connect(m_renameInline, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed);
connect(m_useTabForSplitViewSwitch, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed);
} }
BehaviorSettingsPage::~BehaviorSettingsPage() BehaviorSettingsPage::~BehaviorSettingsPage()
@ -112,6 +118,7 @@ void BehaviorSettingsPage::applySettings()
settings->setShowSelectionToggle(m_showSelectionToggle->isChecked()); settings->setShowSelectionToggle(m_showSelectionToggle->isChecked());
setSortingChoiceValue(settings); setSortingChoiceValue(settings);
settings->setRenameInline(m_renameInline->isChecked()); settings->setRenameInline(m_renameInline->isChecked());
settings->setUseTabForSwitchingSplitView(m_useTabForSplitViewSwitch->isChecked());
settings->save(); settings->save();
if (useGlobalViewProps) { if (useGlobalViewProps) {
@ -141,6 +148,7 @@ void BehaviorSettingsPage::loadSettings()
m_showToolTips->setChecked(GeneralSettings::showToolTips()); m_showToolTips->setChecked(GeneralSettings::showToolTips());
m_showSelectionToggle->setChecked(GeneralSettings::showSelectionToggle()); m_showSelectionToggle->setChecked(GeneralSettings::showSelectionToggle());
m_renameInline->setChecked(GeneralSettings::renameInline()); m_renameInline->setChecked(GeneralSettings::renameInline());
m_useTabForSplitViewSwitch->setChecked(GeneralSettings::useTabForSwitchingSplitView());
loadSortingChoiceSettings(); loadSortingChoiceSettings();
} }

View file

@ -65,6 +65,7 @@ private:
QRadioButton* m_caseInsensitiveSorting; QRadioButton* m_caseInsensitiveSorting;
QCheckBox* m_renameInline; QCheckBox* m_renameInline;
QCheckBox* m_useTabForSplitViewSwitch;
}; };
#endif #endif

View file

@ -724,6 +724,15 @@ void DolphinView::stopLoading()
bool DolphinView::eventFilter(QObject* watched, QEvent* event) bool DolphinView::eventFilter(QObject* watched, QEvent* event)
{ {
switch (event->type()) { switch (event->type()) {
case QEvent::KeyPress:
if (GeneralSettings::useTabForSwitchingSplitView()) {
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
if (keyEvent->key() == Qt::Key_Tab && keyEvent->modifiers() == Qt::NoModifier) {
toggleActiveViewRequested();
return true;
}
}
break;
case QEvent::FocusIn: case QEvent::FocusIn:
if (watched == m_container) { if (watched == m_container) {
setActive(true); setActive(true);

View file

@ -546,6 +546,11 @@ signals:
*/ */
void goForwardRequested(); void goForwardRequested();
/**
* Is emitted when the user wants to move the focus to another view.
*/
void toggleActiveViewRequested();
protected: protected:
/** Changes the zoom level if Control is pressed during a wheel event. */ /** Changes the zoom level if Control is pressed during a wheel event. */
virtual void wheelEvent(QWheelEvent* event) Q_DECL_OVERRIDE; virtual void wheelEvent(QWheelEvent* event) Q_DECL_OVERRIDE;