mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 05:49:53 +08:00
205 lines
5.5 KiB
C++
205 lines
5.5 KiB
C++
#ifndef CORECONFIG_H
|
|
#define CORECONFIG_H
|
|
|
|
#include "iconfig.h"
|
|
|
|
#include <QtGlobal>
|
|
#include <QString>
|
|
#include <QStringList>
|
|
|
|
#include "global.h"
|
|
|
|
namespace vnotex
|
|
{
|
|
class CoreConfig : public IConfig
|
|
{
|
|
Q_GADGET
|
|
public:
|
|
enum Shortcut
|
|
{
|
|
FullScreen,
|
|
StayOnTop,
|
|
ExpandContentArea,
|
|
Settings,
|
|
NewNote,
|
|
NewFolder,
|
|
CloseTab,
|
|
CloseOtherTabs,
|
|
CloseTabsToTheRight,
|
|
NavigationDock,
|
|
OutlineDock,
|
|
SearchDock,
|
|
SnippetDock,
|
|
LocationListDock,
|
|
HistoryDock,
|
|
TagDock,
|
|
Search,
|
|
NavigationMode,
|
|
LocateNode,
|
|
VerticalSplit,
|
|
HorizontalSplit,
|
|
MaximizeSplit,
|
|
DistributeSplits,
|
|
RemoveSplitAndWorkspace,
|
|
NewWorkspace,
|
|
Export,
|
|
Quit,
|
|
FlashPage,
|
|
QuickAccess,
|
|
ActivateTab1,
|
|
ActivateTab2,
|
|
ActivateTab3,
|
|
ActivateTab4,
|
|
ActivateTab5,
|
|
ActivateTab6,
|
|
ActivateTab7,
|
|
ActivateTab8,
|
|
ActivateTab9,
|
|
AlternateTab,
|
|
ActivateNextTab,
|
|
ActivatePreviousTab,
|
|
FocusContentArea,
|
|
OpenWithDefaultProgram,
|
|
OneSplitLeft,
|
|
OneSplitDown,
|
|
OneSplitUp,
|
|
OneSplitRight,
|
|
MoveOneSplitLeft,
|
|
MoveOneSplitDown,
|
|
MoveOneSplitUp,
|
|
MoveOneSplitRight,
|
|
OpenLastClosedFile,
|
|
UnitedEntry,
|
|
Copy,
|
|
Paste,
|
|
Cut,
|
|
Properties,
|
|
Global_WakeUp,
|
|
MaxShortcut
|
|
};
|
|
Q_ENUM(Shortcut)
|
|
|
|
struct FileTypeSuffix
|
|
{
|
|
FileTypeSuffix() = default;
|
|
|
|
FileTypeSuffix(const QString &p_name, const QStringList &p_suffixes);
|
|
|
|
bool operator==(const FileTypeSuffix &p_other) const;
|
|
|
|
QString m_name;
|
|
|
|
QStringList m_suffixes;
|
|
};
|
|
|
|
CoreConfig(ConfigMgr *p_mgr, IConfig *p_topConfig);
|
|
|
|
void init(const QJsonObject &p_app, const QJsonObject &p_user) Q_DECL_OVERRIDE;
|
|
|
|
QJsonObject toJson() const Q_DECL_OVERRIDE;
|
|
|
|
const QString &getTheme() const;
|
|
void setTheme(const QString &p_name);
|
|
|
|
const QString &getLocale() const;
|
|
void setLocale(const QString &p_locale);
|
|
|
|
// Should be called after locale is properly set.
|
|
QString getLocaleToUse() const;
|
|
|
|
const QString &getShortcut(Shortcut p_shortcut) const;
|
|
|
|
int getToolBarIconSize() const;
|
|
void setToolBarIconSize(int p_size);
|
|
|
|
int getDocksTabBarIconSize() const;
|
|
void setDocksTabBarIconSize(int p_size);
|
|
|
|
const QStringList &getExternalNodeExcludePatterns() const;
|
|
|
|
static const QStringList &getAvailableLocales();
|
|
|
|
bool isRecoverLastSessionOnStartEnabled() const;
|
|
void setRecoverLastSessionOnStartEnabled(bool p_enabled);
|
|
|
|
bool isCheckForUpdatesOnStartEnabled() const;
|
|
void setCheckForUpdatesOnStartEnabled(bool p_enabled);
|
|
|
|
int getHistoryMaxCount() const;
|
|
|
|
bool isPerNotebookHistoryEnabled() const;
|
|
void setPerNotebookHistoryEnabled(bool p_enabled);
|
|
|
|
const QString &getShortcutLeaderKey() const;
|
|
|
|
LineEndingPolicy getLineEndingPolicy() const;
|
|
void setLineEndingPolicy(LineEndingPolicy p_ending);
|
|
|
|
const QVector<FileTypeSuffix> &getFileTypeSuffixes() const;
|
|
void setFileTypeSuffixes(const QVector<FileTypeSuffix> &p_fileTypeSuffixes);
|
|
|
|
const QStringList *findFileTypeSuffix(const QString &p_name) const;
|
|
|
|
const QJsonArray &getUnitedEntryAlias() const;
|
|
void setUnitedEntryAlias(const QJsonArray &p_alias);
|
|
|
|
private:
|
|
friend class MainConfig;
|
|
|
|
void loadShortcuts(const QJsonObject &p_app, const QJsonObject &p_user);
|
|
|
|
void loadNoteManagement(const QJsonObject &p_app, const QJsonObject &p_user);
|
|
|
|
QJsonObject saveShortcuts() const;
|
|
|
|
void loadFileTypeSuffixes(const QJsonObject &p_app, const QJsonObject &p_user);
|
|
|
|
QJsonArray saveFileTypeSuffixes() const;
|
|
|
|
void loadUnitedEntry(const QJsonObject &p_app, const QJsonObject &p_user);
|
|
|
|
QJsonObject saveUnitedEntry() const;
|
|
|
|
// Theme name.
|
|
QString m_theme;
|
|
|
|
// User-specified locale, such as zh_CN, en_US.
|
|
// Empty if not specified.
|
|
QString m_locale;
|
|
|
|
QString m_shortcuts[Shortcut::MaxShortcut];
|
|
|
|
// Leader key of shortcuts defined in m_shortctus.
|
|
QString m_shortcutLeaderKey;
|
|
|
|
// Icon size of MainWindow tool bar.
|
|
int m_toolBarIconSize = 18;
|
|
|
|
// Icon size of MainWindow QDockWidgets tab bar.
|
|
int m_docksTabBarIconSize = 20;
|
|
|
|
QStringList m_externalNodeExcludePatterns;
|
|
|
|
// Whether recover last session on start.
|
|
bool m_recoverLastSessionOnStartEnabled = true;
|
|
|
|
bool m_checkForUpdatesOnStartEnabled = true;
|
|
|
|
// Max count of the history items for each notebook and session config.
|
|
int m_historyMaxCount = 100;
|
|
|
|
// Whether store history in each notebook.
|
|
bool m_perNotebookHistoryEnabled = false;
|
|
|
|
LineEndingPolicy m_lineEnding = LineEndingPolicy::LF;
|
|
|
|
QVector<FileTypeSuffix> m_fileTypeSuffixes;
|
|
|
|
QJsonArray m_unitedEntryAlias;
|
|
|
|
static QStringList s_availableLocales;
|
|
};
|
|
} // ns vnotex
|
|
|
|
#endif // CORECONFIG_H
|