#include "dolphin_generalsettings.h"
#include <KDialog>
-#include <KGlobalSettings>
#include <KLocalizedString>
#include <QCheckBox>
-#include <QGroupBox>
-#include <QRadioButton>
#include <QVBoxLayout>
NavigationSettingsPage::NavigationSettingsPage(QWidget* parent) :
vBoxLayout->setSpacing(spacing);
vBoxLayout->setAlignment(Qt::AlignTop);
- // create 'Mouse' group
- QGroupBox* mouseBox = new QGroupBox(i18nc("@title:group", "Mouse"), vBox);
- vBoxLayout->addWidget(mouseBox);
- mouseBox->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
- m_singleClick = new QRadioButton(i18nc("@option:check Mouse Settings",
- "Single-click to open files and folders"), mouseBox);
- m_doubleClick = new QRadioButton(i18nc("@option:check Mouse Settings",
- "Double-click to open files and folders"), mouseBox);
-
- QVBoxLayout* mouseBoxLayout = new QVBoxLayout(mouseBox);
- mouseBoxLayout->addWidget(m_singleClick);
- mouseBoxLayout->addWidget(m_doubleClick);
-
m_openArchivesAsFolder = new QCheckBox(i18nc("@option:check", "Open archives as folder"), vBox);
vBoxLayout->addWidget(m_openArchivesAsFolder);
loadSettings();
- connect(m_singleClick, &QRadioButton::toggled, this, &NavigationSettingsPage::changed);
- connect(m_doubleClick, &QRadioButton::toggled, this, &NavigationSettingsPage::changed);
connect(m_openArchivesAsFolder, &QCheckBox::toggled, this, &NavigationSettingsPage::changed);
connect(m_autoExpandFolders, &QCheckBox::toggled, this, &NavigationSettingsPage::changed);
}
void NavigationSettingsPage::applySettings()
{
- KConfig config("kcminputrc");
- KConfigGroup group = config.group("KDE");
- group.writeEntry("SingleClick", m_singleClick->isChecked(), KConfig::Persistent|KConfig::Global);
- config.sync();
- KGlobalSettings::self()->emitChange(KGlobalSettings::SettingsChanged, KGlobalSettings::SETTINGS_MOUSE);
-
GeneralSettings* settings = GeneralSettings::self();
settings->setBrowseThroughArchives(m_openArchivesAsFolder->isChecked());
settings->setAutoExpandFolders(m_autoExpandFolders->isChecked());
settings->useDefaults(true);
loadSettings();
settings->useDefaults(false);
-
- // The mouse settings stored in KGlobalSettings must be reset to
- // the default values (= single click) manually.
- m_singleClick->setChecked(true);
- m_doubleClick->setChecked(false);
}
void NavigationSettingsPage::loadSettings()
{
- const bool singleClick = KGlobalSettings::singleClick();
- m_singleClick->setChecked(singleClick);
- m_doubleClick->setChecked(!singleClick);
m_openArchivesAsFolder->setChecked(GeneralSettings::browseThroughArchives());
m_autoExpandFolders->setChecked(GeneralSettings::autoExpandFolders());
}
#include "kitemviews/private/kitemlistviewlayouter.h"
#include "testdir.h"
-#include <KConfigGroup>
-#include <KGlobalSettings>
-
#include <QTest>
#include <QGraphicsSceneMouseEvent>
#include <QSignalSpy>
+#include <QProxyStyle>
+
+/**
+ * \class KItemListControllerTestStyle is a proxy style for testing the
+ * KItemListController with different style hint options, e.g. single/double
+ * click activation.
+ */
+class KItemListControllerTestStyle : public QProxyStyle
+{
+public:
+ KItemListControllerTestStyle(QStyle* style) :
+ QProxyStyle(style),
+ m_activateItemOnSingleClick((bool)style->styleHint(SH_ItemView_ActivateItemOnSingleClick))
+ {
+ }
+
+ void setActivateItemOnSingleClick(bool activateItemOnSingleClick)
+ {
+ m_activateItemOnSingleClick = activateItemOnSingleClick;
+ }
+
+ bool activateItemOnSingleClick() const
+ {
+ return m_activateItemOnSingleClick;
+ }
+
+ int styleHint(StyleHint hint,
+ const QStyleOption* option = nullptr,
+ const QWidget* widget = nullptr,
+ QStyleHintReturn* returnData = nullptr) const Q_DECL_OVERRIDE
+ {
+ switch (hint) {
+ case QStyle::SH_ItemView_ActivateItemOnSingleClick:
+ return (int)activateItemOnSingleClick();
+ default:
+ return QProxyStyle::styleHint(hint, option, widget, returnData);
+ }
+ }
+
+private:
+ bool m_activateItemOnSingleClick;
+};
Q_DECLARE_METATYPE(KFileItemListView::ItemLayout);
Q_DECLARE_METATYPE(Qt::Orientation);
KFileItemModel* m_model;
TestDir* m_testDir;
KItemListContainer* m_container;
+ KItemListControllerTestStyle* m_testStyle;
};
/**
m_controller = m_container->controller();
m_controller->setSelectionBehavior(KItemListController::MultiSelection);
m_selectionManager = m_controller->selectionManager();
+ m_testStyle = new KItemListControllerTestStyle(m_view->style());
+ m_view->setStyle(m_testStyle);
QStringList files;
files
const QPointF pos = m_view->itemContextRect(0).center();
// Save the "single click" setting.
- const bool restoreKGlobalSettingsSingleClick = KGlobalSettings::singleClick();
-
- KConfig config("kcminputrc");
- KConfigGroup group = config.group("KDE");
+ const bool restoreSettingsSingleClick = m_testStyle->activateItemOnSingleClick();
QGraphicsSceneMouseEvent mousePressEvent(QEvent::GraphicsSceneMousePress);
mousePressEvent.setPos(pos);
QSignalSpy spyItemActivated(m_controller, SIGNAL(itemActivated(int)));
// Default setting: single click activation.
- group.writeEntry("SingleClick", true, KConfig::Persistent|KConfig::Global);
- config.sync();
- KGlobalSettings::self()->emitChange(KGlobalSettings::SettingsChanged, KGlobalSettings::SETTINGS_MOUSE);
-
- int iterations = 0;
- const int maxIterations = 20;
- while (!KGlobalSettings::singleClick() && iterations < maxIterations) {
- QTest::qWait(50);
- ++iterations;
- }
-
- if (!KGlobalSettings::singleClick()) {
- // TODO: Try to find a way to make sure that changing the global setting works.
- QSKIP("Failed to change the KGlobalSettings::singleClick() setting!");
- }
-
+ m_testStyle->setActivateItemOnSingleClick(true);
m_view->event(&mousePressEvent);
m_view->event(&mouseReleaseEvent);
QCOMPARE(spyItemActivated.count(), 1);
spyItemActivated.clear();
// Set the global setting to "double click activation".
- group.writeEntry("SingleClick", false, KConfig::Persistent|KConfig::Global);
- config.sync();
- KGlobalSettings::self()->emitChange(KGlobalSettings::SettingsChanged, KGlobalSettings::SETTINGS_MOUSE);
-
- iterations = 0;
- while (KGlobalSettings::singleClick() && iterations < maxIterations) {
- QTest::qWait(50);
- ++iterations;
- }
-
- if (KGlobalSettings::singleClick()) {
- // TODO: Try to find a way to make sure that changing the global setting works.
- QSKIP("Failed to change the KGlobalSettings::singleClick() setting!");
- }
-
+ m_testStyle->setActivateItemOnSingleClick(false);
m_view->event(&mousePressEvent);
m_view->event(&mouseReleaseEvent);
QCOMPARE(spyItemActivated.count(), 0);
spyItemActivated.clear();
// Set the global setting back to "single click activation".
- group.writeEntry("SingleClick", true, KConfig::Persistent|KConfig::Global);
- config.sync();
- KGlobalSettings::self()->emitChange(KGlobalSettings::SettingsChanged, KGlobalSettings::SETTINGS_MOUSE);
-
- iterations = 0;
- while (!KGlobalSettings::singleClick() && iterations < maxIterations) {
- QTest::qWait(50);
- ++iterations;
- }
-
- if (!KGlobalSettings::singleClick()) {
- // TODO: Try to find a way to make sure that changing the global setting works.
- QSKIP("Failed to change the KGlobalSettings::singleClick() setting!");
- }
-
+ m_testStyle->setActivateItemOnSingleClick(true);
m_view->event(&mousePressEvent);
m_view->event(&mouseReleaseEvent);
QCOMPARE(spyItemActivated.count(), 1);
// Restore previous settings.
m_controller->setSingleClickActivationEnforced(true);
- group.writeEntry("SingleClick", restoreKGlobalSettingsSingleClick, KConfig::Persistent|KConfig::Global);
- config.sync();
- KGlobalSettings::self()->emitChange(KGlobalSettings::SettingsChanged, KGlobalSettings::SETTINGS_MOUSE);
-
- iterations = 0;
- while (KGlobalSettings::singleClick() != restoreKGlobalSettingsSingleClick && iterations < maxIterations) {
- QTest::qWait(50);
- ++iterations;
- }
-
- if (KGlobalSettings::singleClick() != restoreKGlobalSettingsSingleClick) {
- // TODO: Try to find a way to make sure that changing the global setting works.
- QSKIP("Failed to change the KGlobalSettings::singleClick() setting!");
- }
+ m_testStyle->setActivateItemOnSingleClick(restoreSettingsSingleClick);
}
void KItemListControllerTest::adjustGeometryForColumnCount(int count)