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