mirror of
https://github.com/vicr123/theshell.git
synced 2025-01-22 11:52:01 -05:00
Plugins can now add functionality to the Status Center and System
Settings
This commit is contained in:
parent
21ce5bf562
commit
032ab7cd9f
19 changed files with 626 additions and 117 deletions
|
@ -674,6 +674,76 @@ InfoPaneDropdown::InfoPaneDropdown(WId MainWindowId, QWidget *parent) :
|
|||
slice2.start();
|
||||
});
|
||||
|
||||
//Load plugins
|
||||
#ifdef BLUEPRINT
|
||||
QDir pluginsDir("/usr/lib/theshellb/panes");
|
||||
#else
|
||||
QDir pluginsDir("/usr/lib/theshell/panes");
|
||||
#endif
|
||||
|
||||
QDirIterator pluginsIterator(pluginsDir, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
|
||||
|
||||
QJsonArray errors;
|
||||
|
||||
while (pluginsIterator.hasNext()) {
|
||||
pluginsIterator.next();
|
||||
if (pluginsIterator.fileInfo().suffix() != "so" && pluginsIterator.fileInfo().suffix() != "a") continue;
|
||||
QPluginLoader loader(pluginsIterator.filePath());
|
||||
QObject* plugin = loader.instance();
|
||||
if (plugin == nullptr) {
|
||||
QJsonObject metadata = loader.metaData();
|
||||
if (!metadata.contains("name")) {
|
||||
metadata.insert("name", pluginsIterator.fileName());
|
||||
}
|
||||
metadata.insert("error", loader.errorString());
|
||||
errors.append(metadata);
|
||||
} else {
|
||||
StatusCenterPane* p = qobject_cast<StatusCenterPane*>(plugin);
|
||||
if (p) {
|
||||
for (StatusCenterPaneObject* pane : p->availablePanes()) {
|
||||
if (pane->type().testFlag(StatusCenterPaneObject::Informational)) {
|
||||
ClickableLabel* label = new ClickableLabel(this);
|
||||
label->setText(pane->name());
|
||||
ui->InformationalPluginsLayout->addWidget(label);
|
||||
|
||||
ui->pageStack->insertWidget(ui->pageStack->count() - 1, pane->mainWidget());
|
||||
pane->mainWidget()->setAutoFillBackground(true);
|
||||
|
||||
connect(label, &ClickableLabel::clicked, [=] {
|
||||
ui->pageStack->setCurrentWidget(pane->mainWidget());
|
||||
});
|
||||
}
|
||||
|
||||
if (pane->type().testFlag(StatusCenterPaneObject::Setting)) {
|
||||
QListWidgetItem* item = new QListWidgetItem();
|
||||
item->setText(pane->name());
|
||||
item->setIcon(pane->settingAttributes.icon);
|
||||
ui->settingsList->insertItem(ui->settingsList->count() - 3, item);
|
||||
|
||||
ui->settingsTabs->insertWidget(ui->settingsTabs->count() - 3, pane->mainWidget());
|
||||
pane->mainWidget()->setAutoFillBackground(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (errors.count() == 0) {
|
||||
ui->settingsTabs->removeWidget(ui->UnavailablePanesPage);
|
||||
delete ui->settingsList->takeItem(ui->settingsList->count() - 3);
|
||||
} else {
|
||||
ui->settingsUnavailableTable->setColumnCount(2);
|
||||
ui->settingsUnavailableTable->setRowCount(errors.count());
|
||||
ui->settingsUnavailableTable->setHorizontalHeaderLabels(QStringList() << "Name" << "Reason");
|
||||
ui->settingsUnavailableTable->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
|
||||
ui->settingsUnavailableTable->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch);
|
||||
for (int i = 0; i < errors.count(); i++) {
|
||||
QJsonObject o = errors.at(i).toObject();
|
||||
ui->settingsUnavailableTable->setItem(i, 0, new QTableWidgetItem(o.value("name").toString()));
|
||||
ui->settingsUnavailableTable->setItem(i, 1, new QTableWidgetItem(o.value("error").toString()));
|
||||
}
|
||||
}
|
||||
|
||||
updateStruts();
|
||||
updateAutostart();
|
||||
updateDSTNotification();
|
||||
|
|
|
@ -68,6 +68,8 @@
|
|||
#include "apps/appslistmodel.h"
|
||||
#include <QSpinBox>
|
||||
#include <polkit-qt5-1/PolkitQt1/Authority>
|
||||
#include <QPluginLoader>
|
||||
#include "statuscenter/statuscenterpane.h"
|
||||
|
||||
class UPowerDBus;
|
||||
|
||||
|
|
|
@ -118,42 +118,46 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="ClickableLabel" name="clockLabel">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Clock</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="ClickableLabel" name="batteryLabel">
|
||||
<property name="text">
|
||||
<string>System Status</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="ClickableLabel" name="networkLabel">
|
||||
<property name="text">
|
||||
<string>Network</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="ClickableLabel" name="notificationsLabel">
|
||||
<property name="text">
|
||||
<string>Notifications</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="ClickableLabel" name="kdeconnectLabel">
|
||||
<property name="text">
|
||||
<string>KDE Connect</string>
|
||||
</property>
|
||||
</widget>
|
||||
<layout class="QHBoxLayout" name="InformationalPluginsLayout">
|
||||
<item>
|
||||
<widget class="ClickableLabel" name="clockLabel">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Clock</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="ClickableLabel" name="batteryLabel">
|
||||
<property name="text">
|
||||
<string>System Status</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="ClickableLabel" name="networkLabel">
|
||||
<property name="text">
|
||||
<string>Network</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="ClickableLabel" name="notificationsLabel">
|
||||
<property name="text">
|
||||
<string>Notifications</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="ClickableLabel" name="kdeconnectLabel">
|
||||
<property name="text">
|
||||
<string>KDE Connect</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_6">
|
||||
|
@ -689,14 +693,14 @@
|
|||
<second>0</second>
|
||||
<year>1969</year>
|
||||
<month>8</month>
|
||||
<day>17</day>
|
||||
<day>14</day>
|
||||
</datetime>
|
||||
</property>
|
||||
<property name="date">
|
||||
<date>
|
||||
<year>1969</year>
|
||||
<month>8</month>
|
||||
<day>17</day>
|
||||
<day>14</day>
|
||||
</date>
|
||||
</property>
|
||||
<property name="displayFormat">
|
||||
|
@ -2097,6 +2101,14 @@
|
|||
<normaloff>.</normaloff>.</iconset>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Unavailable Panes</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="dialog-warning"/>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Advanced</string>
|
||||
|
@ -2144,7 +2156,7 @@
|
|||
</sizepolicy>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>15</number>
|
||||
<number>14</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="StartupSettings">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_9">
|
||||
|
@ -6337,6 +6349,86 @@ Items that will be kept if you choose to keep files:
|
|||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="UnavailablePanesPage">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_58">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<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="QLabel" name="label_110">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>15</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Unavailable Panes</string>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line_52">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>1</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_111">
|
||||
<property name="text">
|
||||
<string>There were errors loading the following items:</string>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line_53">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>1</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTableWidget" name="settingsUnavailableTable">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<attribute name="verticalHeaderVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="DangerSettings">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_48">
|
||||
<property name="spacing">
|
||||
|
@ -6772,7 +6864,8 @@ Items that will be kept if you choose to keep files:
|
|||
<string>Website</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="text-html"/>
|
||||
<iconset theme="text-html">
|
||||
<normaloff>.</normaloff>.</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -6782,7 +6875,8 @@ Items that will be kept if you choose to keep files:
|
|||
<string>File Bug</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="tools-report-bug"/>
|
||||
<iconset theme="tools-report-bug">
|
||||
<normaloff>.</normaloff>.</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -6792,7 +6886,8 @@ Items that will be kept if you choose to keep files:
|
|||
<string>Sources</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="commit"/>
|
||||
<iconset theme="commit">
|
||||
<normaloff>.</normaloff>.</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -6915,14 +7010,6 @@ Items that will be kept if you choose to keep files:
|
|||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>ClickableLabel</class>
|
||||
<extends>QLabel</extends>
|
||||
<header>clickablelabel.h</header>
|
||||
<slots>
|
||||
<signal>clicked()</signal>
|
||||
</slots>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>AnimatedStackedWidget</class>
|
||||
<extends>QStackedWidget</extends>
|
||||
|
@ -6938,6 +7025,14 @@ Items that will be kept if you choose to keep files:
|
|||
<signal>networkAvailable(bool)</signal>
|
||||
</slots>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>ClickableLabel</class>
|
||||
<extends>QLabel</extends>
|
||||
<header>clickablelabel.h</header>
|
||||
<slots>
|
||||
<signal>clicked()</signal>
|
||||
</slots>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>Switch</class>
|
||||
<extends>QPushButton</extends>
|
||||
|
|
|
@ -66,7 +66,7 @@ DBusSignals* dbusSignals = NULL;
|
|||
QSettings::Format desktopFileFormat;
|
||||
ScreenRecorder* screenRecorder = nullptr;
|
||||
|
||||
#define ONBOARDING_VERSION 5
|
||||
#define ONBOARDING_VERSION 6
|
||||
|
||||
void raise_signal(QString message) {
|
||||
//Clean up required stuff
|
||||
|
|
|
@ -15,7 +15,7 @@ unix {
|
|||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
DEFINES += TS_VERSION='\\"8.0\\"'
|
||||
DEFINES += TS_VERSION='\\"8.1\\"'
|
||||
|
||||
unix {
|
||||
QT += thelib x11extras
|
||||
|
@ -153,7 +153,9 @@ HEADERS += mainwindow.h \
|
|||
location/locationrequestdialog.h \
|
||||
agent_adaptor.h \
|
||||
locktypes/mousepassword.h \
|
||||
notificationsWidget/mediaplayernotification.h
|
||||
notificationsWidget/mediaplayernotification.h \
|
||||
statuscenter/statuscenterpane.h \
|
||||
statuscenter/statuscenterpaneobject.h
|
||||
|
||||
FORMS += mainwindow.ui \
|
||||
menu.ui \
|
||||
|
|
17
shell/statuscenter/statuscenterpane.h
Normal file
17
shell/statuscenter/statuscenterpane.h
Normal file
|
@ -0,0 +1,17 @@
|
|||
#ifndef STATUSCENTERPANE_H
|
||||
#define STATUSCENTERPANE_H
|
||||
|
||||
#include <QList>
|
||||
#include "statuscenterpaneobject.h"
|
||||
|
||||
class StatusCenterPane {
|
||||
public:
|
||||
virtual ~StatusCenterPane() {}
|
||||
|
||||
virtual QList<StatusCenterPaneObject*> availablePanes() = 0;
|
||||
};
|
||||
|
||||
#define STATUS_CENTER_PANE_IID "org.thesuite.theshell.statuscenterpane"
|
||||
Q_DECLARE_INTERFACE(StatusCenterPane, STATUS_CENTER_PANE_IID)
|
||||
|
||||
#endif // STATUSCENTERPANE_H
|
38
shell/statuscenter/statuscenterpaneobject.h
Normal file
38
shell/statuscenter/statuscenterpaneobject.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
#ifndef STATUSCENTERPANEOBJECT_H
|
||||
#define STATUSCENTERPANEOBJECT_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QWidget>
|
||||
#include <QIcon>
|
||||
|
||||
struct InformationalStatusCenterPaneObjectAttributes {
|
||||
QColor lightColor;
|
||||
QColor darkColor;
|
||||
};
|
||||
|
||||
struct SettingStatusCenterPaneObjectAttributes {
|
||||
QIcon icon;
|
||||
};
|
||||
|
||||
class StatusCenterPaneObject
|
||||
{
|
||||
public:
|
||||
enum StatusPaneType {
|
||||
Informational,
|
||||
Setting
|
||||
};
|
||||
Q_DECLARE_FLAGS(StatusPaneTypes, StatusPaneType)
|
||||
|
||||
~StatusCenterPaneObject() {}
|
||||
|
||||
virtual QWidget* mainWidget() = 0;
|
||||
virtual QString name() = 0;
|
||||
virtual StatusPaneTypes type() = 0;
|
||||
virtual int position() = 0;
|
||||
InformationalStatusCenterPaneObjectAttributes informationalAttributes;
|
||||
SettingStatusCenterPaneObjectAttributes settingAttributes;
|
||||
};
|
||||
|
||||
Q_DECLARE_OPERATORS_FOR_FLAGS(StatusCenterPaneObject::StatusPaneTypes)
|
||||
|
||||
#endif // STATUSCENTERPANEOBJECT_H
|
73
statuscenter/PrinterPane/.gitignore
vendored
Normal file
73
statuscenter/PrinterPane/.gitignore
vendored
Normal file
|
@ -0,0 +1,73 @@
|
|||
# This file is used to ignore files which are generated
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
*~
|
||||
*.autosave
|
||||
*.a
|
||||
*.core
|
||||
*.moc
|
||||
*.o
|
||||
*.obj
|
||||
*.orig
|
||||
*.rej
|
||||
*.so
|
||||
*.so.*
|
||||
*_pch.h.cpp
|
||||
*_resource.rc
|
||||
*.qm
|
||||
.#*
|
||||
*.*#
|
||||
core
|
||||
!core/
|
||||
tags
|
||||
.DS_Store
|
||||
.directory
|
||||
*.debug
|
||||
Makefile*
|
||||
*.prl
|
||||
*.app
|
||||
moc_*.cpp
|
||||
ui_*.h
|
||||
qrc_*.cpp
|
||||
Thumbs.db
|
||||
*.res
|
||||
*.rc
|
||||
/.qmake.cache
|
||||
/.qmake.stash
|
||||
|
||||
# qtcreator generated files
|
||||
*.pro.user*
|
||||
|
||||
# xemacs temporary files
|
||||
*.flc
|
||||
|
||||
# Vim temporary files
|
||||
.*.swp
|
||||
|
||||
# Visual Studio generated files
|
||||
*.ib_pdb_index
|
||||
*.idb
|
||||
*.ilk
|
||||
*.pdb
|
||||
*.sln
|
||||
*.suo
|
||||
*.vcproj
|
||||
*vcproj.*.*.user
|
||||
*.ncb
|
||||
*.sdf
|
||||
*.opensdf
|
||||
*.vcxproj
|
||||
*vcxproj.*
|
||||
|
||||
# MinGW generated files
|
||||
*.Debug
|
||||
*.Release
|
||||
|
||||
# Python byte code
|
||||
*.pyc
|
||||
|
||||
# Binaries
|
||||
# --------
|
||||
*.dll
|
||||
*.exe
|
||||
|
32
statuscenter/PrinterPane/PrinterPane.pro
Normal file
32
statuscenter/PrinterPane/PrinterPane.pro
Normal file
|
@ -0,0 +1,32 @@
|
|||
TEMPLATE = lib
|
||||
CONFIG += plugin
|
||||
QT += widgets
|
||||
TARGET = tsprint
|
||||
|
||||
LIBS += -lcups
|
||||
|
||||
INCLUDEPATH += ../../shell/statuscenter/
|
||||
|
||||
HEADERS += \
|
||||
plugin.h \
|
||||
printermanagement.h
|
||||
|
||||
SOURCES += \
|
||||
plugin.cpp \
|
||||
printermanagement.cpp
|
||||
|
||||
unix {
|
||||
blueprint {
|
||||
target.path = /usr/lib/theshellb/panes/
|
||||
} else {
|
||||
target.path = /usr/lib/theshell/panes/
|
||||
}
|
||||
|
||||
INSTALLS += target
|
||||
}
|
||||
|
||||
FORMS += \
|
||||
printermanagement.ui
|
||||
|
||||
DISTFILES += \
|
||||
metadata.json
|
3
statuscenter/PrinterPane/metadata.json
Normal file
3
statuscenter/PrinterPane/metadata.json
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"name": "Printers"
|
||||
}
|
11
statuscenter/PrinterPane/plugin.cpp
Normal file
11
statuscenter/PrinterPane/plugin.cpp
Normal file
|
@ -0,0 +1,11 @@
|
|||
#include "plugin.h"
|
||||
|
||||
Plugin::Plugin(QObject* parent) : QObject(parent)
|
||||
{
|
||||
PrinterManagement* obj = new PrinterManagement();
|
||||
panes.append(obj);
|
||||
}
|
||||
|
||||
QList<StatusCenterPaneObject*> Plugin::availablePanes() {
|
||||
return panes;
|
||||
}
|
21
statuscenter/PrinterPane/plugin.h
Normal file
21
statuscenter/PrinterPane/plugin.h
Normal file
|
@ -0,0 +1,21 @@
|
|||
#ifndef PLUGIN_H
|
||||
#define PLUGIN_H
|
||||
|
||||
#include <statuscenterpane.h>
|
||||
#include <printermanagement.h>
|
||||
|
||||
class Plugin : public QObject, public StatusCenterPane
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID STATUS_CENTER_PANE_IID FILE "metadata.json")
|
||||
Q_INTERFACES(StatusCenterPane)
|
||||
|
||||
public:
|
||||
explicit Plugin(QObject* parent = nullptr);
|
||||
|
||||
QList<StatusCenterPaneObject*> availablePanes();
|
||||
private:
|
||||
QList<StatusCenterPaneObject*> panes;
|
||||
};
|
||||
|
||||
#endif // PLUGIN_H
|
32
statuscenter/PrinterPane/printermanagement.cpp
Normal file
32
statuscenter/PrinterPane/printermanagement.cpp
Normal file
|
@ -0,0 +1,32 @@
|
|||
#include "printermanagement.h"
|
||||
#include "ui_printermanagement.h"
|
||||
|
||||
PrinterManagement::PrinterManagement(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::PrinterManagement)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
this->settingAttributes.icon = QIcon::fromTheme("printer");
|
||||
}
|
||||
|
||||
PrinterManagement::~PrinterManagement()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
QString PrinterManagement::name() {
|
||||
return "Printers";
|
||||
}
|
||||
|
||||
PrinterManagement::StatusPaneTypes PrinterManagement::type() {
|
||||
return Setting;
|
||||
}
|
||||
|
||||
QWidget* PrinterManagement::mainWidget() {
|
||||
return this;
|
||||
}
|
||||
|
||||
int PrinterManagement::position() {
|
||||
return 900;
|
||||
}
|
29
statuscenter/PrinterPane/printermanagement.h
Normal file
29
statuscenter/PrinterPane/printermanagement.h
Normal file
|
@ -0,0 +1,29 @@
|
|||
#ifndef PRINTERMANAGEMENT_H
|
||||
#define PRINTERMANAGEMENT_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <cups/cups.h>
|
||||
#include <statuscenterpaneobject.h>
|
||||
|
||||
namespace Ui {
|
||||
class PrinterManagement;
|
||||
}
|
||||
|
||||
class PrinterManagement : public QWidget, public StatusCenterPaneObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit PrinterManagement(QWidget *parent = 0);
|
||||
~PrinterManagement();
|
||||
|
||||
QWidget* mainWidget();
|
||||
QString name();
|
||||
StatusPaneTypes type();
|
||||
int position();
|
||||
|
||||
private:
|
||||
Ui::PrinterManagement *ui;
|
||||
};
|
||||
|
||||
#endif // PRINTERMANAGEMENT_H
|
77
statuscenter/PrinterPane/printermanagement.ui
Normal file
77
statuscenter/PrinterPane/printermanagement.ui
Normal file
|
@ -0,0 +1,77 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>PrinterManagement</class>
|
||||
<widget class="QWidget" name="PrinterManagement">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<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="QLabel" name="label">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>15</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Printers</string>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>1</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
4
statuscenter/statuscenter.pro
Normal file
4
statuscenter/statuscenter.pro
Normal file
|
@ -0,0 +1,4 @@
|
|||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS += \
|
||||
PrinterPane
|
|
@ -7,7 +7,10 @@ SUBDIRS += \
|
|||
shell \
|
||||
startsession \
|
||||
polkitagent \
|
||||
mousepass
|
||||
mousepass \
|
||||
statuscenter
|
||||
|
||||
statuscenter.depends = shell
|
||||
|
||||
blueprint {
|
||||
message(Configuring theShell to be built as blueprint)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 4.6.2, 2018-07-01T19:12:14. -->
|
||||
<!-- Written by QtCreator 4.6.2, 2018-07-03T12:09:02. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
|
@ -64,7 +64,7 @@
|
|||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{0165bd08-f8f7-40a8-9b5a-0fb153c311ea}</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">3</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/victor/Documents/Apps/build-theShell-Desktop-Debug</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
|
@ -261,64 +261,6 @@
|
|||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
||||
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
||||
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
||||
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
|
||||
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
||||
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
||||
<value type="int">0</value>
|
||||
<value type="int">1</value>
|
||||
<value type="int">2</value>
|
||||
<value type="int">3</value>
|
||||
<value type="int">4</value>
|
||||
<value type="int">5</value>
|
||||
<value type="int">6</value>
|
||||
<value type="int">7</value>
|
||||
<value type="int">8</value>
|
||||
<value type="int">9</value>
|
||||
<value type="int">10</value>
|
||||
<value type="int">11</value>
|
||||
<value type="int">12</value>
|
||||
<value type="int">13</value>
|
||||
<value type="int">14</value>
|
||||
</valuelist>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">shell</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/victor/Documents/Apps/theShell/shell/shell.pro</value>
|
||||
<value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments">-s -a --debug --no-wm</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">shell/shell.pro</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/victor/Documents/Apps/build-theShell-Desktop-Debug/shell</value>
|
||||
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
|
||||
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
||||
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
||||
|
@ -376,7 +318,7 @@
|
|||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.2">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
|
||||
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
||||
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
||||
|
@ -434,7 +376,7 @@
|
|||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.3">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.2">
|
||||
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
||||
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
||||
|
@ -492,6 +434,64 @@
|
|||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.3">
|
||||
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
||||
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
||||
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
||||
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">2</value>
|
||||
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
||||
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.ShowReachable">true</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
||||
<value type="int">0</value>
|
||||
<value type="int">1</value>
|
||||
<value type="int">2</value>
|
||||
<value type="int">3</value>
|
||||
<value type="int">4</value>
|
||||
<value type="int">5</value>
|
||||
<value type="int">6</value>
|
||||
<value type="int">7</value>
|
||||
<value type="int">8</value>
|
||||
<value type="int">9</value>
|
||||
<value type="int">10</value>
|
||||
<value type="int">11</value>
|
||||
<value type="int">12</value>
|
||||
<value type="int">13</value>
|
||||
<value type="int">14</value>
|
||||
</valuelist>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">shell</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/victor/Documents/Apps/theShell/shell/shell.pro</value>
|
||||
<value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">shell/shell.pro</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/victor/Documents/Apps/build-theShell-Desktop-Debug/shell</value>
|
||||
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">4</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
|
|
2
version
2
version
|
@ -1 +1 @@
|
|||
8.0
|
||||
8.1
|
||||
|
|
Loading…
Reference in a new issue