Skip to content

Commit 6cbd531

Browse files
committed
0.6.2
1 parent 498aceb commit 6cbd531

File tree

8 files changed

+297
-1
lines changed

8 files changed

+297
-1
lines changed

panes/appletPanes/volume.cpp

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
#include "volume.h"
2+
3+
QJsonObject volumeAppletPaneConfig;
4+
5+
void VolumeAppletPane::readConfig() {
6+
QString homeDirectory = getenv("HOME");
7+
QFile file;
8+
QString data;
9+
10+
file.setFileName(homeDirectory + "/.config/plainDE/config.json");
11+
file.open(QIODevice::ReadOnly | QIODevice::Text);
12+
data = file.readAll();
13+
file.close();
14+
volumeAppletPaneConfig = QJsonDocument::fromJson(data.toUtf8()).object();
15+
}
16+
17+
void VolumeAppletPane::setCurrentSettings(QRadioButton* alsaRadioButton,
18+
QRadioButton* pulseaudioRadioButton) {
19+
QString method = volumeAppletPaneConfig["volumeAdjustMethod"].toString();
20+
if (!method.compare("ALSA")) {
21+
alsaRadioButton->setChecked(true);
22+
}
23+
else if (!method.compare("PulseAudio")) {
24+
pulseaudioRadioButton->setChecked(true);
25+
}
26+
}
27+
28+
void VolumeAppletPane::saveSettings(QRadioButton* alsaRadioButton,
29+
QRadioButton* pulseaudioRadioButton) {
30+
if (alsaRadioButton->isChecked()) {
31+
volumeAppletPaneConfig["volumeAdjustMethod"] = QJsonValue("ALSA");
32+
Pane::saveConfig(volumeAppletPaneConfig);
33+
}
34+
else if (pulseaudioRadioButton->isChecked()) {
35+
volumeAppletPaneConfig["volumeAdjustMethod"] = QJsonValue("PulseAudio");
36+
Pane::saveConfig(volumeAppletPaneConfig);
37+
}
38+
else {
39+
QMessageBox msg;
40+
msg.setWindowTitle("Error");
41+
msg.setText("Please select either ALSA or PulseAudio volume adjust method.");
42+
msg.setStandardButtons(QMessageBox::Ok);
43+
msg.setIcon(QMessageBox::Critical);
44+
msg.exec();
45+
}
46+
}
47+
48+
QWidget* VolumeAppletPane::createUI(Settings* controlCenter) {
49+
readConfig();
50+
51+
// UI
52+
QWidget* volumeAppletPane = new QWidget();
53+
volumeAppletPane->setObjectName("volumeAppletPane");
54+
volumeAppletPane->setWindowTitle("plainControlCenter");
55+
QVBoxLayout* layout = new QVBoxLayout();
56+
layout->setContentsMargins(4, 4, 4, 4);
57+
volumeAppletPane->setLayout(layout);
58+
59+
// Theme
60+
QFile stylesheetReader("/usr/share/plainDE/styles/" + volumeAppletPaneConfig["theme"].toString());
61+
stylesheetReader.open(QIODevice::ReadOnly | QIODevice::Text);
62+
QTextStream styleSheet(&stylesheetReader);
63+
volumeAppletPane->setStyleSheet(styleSheet.readAll());
64+
stylesheetReader.close();
65+
66+
QFont paneFont;
67+
paneFont.setFamily(volumeAppletPaneConfig["fontFamily"].toString());
68+
paneFont.setPointSize(volumeAppletPaneConfig["fontSize"].toInt());
69+
volumeAppletPane->setFont(paneFont);
70+
71+
short width = 400, height = 500;
72+
volumeAppletPane->setGeometry(650, 250, width, height);
73+
74+
QPushButton* backPushButton = new QPushButton("Close");
75+
backPushButton->setIcon(QIcon::fromTheme("go-previous"));
76+
layout->addWidget(backPushButton);
77+
78+
QLabel* adjustMethodLabel = new QLabel("Volume adjust method");
79+
layout->addWidget(adjustMethodLabel);
80+
81+
QRadioButton* alsaRadioButton = new QRadioButton("ALSA");
82+
layout->addWidget(alsaRadioButton);
83+
84+
QRadioButton* pulseaudioRadioButton = new QRadioButton("PulseAudio");
85+
layout->addWidget(pulseaudioRadioButton);
86+
87+
layout->addItem(new QSpacerItem(0,
88+
0,
89+
QSizePolicy::Ignored,
90+
QSizePolicy::Expanding));
91+
92+
QPushButton* revertPushButton = new QPushButton("Revert");
93+
layout->addWidget(revertPushButton);
94+
95+
QPushButton* savePushButton = new QPushButton("Save");
96+
layout->addWidget(savePushButton);
97+
98+
setCurrentSettings(alsaRadioButton, pulseaudioRadioButton);
99+
100+
// Make connections
101+
volumeAppletPane->connect(revertPushButton, &QPushButton::clicked, volumeAppletPane,
102+
[this, alsaRadioButton, pulseaudioRadioButton]() {
103+
setCurrentSettings(alsaRadioButton,
104+
pulseaudioRadioButton);
105+
});
106+
107+
volumeAppletPane->connect(savePushButton, &QPushButton::clicked, volumeAppletPane,
108+
[this, alsaRadioButton, pulseaudioRadioButton]() {
109+
saveSettings(alsaRadioButton,
110+
pulseaudioRadioButton);
111+
});
112+
volumeAppletPane->connect(backPushButton, &QPushButton::clicked, volumeAppletPane,
113+
[this, volumeAppletPane, controlCenter]() {
114+
controlCenter->mVolumeWidgetVisible = false;
115+
delete volumeAppletPane;
116+
delete this;
117+
});
118+
119+
return volumeAppletPane;
120+
}

