diff --git a/feiq.pro b/feiq.pro index 7a6a407..3e52950 100644 --- a/feiq.pro +++ b/feiq.pro @@ -11,8 +11,6 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = feiq TEMPLATE = app - - LIBS += -liconv -lsqlite3 mac{ @@ -58,7 +56,8 @@ SOURCES += main.cpp\ feiqwin.cpp \ plugin/unreadchecker.cpp \ plugin/iplugin.cpp \ - plugin/rankuser.cpp + plugin/rankuser.cpp \ + settings.cpp HEADERS += mainwindow.h \ @@ -96,7 +95,8 @@ HEADERS += mainwindow.h \ plugin/iplugin.h \ feiqwin.h \ plugin/unreadchecker.h \ - plugin/rankuser.h + plugin/rankuser.h \ + settings.h FORMS += mainwindow.ui \ searchfellowdlg.ui \ diff --git a/feiqwin.cpp b/feiqwin.cpp index 3cab028..c0aecb6 100644 --- a/feiqwin.cpp +++ b/feiqwin.cpp @@ -29,7 +29,7 @@ const FeiqModel *FeiqWin::feiqModel() return &(mMainWin->mFeiq.getModel()); } -QSettings *FeiqWin::settings() +Settings *FeiqWin::settings() { return mMainWin->mSettings; } diff --git a/feiqwin.h b/feiqwin.h index 47f03f6..b04a1eb 100644 --- a/feiqwin.h +++ b/feiqwin.h @@ -6,6 +6,7 @@ #include "qsettings.h" #include "fellowlistwidget.h" #include "feiqlib/feiqmodel.h" +#include "settings.h" class MainWindow; class IPlugin; @@ -24,7 +25,7 @@ public: SendTextEdit* sendTextEdit(); FellowListWidget* fellowListWidget(); const FeiqModel* feiqModel(); - QSettings* settings(); + Settings* settings(); public: int getUnreadCount(); diff --git a/mainwindow.cpp b/mainwindow.cpp index 6bed4f4..07cb666 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -64,7 +64,7 @@ MainWindow::MainWindow(QWidget *parent) : //加载配置 auto settingFilePath = QDir::home().filePath(".feiq_setting.ini"); - mSettings = new QSettings(settingFilePath, QSettings::IniFormat); + mSettings = new Settings(settingFilePath, QSettings::IniFormat); mSettings->setIniCodec(QTextCodec::codecForName("UTF-8")); mTitle = mSettings->value("app/title", "mac飞秋").toString(); setWindowTitle(mTitle); @@ -80,6 +80,7 @@ MainWindow::MainWindow(QWidget *parent) : MainWindow::~MainWindow() { mFeiq.stop(); + mSettings->sync(); delete mSettings; delete mSearchFellowDlg; delete mDownloadFileDlg; diff --git a/mainwindow.h b/mainwindow.h index fa14666..7228b5c 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -7,7 +7,7 @@ #include "recvtextedit.h" #include "feiqlib/feiqengine.h" #include "filemanagerdlg.h" -#include +#include "settings.h" #include #include "chooseemojidlg.h" #include @@ -90,7 +90,7 @@ private: SearchFellowDlg* mSearchFellowDlg; FileManagerDlg* mDownloadFileDlg; ChooseEmojiDlg* mChooseEmojiDlg; - QSettings* mSettings; + Settings* mSettings; FeiqEngine mFeiq; RecvTextEdit* mRecvTextEdit; SendTextEdit* mSendTextEdit; diff --git a/plugin/unreadchecker.cpp b/plugin/unreadchecker.cpp index f64aa96..cda3a01 100644 --- a/plugin/unreadchecker.cpp +++ b/plugin/unreadchecker.cpp @@ -24,7 +24,7 @@ void UnreadChecker::init() IPlugin::init(); auto settings = mFeiq->settings(); - mUnreadTimerInterval = settings->value(PLUGIN_NAME"/timer", "0").toInt(); + mUnreadTimerInterval = settings->value(PLUGIN_NAME"/timer", "600").toInt(); if (mUnreadTimerInterval > 0) mUnreadTimerId = startTimer(mUnreadTimerInterval*1000, Qt::VeryCoarseTimer); } diff --git a/settings.cpp b/settings.cpp new file mode 100644 index 0000000..64d53eb --- /dev/null +++ b/settings.cpp @@ -0,0 +1,22 @@ +#include "settings.h" + +Settings::Settings(const QString &fileName, QSettings::Format format, QObject *parent) + :QSettings(fileName, format, parent) +{ + +} + +QVariant Settings::value(const QString &key, const QVariant &defaultValue) +{ + //如果配置中没有该项,则以默认值创建,方便用户知道有那些配置项可用 + if (!contains(key)) + { + if (!defaultValue.isValid() || defaultValue.isNull()) + setValue(key, "");//防止非法值 + else + setValue(key, defaultValue); + sync(); + } + + return QSettings::value(key, defaultValue); +} diff --git a/settings.h b/settings.h new file mode 100644 index 0000000..4af4c46 --- /dev/null +++ b/settings.h @@ -0,0 +1,17 @@ +#ifndef SETTINGS_H +#define SETTINGS_H + +#include +#include + +class Settings : public QSettings +{ +public: + Settings(const QString &fileName, Format format, QObject *parent = Q_NULLPTR); +public: + //QSettings::value不是虚函数,这里并非多态重载,使用时需注意以Settings指针调用,而非QSettings调用 + QVariant value(const QString &key, const QVariant &defaultValue = QVariant()); + +}; + +#endif // SETTINGS_H