qpdfviewsb/sources/settings.cpp

1232 lines
38 KiB
C++

/*
Copyright 2015 S. Razi Alavizadeh
Copyright 2012-2015 Adam Reichold
Copyright 2012 Alexander Volkov
This file is part of qpdfview.
qpdfview is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
qpdfview is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with qpdfview. If not, see <http://www.gnu.org/licenses/>.
*/
#include "settings.h"
#include <QApplication>
#include <QDesktopWidget>
#include <QLocale>
#include <QSettings>
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
#include <QStandardPaths>
#else
#include <QDesktopServices>
#endif // QT_VERSION
namespace
{
inline QStringList trimmed(const QStringList& list)
{
QStringList trimmedList;
foreach(const QString& item, list)
{
trimmedList.append(item.trimmed());
}
return trimmedList;
}
inline int toInt(const QString& text, int defaultValue)
{
bool ok = false;
const int value = text.toInt(&ok);
return ok ? value : defaultValue;
}
int dataSize(const QSettings* settings, const QString& key, int defaultValue)
{
QString text = settings->value(key, QString("%1K").arg(defaultValue)).toString().trimmed();
if(text.endsWith('M'))
{
text.chop(1);
return toInt(text, defaultValue / 1024) * 1024;
}
else if(text.endsWith('K'))
{
text.chop(1);
return toInt(text, defaultValue);
}
else
{
return toInt(text, defaultValue * 1024) / 1024;
}
}
void setDataSize(QSettings* settings, const QString& key, int value)
{
settings->setValue(key, QString("%1K").arg(value));
}
} // anonymous
namespace qpdfview
{
Settings* Settings::s_instance = 0;
Settings* Settings::instance()
{
if(s_instance == 0)
{
s_instance = new Settings(qApp);
s_instance->sync();
}
return s_instance;
}
Settings::~Settings()
{
s_instance = 0;
}
// page item
void Settings::PageItem::sync()
{
m_cacheSize = dataSize(m_settings, "pageItem/cacheSize", Defaults::PageItem::cacheSize());
m_useTiling = m_settings->value("pageItem/useTiling", Defaults::PageItem::useTiling()).toBool();
m_tileSize = m_settings->value("pageItem/tileSize", Defaults::PageItem::tileSize()).toInt();
m_keepObsoletePixmaps = m_settings->value("pageItem/keepObsoletePixmaps", Defaults::PageItem::keepObsoletePixmaps()).toBool();
m_useDevicePixelRatio = m_settings->value("pageItem/useDevicePixelRatio", Defaults::PageItem::useDevicePixelRatio()).toBool();
m_decoratePages = m_settings->value("pageItem/decoratePages", Defaults::PageItem::decoratePages()).toBool();
m_decorateLinks = m_settings->value("pageItem/decorateLinks", Defaults::PageItem::decorateLinks()).toBool();
m_decorateFormFields = m_settings->value("pageItem/decorateFormFields", Defaults::PageItem::decorateFormFields()).toBool();
m_backgroundColor = m_settings->value("pageItem/backgroundColor", Defaults::PageItem::backgroundColor()).value< QColor >();
m_paperColor = m_settings->value("pageItem/paperColor", Defaults::PageItem::paperColor()).value< QColor >();
m_highlightColor = m_settings->value("pageItem/highlightColor", Defaults::PageItem::highlightColor()).value< QColor >();
}
void Settings::PageItem::setCacheSize(int cacheSize)
{
if(cacheSize >= 0)
{
m_cacheSize = cacheSize;
setDataSize(m_settings, "pageItem/cacheSize", cacheSize);
}
}
void Settings::PageItem::setUseTiling(bool useTiling)
{
m_useTiling = useTiling;
m_settings->setValue("pageItem/useTiling", useTiling);
}
void Settings::PageItem::setKeepObsoletePixmaps(bool keepObsoletePixmaps)
{
m_keepObsoletePixmaps = keepObsoletePixmaps;
m_settings->setValue("pageItem/keepObsoletePixmaps", keepObsoletePixmaps);
}
void Settings::PageItem::setUseDevicePixelRatio(bool useDevicePixelRatio)
{
m_useDevicePixelRatio = useDevicePixelRatio;
m_settings->setValue("pageItem/useDevicePixelRatio", useDevicePixelRatio);
}
void Settings::PageItem::setDecoratePages(bool decoratePages)
{
m_decoratePages = decoratePages;
m_settings->setValue("pageItem/decoratePages", decoratePages);
}
void Settings::PageItem::setDecorateLinks(bool decorateLinks)
{
m_decorateLinks = decorateLinks;
m_settings->setValue("pageItem/decorateLinks", decorateLinks);
}
void Settings::PageItem::setDecorateFormFields(bool decorateFormFields)
{
m_decorateFormFields = decorateFormFields;
m_settings->setValue("pageItem/decorateFormFields", decorateFormFields);
}
void Settings::PageItem::setBackgroundColor(const QColor& backgroundColor)
{
m_backgroundColor = backgroundColor;
m_settings->setValue("pageItem/backgroundColor", backgroundColor);
}
void Settings::PageItem::setPaperColor(const QColor& paperColor)
{
m_paperColor = paperColor;
m_settings->setValue("pageItem/paperColor", paperColor);
}
void Settings::PageItem::setHighlightColor(const QColor& highlightColor)
{
m_highlightColor = highlightColor;
m_settings->setValue("pageItem/highlightColor", highlightColor);
}
QColor Settings::PageItem::annotationColor() const
{
return m_settings->value("pageItem/annotationColor", Defaults::PageItem::annotationColor()).value< QColor >();
}
void Settings::PageItem::setAnnotationColor(const QColor& annotationColor)
{
m_settings->setValue("pageItem/annotationColor", annotationColor);
}
Qt::KeyboardModifiers Settings::PageItem::copyToClipboardModifiers() const
{
return static_cast< Qt::KeyboardModifiers >(m_settings->value("pageItem/copyToClipboardModifiers", static_cast< int >(Defaults::PageItem::copyToClipboardModifiers())).toInt());
}
void Settings::PageItem::setCopyToClipboardModifiers(Qt::KeyboardModifiers modifiers)
{
m_settings->setValue("pageItem/copyToClipboardModifiers", static_cast< int >(modifiers));
}
Qt::KeyboardModifiers Settings::PageItem::addAnnotationModifiers() const
{
return static_cast< Qt::KeyboardModifiers >(m_settings->value("pageItem/addAnnotationModifiers", static_cast< int >(Defaults::PageItem::addAnnotationModifiers())).toInt());
}
void Settings::PageItem::setAddAnnotationModifiers(Qt::KeyboardModifiers modifiers)
{
m_settings->setValue("pageItem/addAnnotationModifiers", static_cast< int >(modifiers));
}
Qt::KeyboardModifiers Settings::PageItem::zoomToSelectionModifiers() const
{
return static_cast< Qt::KeyboardModifiers>(m_settings->value("pageItem/zoomToSelectionModifiers", static_cast< int >(Defaults::PageItem::zoomToSelectionModifiers())).toInt());
}
void Settings::PageItem::setZoomToSelectionModifiers(Qt::KeyboardModifiers modifiers)
{
m_settings->setValue("pageItem/zoomToSelectionModifiers", static_cast< int >(modifiers));
}
Qt::KeyboardModifiers Settings::PageItem::openInSourceEditorModifiers() const
{
return static_cast< Qt::KeyboardModifiers >(m_settings->value("pageItem/openInSourceEditorModifiers", static_cast< int >(Defaults::PageItem::openInSourceEditorModifiers())).toInt());
}
void Settings::PageItem::setOpenInSourceEditorModifiers(Qt::KeyboardModifiers modifiers)
{
m_settings->setValue("pageItem/openInSourceEditorModifiers", static_cast< int >(modifiers));
}
bool Settings::PageItem::annotationOverlay() const
{
return m_settings->value("pageItem/annotationOverlay", Defaults::PageItem::annotationOverlay()).toBool();
}
void Settings::PageItem::setAnnotationOverlay(bool overlay)
{
m_settings->setValue("pageItem/annotationOverlay", overlay);
}
bool Settings::PageItem::formFieldOverlay() const
{
return m_settings->value("pageItem/formFieldOverlay", Defaults::PageItem::formFieldOverlay()).toBool();
}
void Settings::PageItem::setFormFieldOverlay(bool overlay)
{
m_settings->setValue("pageItem/formFieldOverlay", overlay);
}
Settings::PageItem::PageItem(QSettings* settings) :
m_settings(settings),
m_cacheSize(Defaults::PageItem::cacheSize()),
m_progressIcon(),
m_errorIcon(),
m_keepObsoletePixmaps(Defaults::PageItem::keepObsoletePixmaps()),
m_useDevicePixelRatio(false),
m_decoratePages(Defaults::PageItem::decoratePages()),
m_decorateLinks(Defaults::PageItem::decorateLinks()),
m_decorateFormFields(Defaults::PageItem::decorateFormFields()),
m_backgroundColor(Defaults::PageItem::backgroundColor()),
m_paperColor(Defaults::PageItem::paperColor()),
m_highlightColor(Defaults::PageItem::highlightColor())
{
}
// presentation view
bool Settings::PresentationView::synchronize() const
{
return m_settings->value("presentationView/synchronize", Defaults::PresentationView::synchronize()).toBool();
}
void Settings::PresentationView::setSynchronize(bool synchronize)
{
m_settings->setValue("presentationView/synchronize", synchronize);
}
int Settings::PresentationView::screen() const
{
int screen = m_settings->value("presentationView/screen", Defaults::PresentationView::screen()).toInt();
if(screen < -1 || screen >= QApplication::desktop()->screenCount())
{
screen = -1;
}
return screen;
}
void Settings::PresentationView::setScreen(int screen)
{
m_settings->setValue("presentationView/screen", screen);
}
QColor Settings::PresentationView::backgroundColor() const
{
return m_settings->value("presentationView/backgroundColor", Defaults::PresentationView::backgroundColor()).value< QColor >();
}
void Settings::PresentationView::setBackgroundColor(const QColor& backgroundColor)
{
m_settings->setValue("presentationView/backgroundColor", backgroundColor);
}
Settings::PresentationView::PresentationView(QSettings* settings) :
m_settings(settings)
{
}
// document view
void Settings::DocumentView::sync()
{
m_prefetch = m_settings->value("documentView/prefetch", Defaults::DocumentView::prefetch()).toBool();
m_prefetchDistance = m_settings->value("documentView/prefetchDistance", Defaults::DocumentView::prefetchDistance()).toInt();
m_pagesPerRow = m_settings->value("documentView/pagesPerRow", Defaults::DocumentView::pagesPerRow()).toInt();
m_minimalScrolling = m_settings->value("documentView/minimalScrolling", Defaults::DocumentView::minimalScrolling()).toBool();
m_highlightCurrentThumbnail = m_settings->value("documentView/highlightCurrentThumbnail", Defaults::DocumentView::highlightCurrentThumbnail()).toBool();
m_limitThumbnailsToResults = m_settings->value("documentView/limitThumbnailsToResults", Defaults::DocumentView::limitThumbnailsToResults()).toBool();
m_pageSpacing = m_settings->value("documentView/pageSpacing", Defaults::DocumentView::pageSpacing()).toReal();
m_thumbnailSpacing = m_settings->value("documentView/thumbnailSpacing", Defaults::DocumentView::thumbnailSpacing()).toReal();
m_thumbnailSize = m_settings->value("documentView/thumbnailSize", Defaults::DocumentView::thumbnailSize()).toReal();
}
bool Settings::DocumentView::openUrl() const
{
return m_settings->value("documentView/openUrl", Defaults::DocumentView::openUrl()).toBool();
}
void Settings::DocumentView::setOpenUrl(bool openUrl)
{
m_settings->setValue("documentView/openUrl", openUrl);
}
bool Settings::DocumentView::autoRefresh() const
{
return m_settings->value("documentView/autoRefresh", Defaults::DocumentView::autoRefresh()).toBool();
}
void Settings::DocumentView::setAutoRefresh(bool autoRefresh)
{
m_settings->setValue("documentView/autoRefresh", autoRefresh);
}
int Settings::DocumentView::autoRefreshTimeout() const
{
return m_settings->value("documentView/autoRefreshTimeout", Defaults::DocumentView::autoRefreshTimeout()).toInt();
}
void Settings::DocumentView::setPrefetch(bool prefetch)
{
m_prefetch = prefetch;
m_settings->setValue("documentView/prefetch", prefetch);
}
void Settings::DocumentView::setPrefetchDistance(int prefetchDistance)
{
if(prefetchDistance > 0)
{
m_prefetchDistance = prefetchDistance;
m_settings->setValue("documentView/prefetchDistance", prefetchDistance);
}
}
int Settings::DocumentView::prefetchTimeout() const
{
return m_settings->value("documentView/prefetchTimeout", Defaults::DocumentView::prefetchTimeout()).toInt();
}
void Settings::DocumentView::setPagesPerRow(int pagesPerRow)
{
if(pagesPerRow > 0)
{
m_pagesPerRow = pagesPerRow;
m_settings->setValue("documentView/pagesPerRow", pagesPerRow);
}
}
void Settings::DocumentView::setMinimalScrolling(bool minimalScrolling)
{
m_minimalScrolling = minimalScrolling;
m_settings->setValue("documentView/minimalScrolling", minimalScrolling);
}
void Settings::DocumentView::setHighlightCurrentThumbnail(bool highlightCurrentThumbnail)
{
m_highlightCurrentThumbnail = highlightCurrentThumbnail;
m_settings->setValue("documentView/highlightCurrentThumbnail", highlightCurrentThumbnail);
}
void Settings::DocumentView::setLimitThumbnailsToResults(bool limitThumbnailsToResults)
{
m_limitThumbnailsToResults = limitThumbnailsToResults;
m_settings->setValue("documentView/limitThumbnailsToResults", limitThumbnailsToResults);
}
qreal Settings::DocumentView::minimumScaleFactor() const
{
return m_settings->value("documentView/minimumScaleFactor", Defaults::DocumentView::minimumScaleFactor()).toReal();
}
qreal Settings::DocumentView::maximumScaleFactor() const
{
return m_settings->value("documentView/maximumScaleFactor", Defaults::DocumentView::maximumScaleFactor()).toReal();
}
qreal Settings::DocumentView::zoomFactor() const
{
return m_settings->value("documentView/zoomFactor", Defaults::DocumentView::zoomFactor()).toReal();
}
void Settings::DocumentView::setZoomFactor(qreal zoomFactor)
{
m_settings->setValue("documentView/zoomFactor", zoomFactor);
}
void Settings::DocumentView::setPageSpacing(qreal pageSpacing)
{
if(pageSpacing >= 0.0)
{
m_pageSpacing = pageSpacing;
m_settings->setValue("documentView/pageSpacing", pageSpacing);
}
}
void Settings::DocumentView::setThumbnailSpacing(qreal thumbnailSpacing)
{
if(thumbnailSpacing >= 0.0)
{
m_thumbnailSpacing = thumbnailSpacing;
m_settings->setValue("documentView/thumbnailSpacing", thumbnailSpacing);
}
}
void Settings::DocumentView::setThumbnailSize(qreal thumbnailSize)
{
if(thumbnailSize >= 0.0)
{
m_thumbnailSize = thumbnailSize;
m_settings->setValue("documentView/thumbnailSize", thumbnailSize);
}
}
bool Settings::DocumentView::matchCase() const
{
return m_settings->value("documentView/matchCase", Defaults::DocumentView::matchCase()).toBool();
}
void Settings::DocumentView::setMatchCase(bool matchCase)
{
m_settings->setValue("documentView/matchCase", matchCase);
}
bool Settings::DocumentView::wholeWords() const
{
return m_settings->value("documentView/wholeWords", Defaults::DocumentView::wholeWords()).toBool();
}
void Settings::DocumentView::setWholeWords(bool wholeWords)
{
m_settings->setValue("documentView/wholeWords", wholeWords);
}
bool Settings::DocumentView::parallelSearchExecution() const
{
return m_settings->value("documentView/parallelSearchExecution", Defaults::DocumentView::parallelSearchExecution()).toBool();
}
void Settings::DocumentView::setParallelSearchExecution(bool parallelSearchExecution)
{
m_settings->setValue("documentView/parallelSearchExecution", parallelSearchExecution);
}
int Settings::DocumentView::highlightDuration() const
{
return m_settings->value("documentView/highlightDuration", Defaults::DocumentView::highlightDuration()).toInt();
}
void Settings::DocumentView::setHighlightDuration(int highlightDuration)
{
if(highlightDuration >= 0)
{
m_settings->setValue("documentView/highlightDuration", highlightDuration);
}
}
QString Settings::DocumentView::sourceEditor() const
{
return m_settings->value("documentView/sourceEditor", Defaults::DocumentView::sourceEditor()).toString();
}
void Settings::DocumentView::setSourceEditor(const QString& sourceEditor)
{
m_settings->setValue("documentView/sourceEditor", sourceEditor);
}
Qt::KeyboardModifiers Settings::DocumentView::zoomModifiers() const
{
return static_cast< Qt::KeyboardModifiers >(m_settings->value("documentView/zoomModifiers", static_cast< int >(Defaults::DocumentView::zoomModifiers())).toInt());
}
void Settings::DocumentView::setZoomModifiers(Qt::KeyboardModifiers zoomModifiers)
{
m_settings->setValue("documentView/zoomModifiers", static_cast< int >(zoomModifiers));
}
Qt::KeyboardModifiers Settings::DocumentView::rotateModifiers() const
{
return static_cast< Qt::KeyboardModifiers >(m_settings->value("documentView/rotateModifiers", static_cast< int >(Defaults::DocumentView::rotateModifiers())).toInt());
}
void Settings::DocumentView::setRotateModifiers(Qt::KeyboardModifiers rotateModifiers)
{
m_settings->setValue("documentView/rotateModifiers", static_cast< int >(rotateModifiers));
}
Qt::KeyboardModifiers Settings::DocumentView::scrollModifiers() const
{
return static_cast< Qt::KeyboardModifiers >(m_settings->value("documentView/scrollModifiers", static_cast< int >(Defaults::DocumentView::scrollModifiers())).toInt());
}
void Settings::DocumentView::setScrollModifiers(Qt::KeyboardModifiers scrollModifiers)
{
m_settings->setValue("documentView/scrollModifiers", static_cast< int >(scrollModifiers));
}
// per-tab settings
bool Settings::DocumentView::continuousMode() const
{
return m_settings->value("documentView/continuousMode", Defaults::DocumentView::continuousMode()).toBool();
}
void Settings::DocumentView::setContinuousMode(bool continuousMode)
{
m_settings->setValue("documentView/continuousMode", continuousMode);
}
LayoutMode Settings::DocumentView::layoutMode() const
{
return static_cast< LayoutMode >(m_settings->value("documentView/layoutMode", static_cast< uint >(Defaults::DocumentView::layoutMode())).toUInt());
}
void Settings::DocumentView::setLayoutMode(LayoutMode layoutMode)
{
m_settings->setValue("documentView/layoutMode", static_cast< uint >(layoutMode));
}
bool Settings::DocumentView::rightToLeftMode() const
{
return m_settings->value("documentView/rightToLeftMode", Defaults::DocumentView::rightToLeftMode()).toBool();
}
void Settings::DocumentView::setRightToLeftMode(bool rightToLeftMode)
{
m_settings->setValue("documentView/rightToLeftMode", rightToLeftMode);
}
ScaleMode Settings::DocumentView::scaleMode() const
{
return static_cast< ScaleMode >(m_settings->value("documentView/scaleMode", static_cast< uint >(Defaults::DocumentView::scaleMode())).toUInt());
}
void Settings::DocumentView::setScaleMode(ScaleMode scaleMode)
{
m_settings->setValue("documentView/scaleMode", static_cast< uint >(scaleMode));
}
qreal Settings::DocumentView::scaleFactor() const
{
return m_settings->value("documentView/scaleFactor", Defaults::DocumentView::scaleFactor()).toReal();
}
void Settings::DocumentView::setScaleFactor(qreal scaleFactor)
{
m_settings->setValue("documentView/scaleFactor", scaleFactor);
}
Rotation Settings::DocumentView::rotation() const
{
return static_cast< Rotation >(m_settings->value("documentView/rotation", static_cast< uint >(Defaults::DocumentView::rotation())).toUInt());
}
void Settings::DocumentView::setRotation(Rotation rotation)
{
m_settings->setValue("documentView/rotation", static_cast< uint >(rotation));
}
bool Settings::DocumentView::invertColors() const
{
return m_settings->value("documentView/invertColors", Defaults::DocumentView::invertColors()).toBool();
}
void Settings::DocumentView::setInvertColors(bool invertColors)
{
m_settings->setValue("documentView/invertColors", invertColors);
}
bool Settings::DocumentView::convertToGrayscale() const
{
return m_settings->value("documentView/convertToGrayscale", Defaults::DocumentView::convertToGrayscale()).toBool();
}
void Settings::DocumentView::setConvertToGrayscale(bool convertToGrayscale)
{
m_settings->setValue("documentView/convertToGrayscale", convertToGrayscale);
}
bool Settings::DocumentView::trimMargins() const
{
return m_settings->value("documentView/trimMargins", Defaults::DocumentView::trimMargins()).toBool();
}
void Settings::DocumentView::setTrimMargins(bool trimMargins)
{
m_settings->setValue("documentView/trimMargins", trimMargins);
}
CompositionMode Settings::DocumentView::compositionMode() const
{
return static_cast< CompositionMode >(m_settings->value("documentView/compositionMode", static_cast< uint >(Defaults::DocumentView::compositionMode())).toInt());
}
void Settings::DocumentView::setCompositionMode(CompositionMode compositionMode)
{
m_settings->setValue("documentView/compositionMode", static_cast< uint >(compositionMode));
}
bool Settings::DocumentView::highlightAll() const
{
return m_settings->value("documentView/highlightAll", Defaults::DocumentView::highlightAll()).toBool();
}
void Settings::DocumentView::setHighlightAll(bool highlightAll)
{
m_settings->setValue("documentView/highlightAll", highlightAll);
}
Settings::DocumentView::DocumentView(QSettings *settings) :
m_settings(settings),
m_prefetch(Defaults::DocumentView::prefetch()),
m_prefetchDistance(Defaults::DocumentView::prefetchDistance()),
m_pagesPerRow(Defaults::DocumentView::pagesPerRow()),
m_highlightCurrentThumbnail(Defaults::DocumentView::highlightCurrentThumbnail()),
m_limitThumbnailsToResults(Defaults::DocumentView::limitThumbnailsToResults()),
m_pageSpacing(Defaults::DocumentView::pageSpacing()),
m_thumbnailSpacing(Defaults::DocumentView::thumbnailSpacing()),
m_thumbnailSize(Defaults::DocumentView::thumbnailSize())
{
}
// main window
bool Settings::MainWindow::trackRecentlyUsed() const
{
return m_settings->value("mainWindow/trackRecentlyUsed", Defaults::MainWindow::trackRecentlyUsed()).toBool();
}
void Settings::MainWindow::setTrackRecentlyUsed(bool trackRecentlyUsed)
{
m_settings->setValue("mainWindow/trackRecentlyUsed", trackRecentlyUsed);
}
int Settings::MainWindow::recentlyUsedCount() const
{
return m_settings->value("mainWindow/recentlyUsedCount", Defaults::MainWindow::recentlyUsedCount()).toInt();
}
void Settings::MainWindow::setRecentlyUsedCount(int recentlyUsedCount)
{
m_settings->setValue("mainWindow/recentlyUsedCount", recentlyUsedCount);
}
QStringList Settings::MainWindow::recentlyUsed() const
{
return m_settings->value("mainWindow/recentlyUsed").toStringList();
}
void Settings::MainWindow::setRecentlyUsed(const QStringList& recentlyUsed)
{
m_settings->setValue("mainWindow/recentlyUsed", recentlyUsed);
}
bool Settings::MainWindow::keepRecentlyClosed() const
{
return m_settings->value("mainWindow/keepRecentlyClosed", Defaults::MainWindow::keepRecentlyClosed()).toBool();
}
void Settings::MainWindow::setKeepRecentlyClosed(bool keepRecentlyClosed)
{
m_settings->setValue("mainWindow/keepRecentlyClosed", keepRecentlyClosed);
}
int Settings::MainWindow::recentlyClosedCount() const
{
return m_settings->value("mainWindow/recentlyClosedCount", Defaults::MainWindow::recentlyClosedCount()).toInt();
}
void Settings::MainWindow::setRecentlyClosedCount(int recentlyClosedCount)
{
m_settings->setValue("mainWindow/recentlyClosedCount", recentlyClosedCount);
}
bool Settings::MainWindow::restoreTabs() const
{
return m_settings->value("mainWindow/restoreTabs", Defaults::MainWindow::restoreTabs()).toBool();
}
void Settings::MainWindow::setRestoreTabs(bool restoreTabs)
{
m_settings->setValue("mainWindow/restoreTabs", restoreTabs);
}
bool Settings::MainWindow::restoreBookmarks() const
{
return m_settings->value("mainWindow/restoreBookmarks", Defaults::MainWindow::restoreBookmarks()).toBool();
}
void Settings::MainWindow::setRestoreBookmarks(bool restoreBookmarks)
{
m_settings->setValue("mainWindow/restoreBookmarks", restoreBookmarks);
}
bool Settings::MainWindow::restorePerFileSettings() const
{
return m_settings->value("mainWindow/restorePerFileSettings", Defaults::MainWindow::restorePerFileSettings()).toBool();
}
void Settings::MainWindow::setRestorePerFileSettings(bool restorePerFileSettings)
{
m_settings->setValue("mainWindow/restorePerFileSettings", restorePerFileSettings);
}
int Settings::MainWindow::perFileSettingsLimit() const
{
return m_settings->value("mainWindow/perFileSettingsLimit", Defaults::MainWindow::perFileSettingsLimit()).toInt();
}
int Settings::MainWindow::saveDatabaseInterval() const
{
return m_settings->value("mainWindow/saveDatabaseInterval", Defaults::MainWindow::saveDatabaseInterval()).toInt();
}
void Settings::MainWindow::setSaveDatabaseInterval(int saveDatabaseInterval)
{
m_settings->setValue("mainWindow/saveDatabaseInterval", saveDatabaseInterval);
}
int Settings::MainWindow::currentTabIndex() const
{
return m_settings->value("mainWindow/currentTabIndex", -1).toInt();
}
void Settings::MainWindow::setCurrentTabIndex(int currentTabIndex)
{
m_settings->setValue("mainWindow/currentTabIndex", currentTabIndex);
}
int Settings::MainWindow::tabPosition() const
{
return m_settings->value("mainWindow/tabPosition", Defaults::MainWindow::tabPosition()).toInt();
}
void Settings::MainWindow::setTabPosition(int tabPosition)
{
if(tabPosition >= 0 && tabPosition < 4)
{
m_settings->setValue("mainWindow/tabPosition", tabPosition);
}
}
int Settings::MainWindow::tabVisibility() const
{
return m_settings->value("mainWindow/tabVisibility", Defaults::MainWindow::tabVisibility()).toInt();
}
void Settings::MainWindow::setTabVisibility(int tabVisibility)
{
if(tabVisibility >= 0 && tabVisibility < 3)
{
m_settings->setValue("mainWindow/tabVisibility", tabVisibility);
}
}
bool Settings::MainWindow::spreadTabs() const
{
return m_settings->value("mainWindow/spreadTabs", Defaults::MainWindow::spreadTabs()).toBool();
}
void Settings::MainWindow::setSpreadTabs(bool spreadTabs)
{
m_settings->setValue("mainWindow/spreadTabs", spreadTabs);
}
bool Settings::MainWindow::newTabNextToCurrentTab() const
{
return m_settings->value("mainWindow/newTabNextToCurrentTab", Defaults::MainWindow::newTabNextToCurrentTab()).toBool();
}
void Settings::MainWindow::setNewTabNextToCurrentTab(bool newTabNextToCurrentTab)
{
m_settings->setValue("mainWindow/newTabNextToCurrentTab", newTabNextToCurrentTab);
}
bool Settings::MainWindow::exitAfterLastTab() const
{
return m_settings->value("mainWindow/exitAfterLastTab", Defaults::MainWindow::exitAfterLastTab()).toBool();
}
void Settings::MainWindow::setExitAfterLastTab(bool exitAfterLastTab)
{
m_settings->setValue("mainWindow/exitAfterLastTab", exitAfterLastTab);
}
bool Settings::MainWindow::documentTitleAsTabTitle() const
{
return m_settings->value("mainWindow/documentAsTabTitle", Defaults::MainWindow::documentTitleAsTabTitle()).toBool();
}
void Settings::MainWindow::setDocumentTitleAsTabTitle(bool documentTitleAsTabTitle)
{
m_settings->setValue("mainWindow/documentAsTabTitle", documentTitleAsTabTitle);
}
bool Settings::MainWindow::currentPageInWindowTitle() const
{
return m_settings->value("mainWindow/currentPageInWindowTitle", Defaults::MainWindow::currentPageInWindowTitle()).toBool();
}
void Settings::MainWindow::setCurrentPageInWindowTitle(bool currentPageInTabText)
{
m_settings->setValue("mainWindow/currentPageInWindowTitle", currentPageInTabText);
}
bool Settings::MainWindow::instanceNameInWindowTitle() const
{
return m_settings->value("mainWindow/instanceNameInWindowTitle", Defaults::MainWindow::instanceNameInWindowTitle()).toBool();
}
void Settings::MainWindow::setInstanceNameInWindowTitle(bool instanceNameInWindowTitle)
{
m_settings->setValue("mainWindow/instanceNameInWindowTitle", instanceNameInWindowTitle);
}
bool Settings::MainWindow::extendedSearchDock() const
{
return m_settings->value("mainWindow/extendedSearchDock", Defaults::MainWindow::extendedSearchDock()).toBool();
}
void Settings::MainWindow::setExtendedSearchDock(bool extendedSearchDock)
{
m_settings->setValue("mainWindow/extendedSearchDock", extendedSearchDock);
}
bool Settings::MainWindow::usePageLabel() const
{
return m_settings->value("mainWindow/usePageLabel", Defaults::MainWindow::usePageLabel()).toBool();
}
void Settings::MainWindow::setUsePageLabel(bool usePageLabel)
{
m_settings->setValue("mainWindow/usePageLabel", usePageLabel);
}
bool Settings::MainWindow::synchronizeOutlineView() const
{
return m_settings->value("mainWindow/synchronizeOutlineView", Defaults::MainWindow::synchronizeOutlineView()).toBool();
}
void Settings::MainWindow::setSynchronizeOutlineView(bool synchronizeOutlineView)
{
m_settings->setValue("mainWindow/synchronizeOutlineView", synchronizeOutlineView);
}
bool Settings::MainWindow::synchronizeSplitViews() const
{
return m_settings->value("mainWindow/synchronizeSplitViews", Defaults::MainWindow::synchronizeSplitViews()).toBool();
}
void Settings::MainWindow::setSynchronizeSplitViews(bool synchronizeSplitViews)
{
m_settings->setValue("mainWindow/synchronizeSplitViews", synchronizeSplitViews);
}
QStringList Settings::MainWindow::fileToolBar() const
{
return m_settings->value("mainWindow/fileToolBar", Defaults::MainWindow::fileToolBar()).toStringList();
}
void Settings::MainWindow::setFileToolBar(const QStringList& fileToolBar)
{
m_settings->setValue("mainWindow/fileToolBar", trimmed(fileToolBar));
}
QStringList Settings::MainWindow::editToolBar() const
{
return m_settings->value("mainWindow/editToolBar", Defaults::MainWindow::editToolBar()).toStringList();
}
void Settings::MainWindow::setEditToolBar(const QStringList& editToolBar)
{
m_settings->setValue("mainWindow/editToolBar", trimmed(editToolBar));
}
QStringList Settings::MainWindow::viewToolBar() const
{
return m_settings->value("mainWindow/viewToolBar", Defaults::MainWindow::viewToolBar()).toStringList();
}
void Settings::MainWindow::setViewToolBar(const QStringList& viewToolBar)
{
m_settings->setValue("mainWindow/viewToolBar", trimmed(viewToolBar));
}
QStringList Settings::MainWindow::documentContextMenu() const
{
return m_settings->value("mainWindow/documentContextMenu", Defaults::MainWindow::documentContextMenu()).toStringList();
}
void Settings::MainWindow::setDocumentContextMenu(const QStringList& documentContextMenu)
{
m_settings->setValue("mainWindow/documentContextMenu", trimmed(documentContextMenu));
}
QStringList Settings::MainWindow::tabContextMenu() const
{
return m_settings->value("mainWindow/tabContextMenu", Defaults::MainWindow::tabContexntMenu()).toStringList();
}
void Settings::MainWindow::setTabContextMenu(const QStringList& tabContextMenu)
{
m_settings->setValue("mainWindow/tabContextMenu", trimmed(tabContextMenu));
}
bool Settings::MainWindow::scrollableMenus() const
{
return m_settings->value("mainWindow/scrollableMenus", Defaults::MainWindow::scrollableMenus()).toBool();
}
void Settings::MainWindow::setScrollableMenus(bool scrollableMenus)
{
m_settings->setValue("mainWindow/scrollableMenus", scrollableMenus);
}
bool Settings::MainWindow::searchableMenus() const
{
return m_settings->value("mainWindow/searchableMenus", Defaults::MainWindow::searchableMenus()).toBool();
}
void Settings::MainWindow::setSearchableMenus(bool searchableMenus)
{
m_settings->setValue("mainWindow/searchableMenus", searchableMenus);
}
bool Settings::MainWindow::toggleToolAndMenuBarsWithFullscreen() const
{
return m_settings->value("mainWindow/toggleToolAndMenuBarsWithFullscreen", Defaults::MainWindow::toggleToolAndMenuBarsWithFullscreen()).toBool();
}
void Settings::MainWindow::setToggleToolAndMenuBarsWithFullscreen(bool toggleToolAndMenuBarsWithFullscreen) const
{
m_settings->setValue("mainWindow/toggleToolAndMenuBarsWithFullscreen", toggleToolAndMenuBarsWithFullscreen);
}
bool Settings::MainWindow::hasIconTheme() const
{
return m_settings->contains("mainWindow/iconTheme");
}
QString Settings::MainWindow::iconTheme() const
{
return m_settings->value("mainWindow/iconTheme").toString();
}
bool Settings::MainWindow::hasStyleSheet() const
{
return m_settings->contains("mainWindow/styleSheet");
}
QString Settings::MainWindow::styleSheet() const
{
return m_settings->value("mainWindow/styleSheet").toString();
}
QByteArray Settings::MainWindow::geometry() const
{
return m_settings->value("mainWindow/geometry").toByteArray();
}
void Settings::MainWindow::setGeometry(const QByteArray& geometry)
{
m_settings->setValue("mainWindow/geometry", geometry);
}
QByteArray Settings::MainWindow::state() const
{
return m_settings->value("mainWindow/state").toByteArray();
}
void Settings::MainWindow::setState(const QByteArray& state)
{
m_settings->setValue("mainWindow/state", state);
}
QString Settings::MainWindow::openPath() const
{
return m_settings->value("mainWindow/openPath", Defaults::MainWindow::path()).toString();
}
void Settings::MainWindow::setOpenPath(const QString& openPath)
{
m_settings->setValue("mainWindow/openPath", openPath);
}
QString Settings::MainWindow::savePath() const
{
return m_settings->value("mainWindow/savePath", Defaults::MainWindow::path()).toString();
}
void Settings::MainWindow::setSavePath(const QString& savePath)
{
m_settings->setValue("mainWindow/savePath", savePath);
}
QSize Settings::MainWindow::settingsDialogSize(QSize sizeHint) const
{
return m_settings->value("mainWindow/settingsDialogSize", sizeHint).toSize();
}
void Settings::MainWindow::setSettingsDialogSize(QSize settingsDialogSize)
{
m_settings->setValue("mainWindow/settingsDialogSize", settingsDialogSize);
}
QSize Settings::MainWindow::fontsDialogSize(QSize sizeHint) const
{
return m_settings->value("mainWindow/fontsDialogSize", sizeHint).toSize();
}
void Settings::MainWindow::setFontsDialogSize(QSize fontsDialogSize)
{
m_settings->setValue("mainWindow/fontsDialogSize", fontsDialogSize);
}
QSize Settings::MainWindow::contentsDialogSize(QSize sizeHint) const
{
return m_settings->value("mainWindow/contentsDialogSize", sizeHint).toSize();
}
void Settings::MainWindow::setContentsDialogSize(QSize contentsDialogSize)
{
m_settings->setValue("mainWindow/contentsDialogSize", contentsDialogSize);
}
Settings::MainWindow::MainWindow(QSettings* settings) :
m_settings(settings)
{
}
// print dialog
Settings::PrintDialog::PrintDialog(QSettings* settings) :
m_settings(settings)
{
}
bool Settings::PrintDialog::collateCopies() const
{
return m_settings->value("printDialog/collateCopies", Defaults::PrintDialog::collateCopies()).toBool();
}
void Settings::PrintDialog::setCollateCopies(bool collateCopies)
{
m_settings->setValue("printDialog/collateCopies", collateCopies);
}
QPrinter::PageOrder Settings::PrintDialog::pageOrder() const
{
return static_cast< QPrinter::PageOrder >(m_settings->value("printDialog/pageOrder", static_cast< int >(Defaults::PrintDialog::pageOrder())).toInt());
}
void Settings::PrintDialog::setPageOrder(QPrinter::PageOrder pageOrder)
{
m_settings->setValue("printDialog/pageOrder", static_cast< int >(pageOrder));
}
QPrinter::Orientation Settings::PrintDialog::orientation() const
{
return static_cast< QPrinter::Orientation >(m_settings->value("printDialog/orientation", static_cast< int >(Defaults::PrintDialog::orientation())).toInt());
}
void Settings::PrintDialog::setOrientation(QPrinter::Orientation orientation)
{
m_settings->setValue("printDialog/orientation", static_cast< int >(orientation));
}
QPrinter::ColorMode Settings::PrintDialog::colorMode() const
{
return static_cast< QPrinter::ColorMode >(m_settings->value("printDialog/colorMode", static_cast< int >(Defaults::PrintDialog::colorMode())).toInt());
}
void Settings::PrintDialog::setColorMode(QPrinter::ColorMode colorMode)
{
m_settings->setValue("printDialog/colorMode", static_cast< int >(colorMode));
}
QPrinter::DuplexMode Settings::PrintDialog::duplex() const
{
return static_cast< QPrinter::DuplexMode >(m_settings->value("printDialog/duplex", static_cast< int >(Defaults::PrintDialog::duplex())).toInt());
}
void Settings::PrintDialog::setDuplex(QPrinter::DuplexMode duplex)
{
m_settings->setValue("printDialog/duplex", static_cast< int >(duplex));
}
bool Settings::PrintDialog::fitToPage() const
{
return m_settings->value("printDialog/fitToPage", Defaults::PrintDialog::fitToPage()).toBool();
}
void Settings::PrintDialog::setFitToPage(bool fitToPage)
{
m_settings->setValue("printDialog/fitToPage", fitToPage);
}
#if QT_VERSION < QT_VERSION_CHECK(5,2,0)
PrintOptions::PageSet Settings::PrintDialog::pageSet() const
{
return static_cast< PrintOptions::PageSet >(m_settings->value("printDialog/pageSet", static_cast< uint >(Defaults::PrintDialog::pageSet())).toUInt());
}
void Settings::PrintDialog::setPageSet(PrintOptions::PageSet pageSet)
{
m_settings->setValue("printDialog/pageSet", static_cast< uint >(pageSet));
}
PrintOptions::NumberUp Settings::PrintDialog::numberUp() const
{
return static_cast< PrintOptions::NumberUp >(m_settings->value("printDialog/numberUp", static_cast< uint >(Defaults::PrintDialog::numberUp())).toUInt());
}
void Settings::PrintDialog::setNumberUp(PrintOptions::NumberUp numberUp)
{
m_settings->setValue("printDialog/numberUp", static_cast< uint >(numberUp));
}
PrintOptions::NumberUpLayout Settings::PrintDialog::numberUpLayout() const
{
return static_cast< PrintOptions::NumberUpLayout >(m_settings->value("printDialog/numberUpLayout", static_cast< uint >(Defaults::PrintDialog::numberUpLayout())).toUInt());
}
void Settings::PrintDialog::setNumberUpLayout(PrintOptions::NumberUpLayout numberUpLayout)
{
m_settings->setValue("printDialog/numberUpLayout", static_cast< uint >(numberUpLayout));
}
#endif // QT_VERSION
void Settings::sync()
{
m_settings->sync();
m_pageItem.sync();
m_documentView.sync();
}
Settings::Settings(QObject* parent) : QObject(parent),
m_settings(new QSettings("qpdfview", "qpdfview", this)),
m_pageItem(m_settings),
m_presentationView(m_settings),
m_documentView(m_settings),
m_mainWindow(m_settings),
m_printDialog(m_settings)
{
}
// defaults
bool Defaults::DocumentView::rightToLeftMode()
{
#if QT_VERSION >= QT_VERSION_CHECK(4,7,0)
return QLocale::system().textDirection() == Qt::RightToLeft;
#else
return false;
#endif // QT_VERSION
}
QString Defaults::MainWindow::path()
{
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
return QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
#else
return QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation);
#endif // QT_VERSION
}
} // qpdfview