panes/appletPanes/volume.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#ifndef VOLUMEAPPLETPANE_H
2+
#define VOLUMEAPPLETPANE_H
3+
4+
#include <QWidget>
5+
#include <QLabel>
6+
#include <QRadioButton>
7+
#include <QPushButton>
8+
#include <QJsonObject>
9+
#include <QString>
10+
#include <QFile>
11+
#include <QJsonDocument>
12+
13+
#include "../../settings.h"
14+
#include "../../pane.h"
15+
16+
17+
class VolumeAppletPane {
18+
public:
19+
void readConfig();
20+
void setCurrentSettings(QRadioButton* alsaRadioButton,
21+
QRadioButton* pulseaudioRadioButton);
22+
void saveSettings(QRadioButton* alsaRadioButton,
23+
QRadioButton* pulseaudioRadioButton);
24+
QWidget* createUI(Settings* controlCenter);
25+
};
26+
27+
#endif // VOLUMEAPPLETPANE_H

panes/appletPanes/workspaces.cpp

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
#include "workspaces.h"
2+
3+
QJsonObject workspacesAppletPaneConfig;
4+
5+
void WorkspacesAppletPane::readConfig() {
6+
QString homeDirectory = getenv("HOME");
7+
QFile file;
8+
QString data;
9+
10+
file.setFileName(homeDirectory + "/.config/plainDE/config.json");
11+
file.open(QIODevice::ReadOnly | QIODevice::Text);
12+
data = file.readAll();
13+
file.close();
14+
workspacesAppletPaneConfig = QJsonDocument::fromJson(data.toUtf8()).object();
15+
}
16+
17+
void WorkspacesAppletPane::setCurrentSettings(QCheckBox* showDesktopNamesCheckBox) {
18+
if (workspacesAppletPaneConfig["showDesktopNames"].toBool()) {
19+
showDesktopNamesCheckBox->setChecked(true);
20+
}
21+
else {
22+
showDesktopNamesCheckBox->setChecked(false);
23+
}
24+
}
25+
26+
void WorkspacesAppletPane::saveSettings(QCheckBox* showDesktopNamesCheckBox) {
27+
if (showDesktopNamesCheckBox->isChecked()) {
28+
workspacesAppletPaneConfig["showDesktopNames"] = QJsonValue(true);
29+
}
30+
else {
31+
workspacesAppletPaneConfig["showDesktopNames"] = QJsonValue(false);
32+
}
33+
Pane::saveConfig(workspacesAppletPaneConfig);
34+
}
35+
36+
QWidget* WorkspacesAppletPane::createUI(Settings* controlCenter) {
37+
readConfig();
38+
39+
// UI
40+
QWidget* workspacesAppletPane = new QWidget();
41+
workspacesAppletPane->setObjectName("workspacesAppletPane");
42+
workspacesAppletPane->setWindowTitle("plainControlCenter");
43+
QVBoxLayout* layout = new QVBoxLayout();
44+
layout->setContentsMargins(4, 4, 4, 4);
45+
workspacesAppletPane->setLayout(layout);
46+
47+
// Theme
48+
QFile stylesheetReader("/usr/share/plainDE/styles/" + workspacesAppletPaneConfig["theme"].toString());
49+
stylesheetReader.open(QIODevice::ReadOnly | QIODevice::Text);
50+
QTextStream styleSheet(&stylesheetReader);
51+
workspacesAppletPane->setStyleSheet(styleSheet.readAll());
52+
stylesheetReader.close();
53+
54+
QFont paneFont;
55+
paneFont.setFamily(workspacesAppletPaneConfig["fontFamily"].toString());
56+
paneFont.setPointSize(workspacesAppletPaneConfig["fontSize"].toInt());
57+
workspacesAppletPane->setFont(paneFont);
58+
59+
short width = 400, height = 500;
60+
workspacesAppletPane->setGeometry(650, 250, width, height);
61+
62+
QPushButton* backPushButton = new QPushButton("Close");
63+
backPushButton->setIcon(QIcon::fromTheme("go-previous"));
64+
layout->addWidget(backPushButton);
65+
66+
QCheckBox* showDesktopNamesCheckBox = new QCheckBox("Show desktop names");
67+
layout->addWidget(showDesktopNamesCheckBox);
68+
69+
layout->addItem(new QSpacerItem(0,
70+
0,
71+
QSizePolicy::Ignored,
72+
QSizePolicy::Expanding));
73+
74+
QPushButton* revertPushButton = new QPushButton("Revert");
75+
layout->addWidget(revertPushButton);
76+
77+
QPushButton* savePushButton = new QPushButton("Save");
78+
layout->addWidget(savePushButton);
79+
80+
setCurrentSettings(showDesktopNamesCheckBox);
81+
82+
// Make connections
83+
workspacesAppletPane->connect(revertPushButton, &QPushButton::clicked, workspacesAppletPane,
84+
[this, showDesktopNamesCheckBox]() {
85+
setCurrentSettings(showDesktopNamesCheckBox);
86+
});
87+
88+
workspacesAppletPane->connect(savePushButton, &QPushButton::clicked, workspacesAppletPane,
89+
[this, showDesktopNamesCheckBox]() {
90+
saveSettings(showDesktopNamesCheckBox);
91+
});
92+
workspacesAppletPane->connect(backPushButton, &QPushButton::clicked, workspacesAppletPane,
93+
[this, workspacesAppletPane, controlCenter]() {
94+
controlCenter->mWorkspacesWidgetVisible = false;
95+
delete workspacesAppletPane;
96+
delete this;
97+
});
98+
99+
return workspacesAppletPane;
100+
}

