diff --git a/CMakeLists.txt b/CMakeLists.txt index 43a7474..4f63f75 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,6 +48,7 @@ set(PROJECT_SOURCES src/appearance.cpp src/appearance.h src/appearance.ui src/behaviour.cpp src/behaviour.h src/behaviour.ui + src/mouse.cpp src/mouse.h src/mouse.ui ) set(PROJECT_OTHER_FILES .github/workflows/build.yml diff --git a/src/maindialog.cpp b/src/maindialog.cpp index 103c771..2992694 100644 --- a/src/maindialog.cpp +++ b/src/maindialog.cpp @@ -62,21 +62,7 @@ void MainDialog::activate() { ui->pageAppearance->activate(); ui->pageBehaviour->activate(); - - /* # MOUSE & TOUCHPAD */ - - /* Cursor Theme */ - QStringList cursorThemes = findIconThemes(LAB_ICON_THEME_TYPE_CURSOR); - ui->cursorTheme->addItems(cursorThemes); - ui->cursorTheme->setCurrentIndex(cursorThemes.indexOf(getStr("XCURSOR_THEME"))); - - /* Cursor Size */ - ui->cursorSize->setValue(getInt("XCURSOR_SIZE")); - - /* Natural Scroll */ - ui->naturalScroll->addItem("no"); - ui->naturalScroll->addItem("yes"); - ui->naturalScroll->setCurrentIndex(getBool("/labwc_config/libinput/device/naturalScroll")); + ui->pageMouse->activate(); /* # LANGUAGE */ @@ -91,14 +77,7 @@ void MainDialog::onApply() { ui->pageAppearance->onApply(); ui->pageBehaviour->onApply(); - - /* ~/.config/labwc/rc.xml */ - setBoolfromString("/labwc_config/libinput/device/naturalScroll", TEXT(ui->naturalScroll)); - xml_save(); - - /* ~/.config/labwc/environment */ - environmentSet("XCURSOR_THEME", TEXT(ui->cursorTheme)); - environmentSetInt("XCURSOR_SIZE", ui->cursorSize->value()); + ui->pageMouse->onApply(); /* * We include variants in XKB_DEFAULT_LAYOUT, for example "latam(deadtilde),ru(phonetic),gr", @@ -114,6 +93,8 @@ void MainDialog::onApply() std::string config_home = std::getenv("HOME") + std::string("/.config/labwc"); std::string config_dir = std::getenv("LABWC_CONFIG_DIR") ?: config_home; std::string environment_file = config_dir + "/environment"; + + xml_save(); environmentSave(environment_file); /* reconfigure labwc */ diff --git a/src/maindialog.ui b/src/maindialog.ui index c0cab4c..442f3da 100644 --- a/src/maindialog.ui +++ b/src/maindialog.ui @@ -90,52 +90,7 @@ - - - - 6 - - - 6 - - - 6 - - - 6 - - - - - Cursor Theme - - - - - - - - - - Cursor Size - - - - - - - - - - Natural Scroll - - - - - - - - + diff --git a/src/mouse.cpp b/src/mouse.cpp new file mode 100644 index 0000000..ed1300d --- /dev/null +++ b/src/mouse.cpp @@ -0,0 +1,40 @@ +#include "mouse.h" +#include "environment.h" +#include "find-themes.h" +#include "macros.h" +#include "settings.h" +#include "./ui_mouse.h" + +Mouse::Mouse(QWidget *parent) : QWidget(parent), ui(new Ui::pageMouse) +{ + ui->setupUi(this); +} + +Mouse::~Mouse() +{ + delete ui; +} + +void Mouse::activate() +{ + /* Cursor Theme */ + QStringList cursorThemes = findIconThemes(LAB_ICON_THEME_TYPE_CURSOR); + ui->cursorTheme->addItems(cursorThemes); + ui->cursorTheme->setCurrentIndex(cursorThemes.indexOf(getStr("XCURSOR_THEME"))); + + /* Cursor Size */ + ui->cursorSize->setValue(getInt("XCURSOR_SIZE")); + + /* Natural Scroll */ + ui->naturalScroll->setChecked(getBool("/labwc_config/libinput/device/naturalScroll")); +} + +void Mouse::onApply() +{ + /* ~/.config/labwc/rc.xml */ + setBool("/labwc_config/libinput/device/naturalScroll", ui->naturalScroll->isChecked()); + + /* ~/.config/labwc/environment */ + environmentSet("XCURSOR_THEME", TEXT(ui->cursorTheme)); + environmentSetInt("XCURSOR_SIZE", ui->cursorSize->value()); +} diff --git a/src/mouse.h b/src/mouse.h new file mode 100644 index 0000000..ce14baf --- /dev/null +++ b/src/mouse.h @@ -0,0 +1,25 @@ +#ifndef MOUSE_H +#define MOUSE_H +#include + +QT_BEGIN_NAMESPACE +namespace Ui { +class pageMouse; +} +QT_END_NAMESPACE + +class Mouse : public QWidget +{ + Q_OBJECT + +public: + Mouse(QWidget *parent = nullptr); + ~Mouse(); + + void activate(); + void onApply(); + +private: + Ui::pageMouse *ui; +}; +#endif // MOUSE_H diff --git a/src/mouse.ui b/src/mouse.ui new file mode 100644 index 0000000..11c8b1c --- /dev/null +++ b/src/mouse.ui @@ -0,0 +1,60 @@ + + + pageMouse + + + + 0 + 0 + 251 + 153 + + + + + 6 + + + 6 + + + 6 + + + 6 + + + + + Cursor Theme + + + + + + + + + + Cursor Size + + + + + + + + + + Natural Scroll + + + + + + + + + + +