1 /*
2 * This file is part of Converseen, an open-source batch image converter
3 * and resizer.
4 *
5 * (C) Francesco Mondello 2009 - 2021
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 * Contact e-mail: Francesco Mondello <faster3ck@gmail.com>
21 *
22 */
23
24 #include <QDir>
25 #include <QStandardPaths>
26 #include "inisettings.h"
27
28 #define INIFILENAME ".converseen.conf"
29
30 QSettings *IniSettings::settings;
31
IniSettings(QObject * parent)32 IniSettings::IniSettings(QObject *parent) :
33 QObject(parent)
34 {
35
36 }
37
init()38 void IniSettings::init()
39 {
40 QString configLocationPath = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
41 QString iniPath = QString("%1/converseen/%2").arg(configLocationPath).arg(INIFILENAME);
42
43 #if defined(Q_OS_WIN)
44 QDir portableConfigDir(QDir::currentPath() + "/settings");
45
46 if (portableConfigDir.exists())
47 configLocationPath = portableConfigDir.absolutePath();
48
49 iniPath = QString("%1/%2").arg(configLocationPath).arg(INIFILENAME);
50 #endif
51
52 settings = new QSettings(iniPath, QSettings::IniFormat);
53 }
54
outputDir()55 QString IniSettings::outputDir()
56 {
57 QString myDir = QDir::homePath();
58 if (settings->contains("General/Save directory"))
59 myDir = settings->value("General/Save directory").toString();
60
61 return myDir;
62 }
63
windowGeometry()64 QByteArray IniSettings::windowGeometry()
65 {
66 QByteArray geometry = "";
67 if (settings->contains("Options/WindowSize"))
68 geometry = settings->value("Options/WindowSize").toByteArray();
69
70 return geometry;
71 }
72
latestWrittenFormatIndex()73 int IniSettings::latestWrittenFormatIndex()
74 {
75 return settings->value("General/Last Write Format").toInt();
76 }
77
isOverwriteMode()78 bool IniSettings::isOverwriteMode()
79 {
80 return settings->value("Options/Overwrite mode").toBool();
81 }
82
jpgQuality()83 int IniSettings::jpgQuality()
84 {
85 int jpgQuality = 85;
86
87 if (settings->contains("Quality/Jpeg quality"))
88 jpgQuality = settings->value("Quality/Jpeg quality").toInt();
89
90 return jpgQuality;
91 }
92
pngQuality()93 int IniSettings::pngQuality()
94 {
95 int pngQuality = 85;
96
97 if (settings->contains("Quality/Png quality"))
98 pngQuality = settings->value("Quality/Png quality").toInt();
99
100 return pngQuality;
101 }
102
latestOpenedDir()103 QString IniSettings::latestOpenedDir()
104 {
105 QString path = QDir::homePath();
106 if (settings->contains("General/Last Opened"))
107 path = settings->value("General/Last Opened").toString();
108
109 return path;
110 }
111
backgroundColor()112 QString IniSettings::backgroundColor()
113 {
114 QString bgColor = "#000000";
115 if (settings->contains("Colors/background"))
116 bgColor = settings->value("Colors/background").toString();
117
118 return bgColor;
119 }
120
previewChecked()121 bool IniSettings::previewChecked()
122 {
123 bool checked = true;
124 if (settings->contains("Options/Preview checked"))
125 checked = settings->value("Options/Preview checked").toBool();
126
127 return checked;
128 }
129
scaleChecked()130 bool IniSettings::scaleChecked()
131 {
132 return settings->value("Options/Scale checked").toBool();
133 }
134
measure()135 int IniSettings::measure() // get px or %
136 {
137 int idx = 0;
138 if (settings->contains("Options/Measure"))
139 idx = settings->value("Options/Measure").toInt();
140
141 return idx;
142 }
143
aspectRatioChecked()144 bool IniSettings::aspectRatioChecked()
145 {
146 return settings->value("Options/Aspectratio checked").toBool();
147 }
148
resolutionChecked()149 bool IniSettings::resolutionChecked()
150 {
151 return settings->value("Options/Resolution checked").toBool();
152 }
153
imageDirChecked()154 bool IniSettings::imageDirChecked()
155 {
156 return settings->value("Options/ImageDir checked").toBool();
157 }
158
renameChecked()159 bool IniSettings::renameChecked()
160 {
161 return settings->value("Options/Rename checked").toBool();
162 }
163
bgColorChecked()164 bool IniSettings::bgColorChecked()
165 {
166 return settings->value("Options/BgColor checked").toBool();
167 }
168
latestInterpFiltIdx()169 int IniSettings::latestInterpFiltIdx()
170 {
171 int idx = 0;
172 if (settings->contains("Options/Interpolation filter"))
173 idx = settings->value("Options/Interpolation filter").toInt();
174
175 return idx;
176 }
177
currentVersion()178 int IniSettings::currentVersion()
179 {
180 int version = 0;
181
182 if (settings->contains("General/Current version"))
183 version = settings->value("General/Current version").toInt();
184
185 return version;
186 }
187
language()188 QString IniSettings::language()
189 {
190 QString language = "English";
191 if (settings->contains("Options/language")) {
192 language = settings->value("Options/language").value<QString>();
193 }
194
195 return language;
196 }
197
isAutoChechUpdates()198 bool IniSettings::isAutoChechUpdates()
199 {
200 bool enabled;
201
202 if (settings->contains("Options/Check updates")) {
203 enabled = settings->value("Options/Check updates").value<bool>();
204 }
205 else
206 enabled = true;
207
208 return enabled;
209 }
210
211 //
212
setOutputDir(QString path)213 void IniSettings::setOutputDir(QString path)
214 {
215 settings->setValue("General/Save directory", path);
216 }
217
setWindowGeometry(QByteArray geometry)218 void IniSettings::setWindowGeometry(QByteArray geometry)
219 {
220 settings->setValue("Options/WindowSize", geometry);
221 }
222
setLatestWrittenFormatIndex(int index)223 void IniSettings::setLatestWrittenFormatIndex(int index)
224 {
225 settings->setValue("General/Last Write Format", index);
226 }
227
setOverwriteMode(bool enabled)228 void IniSettings::setOverwriteMode(bool enabled)
229 {
230 settings->setValue("Options/Overwrite mode", enabled);
231 }
232
setJpgQuality(int quality)233 void IniSettings::setJpgQuality(int quality)
234 {
235 settings->setValue("Quality/Jpeg quality", quality);
236 }
237
setPngQuality(int quality)238 void IniSettings::setPngQuality(int quality)
239 {
240 settings->setValue("Quality/Png quality", quality);
241 }
242
setLatestOpenedDir(QString path)243 void IniSettings::setLatestOpenedDir(QString path)
244 {
245 settings->setValue("General/Last Opened", path);
246 }
247
setBackgroundColor(QString bgColor)248 void IniSettings::setBackgroundColor(QString bgColor)
249 {
250 settings->setValue("Colors/background", bgColor);
251 }
252
setPreviewChecked(bool state)253 void IniSettings::setPreviewChecked(bool state)
254 {
255 settings->setValue("Options/Preview checked", state);
256 }
257
setScaleChecked(bool state)258 void IniSettings::setScaleChecked(bool state)
259 {
260 settings->setValue("Options/Scale checked", state);
261 }
262
setMeasure(int index)263 void IniSettings::setMeasure(int index) // set px or %
264 {
265 settings->setValue("Options/Measure", index);
266 }
267
setAspectRatioChecked(bool state)268 void IniSettings::setAspectRatioChecked(bool state)
269 {
270 settings->setValue("Options/Aspectratio checked", state);
271 }
272
setResolutionChecked(bool state)273 void IniSettings::setResolutionChecked(bool state)
274 {
275 settings->setValue("Options/Resolution checked", state);
276 }
277
setImageDirChecked(bool state)278 void IniSettings::setImageDirChecked(bool state)
279 {
280 settings->setValue("Options/ImageDir checked", state);
281 }
282
setRenameChecked(bool state)283 void IniSettings::setRenameChecked(bool state)
284 {
285 settings->setValue("Options/Rename checked", state);
286 }
287
setBgColorChecked(bool state)288 void IniSettings::setBgColorChecked(bool state)
289 {
290 settings->setValue("Options/BgColor checked", state);
291 }
292
setLatestInterpFiltIdx(int index)293 void IniSettings::setLatestInterpFiltIdx(int index)
294 {
295 settings->setValue("Options/Interpolation filter", index);
296 }
297
setCurrentVersion(int version)298 void IniSettings::setCurrentVersion(int version)
299 {
300 settings->setValue("General/Current version", version);
301 }
302
setLanguage(QString lang)303 void IniSettings::setLanguage(QString lang)
304 {
305 settings->setValue("Options/language", lang);
306 }
307
setAutoChechUpdates(bool enabled)308 void IniSettings::setAutoChechUpdates(bool enabled)
309 {
310 settings->setValue("Options/Check updates", enabled);
311 }
312