2 * This file is a part of QComicBook.
4 * Copyright (C) 2005-2006 Pawel Stolowski <yogin@linux.bydg.org>
6 * QComicBook is free software; you can redestribute it and/or modify it
7 * under terms of GNU General Public License by Free Software Foundation.
9 * This program is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY. See GPL for more details.
13 #include "cbsettings.h"
17 #include <qsettings.h>
21 #include <qtextstream.h>
22 #include <qmainwindow.h>
24 #define GRP_VIEW "/View"
25 #define OPT_TWOPAGES "/TwoPages"
26 #define OPT_JAPANESEMODE "/JapaneseMode"
27 #define OPT_SCROLLBARS "/Scrollbars"
28 //#define OPT_SCALING "/Scaling"
29 #define OPT_PAGESIZE "/PageSize"
30 #define OPT_BACKGROUND "/Background"
31 #define OPT_FULLSCREENHIDEMENU "/FullScreenHideMenu"
32 #define OPT_FULLSCREENHIDESTATUS "/FullScreenHideStatusbar"
33 #define OPT_FULLSCREENHIDETOOLBAR "/FullScreenHideToolbar"
34 #define OPT_STATUSBAR "/Statusbar"
35 #define OPT_FONT "/InfoFont"
36 #define OPT_SMALLCURSOR "/SmallCursor"
38 #define GRP_NAVI "/Navigation"
39 #define OPT_CONTSCROLL "/ContinuousScroll"
40 #define OPT_TWOPAGESSTEP "/TwoPagesStep"
41 #define OPT_TWOPAGESSPREAD "/TwoPagesSpread"
42 #define OPT_TWOPAGESSKIP "/TwoPagesSkip"
44 #define OPT_STRIPMODE "/StripMode"
45 #define OPT_STRIPMAX "/StripMax"
47 #define GRP_WINDOW "/Window"
50 #define OPT_WIDTH "/Width"
51 #define OPT_HEIGHT "/Height"
52 #define OPT_DOCKLAYOUT "/DockLayout"
54 #define GRP_MISC "/Misc"
55 #define OPT_AUTOINFO "/InfoDialog"
56 #define OPT_LASTDIR "/LastDir"
57 #define OPT_RECENT "/RecentlyOpened"
58 #define OPT_CACHESIZE "/CacheSize"
59 #define OPT_THUMBSAGE "/ThumbnailsAge"
60 #define OPT_CACHETHUMBS "/CacheThumbnails"
61 #define OPT_PRELOAD "/Preload"
62 #define OPT_CONFIRMEXIT "/ConfirmExit"
63 #define OPT_SHOWSPLASH "/ShowSplashscreen"
64 #define OPT_INTBROWSER "/UseIntBrowser"
65 #define OPT_EXTBROWSER "/ExtBrowserCmd"
66 #define OPT_EDITING "/Editing"
67 #define OPT_TMPDIR "/TmpDir"
70 using namespace QComicBook;
72 QString ComicBookSettings::bkpath = QString::null;
73 QString ComicBookSettings::thpath = QString::null;
74 bool ComicBookSettings::dirsok = false;
76 const EnumMap<Size> ComicBookSettings::size2string[] = {
77 {"original", Original},
78 {"fitwidth", FitWidth},
79 {"fitheight", FitHeight},
80 {"wholepage", WholePage},
85 /*const EnumMap<Scaling> ComicBookSettings::scaling2string[] = {
91 ComicBookSettings& ComicBookSettings::instance()
93 static ComicBookSettings cfg;
97 ComicBookSettings::ComicBookSettings(): QObject()
99 cfg = new QSettings();
100 cfg->insertSearchPath(QSettings::Unix, QDir::homeDirPath() + "/.qcomicbook");
101 cfg->beginGroup("/QComicBook");
104 ComicBookSettings::~ComicBookSettings()
110 bool ComicBookSettings::checkDirs()
113 bkpath = QDir::homeDirPath() + "/.qcomicbook";
116 if (!dir.mkdir(bkpath))
119 dir.setPath(thpath = bkpath + "/cache");
121 if (!dir.mkdir(thpath))
123 return dirsok = true;
126 const QString& ComicBookSettings::bookmarksDir()
131 const QString& ComicBookSettings::thumbnailsDir()
136 void ComicBookSettings::load()
138 QString defbrowser(QString::null);
141 const char *browsers[] = {"firefox", "mozilla", "konqueror", "opera", NULL};
142 for (int i=0; browsers[i]; i++)
143 if (QString path = QComicBook::which(browsers[i]))
149 cfg->beginGroup(GRP_WINDOW);
150 x = cfg->readNumEntry(OPT_X, 0);
151 y = cfg->readNumEntry(OPT_Y, 0);
152 w = cfg->readNumEntry(OPT_WIDTH, 640);
153 h = cfg->readNumEntry(OPT_HEIGHT, 400);
154 docklayout = cfg->readEntry(OPT_DOCKLAYOUT, QString::null);
156 cfg->beginGroup(GRP_VIEW);
157 smallcursor = cfg->readBoolEntry(OPT_SMALLCURSOR, false);
158 twopages = cfg->readBoolEntry(OPT_TWOPAGES, false);
159 stripmode = cfg->readBoolEntry(OPT_STRIPMODE, true);
160 stripmax = cfg->readNumEntry(OPT_STRIPMAX, 7);
161 japanese = cfg->readBoolEntry(OPT_JAPANESEMODE, false);
162 scrollbars = cfg->readBoolEntry(OPT_SCROLLBARS, false);
163 //scaling = convert(scaling2string, cfg->readEntry(OPT_SCALING, size2string[0].str));
164 pagesize = convert(size2string, cfg->readEntry(OPT_PAGESIZE, size2string[0].str));
165 bgcolor.setNamedColor(cfg->readEntry(OPT_BACKGROUND, "#000000"));
166 fscrhidemenu = cfg->readBoolEntry(OPT_FULLSCREENHIDEMENU, true);
167 fscrhidestatus = cfg->readBoolEntry(OPT_FULLSCREENHIDESTATUS, true);
168 fscrhidetoolbar = cfg->readBoolEntry(OPT_FULLSCREENHIDETOOLBAR, false);
169 statusbar = cfg->readBoolEntry(OPT_STATUSBAR, true);
170 fontdesc = cfg->readEntry(OPT_FONT, QString::null);
171 if (fontdesc.isNull() || !font.fromString(fontdesc))
173 font.setFamily("Courier");
174 font.setPointSize(10);
177 cfg->beginGroup(GRP_NAVI);
178 contscroll = cfg->readBoolEntry(OPT_CONTSCROLL, true);
179 twopagesstep = cfg->readBoolEntry(OPT_TWOPAGESSTEP, true);
180 twopagesspread = cfg->readBoolEntry(OPT_TWOPAGESSPREAD, true);
181 twopagesskip = cfg->readBoolEntry(OPT_TWOPAGESSKIP, false);
183 cfg->beginGroup(GRP_MISC);
184 lastdir = cfg->readEntry(OPT_LASTDIR, QString::null);
185 recent = cfg->readListEntry(OPT_RECENT);
186 cachesize = cfg->readNumEntry(OPT_CACHESIZE, 3);
189 preload = cfg->readBoolEntry(OPT_PRELOAD, true);
190 confirmexit = cfg->readBoolEntry(OPT_CONFIRMEXIT, true);
191 intbrowser = cfg->readBoolEntry(OPT_INTBROWSER, true);
192 extbrowser = cfg->readEntry(OPT_EXTBROWSER, defbrowser);
193 autoinfo = cfg->readBoolEntry(OPT_AUTOINFO, false);
194 showsplash = cfg->readBoolEntry(OPT_SHOWSPLASH, true);
195 thumbsage = cfg->readNumEntry(OPT_THUMBSAGE, 7);
196 cachethumbs = cfg->readBoolEntry(OPT_CACHETHUMBS, true);
197 editsupport = cfg->readBoolEntry(OPT_EDITING, false);
198 tmpdir = cfg->readEntry(OPT_TMPDIR, QString::null);
200 if (tmpdir.isNull() || !dir.exists())
205 bool ComicBookSettings::smallCursor() const
210 bool ComicBookSettings::twoPagesMode() const
215 bool ComicBookSettings::twoPagesStep() const
220 bool ComicBookSettings::twoPagesSpread() const
222 return twopagesspread;
225 bool ComicBookSettings::twoPagesSkip() const
230 bool ComicBookSettings::japaneseMode() const
235 bool ComicBookSettings::continuousScrolling() const
240 bool ComicBookSettings::scrollbarsVisible() const
245 QRect ComicBookSettings::geometry() const
247 return QRect(x, y, w, h);
250 Size ComicBookSettings::pageSize() const
255 /*Scaling ComicBookSettings::pageScaling() const
260 QString ComicBookSettings::lastDir() const
265 const History& ComicBookSettings::recentlyOpened() const
270 QColor ComicBookSettings::background() const
275 int ComicBookSettings::cacheSize() const
280 bool ComicBookSettings::cacheThumbnails() const
285 int ComicBookSettings::thumbnailsAge() const
290 bool ComicBookSettings::preloadPages() const
295 bool ComicBookSettings::confirmExit() const
300 bool ComicBookSettings::autoInfo() const
305 bool ComicBookSettings::fullScreenHideMenu() const
310 bool ComicBookSettings::fullScreenHideStatusbar() const
312 return fscrhidestatus;
315 bool ComicBookSettings::fullScreenHideToolbar() const
317 return fscrhidetoolbar;
320 bool ComicBookSettings::showStatusbar() const
325 const QFont& ComicBookSettings::infoFont() const
330 bool ComicBookSettings::useInternalBrowser() const
335 QString ComicBookSettings::externalBrowser() const
340 bool ComicBookSettings::showSplash() const
345 void ComicBookSettings::restoreDockLayout(QMainWindow *w)
347 QTextStream str(&docklayout, IO_ReadOnly);
351 bool ComicBookSettings::editSupport() const
356 QString ComicBookSettings::tmpDir() const
361 void ComicBookSettings::smallCursor(bool f)
363 if (f != smallcursor)
365 cfg->writeEntry(GRP_VIEW OPT_SMALLCURSOR, smallcursor = f);
366 emit cursorChanged(f);
370 void ComicBookSettings::twoPagesMode(bool f)
373 cfg->writeEntry(GRP_VIEW OPT_TWOPAGES, twopages = f);
376 void ComicBookSettings::twoPagesStep(bool f)
378 if (f != twopagesstep)
379 cfg->writeEntry(GRP_NAVI OPT_TWOPAGESSTEP, twopagesstep = f);
382 void ComicBookSettings::twoPagesSpread(bool f)
384 if (f != twopagesspread)
385 cfg->writeEntry(GRP_NAVI OPT_TWOPAGESSPREAD, twopagesspread = f);
388 void ComicBookSettings::twoPagesSkip(bool f)
390 if (f != twopagesskip)
391 cfg->writeEntry(GRP_NAVI OPT_TWOPAGESSKIP, twopagesskip = f);
394 void ComicBookSettings::japaneseMode(bool f)
397 cfg->writeEntry(GRP_VIEW OPT_JAPANESEMODE, japanese = f);
400 void ComicBookSettings::continuousScrolling(bool f)
403 cfg->writeEntry(GRP_NAVI OPT_CONTSCROLL, contscroll = f);
406 void ComicBookSettings::scrollbarsVisible(bool f)
409 cfg->writeEntry(GRP_VIEW OPT_SCROLLBARS, scrollbars = f);
412 void ComicBookSettings::geometry(const QRect g)
414 if (x != g.x() || y != g.y() || w != g.width() || h != g.height())
416 cfg->beginGroup(GRP_WINDOW);
417 cfg->writeEntry(OPT_X, x = g.x());
418 cfg->writeEntry(OPT_Y, y = g.y());
419 cfg->writeEntry(OPT_WIDTH, w = g.width());
420 cfg->writeEntry(OPT_HEIGHT, h = g.height());
425 void ComicBookSettings::pageSize(Size s)
428 cfg->writeEntry(GRP_VIEW OPT_PAGESIZE, convert(size2string, pagesize = s));
431 /*void ComicBookSettings::pageScaling(Scaling s)
435 cfg->writeEntry(GRP_VIEW OPT_SCALING, convert(scaling2string, scaling = s));
436 emit scalingMethodChanged(scaling);
440 void ComicBookSettings::lastDir(const QString &d)
443 cfg->writeEntry(GRP_MISC OPT_LASTDIR, lastdir = d);
446 void ComicBookSettings::recentlyOpened(const History &hist)
449 cfg->writeEntry(GRP_MISC OPT_RECENT, recent.getAll());
452 void ComicBookSettings::background(const QColor &color)
454 if (color != bgcolor)
457 cfg->writeEntry(GRP_VIEW OPT_BACKGROUND, bgcolor.name());
458 emit backgroundChanged(bgcolor);
462 void ComicBookSettings::cacheSize(int s)
468 cfg->writeEntry(GRP_MISC OPT_CACHESIZE, cachesize = s);
472 void ComicBookSettings::cacheThumbnails(bool f)
474 if (f != cachethumbs)
475 cfg->writeEntry(GRP_MISC OPT_CACHETHUMBS, cachethumbs = f);
478 void ComicBookSettings::thumbnailsAge(int n)
481 cfg->writeEntry(GRP_MISC OPT_THUMBSAGE, thumbsage = n);
484 void ComicBookSettings::preloadPages(bool f)
487 cfg->writeEntry(GRP_MISC OPT_PRELOAD, preload = f);
490 void ComicBookSettings::confirmExit(bool f)
492 if (f != confirmexit)
493 cfg->writeEntry(GRP_MISC OPT_CONFIRMEXIT, confirmexit = f);
496 void ComicBookSettings::autoInfo(bool f)
499 cfg->writeEntry(GRP_MISC OPT_AUTOINFO, autoinfo = f);
502 void ComicBookSettings::fullScreenHideMenu(bool f)
504 if (f != fscrhidemenu)
505 cfg->writeEntry(GRP_VIEW OPT_FULLSCREENHIDEMENU, fscrhidemenu = f);
508 void ComicBookSettings::fullScreenHideStatusbar(bool f)
510 if (f != fscrhidestatus)
511 cfg->writeEntry(GRP_VIEW OPT_FULLSCREENHIDESTATUS, fscrhidestatus = f);
514 void ComicBookSettings::fullScreenHideToolbar(bool f)
516 if (f != fscrhidetoolbar)
517 cfg->writeEntry(GRP_VIEW OPT_FULLSCREENHIDETOOLBAR, fscrhidetoolbar = f);
520 void ComicBookSettings::showStatusbar(bool f)
523 cfg->writeEntry(GRP_VIEW OPT_STATUSBAR, statusbar = f);
526 void ComicBookSettings::infoFont(const QFont &s)
531 cfg->writeEntry(GRP_VIEW OPT_FONT, font.toString());
535 void ComicBookSettings::useInternalBrowser(bool f)
538 cfg->writeEntry(GRP_MISC OPT_INTBROWSER, intbrowser = f);
541 void ComicBookSettings::externalBrowser(const QString& cmd)
543 if (cmd != extbrowser)
544 cfg->writeEntry(GRP_MISC OPT_EXTBROWSER, extbrowser = cmd);
547 void ComicBookSettings::saveDockLayout(QMainWindow *w)
550 QTextStream str(&tmp, IO_WriteOnly);
552 cfg->writeEntry(GRP_WINDOW OPT_DOCKLAYOUT, tmp);
555 void ComicBookSettings::editSupport(bool f)
557 if (f != editsupport)
558 cfg->writeEntry(GRP_MISC OPT_EDITING, editsupport = f);
561 void ComicBookSettings::showSplash(bool f)
564 cfg->writeEntry(GRP_MISC OPT_SHOWSPLASH, showsplash = f);
567 void ComicBookSettings::tmpDir(const QString &dir)
570 cfg->writeEntry(GRP_MISC OPT_TMPDIR, tmpdir = dir);
574 bool ComicBookSettings::stripMode() const
579 int ComicBookSettings::stripMax() const
584 void ComicBookSettings::stripMode(bool f)
587 cfg->writeEntry(GRP_VIEW OPT_STRIPMODE, stripmode = f);
590 void ComicBookSettings::stripMax(int sm)
593 cfg->writeEntry(GRP_VIEW OPT_STRIPMAX, stripmax = sm);
594 emit stripMaxChanged(sm);