File indexing completed on 2024-04-28 04:21:20
0001 // SPDX-FileCopyrightText: 2003-2010 Jesper K. Pedersen <blackie@kde.org> 0002 // SPDX-FileCopyrightText: 2021 Johannes Zarl-Zierl <johannes@zarl-zierl.at> 0003 // 0004 // SPDX-License-Identifier: GPL-2.0-or-later 0005 0006 #include "ViewerPage.h" 0007 0008 #include "VideoPlayerSelectorDialog.h" 0009 #include "ViewerSizeConfig.h" 0010 0011 #include <kpabase/SettingsData.h> 0012 0013 #include <KComboBox> 0014 #include <KLocalizedString> 0015 #include <QGridLayout> 0016 #include <QLabel> 0017 #include <QPushButton> 0018 #include <QSpinBox> 0019 #include <QVBoxLayout> 0020 0021 static QString videoBackendTextFromEnum(Settings::VideoBackend backend) 0022 { 0023 switch (backend) { 0024 case Settings::VideoBackend::NotConfigured: 0025 return i18n("Not Configured"); 0026 case Settings::VideoBackend::VLC: 0027 return QString::fromUtf8("VLC"); 0028 case Settings::VideoBackend::QtAV: 0029 return QString::fromUtf8("QtAV"); 0030 case Settings::VideoBackend::Phonon: 0031 return QString::fromUtf8("Phonon"); 0032 } 0033 Q_UNREACHABLE(); 0034 return {}; // Make CI shut up. 0035 } 0036 0037 Settings::ViewerPage::ViewerPage(QWidget *parent) 0038 : QWidget(parent) 0039 { 0040 QVBoxLayout *lay1 = new QVBoxLayout(this); 0041 0042 m_slideShowSetup = new ViewerSizeConfig(i18n("Running Slide Show From Thumbnail View"), this); 0043 lay1->addWidget(m_slideShowSetup); 0044 0045 m_viewImageSetup = new ViewerSizeConfig(i18n("Viewing Images and Videos From Thumbnail View"), this); 0046 lay1->addWidget(m_viewImageSetup); 0047 0048 QGridLayout *glay = new QGridLayout; 0049 lay1->addLayout(glay); 0050 int row = -1; 0051 0052 QLabel *label = new QLabel(i18n("Slideshow interval:"), this); 0053 glay->addWidget(label, ++row, 0); 0054 0055 m_slideShowInterval = new QSpinBox; 0056 m_slideShowInterval->setRange(1, INT_MAX); 0057 glay->addWidget(m_slideShowInterval, row, 1); 0058 m_slideShowInterval->setSuffix(i18n(" sec")); 0059 label->setBuddy(m_slideShowInterval); 0060 0061 label = new QLabel(i18n("Image cache:"), this); 0062 glay->addWidget(label, ++row, 0); 0063 0064 m_cacheSize = new QSpinBox; 0065 m_cacheSize->setRange(0, 16384); 0066 m_cacheSize->setSingleStep(10); 0067 m_cacheSize->setSuffix(i18n(" Mbytes")); 0068 glay->addWidget(m_cacheSize, row, 1); 0069 label->setBuddy(m_cacheSize); 0070 0071 QString txt; 0072 0073 QLabel *standardSizeLabel = new QLabel(i18n("Standard size in viewer:"), this); 0074 m_viewerStandardSize = new KComboBox(this); 0075 m_viewerStandardSize->addItems(QStringList() << i18n("Full Viewer Size") << i18n("Natural Image Size") << i18n("Natural Image Size If Possible")); 0076 glay->addWidget(standardSizeLabel, ++row, 0); 0077 glay->addWidget(m_viewerStandardSize, row, 1); 0078 standardSizeLabel->setBuddy(m_viewerStandardSize); 0079 0080 txt = i18n("<p>Set the standard size for images to be displayed in the viewer.</p> " 0081 "<p><b>Full Viewer Size</b> indicates that the image will be stretched or shrunk to fill the viewer window.</p> " 0082 "<p><b>Natural Image Size</b> indicates that the image will be displayed pixel for pixel.</p> " 0083 "<p><b>Natural Image Size If Possible</b> indicates that the image will be displayed pixel for pixel if it would fit the window, " 0084 "otherwise it will be shrunk to fit the viewer.</p>"); 0085 m_viewerStandardSize->setWhatsThis(txt); 0086 0087 QLabel *scalingLabel = new QLabel(i18n("Scaling algorithm:"), this); 0088 m_smoothScale = new KComboBox(this); 0089 m_smoothScale->addItems(QStringList() << i18n("Fastest") << i18n("Best")); 0090 scalingLabel->setBuddy(m_smoothScale); 0091 0092 glay->addWidget(scalingLabel, ++row, 0); 0093 glay->addWidget(m_smoothScale, row, 1); 0094 txt = i18n("<p>When displaying images, KPhotoAlbum normally performs smooth scaling of the image. " 0095 "If this option is not set, KPhotoAlbum will use a faster but less smooth scaling method.</p>"); 0096 scalingLabel->setWhatsThis(txt); 0097 m_smoothScale->setWhatsThis(txt); 0098 0099 label = new QLabel(i18n("Video Backend:"), this); 0100 m_videoBackendButton = new QPushButton; 0101 glay->addWidget(label, ++row, 0); 0102 glay->addWidget(m_videoBackendButton, row, 1); 0103 connect(m_videoBackendButton, &QPushButton::clicked, this, [this] { 0104 VideoPlayerSelectorDialog dialog(this); 0105 dialog.exec(); 0106 m_videoBackend = dialog.backend(); 0107 m_videoBackendButton->setText(videoBackendTextFromEnum(m_videoBackend)); 0108 }); 0109 } 0110 0111 void Settings::ViewerPage::loadSettings(Settings::SettingsData *opt) 0112 { 0113 m_viewImageSetup->setLaunchFullScreen(opt->launchViewerFullScreen()); 0114 m_viewImageSetup->setSize(opt->viewerSize()); 0115 m_slideShowSetup->setLaunchFullScreen(opt->launchSlideShowFullScreen()); 0116 m_slideShowSetup->setSize(opt->slideShowSize()); 0117 m_slideShowInterval->setValue(opt->slideShowInterval()); 0118 m_cacheSize->setValue(opt->viewerCacheSize()); 0119 m_smoothScale->setCurrentIndex(opt->smoothScale()); 0120 m_viewerStandardSize->setCurrentIndex(opt->viewerStandardSize()); 0121 m_videoBackend = opt->videoBackend(); 0122 m_videoBackendButton->setText(videoBackendTextFromEnum(m_videoBackend)); 0123 } 0124 0125 void Settings::ViewerPage::saveSettings(Settings::SettingsData *opt) 0126 { 0127 opt->setLaunchViewerFullScreen(m_viewImageSetup->launchFullScreen()); 0128 opt->setViewerSize(m_viewImageSetup->size()); 0129 opt->setSlideShowInterval(m_slideShowInterval->value()); 0130 opt->setViewerCacheSize(m_cacheSize->value()); 0131 opt->setSmoothScale(m_smoothScale->currentIndex()); 0132 opt->setViewerStandardSize((StandardViewSize)m_viewerStandardSize->currentIndex()); 0133 opt->setSlideShowSize(m_slideShowSetup->size()); 0134 opt->setLaunchSlideShowFullScreen(m_slideShowSetup->launchFullScreen()); 0135 opt->setVideoBackend(m_videoBackend); 0136 } 0137 // vi:expandtab:tabstop=4 shiftwidth=4: