New power options

This commit is contained in:
Victor Tran 2018-09-11 21:40:28 +10:00
parent 9654a83ca4
commit cf565b3c14
No known key found for this signature in database
GPG key ID: FBA10B22D602BAC1
86 changed files with 14892 additions and 12589 deletions

View file

@ -10,3 +10,7 @@ Plugin::Plugin(QObject *parent) :
QList<StatusCenterPaneObject*> Plugin::availablePanes() {
return panes;
}
void Plugin::loadLanguage(QString language) {
}

View file

@ -13,6 +13,7 @@ class Plugin : public QObject, public StatusCenterPane
explicit Plugin(QObject *parent = 0);
QList<StatusCenterPaneObject*> availablePanes();
void loadLanguage(QString language);
private:
QList<StatusCenterPaneObject*> panes;
};

View file

@ -391,6 +391,7 @@ InfoPaneDropdown::InfoPaneDropdown(WId MainWindowId, QWidget *parent) :
ui->EmphasiseAppSwitch->setChecked(settings.value("notifications/emphasiseApp", true).toBool());
ui->CompactBarSwitch->setChecked(settings.value("bar/compact", false).toBool());
ui->LocationMasterSwitch->setChecked(locationSettings->value("master/master", true).toBool());
ui->powerButtonPressed->setCurrentIndex(settings.value("power/onPowerButtonPressed", 0).toInt());
updateAccentColourBox();
updateRedshiftTime();
on_StatusBarSwitch_toggled(ui->StatusBarSwitch->isChecked());
@ -416,6 +417,18 @@ InfoPaneDropdown::InfoPaneDropdown(WId MainWindowId, QWidget *parent) :
ui->systemGTK3Font->setCurrentFont(QFont(gtk3FontFamily, gtk3FontSize.toInt()));
ui->systemGTK3FontSize->setValue(gtk3FontSize.toInt());
switch (settings.value("power/suspendMode", 0).toInt()) {
case 0:
ui->powerSuspendNormally->setChecked(true);
break;
case 1:
ui->powerSuspendTurnOffScreen->setChecked(true);
break;
case 2:
ui->powerSuspendHibernate->setChecked(true);
break;
}
eventTimer = new QTimer(this);
eventTimer->setInterval(1000);
connect(eventTimer, SIGNAL(timeout()), this, SLOT(processTimer()));
@ -704,6 +717,7 @@ InfoPaneDropdown::InfoPaneDropdown(WId MainWindowId, QWidget *parent) :
} else {
StatusCenterPane* p = qobject_cast<StatusCenterPane*>(plugin);
if (p) {
//p->loadLanguage(QLocale().name());
for (StatusCenterPaneObject* pane : p->availablePanes()) {
//Only load the pane once
if (!loadedPanes.contains(pane->name())) {
@ -3789,6 +3803,10 @@ void InfoPaneDropdown::on_resetDeviceButton_clicked()
void InfoPaneDropdown::changeEvent(QEvent *event) {
if (event->type() == QEvent::LanguageChange) {
ui->retranslateUi(this);
for (StatusCenterPaneObject* pane : pluginObjects.values()) {
pane->message("retranslate");
}
}
QDialog::changeEvent(event);
}
@ -4558,3 +4576,29 @@ void InfoPaneDropdown::on_quietModeCriticalOnly_clicked()
AudioMan->setQuietMode(AudioManager::critical);
ui->quietModeCriticalOnly->setChecked(true);
}
void InfoPaneDropdown::on_powerSuspendNormally_toggled(bool checked)
{
if (checked) {
settings.setValue("power/suspendMode", 0);
}
}
void InfoPaneDropdown::on_powerSuspendTurnOffScreen_toggled(bool checked)
{
if (checked) {
settings.setValue("power/suspendMode", 1);
}
}
void InfoPaneDropdown::on_powerSuspendHibernate_toggled(bool checked)
{
if (checked) {
settings.setValue("power/suspendMode", 2);
}
}
void InfoPaneDropdown::on_powerButtonPressed_currentIndexChanged(int index)
{
settings.setValue("power/onPowerButtonPressed", index);
}

View file

@ -509,6 +509,14 @@ class InfoPaneDropdown : public QDialog
void on_quietModeCriticalOnly_clicked();
void on_powerSuspendNormally_toggled(bool checked);
void on_powerSuspendTurnOffScreen_toggled(bool checked);
void on_powerSuspendHibernate_toggled(bool checked);
void on_powerButtonPressed_currentIndexChanged(int index);
public slots:
void getNetworks();

View file

@ -381,7 +381,7 @@
<item>
<widget class="AnimatedStackedWidget" name="pageStack">
<property name="currentIndex">
<number>0</number>
<number>5</number>
</property>
<widget class="QWidget" name="clockFrame">
<property name="autoFillBackground">
@ -699,14 +699,14 @@
<second>0</second>
<year>1969</year>
<month>8</month>
<day>6</day>
<day>5</day>
</datetime>
</property>
<property name="date">
<date>
<year>1969</year>
<month>8</month>
<day>6</day>
<day>5</day>
</date>
</property>
<property name="displayFormat">
@ -2200,7 +2200,7 @@
</sizepolicy>
</property>
<property name="currentIndex">
<number>7</number>
<number>8</number>
</property>
<widget class="QWidget" name="StartupSettings">
<layout class="QVBoxLayout" name="verticalLayout_9">
@ -2859,8 +2859,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>299</width>
<height>462</height>
<width>683</width>
<height>687</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_54">
@ -4739,6 +4739,12 @@
</item>
<item>
<widget class="Line" name="line_7">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>1</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@ -4839,6 +4845,12 @@
</item>
<item>
<widget class="Line" name="line_9">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>1</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@ -4871,7 +4883,13 @@
<item row="1" column="1">
<widget class="QComboBox" name="powerButtonPressed">
<property name="enabled">
<bool>false</bool>
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item>
<property name="text">
@ -4936,6 +4954,14 @@
<normaloff>.</normaloff>.</iconset>
</property>
</item>
<item>
<property name="text">
<string>Hibernate</string>
</property>
<property name="icon">
<iconset theme="system-suspend-hibernate"/>
</property>
</item>
</widget>
</item>
<item row="0" column="0" colspan="2">
@ -4947,6 +4973,111 @@
</item>
</layout>
</item>
<item>
<widget class="Line" name="line_54">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>1</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_25">
<property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<property name="spacing">
<number>6</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_112">
<property name="text">
<string>When suspending this device</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QWidget" name="widget_2" native="true">
<layout class="QVBoxLayout" name="verticalLayout_59">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QRadioButton" name="powerSuspendNormally">
<property name="text">
<string>Suspend nor&amp;mally</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_113">
<property name="text">
<string>This will save power, but stop everything that you're doing until you wake your device. Recommended for most users</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="powerSuspendTurnOffScreen">
<property name="text">
<string>&amp;Just turn off the screen</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_114">
<property name="text">
<string>This will save a little power but continue to run any tasks you were doing. For example, music will continue playing. When you wake this device, it will wake immediately. Not recommended if you don't have a solid state drive as the drive will not be turned off while you're moving it around. Recommended for tablets and tablet PCs.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="powerSuspendHibernate">
<property name="text">
<string>Hibernate instead</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_115">
<property name="text">
<string>This will save a lot of power but will take a while to wake up again. Everything stops while your device is hibernating.</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_9">
<property name="orientation">

View file

@ -452,12 +452,29 @@ void EndSession(EndSessionWait::shutdownType type) {
break;
}
case EndSessionWait::suspend: {
QList<QVariant> arguments;
arguments.append(true);
//Depending on the suspend mode, do different things
QSettings settings;
switch (settings.value("power/suspendMode", 0).toInt()) {
case 0: { //Suspend Normally
QList<QVariant> arguments;
arguments.append(true);
QDBusMessage message = QDBusMessage::createMethodCall("org.freedesktop.login1", "/org/freedesktop/login1", "org.freedesktop.login1.Manager", "Suspend");
message.setArguments(arguments);
QDBusConnection::systemBus().send(message);
break;
}
case 1: { //Turn off the screen
DBusEvents->LockScreen();
EndSession(EndSessionWait::screenOff);
break;
}
case 2: { //Hibernate
EndSession(EndSessionWait::hibernate);
break;
}
}
QDBusMessage message = QDBusMessage::createMethodCall("org.freedesktop.login1", "/org/freedesktop/login1", "org.freedesktop.login1.Manager", "Suspend");
message.setArguments(arguments);
QDBusConnection::systemBus().send(message);
break;
}
case EndSessionWait::hibernate: {
@ -470,7 +487,17 @@ void EndSession(EndSessionWait::shutdownType type) {
break;
}
case EndSessionWait::screenOff: {
DPMSForceLevel(QX11Info::display(), DPMSModeOff);
CARD16 mode;
BOOL isDpmsOn;
DPMSInfo(QX11Info::display(), &mode, &isDpmsOn);
if (isDpmsOn) {
if (mode == DPMSModeOff) {
DPMSForceLevel(QX11Info::display(), DPMSModeOn);
} else {
DPMSForceLevel(QX11Info::display(), DPMSModeOff);
}
}
break;
}
}

View file

@ -33,6 +33,74 @@ NativeEventFilter::NativeEventFilter(QObject* parent) : QObject(parent)
Hotkeys->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
Hotkeys->setAttribute(Qt::WA_ShowWithoutActivating, true);
powerButtonTimer = new QTimer();
powerButtonTimer->setInterval(500);
connect(powerButtonTimer, &QTimer::timeout, [=] {
powerButtonTimer->stop();
qDebug() << powerButtonCounter;
if (!isEndSessionBoxShowing && powerButtonCounter == 1 && !powerPressed) {
//Perform an action depending on what the user wants
switch (settings.value("power/onPowerButtonPressed", 0).toInt()) {
case 0: { //Ask what to do
isEndSessionBoxShowing = true;
EndSessionWait* endSession;
if (settings.value("input/touch", false).toBool()) {
endSession = new EndSessionWait(EndSessionWait::slideOff);
} else {
endSession = new EndSessionWait(EndSessionWait::ask);
}
endSession->showFullScreen();
endSession->exec();
isEndSessionBoxShowing = false;
break;
}
case 1: { //Power Off
EndSession(EndSessionWait::powerOff);
break;
}
case 2: { //Reboot
EndSession(EndSessionWait::reboot);
break;
}
case 3: { //Log Out
EndSession(EndSessionWait::logout);
break;
}
case 4: { //Suspend
EndSession(EndSessionWait::suspend);
break;
}
case 5: { //Lock
DBusEvents->LockScreen();
break;
}
case 6: { //Turn off screen
EndSession(EndSessionWait::screenOff);
break;
}
case 7: { //Hibernate
EndSession(EndSessionWait::hibernate);
break;
}
}
} else {
isEndSessionBoxShowing = true;
EndSessionWait* endSession;
if (settings.value("input/touch", false).toBool()) {
endSession = new EndSessionWait(EndSessionWait::slideOff);
} else {
endSession = new EndSessionWait(EndSessionWait::ask);
}
endSession->showFullScreen();
endSession->exec();
isEndSessionBoxShowing = false;
}
});
//Capture required keys
XGrabKey(QX11Info::display(), XKeysymToKeycode(QX11Info::display(), XF86XK_MonBrightnessUp), AnyModifier, RootWindow(QX11Info::display(), 0), true, GrabModeAsync, GrabModeAsync);
XGrabKey(QX11Info::display(), XKeysymToKeycode(QX11Info::display(), XF86XK_MonBrightnessDown), AnyModifier, RootWindow(QX11Info::display(), 0), true, GrabModeAsync, GrabModeAsync);
@ -254,6 +322,13 @@ bool NativeEventFilter::nativeEventFilter(const QByteArray &eventType, void *mes
keyboardInterface.call("SetBrightness", kbdBrightness);
Hotkeys->show(QIcon::fromTheme("keyboard-brightness"), tr("Keyboard Brightness"), ((float) kbdBrightness / (float) maxKbdBrightness) * 100);
} else if ((button->detail == XKeysymToKeycode(QX11Info::display(), XF86XK_PowerOff))) {
powerPressed = true;
powerButtonCounter++;
if (!powerButtonTimer->isActive()) {
powerButtonCounter = 1;
powerButtonTimer->start();
}
}
}
} else if (event->response_type == XCB_KEY_RELEASE) {
@ -289,10 +364,12 @@ bool NativeEventFilter::nativeEventFilter(const QByteArray &eventType, void *mes
screenRecorder->start();
}
ignoreSuper = true;
} else if ((button->detail == XKeysymToKeycode(QX11Info::display(), XF86XK_PowerOff)) ||
(button->detail == XKeysymToKeycode(QX11Info::display(), XK_Delete) && (button->state == (ControlMask | Mod1Mask)))) { //Power Off
} else if (button->detail == XKeysymToKeycode(QX11Info::display(), XF86XK_PowerOff)) { //Power Off
powerPressed = false;
} else if (button->detail == XKeysymToKeycode(QX11Info::display(), XK_Delete) && (button->state == (ControlMask | Mod1Mask))) {
if (!isEndSessionBoxShowing) {
isEndSessionBoxShowing = true;
EndSessionWait* endSession;
if (settings.value("input/touch", false).toBool()) {
endSession = new EndSessionWait(EndSessionWait::slideOff);
@ -301,6 +378,7 @@ bool NativeEventFilter::nativeEventFilter(const QByteArray &eventType, void *mes
}
endSession->showFullScreen();
endSession->exec();
isEndSessionBoxShowing = false;
}
} else if (button->detail == XKeysymToKeycode(QX11Info::display(), XF86XK_Sleep)) { //Suspend

View file

@ -74,6 +74,10 @@ private:
QSettings settings;
QSettings* themeSettings = new QSettings("theSuite", "ts-qtplatform");
QTimer* powerButtonTimer = nullptr;
int powerButtonCounter = 0;
bool powerPressed = false;
};
#endif // NATIVEEVENTFILTER_H

View file

@ -214,10 +214,18 @@ TRANSLATIONS += translations/vi_VN.ts \
translations/cy_GB.ts \
translations/fr_FR.ts
qtPrepareTool(LUPDATE, lupdate)
genlang.commands = "$$LUPDATE -no-obsolete -source-language en_US $$_PRO_FILE_"
qtPrepareTool(LRELEASE, lrelease)
rellang.commands = "$$LRELEASE -removeidentical $$_PRO_FILE_"
QMAKE_EXTRA_TARGETS = genlang rellang
PRE_TARGETDEPS = genlang rellang
unix {
target.path = /usr/bin/
translations.files = translations/*
translations.files = translations/*.qm
xsession.path = /usr/share/xsessions
headers.files = statuscenter/statuscenterpane.h statuscenter/statuscenterpaneobject.h

View file

@ -9,6 +9,7 @@ class StatusCenterPane {
virtual ~StatusCenterPane() {}
virtual QList<StatusCenterPaneObject*> availablePanes() = 0;
virtual void loadLanguage(QString language) = 0;
};
#define STATUS_CENTER_PANE_IID "org.thesuite.theshell.statuscenterpane"

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

BIN
shell/translations/fr_FR.qm Normal file

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
<クd<>箆!ソ`。スン

File diff suppressed because it is too large Load diff

BIN
shell/translations/it_IT.qm Normal file

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

BIN
shell/translations/nb_NO.qm Normal file

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

BIN
shell/translations/no_NO.qm Normal file

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

BIN
shell/translations/ro_RO.qm Normal file

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -29,7 +29,7 @@
<item>
<widget class="QStackedWidget" name="stackedWidget">
<property name="currentIndex">
<number>1</number>
<number>0</number>
</property>
<widget class="QWidget" name="page_3">
<layout class="QVBoxLayout" name="verticalLayout_2">

View file

@ -107,6 +107,7 @@ int main(int argc, char *argv[])
QCoreApplication::exit(0);
} else {
//Restart theShell
theShellStdOut.append(tsProcess->readAllStandardError());
monitor->HideSplash();
errorCount++;

View file

@ -23,6 +23,14 @@ DEFINES += QT_DEPRECATED_WARNINGS
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
blueprint {
DEFINES += "BLUEPRINT"
DEFINES += "SHAREDIR=\\\"/usr/share/theshellb/bluetoothpane/\\\""
} else {
DEFINES += "SHAREDIR=\\\"/usr/share/theshell/bluetoothpane/\\\""
}
SOURCES += \
plugin.cpp \
bluetoothmanagement.cpp \
@ -40,13 +48,48 @@ HEADERS += \
transferslistmodel.h
DISTFILES += BluetoothPane.json
TRANSLATIONS += translations/vi_VN.ts \
translations/da_DK.ts \
translations/es_ES.ts \
translations/lt_LT.ts \
translations/nl_NL.ts \
translations/pl_PL.ts \
translations/pt_BR.ts \
translations/ru_RU.ts \
translations/sv_SE.ts \
translations/en_AU.ts \
translations/en_US.ts \
translations/en_GB.ts \
translations/en_NZ.ts \
translations/de_DE.ts \
translations/id_ID.ts \
translations/au_AU.ts \
translations/it_IT.ts \
translations/nb_NO.ts \
translations/no_NO.ts \
translations/ro_RO.ts \
translations/cy_GB.ts \
translations/fr_FR.ts
qtPrepareTool(LUPDATE, lupdate)
genlang.commands = "$$LUPDATE -no-obsolete -source-language en_US $$_PRO_FILE_"
qtPrepareTool(LRELEASE, lrelease)
rellang.commands = "$$LRELEASE -removeidentical $$_PRO_FILE_"
QMAKE_EXTRA_TARGETS = genlang rellang
PRE_TARGETDEPS = genlang rellang
unix {
translations.files = translations/*.qm
blueprint {
target.path = /usr/lib/theshellb/panes/
translations.path = /usr/share/theshellb/bluetoothpane/translations
} else {
target.path = /usr/lib/theshell/panes/
translations.path = /usr/share/theshell/bluetoothpane/translations
}
INSTALLS += target
INSTALLS += target translations
}
FORMS += \

View file

@ -87,7 +87,10 @@ int BluetoothManagement::position() {
}
void BluetoothManagement::message(QString name, QVariantList args) {
if (name == "retranslate") {
qDebug() << "Retranslating";
ui->retranslateUi(this);
}
}
void BluetoothManagement::updateAdapters() {
@ -393,3 +396,4 @@ void BluetoothManagement::on_cancelTransferButton_clicked()
{
currentTransfer.data()->cancel();
}

View file

@ -1,11 +1,25 @@
#include "plugin.h"
#include <QTranslator>
#include <QLocale>
Plugin::Plugin(QObject *parent) :
QObject(parent)
{
translator = new QTranslator;
panes.append(new BluetoothManagement());
}
QList<StatusCenterPaneObject*> Plugin::availablePanes() {
return panes;
}
void Plugin::loadLanguage(QString language) {
translator->load(language, QString(SHAREDIR) + "translations");
QApplication::instance()->installTranslator(translator);
for (StatusCenterPaneObject* pane : panes) {
pane->message("retranslate");
}
}

View file

@ -14,8 +14,11 @@ class Plugin : public QObject, public StatusCenterPane
explicit Plugin(QObject *parent = 0);
QList<StatusCenterPaneObject*> availablePanes();
void loadLanguage(QString language);
private:
QList<StatusCenterPaneObject*> panes;
QTranslator* translator;
};
#endif // PLUGIN_H

View file

@ -0,0 +1 @@
<クd<>箆!ソ`。スン

View file

@ -0,0 +1 @@
<クd<>箆!ソ`。スン

View file

@ -0,0 +1 @@
<クd<>箆!ソ`。スン

Binary file not shown.

View file

@ -0,0 +1 @@
<クd<>箆!ソ`。スン

View file

@ -0,0 +1 @@
<クd<>箆!ソ`。スン

View file

@ -0,0 +1 @@
<クd<>箆!ソ`。スン

View file

@ -0,0 +1 @@
<クd<>箆!ソ`。スン

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1 @@
<クd<>箆!ソ`。スン

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -10,3 +10,7 @@ Plugin::Plugin(QObject *parent) :
QList<StatusCenterPaneObject*> Plugin::availablePanes() {
return panes;
}
void Plugin::loadLanguage(QString language) {
}

View file

@ -15,6 +15,7 @@ class Plugin : public QObject, public StatusCenterPane
explicit Plugin(QObject *parent = 0);
QList<StatusCenterPaneObject*> availablePanes();
void loadLanguage(QString language);
private:
QList<StatusCenterPaneObject*> panes;
};

View file

@ -9,3 +9,7 @@ Plugin::Plugin(QObject* parent) : QObject(parent)
QList<StatusCenterPaneObject*> Plugin::availablePanes() {
return panes;
}
void Plugin::loadLanguage(QString language) {
}

View file

@ -14,6 +14,7 @@ class Plugin : public QObject, public StatusCenterPane
explicit Plugin(QObject* parent = nullptr);
QList<StatusCenterPaneObject*> availablePanes();
void loadLanguage(QString language);
private:
QList<StatusCenterPaneObject*> panes;
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.7.0, 2018-09-01T10:11:00. -->
<!-- Written by QtCreator 4.7.0, 2018-09-10T21:29:12. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>