[1f4adec] | 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 |
---|