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 "cbconfigdialog.h"
14 #include "cbsettings.h"
17 #include <qbuttongroup.h>
18 #include <qradiobutton.h>
21 #include <qpushbutton.h>
23 #include <qcheckbox.h>
24 #include <qcolordialog.h>
25 #include <qvgroupbox.h>
27 #include <qfontdialog.h>
28 #include <qfiledialog.h>
29 #include <qlineedit.h>
31 using namespace QComicBook;
33 ComicBookCfgDialog::ComicBookCfgDialog(QWidget *parent, ComicBookSettings *cfg): QTabDialog(parent), cfg(cfg)
35 setCaption("QComicBook Settings");
45 connect(this, SIGNAL(applyButtonPressed()), this, SLOT(apply()));
46 connect(this, SIGNAL(cancelButtonPressed()), this, SLOT(cancel()));
49 ComicBookCfgDialog::~ComicBookCfgDialog()
53 void ComicBookCfgDialog::setupDisplayTab()
55 font = cfg->infoFont();
57 QWidget *w = new QWidget(this);
58 QVBoxLayout *lay = new QVBoxLayout(w, 5, 5);
62 QHBoxLayout *lay1 = new QHBoxLayout;
63 lay1->addWidget(new QLabel(tr("Background color"), w));
64 lay1->addWidget(pb_color = new QPushButton(w));
65 pb_color->setFixedWidth(32);
66 pb_color->setPaletteBackgroundColor(bgcolor = cfg->background());
67 connect(pb_color, SIGNAL(clicked()), this, SLOT(showBackgroundDialog()));
70 cb_hidemenu = new QCheckBox(tr("Hide menubar in fullscreen mode"), w);
71 cb_hidemenu->setChecked(cfg->fullScreenHideMenu());
72 lay->addWidget(cb_hidemenu);
74 /*cb_hidetoolbar = new QCheckBox(tr("Hide toolbar in fullscreen mode"), w);
75 cb_hidetoolbar->setChecked(cfg->fullScreenHideToolbar());
76 lay->addWidget(cb_hidetoolbar);*/
78 cb_hidestatus = new QCheckBox(tr("Hide statusbar in fullscreen mode"), w);
79 cb_hidestatus->setChecked(cfg->fullScreenHideStatusbar());
80 lay->addWidget(cb_hidestatus);
82 cb_smallcursor = new QCheckBox(tr("Small mouse cursor"), w);
83 cb_smallcursor->setChecked(cfg->smallCursor());
84 lay->addWidget(cb_smallcursor);
88 /*QButtonGroup *gr_scaling = new QButtonGroup(2, Qt::Horizontal, tr("Scaling method"), w);
89 rb_smooth = new QRadioButton(tr("Smooth"), gr_scaling);
90 rb_fast = new QRadioButton(tr("Fast"), gr_scaling);
91 if (cfg->pageScaling() == Fast)
92 rb_fast->setChecked(true);
94 rb_smooth->setChecked(true);
95 lay->addWidget(gr_scaling);*/
99 QHBoxLayout *lay3 = new QHBoxLayout;
100 lay3->addWidget(new QLabel(tr("Info text font"), w));
101 fontname = new QLabel(w);
102 fontname->setFrameStyle(QFrame::Panel | QFrame::Sunken);
103 fontname->setLineWidth(1);
104 lay3->addWidget(fontname, 1);
105 QPushButton *pb_font = new QPushButton(tr("Choose"), w);
106 connect(pb_font, SIGNAL(clicked()), this, SLOT(showFontDialog()));
107 lay3->addWidget(pb_font);
108 lay->addLayout(lay3);
113 addTab(w, tr("Display"));
116 void ComicBookCfgDialog::setupMiscTab()
120 QWidget *w = new QWidget(this);
121 QVBoxLayout *lay = new QVBoxLayout(w, 5, 5);
123 QVGroupBox *grp0 = new QVGroupBox(tr("Cache"), w);
124 QHBox *box1 = new QHBox(grp0);
125 new QLabel(tr("Cache size"), box1);
126 sb_cachesize = new QSpinBox(1, 128, 1, box1);
127 sb_cachesize->setSuffix(" " + tr("Mb"));
128 sb_cachesize->setValue(cfg->cacheSize());
129 cb_preload = new QCheckBox(tr("Preload next page"), grp0);
130 cb_preload->setChecked(cfg->preloadPages());
131 lay->addWidget(grp0);
133 QVGroupBox *grp1 = new QVGroupBox(tr("Thumbnails"), w);
134 cb_thumbs = new QCheckBox(tr("Use disk cache for thumbnails"), grp1);
135 cb_thumbs->setChecked(cfg->cacheThumbnails());
136 QHBox *box2 = new QHBox(grp1);
137 new QLabel(tr("Number of days to keep thumbnails"), box2);
138 sb_thumbsage = new QSpinBox(0, 365, 1, box2);
139 sb_thumbsage->setValue(cfg->thumbnailsAge());
140 lay->addWidget(grp1);
142 QVGroupBox *grp2 = new QVGroupBox(tr("Help browser"), w);
143 cb_intbrowser = new QCheckBox(tr("Use Built-in browser"), grp2);
144 QWidget *box3 = new QWidget(grp2);
145 QHBoxLayout *lay3 = new QHBoxLayout(box3, 0, 5);
146 lay3->addWidget(new QLabel(tr("External browser"), box3));
147 lay3->addWidget(le_extbrowser = new QLineEdit(box3));
148 lay3->addWidget(pb_brbrowse = new QPushButton(tr("Browse"), box3));
149 connect(pb_brbrowse, SIGNAL(clicked()), this, SLOT(browseExternalBrowser()));
150 lay->addWidget(grp2);
151 connect(cb_intbrowser, SIGNAL(toggled(bool)), this, SLOT(browserCheckboxToggled(bool)));
152 cb_intbrowser->setChecked(f = cfg->useInternalBrowser());
153 browserCheckboxToggled(f);
154 le_extbrowser->setText(cfg->externalBrowser());
156 QVGroupBox *grp3 = new QVGroupBox(tr("Strip Mode"), w);
157 QHBox *box4 = new QHBox(grp3);
158 new QLabel(tr("Number of strips per page"), box4);
159 sb_stripmax = new QSpinBox(1, 7, 6, box4);
160 sb_stripmax->setValue(cfg->stripMax());
161 lay->addWidget(grp3);
163 QVGroupBox *grp4 = new QVGroupBox(tr("Two-pages mode"), w);
164 QHBox *box5 = new QHBox(grp4);
165 cb_twopagesstep = new QCheckBox(tr("Forward and backward two pages in two-pages mode"), box5);
166 cb_twopagesstep->setChecked(cfg->twoPagesStep());
167 lay->addWidget(grp4);
169 cb_autoinfo = new QCheckBox(tr("Open info dialog after opening comic book"), w);
170 cb_autoinfo->setChecked(cfg->autoInfo());
171 lay->addWidget(cb_autoinfo);
173 cb_splash = new QCheckBox(tr("Show splashscreen"), w);
174 cb_splash->setChecked(cfg->showSplash());
175 lay->addWidget(cb_splash);
178 cb_autobookmark = new QCheckBox(tr("Save bookmark for current comicbook on close/exit"), w);
179 cb_autobookmark->setChecked(cfg->confirmExit());
180 lay->addWidget(cb_autobookmark);*/
182 cb_confirmexit = new QCheckBox(tr("Confirm exit"), w);
183 cb_confirmexit->setChecked(cfg->confirmExit());
184 lay->addWidget(cb_confirmexit);
187 addTab(w, tr("Misc"));
190 void ComicBookCfgDialog::setupEditTab()
192 QWidget *w = new QWidget(this);
193 QVBoxLayout *lay = new QVBoxLayout(w, 5, 5);
195 cb_editing = new QCheckBox(tr("Enable editing"), w);
196 cb_editing->setChecked(cfg->editSupport());
197 lay->addWidget(cb_editing);
200 addTab(w, tr("Editing"));
203 void ComicBookCfgDialog::apply()
207 cfg->background(bgcolor);
208 cfg->fullScreenHideMenu(cb_hidemenu->isChecked());
209 cfg->fullScreenHideStatusbar(cb_hidestatus->isChecked());
210 //cfg->fullScreenHideToolbar(cb_hidetoolbar->isChecked());
211 cfg->smallCursor(cb_smallcursor->isChecked());
212 /*if (rb_smooth->isChecked())
213 cfg->pageScaling(Smooth);
215 if (rb_fast->isChecked())
216 cfg->pageScaling(Fast);*/
221 cfg->cacheSize(sb_cachesize->value());
222 cfg->preloadPages(cb_preload->isChecked());
223 cfg->cacheThumbnails(cb_thumbs->isChecked());
224 cfg->thumbnailsAge(sb_thumbsage->value());
225 cfg->stripMax(sb_stripmax->value());
226 cfg->twoPagesStep(cb_twopagesstep->isChecked());
227 cfg->useInternalBrowser(cb_intbrowser->isChecked());
228 cfg->externalBrowser(le_extbrowser->text());
229 cfg->autoInfo(cb_autoinfo->isChecked());
230 cfg->showSplash(cb_splash->isChecked());
231 cfg->confirmExit(cb_confirmexit->isChecked());
235 //cfg->editSupport(cb_editing->isChecked());
238 void ComicBookCfgDialog::cancel()
242 void ComicBookCfgDialog::updateFontPreview()
244 fontname->setText(font.family() + ", " + QString::number(font.pointSize()));
245 fontname->setFont(font);
248 void ComicBookCfgDialog::showBackgroundDialog()
250 QColor c = QColorDialog::getColor(cfg->background(), this);
252 pb_color->setPaletteBackgroundColor(bgcolor = c);
255 void ComicBookCfgDialog::showFontDialog()
258 font = QFontDialog::getFont(&ok, font, this);
263 void ComicBookCfgDialog::browseExternalBrowser()
265 const QString file = QFileDialog::getOpenFileName(QString::null,
266 "All files (*)", this, NULL, tr("Choose a file") );
267 if (file != QString::null)
268 le_extbrowser->setText(file);
271 void ComicBookCfgDialog::browserCheckboxToggled(bool f)
273 le_extbrowser->setDisabled(f);
274 pb_brbrowse->setDisabled(f);