2023-06-05 17:29:14 +08:00
|
|
|
|
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
|
|
|
|
|
//
|
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
|
|
|
|
|
#ifndef DOCKSETTINGS_H
|
|
|
|
|
#define DOCKSETTINGS_H
|
|
|
|
|
|
|
|
|
|
#include "constants.h"
|
|
|
|
|
|
|
|
|
|
#include <QObject>
|
|
|
|
|
|
|
|
|
|
using namespace Dock;
|
|
|
|
|
|
|
|
|
|
class HideModeHandler {
|
|
|
|
|
HideMode modeEnum;
|
|
|
|
|
QString modeStr;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
HideModeHandler(HideMode mode) : modeEnum(mode), modeStr("") {}
|
|
|
|
|
HideModeHandler(QString mode) : modeEnum(HideMode::KeepShowing), modeStr(mode) {}
|
|
|
|
|
|
|
|
|
|
bool equal(HideModeHandler hideMode) {
|
|
|
|
|
return toString() == hideMode.toString() || toEnum() == hideMode.toEnum();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString toString() {
|
|
|
|
|
switch (modeEnum) {
|
|
|
|
|
case HideMode::KeepShowing:
|
|
|
|
|
return "keep-showing";
|
|
|
|
|
case HideMode::KeepHidden:
|
|
|
|
|
return "keep-hidden";
|
|
|
|
|
case HideMode::SmartHide:
|
|
|
|
|
return "smart-hide";
|
|
|
|
|
default:
|
|
|
|
|
return "keep-showing";
|
|
|
|
|
}
|
|
|
|
|
// 默认保持始终显示
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HideMode toEnum() {
|
|
|
|
|
if (modeStr == "keep-hidden")
|
|
|
|
|
return HideMode::KeepHidden;
|
|
|
|
|
if (modeStr == "smart-hide")
|
|
|
|
|
return HideMode::SmartHide;
|
|
|
|
|
|
|
|
|
|
return HideMode::KeepShowing;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class DisplayModeHandler {
|
|
|
|
|
DisplayMode modeEnum;
|
|
|
|
|
QString modeStr;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
DisplayModeHandler(DisplayMode mode) : modeEnum(mode), modeStr("") {}
|
|
|
|
|
DisplayModeHandler(QString mode) : modeEnum(DisplayMode::Efficient), modeStr(mode) {}
|
|
|
|
|
|
|
|
|
|
bool equal(DisplayModeHandler displayMode) {
|
|
|
|
|
return toString() == displayMode.toString() || toEnum() == displayMode.toEnum();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString toString() {
|
|
|
|
|
switch (modeEnum) {
|
|
|
|
|
case DisplayMode::Fashion:
|
|
|
|
|
return "fashion";
|
|
|
|
|
case DisplayMode::Efficient:
|
|
|
|
|
return "efficient";
|
|
|
|
|
default:
|
|
|
|
|
return "fashion";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DisplayMode toEnum() {
|
|
|
|
|
if (modeStr == "fashion")
|
|
|
|
|
return DisplayMode::Fashion;
|
|
|
|
|
|
|
|
|
|
return DisplayMode::Efficient;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PositionModeHandler {
|
|
|
|
|
Position modeEnum;
|
|
|
|
|
QString modeStr;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
PositionModeHandler(Position mode) : modeEnum(mode), modeStr("") {}
|
|
|
|
|
PositionModeHandler(QString mode) : modeEnum(Position::Bottom), modeStr(mode) {}
|
|
|
|
|
|
|
|
|
|
bool equal(PositionModeHandler displayMode) {
|
|
|
|
|
return toString() == displayMode.toString() || toEnum() == displayMode.toEnum();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString toString() {
|
|
|
|
|
switch (modeEnum) {
|
|
|
|
|
case Position::Top:
|
|
|
|
|
return "top";
|
|
|
|
|
case Position::Right:
|
|
|
|
|
return "right";
|
|
|
|
|
case Position::Left:
|
|
|
|
|
return "left";
|
|
|
|
|
case Position::Bottom:
|
|
|
|
|
return "bottom";
|
|
|
|
|
default:
|
|
|
|
|
return "bottom";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Position toEnum() {
|
|
|
|
|
if (modeStr == "top")
|
|
|
|
|
return Position::Top;
|
|
|
|
|
if (modeStr == "right")
|
|
|
|
|
return Position::Right;
|
|
|
|
|
if (modeStr == "bottom")
|
|
|
|
|
return Position::Bottom;
|
|
|
|
|
if (modeStr == "left")
|
|
|
|
|
return Position::Left;
|
|
|
|
|
|
|
|
|
|
return Position::Bottom;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 强制退出应用菜单状态
|
|
|
|
|
enum class ForceQuitAppMode {
|
|
|
|
|
Enabled, // 开启
|
|
|
|
|
Disabled, // 关闭
|
|
|
|
|
Deactivated, // 置灰
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class ForceQuitAppModeHandler {
|
|
|
|
|
ForceQuitAppMode modeEnum;
|
|
|
|
|
QString modeStr;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
ForceQuitAppModeHandler(ForceQuitAppMode mode) : modeEnum(mode), modeStr("") {}
|
|
|
|
|
ForceQuitAppModeHandler(QString mode) : modeEnum(ForceQuitAppMode::Enabled), modeStr(mode) {}
|
|
|
|
|
|
|
|
|
|
bool equal(ForceQuitAppModeHandler displayMode) {
|
|
|
|
|
return toString() == displayMode.toString() || toEnum() == displayMode.toEnum();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString toString() {
|
|
|
|
|
switch (modeEnum) {
|
|
|
|
|
case ForceQuitAppMode::Enabled:
|
|
|
|
|
return "enabled";
|
|
|
|
|
case ForceQuitAppMode::Disabled:
|
|
|
|
|
return "disabled";
|
|
|
|
|
case ForceQuitAppMode::Deactivated:
|
|
|
|
|
return "deactivated";
|
|
|
|
|
default:
|
|
|
|
|
return "enabled";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ForceQuitAppMode toEnum() {
|
|
|
|
|
if (modeStr == "disabled")
|
|
|
|
|
return ForceQuitAppMode::Disabled;
|
|
|
|
|
if (modeStr == "deactivated")
|
|
|
|
|
return ForceQuitAppMode::Deactivated;
|
|
|
|
|
|
|
|
|
|
return ForceQuitAppMode::Enabled;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class Settings;
|
|
|
|
|
namespace Dtk {
|
|
|
|
|
namespace Core {
|
|
|
|
|
class DConfig;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
using namespace Dtk::Core;
|
|
|
|
|
|
|
|
|
|
// 任务栏组策略配置类
|
|
|
|
|
class DockSettings: public QObject
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
static inline DockSettings *instance() {
|
|
|
|
|
static DockSettings instance;
|
|
|
|
|
return &instance;
|
|
|
|
|
}
|
|
|
|
|
void init();
|
|
|
|
|
|
|
|
|
|
HideMode getHideMode();
|
|
|
|
|
void setHideMode(HideMode mode);
|
|
|
|
|
DisplayMode getDisplayMode();
|
|
|
|
|
void setDisplayMode(DisplayMode mode);
|
|
|
|
|
Position getPositionMode();
|
|
|
|
|
void setPositionMode(Position mode);
|
|
|
|
|
ForceQuitAppMode getForceQuitAppMode();
|
|
|
|
|
void setForceQuitAppMode(ForceQuitAppMode mode);
|
|
|
|
|
uint getIconSize();
|
|
|
|
|
void setIconSize(uint size);
|
|
|
|
|
uint getShowTimeout();
|
|
|
|
|
void setShowTimeout(uint time);
|
|
|
|
|
uint getHideTimeout();
|
|
|
|
|
void setHideTimeout(uint time);
|
|
|
|
|
uint getWindowSizeEfficient();
|
|
|
|
|
void setWindowSizeEfficient(uint size);
|
|
|
|
|
uint getWindowSizeFashion();
|
|
|
|
|
void setWindowSizeFashion(uint size);
|
|
|
|
|
QStringList getDockedApps();
|
|
|
|
|
void setDockedApps(const QStringList &apps);
|
|
|
|
|
QStringList getRecentApps() const;
|
|
|
|
|
void setRecentApps(const QStringList &apps);
|
|
|
|
|
QVector<QString> getWinIconPreferredApps();
|
|
|
|
|
void setShowRecent(bool visible);
|
|
|
|
|
bool showRecent() const;
|
|
|
|
|
|
|
|
|
|
QStringList getTrayItemsOnDock();
|
|
|
|
|
void setTrayItemOnDock(QString item);
|
|
|
|
|
void removeTrayItemOnDock(QString item);
|
|
|
|
|
void updateTrayItemsOnDock(QStringList items);
|
|
|
|
|
|
|
|
|
|
int getWindowNameShowMode();
|
|
|
|
|
void setWindowNameShowMode(int value);
|
|
|
|
|
|
|
|
|
|
QStringList getQuickPlugins();
|
|
|
|
|
void setQuickPlugin(QString plugin);
|
|
|
|
|
void removeQuickPlugin(QString plugin);
|
|
|
|
|
void updateQuickPlugins(QStringList plugins);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void setShowMultiWindow(bool showMultiWindow);
|
|
|
|
|
bool showMultiWindow() const;
|
|
|
|
|
|
|
|
|
|
// plugin settings
|
|
|
|
|
QString getPluginSettings();
|
|
|
|
|
void setPluginSettings(QString jsonStr);
|
|
|
|
|
void mergePluginSettings(QString jsonStr);
|
|
|
|
|
void removePluginSettings(QString pluginName, QStringList settingkeys);
|
|
|
|
|
QJsonObject plguinSettingsStrToObj(QString jsonStr);
|
|
|
|
|
|
|
|
|
|
Q_SIGNALS:
|
|
|
|
|
// 隐藏模式改变
|
|
|
|
|
void hideModeChanged(HideMode mode);
|
|
|
|
|
// 显示样式改变
|
|
|
|
|
void displayModeChanged(DisplayMode mode);
|
|
|
|
|
// 显示位置改变
|
|
|
|
|
void positionModeChanged(Position mode);
|
|
|
|
|
// 强制退出应用开关改变
|
|
|
|
|
void forceQuitAppChanged(ForceQuitAppMode mode);
|
|
|
|
|
// 是否显示最近打开应用改变
|
|
|
|
|
void showRecentChanged(bool);
|
|
|
|
|
// 是否显示多开应用改变
|
|
|
|
|
void showMultiWindowChanged(bool);
|
|
|
|
|
// 显示在任务栏上的托盘图标改变
|
|
|
|
|
void quickTrayNameChanged(QStringList items);
|
|
|
|
|
// 小窗口显示窗口名称模式改变
|
|
|
|
|
void windowNameShowModeChanged(int mode);
|
|
|
|
|
// 显示在任务栏上的快捷插件改变
|
|
|
|
|
void quickPluginsChanged(QStringList plugins);
|
2023-06-07 14:11:50 +08:00
|
|
|
|
// 时尚模式下,dock尺寸信息改变
|
|
|
|
|
void windowSizeFashionChanged(uint size);
|
|
|
|
|
// 高效模式dock尺寸改变
|
|
|
|
|
void windowSizeEfficientChanged(uint size);
|
2023-06-05 17:29:14 +08:00
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
DockSettings(QObject *paret = nullptr);
|
|
|
|
|
DockSettings(const DockSettings &);
|
|
|
|
|
DockSettings& operator= (const DockSettings &);
|
|
|
|
|
void saveStringList(const QString &key, const QStringList &values);
|
|
|
|
|
QStringList loadStringList(const QString &key) const;
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
DConfig *m_dockSettings;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // DOCKSETTINGS_H
|