-
Notifications
You must be signed in to change notification settings - Fork 16
/
settings.cpp
133 lines (109 loc) · 3.66 KB
/
settings.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include "settings.h"
Settings::Settings(QDir baseDir, QObject *parent) :
QObject(parent)
{
settingsPrivate = new QSettings("YYJHAO","IVLEDownloader");
_token = settingsPrivate->value("token","").toString();
_directory = settingsPrivate->value("directory","").toString();
_notify = settingsPrivate->value("notify",true).toBool();
_notifyAnnouncement = settingsPrivate->value("notifyAnnouncement",true).toBool();
_recents = settingsPrivate->value("recentFiles",QStringList()).toStringList();
_ignoreUploadable = settingsPrivate->value("ignoreUploadable", true).toBool();
_lastAnnouncementTime = settingsPrivate->value("lastAnnouncementTime", QDateTime::currentDateTime()).toDateTime();
pagesInfoFile = new QFile(baseDir.filePath("pagesInfo.json"), this);
if(!pagesInfoFile->exists()){
pagesInfoFile->open(QIODevice::WriteOnly);
pagesInfoFile->close();
}else{
pagesInfoFile->open(QIODevice::ReadOnly);
auto jsond = QJsonDocument::fromJson(pagesInfoFile->readAll());
_pagesInfo = convertJSONToConfig(jsond.toVariant().toMap());
_pagesInfoJson = jsond.toJson();
pagesInfoFile->close();
}
}
ExternalPageParser::Config Settings::pagesInfo(){
return _pagesInfo;
}
QString Settings::pagesInfoJson(){
return _pagesInfoJson;
}
ExternalPageParser::Config Settings::convertJSONToConfig(const QVariantMap& m)
{
ExternalPageParser::Config cm;
for(auto it = m.constBegin(); it != m.constEnd(); ++it){
auto mm = it.value().toMap();
QMap<QString, QPair<QUrl, QString>> cmm;
for(auto itt = mm.constBegin(); itt != mm.constEnd(); ++itt){
auto mmm = itt.value().toMap();
cmm[itt.key()] = qMakePair(QUrl(mmm["page"].toString()), mmm["selector"].toString());
}
cm[it.key()] = cmm;
}
return cm;
}
void Settings::setConfig(const QVariantMap& m){
_pagesInfo = convertJSONToConfig(m);
_pagesInfoJson = QJsonDocument::fromVariant(QVariant(m)).toJson();
pagesInfoFile->open(QIODevice::WriteOnly);
pagesInfoFile->write(_pagesInfoJson.toUtf8());
pagesInfoFile->close();
}
bool Settings::ignoreUploadable(){
return _ignoreUploadable;
}
void Settings::setIgnoreUploadable(bool i){
settingsPrivate->setValue("ignoreUploadable", i);
_ignoreUploadable = i;
}
double Settings::maxFileSize(){
return settingsPrivate->value("maxFileSize",50).toDouble();
}
void Settings::setMaxFileSize(double s){
settingsPrivate->setValue("maxFileSize",s);
}
bool Settings::notify(){
return _notify;
}
void Settings::setNotify(bool val){
settingsPrivate->setValue("notify",val);
_notify = val;
}
bool Settings::notifyAnnouncement(){
return _notifyAnnouncement;
}
void Settings::setNotifyAnnouncement(bool val){
settingsPrivate->setValue("notifyAnnouncement",val);
_notifyAnnouncement = val;
}
QString Settings::token(){
return _token;
}
void Settings::setToken(const QString &val){
settingsPrivate->setValue("token",val);
_token = val;
}
QString Settings::directory(){
return _directory;
}
void Settings::setDirectory(const QString &val){
settingsPrivate->setValue("directory",val);
_directory = val;
}
const QStringList& Settings::recents(){
return _recents;
}
void Settings::addRecentFile(const QString &f){
if(_recents.count() >= MAXRECENT){
_recents.pop_back();
}
_recents.push_front(f);
settingsPrivate->setValue("recentFiles",_recents);
}
QDateTime Settings::lastAnnouncementTime(){
return _lastAnnouncementTime;
}
void Settings::setLastAnnouncementTime(QDateTime d){
_lastAnnouncementTime = d;
settingsPrivate->setValue("lastAnnouncementTime", d);
}