Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/settings/dolphin_generalsettings.kcfg b/src/settings/dolphin_generalsettings.kcfg
- index aedc24ea4..85786ea1b 100644
- --- a/src/settings/dolphin_generalsettings.kcfg
- +++ b/src/settings/dolphin_generalsettings.kcfg
- @@ -59,6 +59,14 @@
- <label>Should the filter bar be shown</label>
- <default>false</default>
- </entry>
- + <entry name="LocalViewProps" type="Bool">
- + <label>Should view properties be stored in folders</label>
- + <default>true</default>
- + </entry>
- + <entry name="UserViewProps" type="Bool">
- + <label>Should the view properties be stored in user .local</label>
- + <default>true</default>
- + </entry>
- <entry name="GlobalViewProps" type="Bool">
- <label>Should the view properties be used for all folders</label>
- <default>true</default>
- diff --git a/src/settings/general/behaviorsettingspage.cpp b/src/settings/general/behaviorsettingspage.cpp
- index 4e78447c7..de62304eb 100644
- --- a/src/settings/general/behaviorsettingspage.cpp
- +++ b/src/settings/general/behaviorsettingspage.cpp
- @@ -21,6 +21,7 @@ BehaviorSettingsPage::BehaviorSettingsPage(const QUrl& url, QWidget* parent) :
- SettingsPageBase(parent),
- m_url(url),
- m_localViewProps(nullptr),
- + m_userViewProps(nullptr),
- m_globalViewProps(nullptr),
- m_showToolTips(nullptr),
- m_showSelectionToggle(nullptr),
- @@ -32,16 +33,24 @@ BehaviorSettingsPage::BehaviorSettingsPage(const QUrl& url, QWidget* parent) :
- {
- QFormLayout* topLayout = new QFormLayout(this);
- -
- // View properties
- - m_globalViewProps = new QRadioButton(i18nc("@option:radio", "Use common display style for all folders"));
- - m_localViewProps = new QRadioButton(i18nc("@option:radio", "Remember display style for each folder"));
- - m_localViewProps->setToolTip(i18nc("@info", "Dolphin will create a hidden .directory file in each folder you change view properties for."));
- + m_globalViewProps = new QRadioButton(i18nc(
- + "@option:radio", "Use common display for all folders"));
- + m_userViewProps = new QRadioButton(i18nc(
- + "@option:radio", "User .local remembers all folder settings"));
- + m_userViewProps->setToolTip(i18nc("@info",
- + "Dolphin will create a hidden .directory file in user .local for changed view properties."));
- + m_localViewProps = new QRadioButton(i18nc(
- + "@option:radio", "Each folder remembers own settings"));
- + m_localViewProps->setToolTip(i18nc("@info",
- + "Dolphin will create a hidden .directory file in each folder for changed view properties."));
- QButtonGroup* viewGroup = new QButtonGroup(this);
- viewGroup->addButton(m_globalViewProps);
- + viewGroup->addButton(m_userViewProps);
- viewGroup->addButton(m_localViewProps);
- - topLayout->addRow(i18nc("@title:group", "View: "), m_globalViewProps);
- + topLayout->addRow(i18nc("@title:group", "View Style: "), m_globalViewProps);
- + topLayout->addRow(QString(), m_userViewProps);
- topLayout->addRow(QString(), m_localViewProps);
- @@ -95,6 +104,7 @@ BehaviorSettingsPage::BehaviorSettingsPage(const QUrl& url, QWidget* parent) :
- loadSettings();
- connect(m_localViewProps, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
- + connect(m_userViewProps, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
- connect(m_globalViewProps, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
- #if HAVE_BALOO
- connect(m_showToolTips, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed);
- @@ -117,8 +127,9 @@ void BehaviorSettingsPage::applySettings()
- GeneralSettings* settings = GeneralSettings::self();
- ViewProperties props(m_url); // read current view properties
- - const bool useGlobalViewProps = m_globalViewProps->isChecked();
- - settings->setGlobalViewProps(useGlobalViewProps);
- + settings->setLocalViewProps(m_localViewProps->isChecked());
- + settings->setUserViewProps(m_userViewProps->isChecked());
- + settings->setGlobalViewProps(m_globalViewProps->isChecked());
- #if HAVE_BALOO
- settings->setShowToolTips(m_showToolTips->isChecked());
- #endif
- @@ -129,7 +140,7 @@ void BehaviorSettingsPage::applySettings()
- settings->setCloseActiveSplitView(m_closeActiveSplitView->isChecked());
- settings->save();
- - if (useGlobalViewProps) {
- + if (m_globalViewProps->isChecked()) {
- // Remember the global view properties by applying the current view properties.
- // It is important that GeneralSettings::globalViewProps() is set before
- // the class ViewProperties is used, as ViewProperties uses this setting
- @@ -149,9 +160,9 @@ void BehaviorSettingsPage::restoreDefaults()
- void BehaviorSettingsPage::loadSettings()
- {
- - const bool useGlobalViewProps = GeneralSettings::globalViewProps();
- - m_localViewProps->setChecked(!useGlobalViewProps);
- - m_globalViewProps->setChecked(useGlobalViewProps);
- + m_localViewProps->setChecked(GeneralSettings::localViewProps());
- + m_userViewProps->setChecked(GeneralSettings::userViewProps());
- + m_globalViewProps->setChecked(GeneralSettings::globalViewProps());
- #if HAVE_BALOO
- m_showToolTips->setChecked(GeneralSettings::showToolTips());
- diff --git a/src/settings/general/behaviorsettingspage.h b/src/settings/general/behaviorsettingspage.h
- index b054e6d35..a630f0090 100644
- --- a/src/settings/general/behaviorsettingspage.h
- +++ b/src/settings/general/behaviorsettingspage.h
- @@ -41,6 +41,7 @@ private:
- QUrl m_url;
- QRadioButton* m_localViewProps;
- + QRadioButton* m_userViewProps;
- QRadioButton* m_globalViewProps;
- QCheckBox* m_showToolTips;
- diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
- index d4a7457cb..fc9891ca5 100644
- --- a/src/tests/CMakeLists.txt
- +++ b/src/tests/CMakeLists.txt
- @@ -56,6 +56,11 @@ ecm_add_test(viewpropertiestest.cpp testdir.cpp
- TEST_NAME viewpropertiestest
- LINK_LIBRARIES dolphinprivate dolphinstatic Qt${QT_MAJOR_VERSION}::Test)
- +# UserViewPropertiesTest
- +ecm_add_test(userviewpropertiestest.cpp testdir.cpp
- +TEST_NAME userviewpropertiestest
- +LINK_LIBRARIES dolphinprivate dolphinstatic Qt${QT_MAJOR_VERSION}::Test)
- +
- # DolphinMainWindowTest
- ecm_add_test(dolphinmainwindowtest.cpp testdir.cpp ${CMAKE_SOURCE_DIR}/src/dolphin.qrc
- TEST_NAME dolphinmainwindowtest
- diff --git a/src/tests/userviewpropertiestest.cpp b/src/tests/userviewpropertiestest.cpp
- new file mode 100644
- index 000000000..9f36f65ce
- --- /dev/null
- +++ b/src/tests/userviewpropertiestest.cpp
- @@ -0,0 +1,90 @@
- +/*
- + * SPDX-FileCopyrightText: 2012 Peter Penz <peter.penz19@gmail.com>
- + *
- + * SPDX-License-Identifier: GPL-2.0-or-later
- + */
- +
- +#include "dolphin_generalsettings.h"
- +#include "views/viewproperties.h"
- +#include "testdir.h"
- +
- +#include <QTest>
- +
- +class UserViewPropertiesTest : public QObject
- +{
- + Q_OBJECT
- +
- +private Q_SLOTS:
- + void initTestCase();
- + void init();
- + void cleanup();
- +
- + void testUserView();
- +
- +private:
- + bool m_globalViewProps;
- + bool m_userViewProps;
- + bool m_localViewProps;
- +
- + TestDir* m_testDir;
- +};
- +
- +void UserViewPropertiesTest::initTestCase()
- +{
- + QStandardPaths::setTestModeEnabled(true);
- +}
- +
- +void UserViewPropertiesTest::init()
- +{
- + m_globalViewProps = GeneralSettings::self()->globalViewProps();
- + m_userViewProps = GeneralSettings::self()->userViewProps();
- + m_localViewProps = GeneralSettings::self()->localViewProps();
- +
- + // Setup test props.
- + GeneralSettings::self()->setGlobalViewProps(false);
- + GeneralSettings::self()->setUserViewProps(true);
- + GeneralSettings::self()->setLocalViewProps(false);
- + GeneralSettings::self()->save();
- +
- + // It is mandatory to create the test-directory inside the home-directory
- + // of the user: ViewProperties does not write inside directories
- + // outside the home-directory to prevent overwriting other user-settings
- + // in case if write-permissions are given.
- + m_testDir = new TestDir(QDir::homePath() + "/.userViewPropertiesTest-");
- +}
- +
- +void UserViewPropertiesTest::cleanup()
- +{
- + delete m_testDir;
- + m_testDir = nullptr;
- +
- + GeneralSettings::self()->setGlobalViewProps(m_globalViewProps);
- + GeneralSettings::self()->setUserViewProps(m_userViewProps);
- + GeneralSettings::self()->setLocalViewProps(m_localViewProps);
- + GeneralSettings::self()->save();
- +}
- +
- +void UserViewPropertiesTest::testUserView()
- +{
- + // Ensure no user .directory file exists.
- + QString dotDirectoryFile =
- + QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
- + dotDirectoryFile.append("/view_properties");
- + dotDirectoryFile.append("/local");
- + dotDirectoryFile.append(m_testDir->url().toLocalFile());
- + dotDirectoryFile.append("/.directory");
- + QVERIFY(!QFile::exists(dotDirectoryFile));
- +
- + // Trigger action to create one.
- + QScopedPointer<ViewProperties> props(new ViewProperties(m_testDir->url()));
- + QVERIFY(props->isAutoSaveEnabled());
- + props->setSortRole("someNewSortRole");
- + props.reset();
- +
- + // Ensure it now exists.
- + QVERIFY(QFile::exists(dotDirectoryFile));
- +}
- +
- +QTEST_GUILESS_MAIN(UserViewPropertiesTest)
- +
- +#include "userviewpropertiestest.moc"
- diff --git a/src/tests/viewpropertiestest.cpp b/src/tests/viewpropertiestest.cpp
- index 14d59be0a..e85d08692 100644
- --- a/src/tests/viewpropertiestest.cpp
- +++ b/src/tests/viewpropertiestest.cpp
- @@ -24,6 +24,9 @@ private Q_SLOTS:
- private:
- bool m_globalViewProps;
- + bool m_userViewProps;
- + bool m_localViewProps;
- +
- TestDir* m_testDir;
- };
- @@ -35,7 +38,13 @@ void ViewPropertiesTest::initTestCase()
- void ViewPropertiesTest::init()
- {
- m_globalViewProps = GeneralSettings::self()->globalViewProps();
- + m_userViewProps = GeneralSettings::self()->userViewProps();
- + m_localViewProps = GeneralSettings::self()->localViewProps();
- +
- + // Setup test props.
- GeneralSettings::self()->setGlobalViewProps(false);
- + GeneralSettings::self()->setUserViewProps(false);
- + GeneralSettings::self()->setLocalViewProps(true);
- GeneralSettings::self()->save();
- // It is mandatory to create the test-directory inside the home-directory
- @@ -51,6 +60,8 @@ void ViewPropertiesTest::cleanup()
- m_testDir = nullptr;
- GeneralSettings::self()->setGlobalViewProps(m_globalViewProps);
- + GeneralSettings::self()->setUserViewProps(m_userViewProps);
- + GeneralSettings::self()->setLocalViewProps(m_localViewProps);
- GeneralSettings::self()->save();
- }
- diff --git a/src/views/viewproperties.cpp b/src/views/viewproperties.cpp
- index e6dbcd811..4bdc299e4 100644
- --- a/src/views/viewproperties.cpp
- +++ b/src/views/viewproperties.cpp
- @@ -74,7 +74,11 @@ ViewProperties::ViewProperties(const QUrl& url) :
- if (!useDestinationDir) {
- const QFileInfo dirInfo(m_filePath);
- const QFileInfo fileInfo(m_filePath + QDir::separator() + ViewPropertiesFileName);
- - useDestinationDir = !dirInfo.isWritable() || (dirInfo.size() > 0 && fileInfo.exists() && !(fileInfo.isReadable() && fileInfo.isWritable()));
- + useDestinationDir = settings->userViewProps() ||
- + !dirInfo.isWritable() ||
- + (dirInfo.size() > 0 && fileInfo.exists() &&
- + !(fileInfo.isReadable() && fileInfo.isWritable())
- + );
- }
- if (useDestinationDir) {
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement