Skip to content

Commit 11ba10a

Browse files
committed
Added set/get float write and updated mouse page
1 parent 83743cd commit 11ba10a

File tree

9 files changed

+846
-62
lines changed

9 files changed

+846
-62
lines changed

src/maindialog.cpp

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@
2929

3030
MainDialog::MainDialog(QWidget *parent) : QDialog(parent)
3131
{
32-
resize(640, 480);
32+
//resize(640, 480);
3333

3434
QVBoxLayout *verticalLayout = new QVBoxLayout(this);
35-
verticalLayout->setContentsMargins(6, 6, 6, 6);
35+
//verticalLayout->setContentsMargins(6, 6, 6, 6);
3636

3737
QWidget *widget = new QWidget(this);
3838

3939
QHBoxLayout *horizontalLayout = new QHBoxLayout(widget);
40-
horizontalLayout->setContentsMargins(6, 6, 6, 6);
40+
//horizontalLayout->setContentsMargins(6, 6, 6, 6);
4141

4242
// List Widget on the Left
4343
QListWidget *list = new QListWidget(widget);
@@ -59,13 +59,22 @@ MainDialog::MainDialog(QWidget *parent) : QDialog(parent)
5959
item3->setText(tr("Language & Region"));
6060

6161
QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
62-
sizePolicy.setHorizontalStretch(0);
63-
sizePolicy.setVerticalStretch(0);
64-
sizePolicy.setHeightForWidth(list->sizePolicy().hasHeightForWidth());
62+
//sizePolicy.setHorizontalStretch(0);
63+
//sizePolicy.setVerticalStretch(0);
64+
//sizePolicy.setHeightForWidth(list->sizePolicy().hasHeightForWidth());
6565
list->setSizePolicy(sizePolicy);
6666
list->setSizeAdjustPolicy(QAbstractScrollArea::SizeAdjustPolicy::AdjustToContents);
67-
list->setCurrentRow(0);
68-
list->setFixedWidth(list->sizeHintForColumn(0) + 2 * list->frameWidth());
67+
//list->setCurrentRow(0);
68+
//list->setFixedWidth(list->sizeHintForColumn(0) + 2 * list->frameWidth());
69+
70+
list->setViewMode(QListView::IconMode);
71+
list->setMovement(QListView::Static);
72+
list->setResizeMode(QListView::Adjust);
73+
list->setWrapping(true);
74+
list->setIconSize(QSize(48, 48));
75+
list->setWordWrap(true); // prevents text from wrapping inside
76+
list->setUniformItemSizes(true); // keeps all items same layout
77+
6978

7079
horizontalLayout->addWidget(list);
7180

src/maindialog1.cpp

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
#include <QtCore/QVariant>
2+
#include <QtWidgets/QApplication>
3+
#include <QtWidgets/QDialog>
4+
#include <QtWidgets/QDialogButtonBox>
5+
#include <QtWidgets/QHBoxLayout>
6+
#include <QtWidgets/QListWidget>
7+
#include <QtWidgets/QStackedWidget>
8+
#include <QtWidgets/QVBoxLayout>
9+
#include <QtWidgets/QWidget>
10+
#include <language.h>
11+
#include <mouse.h>
12+
#include "appearance.h"
13+
#include "behaviour.h"
14+
15+
#include <QDebug>
16+
#include <QDir>
17+
#include <QFile>
18+
#include <QString>
19+
#include <QStandardPaths>
20+
#include <QTextStream>
21+
#include <string>
22+
#include <unistd.h>
23+
#include "environment.h"
24+
#include "find-themes.h"
25+
#include "log.h"
26+
#include "macros.h"
27+
#include "maindialog.h"
28+
#include "xml.h"
29+
30+
MainDialog::MainDialog(QWidget *parent) : QDialog(parent)
31+
{
32+
//resize(640, 480);
33+
34+
QVBoxLayout *verticalLayout = new QVBoxLayout(this);
35+
//verticalLayout->setContentsMargins(6, 6, 6, 6);
36+
37+
QWidget *widget = new QWidget(this);
38+
39+
QHBoxLayout *horizontalLayout = new QHBoxLayout(widget);
40+
//horizontalLayout->setContentsMargins(6, 6, 6, 6);
41+
42+
// List Widget on the Left
43+
QListWidget *list = new QListWidget(widget);
44+
45+
QListWidgetItem *item0 = new QListWidgetItem(list);
46+
item0->setIcon(QIcon::fromTheme("applications-graphics"));
47+
item0->setText(tr("Appearance"));
48+
49+
QListWidgetItem *item1 = new QListWidgetItem(list);
50+
item1->setIcon(QIcon::fromTheme("preferences-desktop"));
51+
item1->setText(tr("Behaviour"));
52+
53+
QListWidgetItem *item2 = new QListWidgetItem(list);
54+
item2->setIcon(QIcon::fromTheme("input-mouse"));
55+
item2->setText(tr("Mouse & Touchpad"));
56+
57+
QListWidgetItem *item3 = new QListWidgetItem(list);
58+
item3->setIcon(QIcon::fromTheme("preferences-desktop-locale"));
59+
item3->setText(tr("Language & Region"));
60+
61+
QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
62+
//sizePolicy.setHorizontalStretch(0);
63+
//sizePolicy.setVerticalStretch(0);
64+
//sizePolicy.setHeightForWidth(list->sizePolicy().hasHeightForWidth());
65+
list->setSizePolicy(sizePolicy);
66+
list->setSizeAdjustPolicy(QAbstractScrollArea::SizeAdjustPolicy::AdjustToContents);
67+
//list->setCurrentRow(0);
68+
//list->setFixedWidth(list->sizeHintForColumn(0) + 2 * list->frameWidth());
69+
70+
list->setViewMode(QListView::IconMode);
71+
list->setMovement(QListView::Static);
72+
list->setResizeMode(QListView::Adjust);
73+
list->setWrapping(true);
74+
list->setIconSize(QSize(48, 48));
75+
list->setWordWrap(true); // prevents text from wrapping inside
76+
list->setUniformItemSizes(true); // keeps all items same layout
77+
78+
79+
horizontalLayout->addWidget(list);
80+
81+
// The stack containing all the pages
82+
QStackedWidget *stack = new QStackedWidget(widget);
83+
84+
m_pageAppearance = new Appearance();
85+
stack->addWidget(m_pageAppearance);
86+
87+
m_pageBehaviour = new Behaviour();
88+
stack->addWidget(m_pageBehaviour);
89+
90+
m_pageMouse = new Mouse();
91+
stack->addWidget(m_pageMouse);
92+
93+
m_pageLanguage = new Language();
94+
stack->addWidget(m_pageLanguage);
95+
96+
horizontalLayout->addWidget(stack);
97+
98+
verticalLayout->addWidget(widget);
99+
100+
m_buttonBox = new QDialogButtonBox(this);
101+
m_buttonBox->setOrientation(Qt::Orientation::Horizontal);
102+
m_buttonBox->setStandardButtons(QDialogButtonBox::StandardButton::Apply
103+
| QDialogButtonBox::StandardButton::Close);
104+
m_buttonBox->setCenterButtons(false);
105+
106+
verticalLayout->addWidget(m_buttonBox);
107+
108+
// Change pages when list items are clicked
109+
QObject::connect(list, SIGNAL(currentRowChanged(int)), stack, SLOT(setCurrentIndex(int)));
110+
111+
// Close Button
112+
QObject::connect(m_buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
113+
114+
// Apply Button
115+
QObject::connect(m_buttonBox, &QDialogButtonBox::clicked, [&](QAbstractButton *button) {
116+
if (m_buttonBox->standardButton(button) == QDialogButtonBox::Apply) {
117+
onApply();
118+
}
119+
});
120+
121+
activate();
122+
}
123+
124+
MainDialog::~MainDialog()
125+
{
126+
xml_finish();
127+
}
128+
129+
void MainDialog::activate()
130+
{
131+
m_pageAppearance->activate();
132+
m_pageBehaviour->activate();
133+
m_pageMouse->activate();
134+
m_pageLanguage->activate();
135+
}
136+
137+
void MainDialog::onApply()
138+
{
139+
m_pageAppearance->onApply();
140+
m_pageBehaviour->onApply();
141+
m_pageMouse->onApply();
142+
m_pageLanguage->onApply();
143+
144+
// TODO: Get filename in a more consistent way - share common code with main.cpp
145+
std::string config_home = std::getenv("HOME") + std::string("/.config/labwc");
146+
std::string config_dir = std::getenv("LABWC_CONFIG_DIR") ?: config_home;
147+
std::string environment_file = config_dir + "/environment";
148+
149+
xml_save();
150+
environmentSave(environment_file);
151+
152+
/* reconfigure labwc */
153+
if (!fork()) {
154+
execl("/bin/sh", "/bin/sh", "-c", "labwc -r", (void *)NULL);
155+
}
156+
}

src/mouse.cpp

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include "environment.h"
33
#include "find-themes.h"
44
#include "macros.h"
5+
#include "pair.h"
56
#include "settings.h"
67
#include "./ui_mouse.h"
78

@@ -27,12 +28,150 @@ void Mouse::activate()
2728

2829
/* Natural Scroll */
2930
ui->naturalScroll->setChecked(getBool("/labwc_config/libinput/device/naturalScroll"));
31+
32+
/* Left Handed */
33+
ui->leftHanded->setChecked(getBool("/labwc_config/libinput/device/leftHanded"));
34+
35+
/* Pointer Speed */
36+
ui->pointerSpeed->setValue(getFloat("/labwc_config/libinput/device/pointerSpeed"));
37+
38+
/* Accel Profiles */
39+
ui->accelProfile->clear(); // remove 2 empty values created for some reason
40+
41+
QVector<QSharedPointer<Pair>> profiles;
42+
profiles.append(QSharedPointer<Pair>(new Pair("flat", tr("flat"))));
43+
profiles.append(QSharedPointer<Pair>(new Pair("adaptive", tr("adaptive"))));
44+
45+
QString current_profile = getStr("/labwc_config/libinput/device/accelProfile");
46+
int profile_index = -1;
47+
foreach (auto profile, profiles) {
48+
ui->accelProfile->addItem(profile.get()->description(), QVariant(profile.get()->value()));
49+
++profile_index;
50+
if (current_profile == profile.get()->value()) {
51+
ui->accelProfile->setCurrentIndex(profile_index);
52+
}
53+
}
54+
55+
/* Tap to click */
56+
ui->tap->setChecked(getBool("/labwc_config/libinput/device/tap"));
57+
58+
/* Tap Button Map */
59+
ui->tapButtonMap->clear(); // remove 2 empty values created for some reason
60+
61+
QVector<QSharedPointer<Pair>> maps;
62+
maps.append(QSharedPointer<Pair>(new Pair("lrm", tr("lrm"))));
63+
maps.append(QSharedPointer<Pair>(new Pair("lmr", tr("lmr"))));
64+
65+
QString current_map = getStr("/labwc_config/libinput/device/tapButtonMap");
66+
int map_index = -1;
67+
foreach (auto map, maps) {
68+
ui->tapButtonMap->addItem(map.get()->description(), QVariant(map.get()->value()));
69+
++map_index;
70+
if (current_map == map.get()->value()) {
71+
ui->tapButtonMap->setCurrentIndex(map_index);
72+
}
73+
}
74+
75+
/* Tap And Drag */
76+
ui->tapAndDrag->setChecked(getBool("/labwc_config/libinput/device/tapAndDrag"));
77+
78+
/* Drag Lock */
79+
ui->dragLock->setChecked(getBool("/labwc_config/libinput/device/dragLock"));
80+
81+
// Disable it when tapAndDrag is unchecked
82+
ui->dragLock->setEnabled(ui->tapAndDrag->isChecked());
83+
ui->label_dragLock->setEnabled(ui->tapAndDrag->isChecked());
84+
85+
connect(ui->tapAndDrag, &QCheckBox::toggled,ui->dragLock, &QWidget::setEnabled);
86+
connect(ui->tapAndDrag, &QCheckBox::toggled,ui->label_dragLock, &QWidget::setEnabled);
87+
88+
/* 3 Finger Drag */
89+
ui->threeFingerDrag->setChecked(getBool("/labwc_config/libinput/device/threeFingerDrag"));
90+
91+
/* Middle Emulation */
92+
ui->middleEmulation->setChecked(getBool("/labwc_config/libinput/device/middleEmulation"));
93+
94+
/* Disable While Typing */
95+
ui->disableWhileTyping->setChecked(getBool("/labwc_config/libinput/device/disableWhileTyping"));
96+
97+
/* Click Method */
98+
ui->clickMethod->clear();
99+
100+
QVector<QSharedPointer<Pair>> clickmethods;
101+
clickmethods.append(QSharedPointer<Pair>(new Pair("none", tr("none"))));
102+
clickmethods.append(QSharedPointer<Pair>(new Pair("buttonAreas", tr("Button area"))));
103+
clickmethods.append(QSharedPointer<Pair>(new Pair("clickFinger", tr("Clickfinger"))));
104+
105+
QString current_clickmethod = getStr("/labwc_config/libinput/device/clickMethod");
106+
int clickmethod_index = -1;
107+
foreach (auto clickmethod, clickmethods) {
108+
ui->clickMethod->addItem(clickmethod.get()->description(), QVariant(clickmethod.get()->value()));
109+
++clickmethod_index;
110+
if (current_clickmethod == clickmethod.get()->value()) {
111+
ui->clickMethod->setCurrentIndex(clickmethod_index);
112+
}
113+
}
114+
115+
/* Scroll Method */
116+
ui->scrollMethod->clear();
117+
118+
QVector<QSharedPointer<Pair>> scrollmethods;
119+
scrollmethods.append(QSharedPointer<Pair>(new Pair("twoFinger", tr("Two Finger"))));
120+
scrollmethods.append(QSharedPointer<Pair>(new Pair("edge", tr("Edge"))));
121+
scrollmethods.append(QSharedPointer<Pair>(new Pair("none", tr("None"))));
122+
123+
QString current_scrollmethod = getStr("/labwc_config/libinput/device/scrollMethod");
124+
int scrollmethod_index = -1;
125+
foreach (auto scrollmethod, scrollmethods) {
126+
ui->scrollMethod->addItem(scrollmethod.get()->description(), QVariant(scrollmethod.get()->value()));
127+
++scrollmethod_index;
128+
if (current_scrollmethod == scrollmethod.get()->value()) {
129+
ui->scrollMethod->setCurrentIndex(scrollmethod_index);
130+
}
131+
}
132+
133+
/* Send Events Mode */
134+
ui->sendEventsMode->clear();
135+
136+
QVector<QSharedPointer<Pair>> sendeventsmodes;
137+
sendeventsmodes.append(QSharedPointer<Pair>(new Pair("enabled", tr("Enabled"))));
138+
//sendeventsmodes.append(QSharedPointer<Pair>(new Pair("no", tr("no")))); will disable also keyboard
139+
// we cannot write "<touchpad>no" here as we get <sendEventsMode>&lt;touchpad&gt;disabledOnExternalMouse</sendEventsMode>
140+
// implement write to <libinput><category=touchpad> ?
141+
sendeventsmodes.append(QSharedPointer<Pair>(new Pair("disabledOnExternalMouse", tr("Disable with external mouse"))));
142+
143+
QString current_sendeventsmode = getStr("/labwc_config/libinput/device/sendEventsMode");
144+
int sendeventsmode_index = -1;
145+
foreach (auto sendeventsmode, sendeventsmodes) {
146+
ui->sendEventsMode->addItem(sendeventsmode.get()->description(), QVariant(sendeventsmode.get()->value()));
147+
++sendeventsmode_index;
148+
if (current_sendeventsmode == sendeventsmode.get()->value()) {
149+
ui->sendEventsMode->setCurrentIndex(sendeventsmode_index);
150+
}
151+
}
152+
153+
/* Scroll Factor */
154+
ui->scrollFactor->setValue(getFloat("/labwc_config/libinput/device/scrollFactor"));
30155
}
31156

32157
void Mouse::onApply()
33158
{
34159
/* ~/.config/labwc/rc.xml */
35160
setBool("/labwc_config/libinput/device/naturalScroll", ui->naturalScroll->isChecked());
161+
setBool("/labwc_config/libinput/device/leftHanded", ui->leftHanded->isChecked());
162+
setFloat("/labwc_config/libinput/device/pointerSpeed", ui->pointerSpeed->value());
163+
setStr("/labwc_config/libinput/device/accelProfile", DATA(ui->accelProfile));
164+
setBool("/labwc_config/libinput/device/tap", ui->tap->isChecked());
165+
setStr("/labwc_config/libinput/device/tapButtonMap", DATA(ui->tapButtonMap));
166+
setBool("/labwc_config/libinput/device/tapAndDrag", ui->tapAndDrag->isChecked());
167+
setBool("/labwc_config/libinput/device/dragLock", ui->dragLock->isChecked());
168+
setBool("/labwc_config/libinput/device/threeFingerDrag", ui->threeFingerDrag->isChecked());
169+
setBool("/labwc_config/libinput/device/middleEmulation", ui->middleEmulation->isChecked());
170+
setBool("/labwc_config/libinput/device/disableWhileTyping", ui->disableWhileTyping->isChecked());
171+
setStr("/labwc_config/libinput/device/clickMethod", DATA(ui->clickMethod));
172+
setStr("/labwc_config/libinput/device/scrollMethod", DATA(ui->scrollMethod));
173+
setStr("/labwc_config/libinput/device/sendEventsMode", DATA(ui->sendEventsMode));
174+
setFloat("/labwc_config/libinput/device/scrollFactor", ui->scrollFactor->value());
36175

37176
/* ~/.config/labwc/environment */
38177
environmentSet("XCURSOR_THEME", TEXT(ui->cursorTheme));

0 commit comments

Comments
 (0)