1 | /* |
---|
2 | |
---|
3 | Copyright 2015 S. Razi Alavizadeh |
---|
4 | Copyright 2012-2015 Adam Reichold |
---|
5 | Copyright 2012 Alexander Volkov |
---|
6 | |
---|
7 | This file is part of qpdfview. |
---|
8 | |
---|
9 | qpdfview is free software: you can redistribute it and/or modify |
---|
10 | it under the terms of the GNU General Public License as published by |
---|
11 | the Free Software Foundation, either version 2 of the License, or |
---|
12 | (at your option) any later version. |
---|
13 | |
---|
14 | qpdfview is distributed in the hope that it will be useful, |
---|
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
17 | GNU General Public License for more details. |
---|
18 | |
---|
19 | You should have received a copy of the GNU General Public License |
---|
20 | along with qpdfview. If not, see <http://www.gnu.org/licenses/>. |
---|
21 | |
---|
22 | */ |
---|
23 | |
---|
24 | #include "settingsdialog.h" |
---|
25 | |
---|
26 | #include <QApplication> |
---|
27 | #include <QCheckBox> |
---|
28 | #include <QDesktopWidget> |
---|
29 | #include <QDialogButtonBox> |
---|
30 | #include <QFormLayout> |
---|
31 | #include <QHeaderView> |
---|
32 | #include <QPushButton> |
---|
33 | #include <QShortcut> |
---|
34 | #include <QTableView> |
---|
35 | |
---|
36 | #include "settings.h" |
---|
37 | #include "model.h" |
---|
38 | #include "pluginhandler.h" |
---|
39 | #include "shortcuthandler.h" |
---|
40 | #include "documentview.h" |
---|
41 | #include "miscellaneous.h" |
---|
42 | |
---|
43 | namespace |
---|
44 | { |
---|
45 | |
---|
46 | using namespace qpdfview; |
---|
47 | |
---|
48 | void addSettingsWidget(QTabWidget* tabWidget, SettingsWidget*& settingsWidget, PluginHandler::FileType fileType) |
---|
49 | { |
---|
50 | settingsWidget = PluginHandler::instance()->createSettingsWidget(fileType, tabWidget); |
---|
51 | |
---|
52 | if(settingsWidget != 0) |
---|
53 | { |
---|
54 | tabWidget->addTab(settingsWidget, PluginHandler::fileTypeName(fileType)); |
---|
55 | } |
---|
56 | } |
---|
57 | |
---|
58 | void setCurrentIndexFromData(QComboBox* comboBox, int data) |
---|
59 | { |
---|
60 | comboBox->setCurrentIndex(comboBox->findData(data)); |
---|
61 | } |
---|
62 | |
---|
63 | int dataFromCurrentIndex(const QComboBox* comboBox) |
---|
64 | { |
---|
65 | return comboBox->itemData(comboBox->currentIndex()).toInt(); |
---|
66 | } |
---|
67 | |
---|
68 | void setCurrentTextToColorName(QComboBox* comboBox, const QColor& color) |
---|
69 | { |
---|
70 | comboBox->lineEdit()->setText(color.isValid() ? color.name() : QString()); |
---|
71 | } |
---|
72 | |
---|
73 | QColor validColorFromCurrentText(const QComboBox* comboBox, const QColor& defaultColor) |
---|
74 | { |
---|
75 | const QColor color(comboBox->currentText()); |
---|
76 | |
---|
77 | return color.isValid() ? color : defaultColor; |
---|
78 | } |
---|
79 | |
---|
80 | void setCurrentIndexFromKeyboardModifiers(QComboBox* comboBox, const Qt::KeyboardModifiers& modifiers) |
---|
81 | { |
---|
82 | comboBox->setCurrentIndex(comboBox->findData(static_cast< int >(modifiers))); |
---|
83 | } |
---|
84 | |
---|
85 | Qt::KeyboardModifier keyboardModifierFromCurrentIndex(const QComboBox* comboBox) |
---|
86 | { |
---|
87 | return static_cast< Qt::KeyboardModifier >(comboBox->itemData(comboBox->currentIndex()).toInt()); |
---|
88 | } |
---|
89 | |
---|
90 | } // anonymous |
---|
91 | |
---|
92 | namespace qpdfview |
---|
93 | { |
---|
94 | |
---|
95 | Settings* SettingsDialog::s_settings = 0; |
---|
96 | |
---|
97 | SettingsDialog::SettingsDialog(QWidget* parent) : QDialog(parent) |
---|
98 | { |
---|
99 | if(s_settings == 0) |
---|
100 | { |
---|
101 | s_settings = Settings::instance(); |
---|
102 | } |
---|
103 | |
---|
104 | setWindowTitle(tr("Settings") + QLatin1String(" - Terepaima")); |
---|
105 | |
---|
106 | m_graphicsTabWidget = new QTabWidget(this); |
---|
107 | m_graphicsTabWidget->addTab(new QWidget(this), tr("General")); |
---|
108 | |
---|
109 | addSettingsWidget(m_graphicsTabWidget, m_pdfSettingsWidget, PluginHandler::PDF); |
---|
110 | addSettingsWidget(m_graphicsTabWidget, m_psSettingsWidget, PluginHandler::PS); |
---|
111 | addSettingsWidget(m_graphicsTabWidget, m_djvuSettingsWidget, PluginHandler::DjVu); |
---|
112 | |
---|
113 | m_graphicsLayout = new QFormLayout(m_graphicsTabWidget->widget(0)); |
---|
114 | |
---|
115 | m_shortcutsTableView = new QTableView(this); |
---|
116 | |
---|
117 | m_shortcutsTableView->setModel(ShortcutHandler::instance()); |
---|
118 | |
---|
119 | connect(this, SIGNAL(accepted()), ShortcutHandler::instance(), SLOT(submit())); |
---|
120 | connect(this, SIGNAL(rejected()), ShortcutHandler::instance(), SLOT(revert())); |
---|
121 | |
---|
122 | m_shortcutsTableView->setFrameShape(QFrame::NoFrame); |
---|
123 | m_shortcutsTableView->setAlternatingRowColors(true); |
---|
124 | |
---|
125 | #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) |
---|
126 | |
---|
127 | m_shortcutsTableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents); |
---|
128 | m_shortcutsTableView->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch); |
---|
129 | |
---|
130 | #else |
---|
131 | |
---|
132 | m_shortcutsTableView->horizontalHeader()->setResizeMode(0, QHeaderView::ResizeToContents); |
---|
133 | m_shortcutsTableView->horizontalHeader()->setResizeMode(1, QHeaderView::Stretch); |
---|
134 | |
---|
135 | #endif // QT_VERSION |
---|
136 | |
---|
137 | m_shortcutsTableView->verticalHeader()->setVisible(false); |
---|
138 | |
---|
139 | m_tabWidget = new QTabWidget(this); |
---|
140 | m_tabWidget->addTab(new QWidget(this), tr("&Behavior")); |
---|
141 | m_tabWidget->addTab(m_graphicsTabWidget, tr("&Graphics")); |
---|
142 | m_tabWidget->addTab(new QWidget(this), tr("&Interface")); |
---|
143 | m_tabWidget->addTab(m_shortcutsTableView, tr("&Shortcuts")); |
---|
144 | m_tabWidget->addTab(new QWidget(this), tr("&Modifiers")); |
---|
145 | |
---|
146 | m_dialogButtonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this); |
---|
147 | connect(m_dialogButtonBox, SIGNAL(accepted()), SLOT(accept())); |
---|
148 | connect(m_dialogButtonBox, SIGNAL(rejected()), SLOT(reject())); |
---|
149 | |
---|
150 | m_defaultsButton = m_dialogButtonBox->addButton(tr("Defaults"), QDialogButtonBox::ResetRole); |
---|
151 | connect(m_defaultsButton, SIGNAL(clicked()), SLOT(reset())); |
---|
152 | |
---|
153 | m_defaultsOnCurrentTabButton = m_dialogButtonBox->addButton(tr("Defaults on current tab"), QDialogButtonBox::ResetRole); |
---|
154 | connect(m_defaultsOnCurrentTabButton, SIGNAL(clicked()), SLOT(resetCurrentTab())); |
---|
155 | |
---|
156 | m_behaviorLayout = new QFormLayout(m_tabWidget->widget(0)); |
---|
157 | m_interfaceLayout = new QFormLayout(m_tabWidget->widget(2)); |
---|
158 | m_modifiersLayout = new QFormLayout(m_tabWidget->widget(4)); |
---|
159 | |
---|
160 | setLayout(new QVBoxLayout(this)); |
---|
161 | layout()->addWidget(m_tabWidget); |
---|
162 | layout()->addWidget(m_dialogButtonBox); |
---|
163 | |
---|
164 | resize(s_settings->mainWindow().settingsDialogSize(sizeHint())); |
---|
165 | |
---|
166 | createBehaviorTab(); |
---|
167 | createGraphicsTab(); |
---|
168 | createInterfaceTab(); |
---|
169 | createModifiersTab(); |
---|
170 | } |
---|
171 | |
---|
172 | SettingsDialog::~SettingsDialog() |
---|
173 | { |
---|
174 | s_settings->mainWindow().setSettingsDialogSize(size()); |
---|
175 | } |
---|
176 | |
---|
177 | void SettingsDialog::accept() |
---|
178 | { |
---|
179 | QDialog::accept(); |
---|
180 | |
---|
181 | acceptBehaivorTab(); |
---|
182 | |
---|
183 | acceptGraphicsTab(); |
---|
184 | |
---|
185 | acceptInterfaceTab(); |
---|
186 | |
---|
187 | acceptModifiersTab(); |
---|
188 | } |
---|
189 | |
---|
190 | void SettingsDialog::reset() |
---|
191 | { |
---|
192 | resetBehaviorTab(); |
---|
193 | |
---|
194 | resetGraphicsTab(); |
---|
195 | |
---|
196 | resetInterfaceTab(); |
---|
197 | |
---|
198 | ShortcutHandler::instance()->reset(); |
---|
199 | |
---|
200 | resetModifiersTab(); |
---|
201 | } |
---|
202 | |
---|
203 | void SettingsDialog::resetCurrentTab() |
---|
204 | { |
---|
205 | switch(m_tabWidget->currentIndex()) |
---|
206 | { |
---|
207 | default: |
---|
208 | reset(); |
---|
209 | break; |
---|
210 | case 0: |
---|
211 | resetBehaviorTab(); |
---|
212 | break; |
---|
213 | case 1: |
---|
214 | resetGraphicsTab(); |
---|
215 | break; |
---|
216 | case 2: |
---|
217 | resetInterfaceTab(); |
---|
218 | break; |
---|
219 | case 3: |
---|
220 | ShortcutHandler::instance()->reset(); |
---|
221 | break; |
---|
222 | case 4: |
---|
223 | resetModifiersTab(); |
---|
224 | break; |
---|
225 | } |
---|
226 | } |
---|
227 | |
---|
228 | void SettingsDialog::createBehaviorTab() |
---|
229 | { |
---|
230 | m_openUrlCheckBox = addCheckBox(m_behaviorLayout, tr("Open URL:"), QString(), |
---|
231 | s_settings->documentView().openUrl()); |
---|
232 | |
---|
233 | |
---|
234 | m_autoRefreshCheckBox = addCheckBox(m_behaviorLayout, tr("Auto-refresh:"), QString(), |
---|
235 | s_settings->documentView().autoRefresh()); |
---|
236 | |
---|
237 | |
---|
238 | m_trackRecentlyUsedCheckBox = addCheckBox(m_behaviorLayout, tr("Track recently used:"), tr("Effective after restart."), |
---|
239 | s_settings->mainWindow().trackRecentlyUsed()); |
---|
240 | |
---|
241 | m_keepRecentlyClosedCheckBox = addCheckBox(m_behaviorLayout, tr("Keep recently closed:"), tr("Effective after restart."), |
---|
242 | s_settings->mainWindow().keepRecentlyClosed()); |
---|
243 | |
---|
244 | |
---|
245 | m_restoreTabsCheckBox = addCheckBox(m_behaviorLayout, tr("Restore tabs:"), QString(), |
---|
246 | s_settings->mainWindow().restoreTabs()); |
---|
247 | |
---|
248 | m_restoreBookmarksCheckBox = addCheckBox(m_behaviorLayout, tr("Restore bookmarks:"), QString(), |
---|
249 | s_settings->mainWindow().restoreBookmarks()); |
---|
250 | |
---|
251 | m_restorePerFileSettingsCheckBox = addCheckBox(m_behaviorLayout, tr("Restore per-file settings:"), QString(), |
---|
252 | s_settings->mainWindow().restorePerFileSettings()); |
---|
253 | |
---|
254 | m_saveDatabaseInterval = addSpinBox(m_behaviorLayout, tr("Save database interval:"), QString(), tr(" min"), tr("Never"), |
---|
255 | 0, 60, 1, s_settings->mainWindow().saveDatabaseInterval() / 1000 / 60); |
---|
256 | |
---|
257 | #ifndef WITH_SQL |
---|
258 | |
---|
259 | m_restoreTabsCheckBox->setEnabled(false); |
---|
260 | m_restoreBookmarksCheckBox->setEnabled(false); |
---|
261 | m_restorePerFileSettingsCheckBox->setEnabled(false); |
---|
262 | m_saveDatabaseInterval->setEnabled(false); |
---|
263 | |
---|
264 | #endif // WITH_SQL |
---|
265 | |
---|
266 | |
---|
267 | m_synchronizePresentationCheckBox = addCheckBox(m_behaviorLayout, tr("Synchronize presentation:"), QString(), |
---|
268 | s_settings->presentationView().synchronize()); |
---|
269 | |
---|
270 | m_presentationScreenSpinBox = addSpinBox(m_behaviorLayout, tr("Presentation screen:"), QString(), QString(), tr("Default"), |
---|
271 | -1, QApplication::desktop()->screenCount() - 1, 1, s_settings->presentationView().screen()); |
---|
272 | |
---|
273 | |
---|
274 | m_synchronizeOutlineViewCheckBox = addCheckBox(m_behaviorLayout, tr("Synchronize outline view:"), QString(), |
---|
275 | s_settings->mainWindow().synchronizeOutlineView()); |
---|
276 | |
---|
277 | |
---|
278 | m_minimalScrollingCheckBox = addCheckBox(m_behaviorLayout, tr("Minimal scrolling:"), QString(), |
---|
279 | s_settings->documentView().minimalScrolling()); |
---|
280 | |
---|
281 | m_zoomFactorSpinBox = addDoubleSpinBox(m_behaviorLayout, tr("Zoom factor:"), QString(), QString(), QString(), |
---|
282 | 1.0, 2.0, 0.05, s_settings->documentView().zoomFactor()); |
---|
283 | |
---|
284 | |
---|
285 | m_highlightDurationSpinBox = addSpinBox(m_behaviorLayout, tr("Highlight duration:"), QString(), tr(" ms"), tr("None"), |
---|
286 | 0, 60000, 500, s_settings->documentView().highlightDuration()); |
---|
287 | |
---|
288 | m_highlightColorComboBox = addColorComboBox(m_behaviorLayout, tr("Highlight color:"), QString(), |
---|
289 | s_settings->pageItem().highlightColor()); |
---|
290 | |
---|
291 | m_annotationColorComboBox = addColorComboBox(m_behaviorLayout, tr("Annotation color:"), QString(), |
---|
292 | s_settings->pageItem().annotationColor()); |
---|
293 | |
---|
294 | |
---|
295 | m_sourceEditorLineEdit = addLineEdit(m_behaviorLayout, tr("Source editor:"), tr("'%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number."), |
---|
296 | s_settings->documentView().sourceEditor()); |
---|
297 | } |
---|
298 | |
---|
299 | void SettingsDialog::acceptBehaivorTab() |
---|
300 | { |
---|
301 | s_settings->documentView().setOpenUrl(m_openUrlCheckBox->isChecked()); |
---|
302 | |
---|
303 | s_settings->documentView().setAutoRefresh(m_autoRefreshCheckBox->isChecked()); |
---|
304 | |
---|
305 | s_settings->mainWindow().setTrackRecentlyUsed(m_trackRecentlyUsedCheckBox->isChecked()); |
---|
306 | s_settings->mainWindow().setKeepRecentlyClosed(m_keepRecentlyClosedCheckBox->isChecked()); |
---|
307 | |
---|
308 | s_settings->mainWindow().setRestoreTabs(m_restoreTabsCheckBox->isChecked()); |
---|
309 | s_settings->mainWindow().setRestoreBookmarks(m_restoreBookmarksCheckBox->isChecked()); |
---|
310 | s_settings->mainWindow().setRestorePerFileSettings(m_restorePerFileSettingsCheckBox->isChecked()); |
---|
311 | s_settings->mainWindow().setSaveDatabaseInterval(m_saveDatabaseInterval->value() * 60 * 1000); |
---|
312 | |
---|
313 | s_settings->presentationView().setSynchronize(m_synchronizePresentationCheckBox->isChecked()); |
---|
314 | s_settings->presentationView().setScreen(m_presentationScreenSpinBox->value()); |
---|
315 | |
---|
316 | s_settings->mainWindow().setSynchronizeOutlineView(m_synchronizeOutlineViewCheckBox->isChecked()); |
---|
317 | |
---|
318 | s_settings->documentView().setMinimalScrolling(m_minimalScrollingCheckBox->isChecked()); |
---|
319 | s_settings->documentView().setZoomFactor(m_zoomFactorSpinBox->value()); |
---|
320 | |
---|
321 | s_settings->documentView().setHighlightDuration(m_highlightDurationSpinBox->value()); |
---|
322 | s_settings->pageItem().setHighlightColor(validColorFromCurrentText(m_highlightColorComboBox, Defaults::PageItem::highlightColor())); |
---|
323 | s_settings->pageItem().setAnnotationColor(validColorFromCurrentText(m_annotationColorComboBox, Defaults::PageItem::annotationColor())); |
---|
324 | |
---|
325 | s_settings->documentView().setSourceEditor(m_sourceEditorLineEdit->text()); |
---|
326 | } |
---|
327 | |
---|
328 | void SettingsDialog::resetBehaviorTab() |
---|
329 | { |
---|
330 | m_openUrlCheckBox->setChecked(Defaults::DocumentView::openUrl()); |
---|
331 | |
---|
332 | m_autoRefreshCheckBox->setChecked(Defaults::DocumentView::autoRefresh()); |
---|
333 | |
---|
334 | m_trackRecentlyUsedCheckBox->setChecked(Defaults::MainWindow::trackRecentlyUsed()); |
---|
335 | m_keepRecentlyClosedCheckBox->setChecked(Defaults::MainWindow::keepRecentlyClosed()); |
---|
336 | |
---|
337 | m_restoreTabsCheckBox->setChecked(Defaults::MainWindow::restoreTabs()); |
---|
338 | m_restoreBookmarksCheckBox->setChecked(Defaults::MainWindow::restoreBookmarks()); |
---|
339 | m_restorePerFileSettingsCheckBox->setChecked(Defaults::MainWindow::restorePerFileSettings()); |
---|
340 | m_saveDatabaseInterval->setValue(Defaults::MainWindow::saveDatabaseInterval()); |
---|
341 | |
---|
342 | m_synchronizePresentationCheckBox->setChecked(Defaults::PresentationView::synchronize()); |
---|
343 | m_presentationScreenSpinBox->setValue(Defaults::PresentationView::screen()); |
---|
344 | |
---|
345 | m_synchronizeOutlineViewCheckBox->setChecked(Defaults::MainWindow::synchronizeOutlineView()); |
---|
346 | |
---|
347 | m_minimalScrollingCheckBox->setChecked(Defaults::DocumentView::minimalScrolling()); |
---|
348 | m_zoomFactorSpinBox->setValue(Defaults::DocumentView::zoomFactor()); |
---|
349 | |
---|
350 | m_highlightDurationSpinBox->setValue(Defaults::DocumentView::highlightDuration()); |
---|
351 | setCurrentTextToColorName(m_highlightColorComboBox, Defaults::PageItem::highlightColor()); |
---|
352 | setCurrentTextToColorName(m_annotationColorComboBox, Defaults::PageItem::annotationColor()); |
---|
353 | |
---|
354 | m_sourceEditorLineEdit->clear(); |
---|
355 | } |
---|
356 | |
---|
357 | void SettingsDialog::createGraphicsTab() |
---|
358 | { |
---|
359 | m_useTilingCheckBox = addCheckBox(m_graphicsLayout, tr("Use tiling:"), QString(), |
---|
360 | s_settings->pageItem().useTiling()); |
---|
361 | |
---|
362 | m_keepObsoletePixmapsCheckBox = addCheckBox(m_graphicsLayout, tr("Keep obsolete pixmaps:"), QString(), |
---|
363 | s_settings->pageItem().keepObsoletePixmaps()); |
---|
364 | |
---|
365 | m_useDevicePixelRatioCheckBox = addCheckBox(m_graphicsLayout, tr("Use device pixel ratio:"), QString(), |
---|
366 | s_settings->pageItem().useDevicePixelRatio()); |
---|
367 | |
---|
368 | #if QT_VERSION < QT_VERSION_CHECK(5,1,0) |
---|
369 | |
---|
370 | m_useDevicePixelRatioCheckBox->setEnabled(false); |
---|
371 | |
---|
372 | #endif // QT_VERSION |
---|
373 | |
---|
374 | |
---|
375 | m_decoratePagesCheckBox = addCheckBox(m_graphicsLayout, tr("Decorate pages:"), QString(), |
---|
376 | s_settings->pageItem().decoratePages()); |
---|
377 | |
---|
378 | m_decorateLinksCheckBox = addCheckBox(m_graphicsLayout, tr("Decorate links:"), QString(), |
---|
379 | s_settings->pageItem().decorateLinks()); |
---|
380 | |
---|
381 | m_decorateFormFieldsCheckBox = addCheckBox(m_graphicsLayout, tr("Decorate form fields:"), QString(), |
---|
382 | s_settings->pageItem().decorateFormFields()); |
---|
383 | |
---|
384 | |
---|
385 | m_backgroundColorComboBox = addColorComboBox(m_graphicsLayout, tr("Background color:"), QString(), |
---|
386 | s_settings->pageItem().backgroundColor()); |
---|
387 | |
---|
388 | m_paperColorComboBox = addColorComboBox(m_graphicsLayout, tr("Paper color:"), QString(), |
---|
389 | s_settings->pageItem().paperColor()); |
---|
390 | |
---|
391 | m_presentationBackgroundColorComboBox = addColorComboBox(m_graphicsLayout, tr("Presentation background color:"), QString(), |
---|
392 | s_settings->presentationView().backgroundColor()); |
---|
393 | |
---|
394 | |
---|
395 | m_pagesPerRowSpinBox = addSpinBox(m_graphicsLayout, tr("Pages per row:"), QString(), QString(), QString(), |
---|
396 | 1, 10, 1, s_settings->documentView().pagesPerRow()); |
---|
397 | |
---|
398 | |
---|
399 | m_pageSpacingSpinBox = addDoubleSpinBox(m_graphicsLayout, tr("Page spacing:"), QString(), tr(" px"), QString(), |
---|
400 | 0.0, 25.0, 0.25, s_settings->documentView().pageSpacing()); |
---|
401 | |
---|
402 | m_thumbnailSpacingSpinBox = addDoubleSpinBox(m_graphicsLayout, tr("Thumbnail spacing:"), QString(), tr(" px"), QString(), |
---|
403 | 0.0, 25.0, 0.25, s_settings->documentView().thumbnailSpacing()); |
---|
404 | |
---|
405 | |
---|
406 | m_thumbnailSizeSpinBox = addDoubleSpinBox(m_graphicsLayout, tr("Thumbnail size:"), QString(), tr(" px"), tr("Fit to viewport"), |
---|
407 | 0.0, 1800.0, 25.0, s_settings->documentView().thumbnailSize()); |
---|
408 | |
---|
409 | |
---|
410 | m_cacheSizeComboBox = addDataSizeComboBox(m_graphicsLayout, tr("Cache size:"), QString(), |
---|
411 | s_settings->pageItem().cacheSize()); |
---|
412 | |
---|
413 | m_prefetchCheckBox = addCheckBox(m_graphicsLayout, tr("Prefetch:"), QString(), |
---|
414 | s_settings->documentView().prefetch()); |
---|
415 | |
---|
416 | m_prefetchDistanceSpinBox = addSpinBox(m_graphicsLayout, tr("Prefetch distance:"), QString(), QString(), QString(), |
---|
417 | 1, 10, 1, s_settings->documentView().prefetchDistance()); |
---|
418 | } |
---|
419 | |
---|
420 | void SettingsDialog::acceptGraphicsTab() |
---|
421 | { |
---|
422 | s_settings->pageItem().setUseTiling(m_useTilingCheckBox->isChecked()); |
---|
423 | s_settings->pageItem().setKeepObsoletePixmaps(m_keepObsoletePixmapsCheckBox->isChecked()); |
---|
424 | s_settings->pageItem().setUseDevicePixelRatio(m_useDevicePixelRatioCheckBox->isChecked()); |
---|
425 | |
---|
426 | s_settings->pageItem().setDecoratePages(m_decoratePagesCheckBox->isChecked()); |
---|
427 | s_settings->pageItem().setDecorateLinks(m_decorateLinksCheckBox->isChecked()); |
---|
428 | s_settings->pageItem().setDecorateFormFields(m_decorateFormFieldsCheckBox->isChecked()); |
---|
429 | |
---|
430 | s_settings->pageItem().setBackgroundColor(validColorFromCurrentText(m_backgroundColorComboBox, Defaults::PageItem::backgroundColor())); |
---|
431 | s_settings->pageItem().setPaperColor(validColorFromCurrentText(m_paperColorComboBox, Defaults::PageItem::paperColor())); |
---|
432 | s_settings->presentationView().setBackgroundColor(validColorFromCurrentText(m_presentationBackgroundColorComboBox, Defaults::PresentationView::backgroundColor())); |
---|
433 | |
---|
434 | s_settings->documentView().setPagesPerRow(m_pagesPerRowSpinBox->value()); |
---|
435 | |
---|
436 | s_settings->documentView().setPageSpacing(m_pageSpacingSpinBox->value()); |
---|
437 | s_settings->documentView().setThumbnailSpacing(m_thumbnailSpacingSpinBox->value()); |
---|
438 | |
---|
439 | s_settings->documentView().setThumbnailSize(m_thumbnailSizeSpinBox->value()); |
---|
440 | |
---|
441 | s_settings->pageItem().setCacheSize(dataFromCurrentIndex(m_cacheSizeComboBox)); |
---|
442 | s_settings->documentView().setPrefetch(m_prefetchCheckBox->isChecked()); |
---|
443 | s_settings->documentView().setPrefetchDistance(m_prefetchDistanceSpinBox->value()); |
---|
444 | |
---|
445 | if(m_pdfSettingsWidget != 0) |
---|
446 | { |
---|
447 | m_pdfSettingsWidget->accept(); |
---|
448 | } |
---|
449 | |
---|
450 | if(m_psSettingsWidget != 0) |
---|
451 | { |
---|
452 | m_psSettingsWidget->accept(); |
---|
453 | } |
---|
454 | |
---|
455 | if(m_djvuSettingsWidget != 0) |
---|
456 | { |
---|
457 | m_djvuSettingsWidget->accept(); |
---|
458 | } |
---|
459 | } |
---|
460 | |
---|
461 | void SettingsDialog::resetGraphicsTab() |
---|
462 | { |
---|
463 | m_useTilingCheckBox->setChecked(Defaults::PageItem::useTiling()); |
---|
464 | m_keepObsoletePixmapsCheckBox->setChecked(Defaults::PageItem::keepObsoletePixmaps()); |
---|
465 | m_useDevicePixelRatioCheckBox->setChecked(Defaults::PageItem::useDevicePixelRatio()); |
---|
466 | |
---|
467 | m_decoratePagesCheckBox->setChecked(Defaults::PageItem::decoratePages()); |
---|
468 | m_decorateLinksCheckBox->setChecked(Defaults::PageItem::decorateLinks()); |
---|
469 | m_decorateFormFieldsCheckBox->setChecked(Defaults::PageItem::decorateFormFields()); |
---|
470 | |
---|
471 | setCurrentTextToColorName(m_backgroundColorComboBox, Defaults::PageItem::backgroundColor()); |
---|
472 | setCurrentTextToColorName(m_paperColorComboBox, Defaults::PageItem::paperColor()); |
---|
473 | setCurrentTextToColorName(m_presentationBackgroundColorComboBox, Defaults::PresentationView::backgroundColor()); |
---|
474 | |
---|
475 | m_pagesPerRowSpinBox->setValue(Defaults::DocumentView::pagesPerRow()); |
---|
476 | |
---|
477 | m_pageSpacingSpinBox->setValue(Defaults::DocumentView::pageSpacing()); |
---|
478 | m_thumbnailSpacingSpinBox->setValue(Defaults::DocumentView::thumbnailSpacing()); |
---|
479 | |
---|
480 | m_thumbnailSizeSpinBox->setValue(Defaults::DocumentView::thumbnailSize()); |
---|
481 | |
---|
482 | setCurrentIndexFromData(m_cacheSizeComboBox, Defaults::PageItem::cacheSize()); |
---|
483 | m_prefetchCheckBox->setChecked(Defaults::DocumentView::prefetch()); |
---|
484 | m_prefetchDistanceSpinBox->setValue(Defaults::DocumentView::prefetchDistance()); |
---|
485 | |
---|
486 | if(m_pdfSettingsWidget != 0) |
---|
487 | { |
---|
488 | m_pdfSettingsWidget->reset(); |
---|
489 | } |
---|
490 | |
---|
491 | if(m_psSettingsWidget != 0) |
---|
492 | { |
---|
493 | m_psSettingsWidget->reset(); |
---|
494 | } |
---|
495 | |
---|
496 | if(m_djvuSettingsWidget != 0) |
---|
497 | { |
---|
498 | m_djvuSettingsWidget->reset(); |
---|
499 | } |
---|
500 | } |
---|
501 | |
---|
502 | void SettingsDialog::createInterfaceTab() |
---|
503 | { |
---|
504 | m_extendedSearchDock = addCheckBox(m_interfaceLayout, tr("Extended search dock:"), tr("Effective after restart."), |
---|
505 | s_settings->mainWindow().extendedSearchDock()); |
---|
506 | |
---|
507 | m_annotationOverlayCheckBox = addCheckBox(m_interfaceLayout, tr("Annotation overlay:"), QString(), |
---|
508 | s_settings->pageItem().annotationOverlay()); |
---|
509 | |
---|
510 | m_formFieldOverlayCheckBox = addCheckBox(m_interfaceLayout, tr("Form field overlay:"), QString(), |
---|
511 | s_settings->pageItem().formFieldOverlay()); |
---|
512 | |
---|
513 | |
---|
514 | m_tabPositionComboBox = addComboBox(m_interfaceLayout, tr("Tab position:"), QString(), |
---|
515 | QStringList() << tr("Top") << tr("Bottom") << tr("Left") << tr("Right"), |
---|
516 | QList< int >() << QTabWidget::North << QTabWidget::South << QTabWidget::West << QTabWidget::East, |
---|
517 | s_settings->mainWindow().tabPosition()); |
---|
518 | |
---|
519 | m_tabVisibilityComboBox = addComboBox(m_interfaceLayout, tr("Tab visibility:"), QString(), |
---|
520 | QStringList() << tr("As needed") << tr("Always") << tr("Never"), |
---|
521 | QList< int >() << TabWidget::TabBarAsNeeded << TabWidget::TabBarAlwaysOn << TabWidget::TabBarAlwaysOff, |
---|
522 | s_settings->mainWindow().tabVisibility()); |
---|
523 | |
---|
524 | m_spreadTabsCheckBox = addCheckBox(m_interfaceLayout, tr("Spread tabs:"), QString(), |
---|
525 | s_settings->mainWindow().spreadTabs()); |
---|
526 | |
---|
527 | |
---|
528 | m_newTabNextToCurrentTabCheckBox = addCheckBox(m_interfaceLayout, tr("New tab next to current tab:"), QString(), |
---|
529 | s_settings->mainWindow().newTabNextToCurrentTab()); |
---|
530 | |
---|
531 | m_exitAfterLastTabCheckBox = addCheckBox(m_interfaceLayout, tr("Exit after last tab:"), QString(), |
---|
532 | s_settings->mainWindow().exitAfterLastTab()); |
---|
533 | |
---|
534 | |
---|
535 | m_recentlyUsedCountSpinBox = addSpinBox(m_interfaceLayout, tr("Recently used count:"), tr("Effective after restart."), QString(), QString(), |
---|
536 | 1, 50, 1, s_settings->mainWindow().recentlyUsedCount()); |
---|
537 | |
---|
538 | m_recentlyClosedCountSpinBox = addSpinBox(m_interfaceLayout, tr("Recently closed count:"), tr("Effective after restart."), QString(), QString(), |
---|
539 | 1, 25, 1, s_settings->mainWindow().recentlyClosedCount()); |
---|
540 | |
---|
541 | |
---|
542 | m_fileToolBarLineEdit = addLineEdit(m_interfaceLayout, tr("File tool bar:"), tr("Effective after restart."), |
---|
543 | s_settings->mainWindow().fileToolBar().join(",")); |
---|
544 | |
---|
545 | m_editToolBarLineEdit = addLineEdit(m_interfaceLayout, tr("Edit tool bar:"), tr("Effective after restart."), |
---|
546 | s_settings->mainWindow().editToolBar().join(",")); |
---|
547 | |
---|
548 | m_viewToolBarLineEdit = addLineEdit(m_interfaceLayout, tr("View tool bar:"), tr("Effective after restart."), |
---|
549 | s_settings->mainWindow().viewToolBar().join(",")); |
---|
550 | |
---|
551 | m_documentContextMenuLineEdit = addLineEdit(m_interfaceLayout, tr("Document context menu:"), QString(), |
---|
552 | s_settings->mainWindow().documentContextMenu().join(",")); |
---|
553 | |
---|
554 | m_tabContextMenuLineEdit = addLineEdit(m_interfaceLayout, tr("Tab context menu:"), QString(), |
---|
555 | s_settings->mainWindow().tabContextMenu().join(",")); |
---|
556 | |
---|
557 | m_scrollableMenusCheckBox = addCheckBox(m_interfaceLayout, tr("Scrollable menus:"), tr("Effective after restart."), |
---|
558 | s_settings->mainWindow().scrollableMenus()); |
---|
559 | |
---|
560 | m_searchableMenusCheckBox = addCheckBox(m_interfaceLayout, tr("Searchable menus:"), QString(), |
---|
561 | s_settings->mainWindow().searchableMenus()); |
---|
562 | |
---|
563 | |
---|
564 | m_toggleToolAndMenuBarsWithFullscreenCheckBox = addCheckBox(m_interfaceLayout, tr("Toggle tool and menu bars with fullscreen:"), QString(), |
---|
565 | s_settings->mainWindow().toggleToolAndMenuBarsWithFullscreen()); |
---|
566 | |
---|
567 | |
---|
568 | m_usePageLabelCheckBox = addCheckBox(m_interfaceLayout, tr("Use page label:"), QString(), |
---|
569 | s_settings->mainWindow().usePageLabel()); |
---|
570 | |
---|
571 | m_documentTitleAsTabTitleCheckBox = addCheckBox(m_interfaceLayout, tr("Document title as tab title:"), QString(), |
---|
572 | s_settings->mainWindow().documentTitleAsTabTitle()); |
---|
573 | |
---|
574 | |
---|
575 | m_currentPageInWindowTitleCheckBox = addCheckBox(m_interfaceLayout, tr("Current page in window title:"), QString(), |
---|
576 | s_settings->mainWindow().currentPageInWindowTitle()); |
---|
577 | |
---|
578 | m_instanceNameInWindowTitleCheckBox = addCheckBox(m_interfaceLayout, tr("Instance name in window title:"), QString(), |
---|
579 | s_settings->mainWindow().instanceNameInWindowTitle()); |
---|
580 | |
---|
581 | |
---|
582 | m_highlightCurrentThumbnailCheckBox = addCheckBox(m_interfaceLayout, tr("Highlight current thumbnail:"), QString(), |
---|
583 | s_settings->documentView().highlightCurrentThumbnail()); |
---|
584 | |
---|
585 | m_limitThumbnailsToResultsCheckBox = addCheckBox(m_interfaceLayout, tr("Limit thumbnails to results:"), QString(), |
---|
586 | s_settings->documentView().limitThumbnailsToResults()); |
---|
587 | } |
---|
588 | |
---|
589 | void SettingsDialog::acceptInterfaceTab() |
---|
590 | { |
---|
591 | s_settings->mainWindow().setExtendedSearchDock(m_extendedSearchDock->isChecked()); |
---|
592 | |
---|
593 | s_settings->pageItem().setAnnotationOverlay(m_annotationOverlayCheckBox->isChecked()); |
---|
594 | s_settings->pageItem().setFormFieldOverlay(m_formFieldOverlayCheckBox); |
---|
595 | |
---|
596 | s_settings->mainWindow().setTabPosition(dataFromCurrentIndex(m_tabPositionComboBox)); |
---|
597 | s_settings->mainWindow().setTabVisibility(dataFromCurrentIndex(m_tabVisibilityComboBox)); |
---|
598 | s_settings->mainWindow().setSpreadTabs(m_spreadTabsCheckBox->isChecked()); |
---|
599 | |
---|
600 | s_settings->mainWindow().setNewTabNextToCurrentTab(m_newTabNextToCurrentTabCheckBox->isChecked()); |
---|
601 | s_settings->mainWindow().setExitAfterLastTab(m_exitAfterLastTabCheckBox->isChecked()); |
---|
602 | |
---|
603 | s_settings->mainWindow().setRecentlyUsedCount(m_recentlyUsedCountSpinBox->value()); |
---|
604 | s_settings->mainWindow().setRecentlyClosedCount(m_recentlyClosedCountSpinBox->value()); |
---|
605 | |
---|
606 | s_settings->mainWindow().setFileToolBar(m_fileToolBarLineEdit->text().split(",", QString::SkipEmptyParts)); |
---|
607 | s_settings->mainWindow().setEditToolBar(m_editToolBarLineEdit->text().split(",", QString::SkipEmptyParts)); |
---|
608 | s_settings->mainWindow().setViewToolBar(m_viewToolBarLineEdit->text().split(",", QString::SkipEmptyParts)); |
---|
609 | |
---|
610 | s_settings->mainWindow().setDocumentContextMenu(m_documentContextMenuLineEdit->text().split(",", QString::SkipEmptyParts)); |
---|
611 | s_settings->mainWindow().setTabContextMenu(m_tabContextMenuLineEdit->text().split(",", QString::SkipEmptyParts)); |
---|
612 | |
---|
613 | s_settings->mainWindow().setScrollableMenus(m_scrollableMenusCheckBox->isChecked()); |
---|
614 | s_settings->mainWindow().setSearchableMenus(m_searchableMenusCheckBox->isChecked()); |
---|
615 | |
---|
616 | s_settings->mainWindow().setToggleToolAndMenuBarsWithFullscreen(m_toggleToolAndMenuBarsWithFullscreenCheckBox->isChecked()); |
---|
617 | |
---|
618 | s_settings->mainWindow().setUsePageLabel(m_usePageLabelCheckBox->isChecked()); |
---|
619 | s_settings->mainWindow().setDocumentTitleAsTabTitle(m_documentTitleAsTabTitleCheckBox->isChecked()); |
---|
620 | |
---|
621 | s_settings->mainWindow().setCurrentPageInWindowTitle(m_currentPageInWindowTitleCheckBox->isChecked()); |
---|
622 | s_settings->mainWindow().setInstanceNameInWindowTitle(m_instanceNameInWindowTitleCheckBox->isChecked()); |
---|
623 | |
---|
624 | s_settings->documentView().setHighlightCurrentThumbnail(m_highlightCurrentThumbnailCheckBox->isChecked()); |
---|
625 | s_settings->documentView().setLimitThumbnailsToResults(m_limitThumbnailsToResultsCheckBox->isChecked()); |
---|
626 | } |
---|
627 | |
---|
628 | void SettingsDialog::resetInterfaceTab() |
---|
629 | { |
---|
630 | m_extendedSearchDock->setChecked(Defaults::MainWindow::extendedSearchDock()); |
---|
631 | |
---|
632 | m_annotationOverlayCheckBox->setChecked(Defaults::PageItem::annotationOverlay()); |
---|
633 | m_formFieldOverlayCheckBox->setChecked(Defaults::PageItem::formFieldOverlay()); |
---|
634 | |
---|
635 | setCurrentIndexFromData(m_tabPositionComboBox, Defaults::MainWindow::tabPosition()); |
---|
636 | setCurrentIndexFromData(m_tabVisibilityComboBox, Defaults::MainWindow::tabVisibility()); |
---|
637 | m_spreadTabsCheckBox->setChecked(Defaults::MainWindow::spreadTabs()); |
---|
638 | |
---|
639 | m_newTabNextToCurrentTabCheckBox->setChecked(Defaults::MainWindow::newTabNextToCurrentTab()); |
---|
640 | m_exitAfterLastTabCheckBox->setChecked(Defaults::MainWindow::exitAfterLastTab()); |
---|
641 | |
---|
642 | m_recentlyUsedCountSpinBox->setValue(Defaults::MainWindow::recentlyUsedCount()); |
---|
643 | m_recentlyClosedCountSpinBox->setValue(Defaults::MainWindow::recentlyClosedCount()); |
---|
644 | |
---|
645 | m_fileToolBarLineEdit->setText(Defaults::MainWindow::fileToolBar().join(",")); |
---|
646 | m_editToolBarLineEdit->setText(Defaults::MainWindow::editToolBar().join(",")); |
---|
647 | m_viewToolBarLineEdit->setText(Defaults::MainWindow::viewToolBar().join(",")); |
---|
648 | |
---|
649 | m_documentContextMenuLineEdit->setText(Defaults::MainWindow::documentContextMenu().join(",")); |
---|
650 | m_tabContextMenuLineEdit->setText(Defaults::MainWindow::tabContexntMenu().join(",")); |
---|
651 | |
---|
652 | m_scrollableMenusCheckBox->setChecked(Defaults::MainWindow::scrollableMenus()); |
---|
653 | m_searchableMenusCheckBox->setChecked(Defaults::MainWindow::searchableMenus()); |
---|
654 | |
---|
655 | m_toggleToolAndMenuBarsWithFullscreenCheckBox->setChecked(Defaults::MainWindow::toggleToolAndMenuBarsWithFullscreen()); |
---|
656 | |
---|
657 | m_usePageLabelCheckBox->setChecked(Defaults::MainWindow::usePageLabel()); |
---|
658 | m_documentTitleAsTabTitleCheckBox->setChecked(Defaults::MainWindow::documentTitleAsTabTitle()); |
---|
659 | |
---|
660 | m_currentPageInWindowTitleCheckBox->setChecked(Defaults::MainWindow::currentPageInWindowTitle()); |
---|
661 | m_instanceNameInWindowTitleCheckBox->setChecked(Defaults::MainWindow::instanceNameInWindowTitle()); |
---|
662 | |
---|
663 | m_highlightCurrentThumbnailCheckBox->setChecked(Defaults::DocumentView::highlightCurrentThumbnail()); |
---|
664 | m_limitThumbnailsToResultsCheckBox->setChecked(Defaults::DocumentView::limitThumbnailsToResults()); |
---|
665 | } |
---|
666 | |
---|
667 | void SettingsDialog::createModifiersTab() |
---|
668 | { |
---|
669 | m_zoomModifiersComboBox = addModifiersComboBox(m_modifiersLayout, tr("Zoom:"), QString(), |
---|
670 | s_settings->documentView().zoomModifiers()); |
---|
671 | |
---|
672 | m_rotateModifiersComboBox = addModifiersComboBox(m_modifiersLayout, tr("Rotate:"), QString(), |
---|
673 | s_settings->documentView().rotateModifiers()); |
---|
674 | |
---|
675 | m_scrollModifiersComboBox = addModifiersComboBox(m_modifiersLayout, tr("Scroll:"), QString(), |
---|
676 | s_settings->documentView().scrollModifiers()); |
---|
677 | |
---|
678 | |
---|
679 | m_copyToClipboardModifiersComboBox = addModifiersComboBox(m_modifiersLayout, tr("Copy to clipboard:"), QString(), |
---|
680 | s_settings->pageItem().copyToClipboardModifiers()); |
---|
681 | |
---|
682 | m_addAnnotationModifiersComboBox = addModifiersComboBox(m_modifiersLayout, tr("Add annotation:"), QString(), |
---|
683 | s_settings->pageItem().addAnnotationModifiers()); |
---|
684 | |
---|
685 | m_zoomToSelectionModifiersComboBox = addModifiersComboBox(m_modifiersLayout, tr("Zoom to selection:"), QString(), |
---|
686 | s_settings->pageItem().zoomToSelectionModifiers()); |
---|
687 | } |
---|
688 | |
---|
689 | void SettingsDialog::acceptModifiersTab() |
---|
690 | { |
---|
691 | s_settings->documentView().setZoomModifiers(keyboardModifierFromCurrentIndex(m_zoomModifiersComboBox)); |
---|
692 | s_settings->documentView().setRotateModifiers(keyboardModifierFromCurrentIndex(m_rotateModifiersComboBox)); |
---|
693 | s_settings->documentView().setScrollModifiers(keyboardModifierFromCurrentIndex(m_scrollModifiersComboBox)); |
---|
694 | |
---|
695 | s_settings->pageItem().setCopyToClipboardModifiers(keyboardModifierFromCurrentIndex(m_copyToClipboardModifiersComboBox)); |
---|
696 | s_settings->pageItem().setAddAnnotationModifiers(keyboardModifierFromCurrentIndex(m_addAnnotationModifiersComboBox)); |
---|
697 | s_settings->pageItem().setZoomToSelectionModifiers(keyboardModifierFromCurrentIndex(m_zoomToSelectionModifiersComboBox)); |
---|
698 | } |
---|
699 | |
---|
700 | void SettingsDialog::resetModifiersTab() |
---|
701 | { |
---|
702 | setCurrentIndexFromKeyboardModifiers(m_zoomModifiersComboBox, Defaults::DocumentView::zoomModifiers()); |
---|
703 | setCurrentIndexFromKeyboardModifiers(m_rotateModifiersComboBox, Defaults::DocumentView::rotateModifiers()); |
---|
704 | setCurrentIndexFromKeyboardModifiers(m_scrollModifiersComboBox, Defaults::DocumentView::scrollModifiers()); |
---|
705 | |
---|
706 | setCurrentIndexFromKeyboardModifiers(m_copyToClipboardModifiersComboBox, Defaults::PageItem::copyToClipboardModifiers()); |
---|
707 | setCurrentIndexFromKeyboardModifiers(m_addAnnotationModifiersComboBox, Defaults::PageItem::addAnnotationModifiers()); |
---|
708 | setCurrentIndexFromKeyboardModifiers(m_zoomToSelectionModifiersComboBox, Defaults::PageItem::zoomToSelectionModifiers()); |
---|
709 | } |
---|
710 | |
---|
711 | QCheckBox* SettingsDialog::addCheckBox(QFormLayout* layout, const QString& label, const QString& toolTip, bool checked) |
---|
712 | { |
---|
713 | QCheckBox* checkBox = new QCheckBox(this); |
---|
714 | checkBox->setChecked(checked); |
---|
715 | |
---|
716 | checkBox->setToolTip(toolTip); |
---|
717 | layout->addRow(label, checkBox); |
---|
718 | |
---|
719 | return checkBox; |
---|
720 | } |
---|
721 | |
---|
722 | QLineEdit* SettingsDialog::addLineEdit(QFormLayout* layout, const QString& label, const QString& toolTip, const QString& text) |
---|
723 | { |
---|
724 | QLineEdit* lineEdit = new QLineEdit(this); |
---|
725 | lineEdit->setText(text); |
---|
726 | |
---|
727 | lineEdit->setToolTip(toolTip); |
---|
728 | layout->addRow(label, lineEdit); |
---|
729 | |
---|
730 | return lineEdit; |
---|
731 | } |
---|
732 | |
---|
733 | QSpinBox* SettingsDialog::addSpinBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QString& suffix, const QString& special, int min, int max, int step, int val) |
---|
734 | { |
---|
735 | QSpinBox* spinBox = new QSpinBox(this); |
---|
736 | spinBox->setRange(min, max); |
---|
737 | spinBox->setSingleStep(step); |
---|
738 | spinBox->setValue(val); |
---|
739 | |
---|
740 | spinBox->setSuffix(suffix); |
---|
741 | spinBox->setSpecialValueText(special); |
---|
742 | |
---|
743 | spinBox->setToolTip(toolTip); |
---|
744 | layout->addRow(label, spinBox); |
---|
745 | |
---|
746 | return spinBox; |
---|
747 | } |
---|
748 | |
---|
749 | QDoubleSpinBox* SettingsDialog::addDoubleSpinBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QString& suffix, const QString& special, double min, double max, double step, double val) |
---|
750 | { |
---|
751 | QDoubleSpinBox* spinBox = new QDoubleSpinBox(this); |
---|
752 | spinBox->setRange(min, max); |
---|
753 | spinBox->setSingleStep(step); |
---|
754 | spinBox->setValue(val); |
---|
755 | |
---|
756 | spinBox->setSuffix(suffix); |
---|
757 | spinBox->setSpecialValueText(special); |
---|
758 | |
---|
759 | spinBox->setToolTip(toolTip); |
---|
760 | layout->addRow(label, spinBox); |
---|
761 | |
---|
762 | return spinBox; |
---|
763 | } |
---|
764 | |
---|
765 | QComboBox* SettingsDialog::addComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QStringList& text, const QList< int >& data, int value) |
---|
766 | { |
---|
767 | QComboBox* comboBox = new QComboBox(this); |
---|
768 | |
---|
769 | for(int index = 0, count = text.count(); index < count; ++index) |
---|
770 | { |
---|
771 | comboBox->addItem(text.at(index), data.at(index)); |
---|
772 | } |
---|
773 | |
---|
774 | setCurrentIndexFromData(comboBox, value); |
---|
775 | |
---|
776 | comboBox->setToolTip(toolTip); |
---|
777 | layout->addRow(label, comboBox); |
---|
778 | |
---|
779 | return comboBox; |
---|
780 | } |
---|
781 | |
---|
782 | QComboBox* SettingsDialog::addDataSizeComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, int dataSize) |
---|
783 | { |
---|
784 | QComboBox* comboBox = new QComboBox(this); |
---|
785 | |
---|
786 | comboBox->addItem(tr("%1 MB").arg(0), 0); |
---|
787 | comboBox->addItem(tr("%1 MB").arg(8), 8 << 20); |
---|
788 | comboBox->addItem(tr("%1 MB").arg(16), 16 << 20); |
---|
789 | comboBox->addItem(tr("%1 MB").arg(32), 32 << 20); |
---|
790 | comboBox->addItem(tr("%1 MB").arg(64), 64 << 20); |
---|
791 | comboBox->addItem(tr("%1 MB").arg(128), 128 << 20); |
---|
792 | comboBox->addItem(tr("%1 MB").arg(256), 256 << 20); |
---|
793 | comboBox->addItem(tr("%1 MB").arg(512), 512 << 20); |
---|
794 | comboBox->addItem(tr("%1 MB").arg(1024), 1024 << 20); |
---|
795 | comboBox->addItem(tr("%1 MB").arg(2048), INT_MAX); |
---|
796 | |
---|
797 | int currentIndex = comboBox->findData(dataSize); |
---|
798 | |
---|
799 | if(currentIndex == -1) |
---|
800 | { |
---|
801 | currentIndex = comboBox->count(); |
---|
802 | |
---|
803 | comboBox->addItem(tr("%1 MB").arg(dataSize >> 20), dataSize); |
---|
804 | } |
---|
805 | |
---|
806 | comboBox->setCurrentIndex(currentIndex); |
---|
807 | |
---|
808 | comboBox->setToolTip(toolTip); |
---|
809 | layout->addRow(label, comboBox); |
---|
810 | |
---|
811 | return comboBox; |
---|
812 | } |
---|
813 | |
---|
814 | QComboBox* SettingsDialog::addColorComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QColor& color) |
---|
815 | { |
---|
816 | QComboBox* comboBox = new QComboBox(this); |
---|
817 | comboBox->setEditable(true); |
---|
818 | comboBox->setInsertPolicy(QComboBox::NoInsert); |
---|
819 | comboBox->addItems(QColor::colorNames()); |
---|
820 | |
---|
821 | setCurrentTextToColorName(comboBox, color); |
---|
822 | |
---|
823 | comboBox->setToolTip(toolTip); |
---|
824 | layout->addRow(label, comboBox); |
---|
825 | |
---|
826 | return comboBox; |
---|
827 | } |
---|
828 | |
---|
829 | QComboBox* SettingsDialog::addModifiersComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, const Qt::KeyboardModifiers& modifiers) |
---|
830 | { |
---|
831 | QComboBox* comboBox = new QComboBox(this); |
---|
832 | comboBox->addItem(QShortcut::tr("Shift"), static_cast< int >(Qt::ShiftModifier)); |
---|
833 | comboBox->addItem(QShortcut::tr("Ctrl"), static_cast< int >(Qt::ControlModifier)); |
---|
834 | comboBox->addItem(QShortcut::tr("Alt"), static_cast< int >(Qt::AltModifier)); |
---|
835 | comboBox->addItem(QShortcut::tr("Shift and Ctrl"), static_cast< int >(Qt::ShiftModifier | Qt::ControlModifier)); |
---|
836 | comboBox->addItem(QShortcut::tr("Shift and Alt"), static_cast< int >(Qt::ShiftModifier | Qt::AltModifier)); |
---|
837 | comboBox->addItem(QShortcut::tr("Ctrl and Alt"), static_cast< int >(Qt::ControlModifier | Qt::AltModifier)); |
---|
838 | comboBox->addItem(QShortcut::tr("Right mouse button"), static_cast< int >(Qt::RightButton)); |
---|
839 | comboBox->addItem(QShortcut::tr("Middle mouse button"), static_cast< int >(Qt::MidButton)); |
---|
840 | |
---|
841 | setCurrentIndexFromKeyboardModifiers(comboBox, modifiers); |
---|
842 | |
---|
843 | comboBox->setToolTip(toolTip); |
---|
844 | layout->addRow(label, comboBox); |
---|
845 | |
---|
846 | return comboBox; |
---|
847 | } |
---|
848 | |
---|
849 | } // qpdfview |
---|