mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
If the user has changed the startup settings, they should also get applied to the current views.
BUG: 254947 FIXED-IN: 4.6.0 svn path=/trunk/KDE/kdebase/apps/; revision=1193344
This commit is contained in:
parent
e8bbbd5703
commit
da1adf7ba4
6 changed files with 61 additions and 12 deletions
|
@ -285,6 +285,19 @@ void DolphinMainWindow::refreshViews()
|
|||
}
|
||||
|
||||
setActiveViewContainer(activeViewContainer);
|
||||
|
||||
const GeneralSettings* generalSettings = DolphinSettings::instance().generalSettings();
|
||||
if (generalSettings->modifiedStartupSettings()) {
|
||||
// The startup settings have been changed by the user (see bug #254947).
|
||||
// Synchronizethe split-view setting with the active view:
|
||||
const bool splitView = generalSettings->splitView();
|
||||
const ViewTab& activeTab = m_viewTab[m_tabIndex];
|
||||
const bool toggle = ( splitView && (activeTab.secondaryView == 0))
|
||||
|| (!splitView && (activeTab.secondaryView != 0));
|
||||
if (toggle) {
|
||||
toggleSplitView();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinMainWindow::pasteIntoFolder()
|
||||
|
@ -856,14 +869,14 @@ void DolphinMainWindow::replaceLocation()
|
|||
void DolphinMainWindow::goBack()
|
||||
{
|
||||
clearStatusBar();
|
||||
|
||||
|
||||
KUrlNavigator* urlNavigator = m_activeViewContainer->urlNavigator();
|
||||
urlNavigator->goBack();
|
||||
|
||||
|
||||
if (urlNavigator->locationState().isEmpty()) {
|
||||
// An empty location state indicates a redirection URL,
|
||||
// which must be skipped too
|
||||
urlNavigator->goBack();
|
||||
urlNavigator->goBack();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -219,6 +219,16 @@ bool DolphinViewContainer::isActive() const
|
|||
|
||||
void DolphinViewContainer::refresh()
|
||||
{
|
||||
GeneralSettings* settings = DolphinSettings::instance().generalSettings();
|
||||
if (settings->modifiedStartupSettings()) {
|
||||
// The startup settings should only get applied if they have been
|
||||
// modified by the user. Otherwise keep the (possibly) different current
|
||||
// settings of the URL navigator and the filterbar.
|
||||
m_urlNavigator->setUrlEditable(settings->editableUrl());
|
||||
m_urlNavigator->setShowFullPath(settings->showFullPath());
|
||||
showFilterBar(settings->filterBar());
|
||||
}
|
||||
|
||||
m_view->refresh();
|
||||
m_statusBar->refresh();
|
||||
}
|
||||
|
|
|
@ -21,9 +21,13 @@
|
|||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="FirstRun" type="Bool">
|
||||
<label>Is the application started the first time</label>
|
||||
<label>Is the application started the first time (internal setting not shown in the UI)</label>
|
||||
<default>true</default>
|
||||
</entry>
|
||||
<entry name="ModifiedStartupSettings" type="Bool">
|
||||
<label>Have the startup settings been modified (internal setting not shown in the UI)</label>
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="HomeUrl" type="String">
|
||||
<label>Home URL</label>
|
||||
<default code="true">QDir::homePath()</default>
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
|
||||
#include <dolphinapplication.h>
|
||||
#include <dolphinmainwindow.h>
|
||||
#include "dolphinsettings.h"
|
||||
#include "dolphin_generalsettings.h"
|
||||
#include "general/generalsettingspage.h"
|
||||
#include "navigation/navigationsettingspage.h"
|
||||
#include "services/servicessettingspage.h"
|
||||
|
@ -128,6 +130,15 @@ void DolphinSettingsDialog::applySettings()
|
|||
page->applySettings();
|
||||
}
|
||||
DolphinApplication::app()->refreshMainWindows();
|
||||
|
||||
GeneralSettings* settings = DolphinSettings::instance().generalSettings();
|
||||
if (settings->modifiedStartupSettings()) {
|
||||
// Reset the modified startup settings hint. The changed startup settings
|
||||
// have been applied already in app()->refreshMainWindows().
|
||||
settings->setModifiedStartupSettings(false);
|
||||
settings->writeConfig();
|
||||
}
|
||||
|
||||
enableButtonApply(false);
|
||||
}
|
||||
|
||||
|
|
|
@ -88,10 +88,6 @@ StartupSettingsPage::StartupSettingsPage(const KUrl& url, QWidget* parent) :
|
|||
m_editableUrl = new QCheckBox(i18nc("@option:check Startup Settings", "Editable location bar"), vBox);
|
||||
m_showFullPath = new QCheckBox(i18nc("@option:check Startup Settings", "Show full path inside location bar"), vBox);
|
||||
m_filterBar = new QCheckBox(i18nc("@option:check Startup Settings", "Show filter bar"), vBox);
|
||||
connect(m_splitView, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
|
||||
connect(m_editableUrl, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
|
||||
connect(m_showFullPath, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
|
||||
connect(m_filterBar, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
|
||||
|
||||
// Add a dummy widget with no restriction regarding
|
||||
// a vertical resizing. This assures that the dialog layout
|
||||
|
@ -102,9 +98,12 @@ StartupSettingsPage::StartupSettingsPage(const KUrl& url, QWidget* parent) :
|
|||
|
||||
loadSettings();
|
||||
|
||||
// it's important connecting 'textChanged' after loadSettings(), as loadSettings()
|
||||
// invokes m_homeUrl->setText()
|
||||
// Connecting the signals must be done after loading the settings
|
||||
connect(m_homeUrl, SIGNAL(textChanged(const QString&)), this, SIGNAL(changed()));
|
||||
connect(m_splitView, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged()));
|
||||
connect(m_editableUrl, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged()));
|
||||
connect(m_showFullPath, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged()));
|
||||
connect(m_filterBar, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged()));
|
||||
}
|
||||
|
||||
StartupSettingsPage::~StartupSettingsPage()
|
||||
|
@ -139,13 +138,24 @@ void StartupSettingsPage::restoreDefaults()
|
|||
settings->useDefaults(false);
|
||||
}
|
||||
|
||||
void StartupSettingsPage::slotSettingsChanged()
|
||||
{
|
||||
// Provide a hint that the startup settings have been changed. This allows the views
|
||||
// to apply the startup settings only if they have been explicitely changed by the user
|
||||
// (see bug #254947).
|
||||
GeneralSettings* settings = DolphinSettings::instance().generalSettings();
|
||||
settings->setModifiedStartupSettings(true);
|
||||
|
||||
emit changed();
|
||||
}
|
||||
|
||||
void StartupSettingsPage::selectHomeUrl()
|
||||
{
|
||||
const QString homeUrl = m_homeUrl->text();
|
||||
KUrl url = KFileDialog::getExistingDirectoryUrl(homeUrl, this);
|
||||
if (!url.isEmpty()) {
|
||||
m_homeUrl->setText(url.prettyUrl());
|
||||
emit changed();
|
||||
slotSettingsChanged();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -156,7 +166,7 @@ void StartupSettingsPage::useCurrentLocation()
|
|||
|
||||
void StartupSettingsPage::useDefaultLocation()
|
||||
{
|
||||
KUrl url(QDir::homePath());
|
||||
KUrl url(QDir::homePath());
|
||||
m_homeUrl->setText(url.prettyUrl());
|
||||
}
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@ public:
|
|||
virtual void restoreDefaults();
|
||||
|
||||
private slots:
|
||||
void slotSettingsChanged();
|
||||
void selectHomeUrl();
|
||||
void useCurrentLocation();
|
||||
void useDefaultLocation();
|
||||
|
|
Loading…
Reference in a new issue