panes/appletPanes/workspaces.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#ifndef WORKSPACESAPPLETPANE_H
2+
#define WORKSPACESAPPLETPANE_H
3+
4+
#include <QWidget>
5+
#include <QLabel>
6+
#include <QCheckBox>
7+
#include <QPushButton>
8+
#include <QJsonObject>
9+
#include <QString>
10+
#include <QFile>
11+
#include <QJsonDocument>
12+
13+
#include "../../settings.h"
14+
#include "../../pane.h"
15+
16+
class WorkspacesAppletPane {
17+
public:
18+
void readConfig();
19+
void setCurrentSettings(QCheckBox* showDesktopNamesCheckBox);
20+
void saveSettings(QCheckBox* showDesktopNamesCheckBox);
21+
QWidget* createUI(Settings* controlCenter);
22+
};
23+
24+
#endif // WORKSPACESAPPLETPANE_H

panes/panels.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,22 @@ PanelsPane::PanelsPane(QWidget *parent, Settings* controlCenter) :
541541
controlCenter->layout()->addWidget(userMenuAppletWidget);
542542
}
543543
}
544+
else if (applet == "volume") {
545+
if (!controlCenter->mVolumeWidgetVisible) {
546+
controlCenter->mVolumeWidgetVisible = true;
547+
mVolumeAppletPane = new VolumeAppletPane;
548+
QWidget* volumeAppletWidget = mVolumeAppletPane->createUI(controlCenter);
549+
controlCenter->layout()->addWidget(volumeAppletWidget);
550+
}
551+
}
552+
else if (applet == "workspaces") {
553+
if (!controlCenter->mWorkspacesWidgetVisible) {
554+
controlCenter->mWorkspacesWidgetVisible = true;
555+
mWorkspacesAppletPane = new WorkspacesAppletPane;
556+
QWidget* workspacesAppletWidget = mWorkspacesAppletPane->createUI(controlCenter);
557+
controlCenter->layout()->addWidget(workspacesAppletWidget);
558+
}
559+
}
544560
else {
545561
QMessageBox msg;
546562
msg.setWindowTitle("Information");

panes/panels.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
#include "appletPanes/winlist.h"
1111
#include "appletPanes/usermenu.h"
1212
#include "appletPanes/clioutput.h"
13+
#include "appletPanes/volume.h"
14+
#include "appletPanes/workspaces.h"
1315

1416
namespace Ui {
1517
class PanelsPane;
@@ -30,7 +32,8 @@ class PanelsPane : public QWidget {
3032
LocalIPv4AppletPane* mLocalIPv4AppletPane;
3133
WinListAppletPane* mWinListAppletPane;
3234
UserMenuAppletPane* mUserMenuAppletPane;
33-
35+
VolumeAppletPane* mVolumeAppletPane;
36+
WorkspacesAppletPane* mWorkspacesAppletPane;
3437

3538

3639
private:

plainControlCenter.pro

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ SOURCES += \
1919
panes/appletPanes/datetime.cpp \
2020
panes/appletPanes/localipv4.cpp \
2121
panes/appletPanes/usermenu.cpp \
22+
panes/appletPanes/volume.cpp \
2223
panes/appletPanes/winlist.cpp \
24+
panes/appletPanes/workspaces.cpp \
2325
panes/autostart.cpp \
2426
panes/keyboard/keyboard.cpp \
2527
panes/keyboard/layoutdialog.cpp \
@@ -34,7 +36,9 @@ HEADERS += \
3436
panes/appletPanes/datetime.h \
3537
panes/appletPanes/localipv4.h \
3638
panes/appletPanes/usermenu.h \
39+
panes/appletPanes/volume.h \
3740
panes/appletPanes/winlist.h \
41+
panes/appletPanes/workspaces.h \
3842
panes/autostart.h \
3943
panes/keyboard/keyboard.h \
4044
panes/keyboard/layoutdialog.h \

settings.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ class Settings : public QWidget {
2424
bool mWinListWidgetVisible = false;
2525
bool mUserMenuWidgetVisible = false;
2626
bool mCLIOutputWidgetVisible = false;
27+
bool mVolumeWidgetVisible = false;
28+
bool mWorkspacesWidgetVisible = false;
2729
};
2830

2931
#endif // SETTINGS_H

0 commit comments

Comments
 (0)