From f6f048eda1651ad4207db836cd1b9990ec3b905a Mon Sep 17 00:00:00 2001 From: weizhixinag Date: Sat, 6 Nov 2021 16:30:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E9=A3=9E=E8=A1=8C?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 笔记本上,新增飞行模式,显示在任务栏托盘 Log: 新增飞行模式 Task: https://pms.uniontech.com/zentao/task-view-89206.html Influence: 任务栏托盘中飞行模式功能 Change-Id: I81e78491285bcfa2c0f601174e8aa32c837f92a7 --- .../com.deepin.dde.dock.module.gschema.xml | 18 +- interfaces/constants.h | 1 + plugins/CMakeLists.txt | 1 + plugins/airplane-mode/CMakeLists.txt | 38 ++++ plugins/airplane-mode/airplanemode.json | 4 + plugins/airplane-mode/airplanemodeapplet.cpp | 59 +++++++ plugins/airplane-mode/airplanemodeapplet.h | 50 ++++++ plugins/airplane-mode/airplanemodeitem.cpp | 165 ++++++++++++++++++ plugins/airplane-mode/airplanemodeitem.h | 61 +++++++ plugins/airplane-mode/airplanemodeplugin.cpp | 131 ++++++++++++++ plugins/airplane-mode/airplanemodeplugin.h | 57 ++++++ .../resources/airplane-off-dark.svg | 3 + .../airplane-mode/resources/airplane-off.svg | 10 ++ .../resources/airplane-on-dark.svg | 3 + .../airplane-mode/resources/airplane-on.svg | 10 ++ .../airplane-mode/resources/airplane_mode.qrc | 8 + 16 files changed, 618 insertions(+), 1 deletion(-) create mode 100644 plugins/airplane-mode/CMakeLists.txt create mode 100644 plugins/airplane-mode/airplanemode.json create mode 100644 plugins/airplane-mode/airplanemodeapplet.cpp create mode 100644 plugins/airplane-mode/airplanemodeapplet.h create mode 100644 plugins/airplane-mode/airplanemodeitem.cpp create mode 100644 plugins/airplane-mode/airplanemodeitem.h create mode 100644 plugins/airplane-mode/airplanemodeplugin.cpp create mode 100644 plugins/airplane-mode/airplanemodeplugin.h create mode 100644 plugins/airplane-mode/resources/airplane-off-dark.svg create mode 100644 plugins/airplane-mode/resources/airplane-off.svg create mode 100644 plugins/airplane-mode/resources/airplane-on-dark.svg create mode 100644 plugins/airplane-mode/resources/airplane-on.svg create mode 100644 plugins/airplane-mode/resources/airplane_mode.qrc diff --git a/gschema/com.deepin.dde.dock.module.gschema.xml b/gschema/com.deepin.dde.dock.module.gschema.xml index 6ef07aac2..f612af1d1 100644 --- a/gschema/com.deepin.dde.dock.module.gschema.xml +++ b/gschema/com.deepin.dde.dock.module.gschema.xml @@ -367,6 +367,22 @@ + + + false + Blocking event + + Blocking mouse events + + + + false + Module Enable + + Control Module Enable + + + false @@ -519,7 +535,7 @@ - + 7 Controling the drag height of touch screen diff --git a/interfaces/constants.h b/interfaces/constants.h index 03ab85332..dc4bd9a35 100644 --- a/interfaces/constants.h +++ b/interfaces/constants.h @@ -35,6 +35,7 @@ namespace Dock { #define PLUGIN_BACKGROUND_MIN_SIZE 20 #define PLUGIN_ICON_MAX_SIZE 20 +#define PLUGIN_ITEM_WIDTH 300 // 需求变更成插件图标始终保持20x20,但16x16的资源还在。所以暂时保留此宏 #define PLUGIN_ICON_MIN_SIZE 20 diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 862efe77b..0876aacbb 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -12,3 +12,4 @@ add_subdirectory("show-desktop") add_subdirectory("multitasking") add_subdirectory("bluetooth") add_subdirectory("dcc-dock-plugin") +add_subdirectory("airplane-mode") diff --git a/plugins/airplane-mode/CMakeLists.txt b/plugins/airplane-mode/CMakeLists.txt new file mode 100644 index 000000000..c23992a96 --- /dev/null +++ b/plugins/airplane-mode/CMakeLists.txt @@ -0,0 +1,38 @@ + +set(PLUGIN_NAME "airplane-mode") + +project(${PLUGIN_NAME}) + +# Sources files +file(GLOB_RECURSE SRCS "*.h" "*.cpp" "../../widgets/*.h" "../../widgets/*.cpp" "../../frame/util/imageutil.h" "../../frame/util/imageutil.cpp") + +find_package(PkgConfig REQUIRED) +find_package(Qt5Widgets REQUIRED) +find_package(Qt5Svg REQUIRED) +find_package(Qt5DBus REQUIRED) +find_package(DtkWidget REQUIRED) + +pkg_check_modules(DFrameworkDBus REQUIRED dframeworkdbus) +pkg_check_modules(QGSettings REQUIRED gsettings-qt) + +add_definitions("${QT_DEFINITIONS} -DQT_PLUGIN") +add_library(${PLUGIN_NAME} SHARED ${SRCS} resources/airplane_mode.qrc) +set_target_properties(${PLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ../system-trays) +target_include_directories(${PLUGIN_NAME} PUBLIC ${DtkWidget_INCLUDE_DIRS} + ${DFrameworkDBus_INCLUDE_DIRS} + ${QGSettings_INCLUDE_DIRS} + ../../interfaces + ../../widgets + ../../frame + ../../frame/util + ) +target_link_libraries(${PLUGIN_NAME} PRIVATE + ${DtkWidget_LIBRARIES} + ${DFrameworkDBus_LIBRARIES} + ${QGSettings_LIBRARIES} + ${Qt5DBus_LIBRARIES} + ${Qt5Widgets_LIBRARIES} + ${Qt5Svg_LIBRARIES} +) + +install(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION lib/dde-dock/plugins/system-trays) diff --git a/plugins/airplane-mode/airplanemode.json b/plugins/airplane-mode/airplanemode.json new file mode 100644 index 000000000..cbfdea8e9 --- /dev/null +++ b/plugins/airplane-mode/airplanemode.json @@ -0,0 +1,4 @@ +{ + "api": "1.1.1", + "depends-daemon-dbus-service": "" +} diff --git a/plugins/airplane-mode/airplanemodeapplet.cpp b/plugins/airplane-mode/airplanemodeapplet.cpp new file mode 100644 index 000000000..1358dacd3 --- /dev/null +++ b/plugins/airplane-mode/airplanemodeapplet.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2020 ~ 2022 Deepin Technology Co., Ltd. + * + * Author: weizhixiang + * + * Maintainer: weizhixiang + * + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "airplanemodeapplet.h" +#include "constants.h" + +#include + +#include +#include + +DWIDGET_USE_NAMESPACE + +AirplaneModeApplet::AirplaneModeApplet(QWidget *parent) + : QWidget(parent) + , m_switchBtn(new DSwitchButton(this)) +{ + setMinimumWidth(PLUGIN_ITEM_WIDTH); + setFixedHeight(30); + QLabel *title = new QLabel(this); + title->setText(tr("Airplane Mode")); + QHBoxLayout *appletlayout = new QHBoxLayout; + appletlayout->setMargin(0); + appletlayout->setSpacing(0); + appletlayout->addSpacing(0); + appletlayout->addWidget(title); + appletlayout->addStretch(); + appletlayout->addWidget(m_switchBtn); + appletlayout->addSpacing(0); + setLayout(appletlayout); + + connect(m_switchBtn, &DSwitchButton::checkedChanged, this, &AirplaneModeApplet::enableChanged); +} + +void AirplaneModeApplet::setEnabled(bool enable) +{ + m_switchBtn->blockSignals(true); + m_switchBtn->setChecked(enable); + m_switchBtn->blockSignals(false); +} diff --git a/plugins/airplane-mode/airplanemodeapplet.h b/plugins/airplane-mode/airplanemodeapplet.h new file mode 100644 index 000000000..eb02f13ae --- /dev/null +++ b/plugins/airplane-mode/airplanemodeapplet.h @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2020 ~ 2022 Deepin Technology Co., Ltd. + * + * Author: weizhixiang + * + * Maintainer: weizhixiang + * + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef AIRPLANEMODEAPPLET_H +#define AIRPLANEMODEAPPLET_H + +#include + +namespace Dtk { +namespace Widget { +class DSwitchButton; +} +} + +class QLabel; +class AirplaneModeApplet : public QWidget +{ + Q_OBJECT + +public: + explicit AirplaneModeApplet(QWidget *parent = nullptr); + void setEnabled(bool enable); + +signals: + void enableChanged(bool enable); + +private: + Dtk::Widget::DSwitchButton *m_switchBtn; +}; + +#endif // AIRPLANEMODEAPPLET_H diff --git a/plugins/airplane-mode/airplanemodeitem.cpp b/plugins/airplane-mode/airplanemodeitem.cpp new file mode 100644 index 000000000..56a75464d --- /dev/null +++ b/plugins/airplane-mode/airplanemodeitem.cpp @@ -0,0 +1,165 @@ +/* + * Copyright (C) 2020 ~ 2022 Deepin Technology Co., Ltd. + * + * Author: weizhixiang + * + * Maintainer: weizhixiang + * + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "airplanemodeitem.h" +#include "constants.h" +#include "tipswidget.h" +#include "imageutil.h" +#include "utils.h" +#include "airplanemodeapplet.h" + +#include +#include + +#include +#include +#include + +DGUI_USE_NAMESPACE + +#define SHIFT "shift" +#define SETTINGS "settings" + +AirplaneModeItem::AirplaneModeItem(QWidget *parent) + : QWidget(parent) + , m_tipsLabel(new Dock::TipsWidget(this)) + , m_applet(new AirplaneModeApplet(this)) + , m_airplaneModeInter(new DBusAirplaneMode("com.deepin.daemon.AirplaneMode", + "/com/deepin/daemon/AirplaneMode", + QDBusConnection::systemBus(), + this)) +{ + m_tipsLabel->setText(tr("Airplane mode enabled")); + m_tipsLabel->setVisible(false); + m_applet->setVisible(false); + + connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, &AirplaneModeItem::refreshIcon); + connect(m_applet, &AirplaneModeApplet::enableChanged, m_airplaneModeInter, &DBusAirplaneMode::Enable); + connect(m_airplaneModeInter, &DBusAirplaneMode::EnabledChanged, this, [this](bool enable) { + m_applet->setEnabled(enable); + refreshIcon(); + + Utils::SettingSaveValue("com.deepin.dde.dock.module.airplane-mode", QByteArray(), "enable", enable); + }); + + m_applet->setEnabled(m_airplaneModeInter->enabled()); + refreshIcon(); +} + +QWidget *AirplaneModeItem::tipsWidget() +{ + return m_tipsLabel; +} + +QWidget *AirplaneModeItem::popupApplet() +{ + return m_applet; +} + +const QString AirplaneModeItem::contextMenu() const +{ + QList items; + items.reserve(2); + + QMap shift; + shift["itemId"] = SHIFT; + if (m_airplaneModeInter->enabled()) + shift["itemText"] = tr("Turn off"); + else + shift["itemText"] = tr("Turn on"); + shift["isActive"] = true; + items.push_back(shift); + + QMap settings; + settings["itemId"] = SETTINGS; + settings["itemText"] = tr("Airplane Mode settings"); + settings["isActive"] = true; + items.push_back(settings); + + QMap menu; + menu["items"] = items; + menu["checkableMenu"] = false; + menu["singleCheck"] = false; + + return QJsonDocument::fromVariant(menu).toJson(); +} + +void AirplaneModeItem::invokeMenuItem(const QString menuId, const bool checked) +{ + Q_UNUSED(checked); + + /* 控制中心暂未实现 + if (menuId == SHIFT) + m_airplaneModeInter->Enable(!m_airplaneModeInter->enabled()); + else if (menuId == SETTINGS) + DDBusSender() + .service("com.deepin.dde.ControlCenter") + .interface("com.deepin.dde.ControlCenter") + .path("/com/deepin/dde/ControlCenter") + .method(QString("ShowPage")) + .arg(QString("network")) + .arg(QString("Airplane Mode")) + .call(); + */ +} + +void AirplaneModeItem::refreshIcon() +{ + QString iconString; + if (m_airplaneModeInter->enabled()) + iconString = "airplane-on"; + else + iconString = "airplane-off"; + + const auto ratio = devicePixelRatioF(); + int iconSize = PLUGIN_ICON_MAX_SIZE; + if (height() <= PLUGIN_BACKGROUND_MIN_SIZE && DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) + iconString.append(PLUGIN_MIN_ICON_NAME); + m_iconPixmap = ImageUtil::loadSvg(iconString, ":/", iconSize, ratio); + update(); +} + +void AirplaneModeItem::resizeEvent(QResizeEvent *e) +{ + QWidget::resizeEvent(e); + + const Dock::Position position = qApp->property(PROP_POSITION).value(); + if (position == Dock::Bottom || position == Dock::Top) { + setMaximumWidth(height()); + setMaximumHeight(QWIDGETSIZE_MAX); + } else { + setMaximumHeight(width()); + setMaximumWidth(QWIDGETSIZE_MAX); + } + + refreshIcon(); +} + +void AirplaneModeItem::paintEvent(QPaintEvent *e) +{ + QWidget::paintEvent(e); + + QPainter painter(this); + const QRectF &rf = QRectF(rect()); + const QRectF &rfp = QRectF(m_iconPixmap.rect()); + painter.drawPixmap(rf.center() - rfp.center() / m_iconPixmap.devicePixelRatioF(), m_iconPixmap); +} diff --git a/plugins/airplane-mode/airplanemodeitem.h b/plugins/airplane-mode/airplanemodeitem.h new file mode 100644 index 000000000..847c4ea99 --- /dev/null +++ b/plugins/airplane-mode/airplanemodeitem.h @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2020 ~ 2022 Deepin Technology Co., Ltd. + * + * Author: weizhixiang + * + * Maintainer: weizhixiang + * + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef AIRPLANEMODEITEM_H +#define AIRPLANEMODEITEM_H + +#include + +#include + +using DBusAirplaneMode = com::deepin::daemon::AirplaneMode; + +namespace Dock { +class TipsWidget; +} + +class AirplaneModeApplet; +class AirplaneModeItem : public QWidget +{ + Q_OBJECT + +public: + explicit AirplaneModeItem(QWidget *parent = nullptr); + + QWidget *tipsWidget(); + QWidget *popupApplet(); + const QString contextMenu() const; + void invokeMenuItem(const QString menuId, const bool checked); + void refreshIcon(); + +protected: + void resizeEvent(QResizeEvent *e); + void paintEvent(QPaintEvent *e); + +private: + Dock::TipsWidget *m_tipsLabel; + AirplaneModeApplet *m_applet; + DBusAirplaneMode *m_airplaneModeInter; + QPixmap m_iconPixmap; +}; + +#endif // AIRPLANEMODEITEM_H diff --git a/plugins/airplane-mode/airplanemodeplugin.cpp b/plugins/airplane-mode/airplanemodeplugin.cpp new file mode 100644 index 000000000..5e3cb11be --- /dev/null +++ b/plugins/airplane-mode/airplanemodeplugin.cpp @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2020 ~ 2022 Deepin Technology Co., Ltd. + * + * Author: weizhixiang + * + * Maintainer: weizhixiang + * + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "airplanemodeplugin.h" +#include "airplanemodeitem.h" + +#define AIRPLANEMODE_KEY "airplane-mode-key" +#define STATE_KEY "enable" + +AirplaneModePlugin::AirplaneModePlugin(QObject *parent) + : QObject(parent) + , m_item(new AirplaneModeItem) +{ +} + +const QString AirplaneModePlugin::pluginName() const +{ + return "airplane-mode"; +} + +const QString AirplaneModePlugin::pluginDisplayName() const +{ + return tr("Airplane Mode"); +} + +void AirplaneModePlugin::init(PluginProxyInterface *proxyInter) +{ + m_proxyInter = proxyInter; + + if (!pluginIsDisable()) + m_proxyInter->itemAdded(this, AIRPLANEMODE_KEY); +} + +void AirplaneModePlugin::pluginStateSwitched() +{ + m_proxyInter->saveValue(this, STATE_KEY, pluginIsDisable()); +} + +bool AirplaneModePlugin::pluginIsDisable() +{ + return !m_proxyInter->getValue(this, STATE_KEY, true).toBool(); +} + +QWidget *AirplaneModePlugin::itemWidget(const QString &itemKey) +{ + if (itemKey == AIRPLANEMODE_KEY) { + return m_item; + } + + return nullptr; +} + +QWidget *AirplaneModePlugin::itemTipsWidget(const QString &itemKey) +{ + if (itemKey == AIRPLANEMODE_KEY) { + return m_item->tipsWidget(); + } + + return nullptr; +} + +QWidget *AirplaneModePlugin::itemPopupApplet(const QString &itemKey) +{ + return nullptr; // 禁用左键点击功能 + + if (itemKey == AIRPLANEMODE_KEY) { + return m_item->popupApplet(); + } + + return nullptr; +} + +const QString AirplaneModePlugin::itemContextMenu(const QString &itemKey) +{ + return QString(); // 禁用右键菜单 + + if (itemKey == AIRPLANEMODE_KEY) { + return m_item->contextMenu(); + } + + return QString(); +} + +void AirplaneModePlugin::invokedMenuItem(const QString &itemKey, const QString &menuId, const bool checked) +{ + if (itemKey == AIRPLANEMODE_KEY) { + m_item->invokeMenuItem(menuId, checked); + } +} + +int AirplaneModePlugin::itemSortKey(const QString &itemKey) +{ + const QString key = QString("pos_%1_%2").arg(itemKey).arg(Dock::Efficient); + + return m_proxyInter->getValue(this, key, 4).toInt(); +} + +void AirplaneModePlugin::setSortKey(const QString &itemKey, const int order) +{ + const QString key = QString("pos_%1_%2").arg(itemKey).arg(Dock::Efficient); + + m_proxyInter->saveValue(this, key, order); +} + +void AirplaneModePlugin::refreshIcon(const QString &itemKey) +{ + if (itemKey == AIRPLANEMODE_KEY) { + m_item->refreshIcon(); + } +} + + diff --git a/plugins/airplane-mode/airplanemodeplugin.h b/plugins/airplane-mode/airplanemodeplugin.h new file mode 100644 index 000000000..bc97d9874 --- /dev/null +++ b/plugins/airplane-mode/airplanemodeplugin.h @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2020 ~ 2022 Deepin Technology Co., Ltd. + * + * Author: weizhixiang + * + * Maintainer: weizhixiang + * + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef AIRPLANEMODEPLUGIN_H +#define AIRPLANEMODEPLUGIN_H + +#include "pluginsiteminterface.h" + +class AirplaneModeItem; +class AirplaneModePlugin : public QObject, PluginsItemInterface +{ + Q_OBJECT + Q_INTERFACES(PluginsItemInterface) + Q_PLUGIN_METADATA(IID "com.deepin.dock.PluginsItemInterface" FILE "airplanemode.json") + +public: + explicit AirplaneModePlugin(QObject *parent = nullptr); + + const QString pluginName() const Q_DECL_OVERRIDE; + const QString pluginDisplayName() const Q_DECL_OVERRIDE; + void init(PluginProxyInterface *proxyInter) Q_DECL_OVERRIDE; + void pluginStateSwitched() Q_DECL_OVERRIDE; + bool pluginIsAllowDisable() Q_DECL_OVERRIDE { return true; } + bool pluginIsDisable() Q_DECL_OVERRIDE; + QWidget *itemWidget(const QString &itemKey) Q_DECL_OVERRIDE; + QWidget *itemTipsWidget(const QString &itemKey) Q_DECL_OVERRIDE; + QWidget *itemPopupApplet(const QString &itemKey) Q_DECL_OVERRIDE; + const QString itemContextMenu(const QString &itemKey) Q_DECL_OVERRIDE; + void invokedMenuItem(const QString &itemKey, const QString &menuId, const bool checked) Q_DECL_OVERRIDE; + int itemSortKey(const QString &itemKey) Q_DECL_OVERRIDE; + void setSortKey(const QString &itemKey, const int order) Q_DECL_OVERRIDE; + void refreshIcon(const QString &itemKey) Q_DECL_OVERRIDE; + +private: + AirplaneModeItem *m_item; +}; + +#endif // AIRPLANEMODEPLUGIN_H diff --git a/plugins/airplane-mode/resources/airplane-off-dark.svg b/plugins/airplane-mode/resources/airplane-off-dark.svg new file mode 100644 index 000000000..00c3067c1 --- /dev/null +++ b/plugins/airplane-mode/resources/airplane-off-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/plugins/airplane-mode/resources/airplane-off.svg b/plugins/airplane-mode/resources/airplane-off.svg new file mode 100644 index 000000000..8954d3f4f --- /dev/null +++ b/plugins/airplane-mode/resources/airplane-off.svg @@ -0,0 +1,10 @@ + + + 4 + + + + + + + \ No newline at end of file diff --git a/plugins/airplane-mode/resources/airplane-on-dark.svg b/plugins/airplane-mode/resources/airplane-on-dark.svg new file mode 100644 index 000000000..689403025 --- /dev/null +++ b/plugins/airplane-mode/resources/airplane-on-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/plugins/airplane-mode/resources/airplane-on.svg b/plugins/airplane-mode/resources/airplane-on.svg new file mode 100644 index 000000000..eebb8b613 --- /dev/null +++ b/plugins/airplane-mode/resources/airplane-on.svg @@ -0,0 +1,10 @@ + + + 3 + + + + + + + \ No newline at end of file diff --git a/plugins/airplane-mode/resources/airplane_mode.qrc b/plugins/airplane-mode/resources/airplane_mode.qrc new file mode 100644 index 000000000..a9a52f319 --- /dev/null +++ b/plugins/airplane-mode/resources/airplane_mode.qrc @@ -0,0 +1,8 @@ + + + airplane-on.svg + airplane-off.svg + airplane-off-dark.svg + airplane-on-dark.svg + +