File indexing completed on 2024-04-28 04:21:20
0001 // SPDX-FileCopyrightText: 2009-2011 Jesper K. Pedersen <jesper.pedersen@kdab.com> 0002 // SPDX-FileCopyrightText: 2013, 2015-2016, 2019-2021 Johannes Zarl-Zierl <johannes@zarl-zierl.at> 0003 // SPDX-FileCopyrightText: 2018 Antoni Bella PĂ©rez <antonibella5@yahoo.com> 0004 // SPDX-FileCopyrightText: 2022 Johannes Zarl-Zierl <johannes@zarl-zierl.at> 0005 // 0006 // SPDX-License-Identifier: GPL-2.0-or-later 0007 0008 #include "ThumbnailsPage.h" 0009 0010 #include <kpabase/SettingsData.h> 0011 0012 #include <KColorButton> 0013 #include <KComboBox> 0014 #include <KLocalizedString> 0015 #include <QCheckBox> 0016 #include <QGridLayout> 0017 #include <QLabel> 0018 #include <QSpinBox> 0019 0020 Settings::ThumbnailsPage::ThumbnailsPage(QWidget *parent) 0021 : QWidget(parent) 0022 { 0023 QGridLayout *lay = new QGridLayout(this); 0024 lay->setSpacing(6); 0025 int row = 0; 0026 0027 // Preview size 0028 QLabel *previewSizeLabel = new QLabel(i18n("Tooltip preview image size:")); 0029 m_previewSize = new QSpinBox; 0030 m_previewSize->setRange(0, 2000); 0031 m_previewSize->setSingleStep(10); 0032 m_previewSize->setSpecialValueText(i18n("No Image Preview")); 0033 lay->addWidget(previewSizeLabel, row, 0); 0034 lay->addWidget(m_previewSize, row, 1); 0035 0036 // Thumbnail size 0037 ++row; 0038 QLabel *thumbnailSizeLabel = new QLabel(i18n("Thumbnail image size:")); 0039 m_thumbnailSize = new QSpinBox; 0040 // range set from settings on load 0041 m_thumbnailSize->setSingleStep(16); 0042 lay->addWidget(thumbnailSizeLabel, row, 0); 0043 lay->addWidget(m_thumbnailSize, row, 1); 0044 0045 // incremental Thumbnail building 0046 ++row; 0047 m_incrementalThumbnails = new QCheckBox(i18n("Build thumbnails on demand")); 0048 lay->addWidget(m_incrementalThumbnails, row, 0, 1, 2); 0049 0050 // Thumbnail aspect ratio 0051 ++row; 0052 QLabel *thumbnailAspectRatioLabel = new QLabel(i18n("Thumbnail table cells aspect ratio:")); 0053 m_thumbnailAspectRatio = new KComboBox(this); 0054 m_thumbnailAspectRatio->addItems(QStringList() << i18n("1:1") << i18n("4:3") 0055 << i18n("3:2") << i18n("16:9") << i18n("3:4") << i18n("2:3") << i18n("9:16")); 0056 lay->addWidget(thumbnailAspectRatioLabel, row, 0); 0057 lay->addWidget(m_thumbnailAspectRatio, row, 1); 0058 0059 // Space around cells 0060 ++row; 0061 QLabel *thumbnailSpaceLabel = new QLabel(i18n("Space around cells:")); 0062 m_thumbnailSpace = new QSpinBox; 0063 m_thumbnailSpace->setRange(0, 20); 0064 lay->addWidget(thumbnailSpaceLabel, row, 0); 0065 lay->addWidget(m_thumbnailSpace, row, 1); 0066 0067 // Display grid lines in the thumbnail view 0068 ++row; 0069 m_thumbnailDisplayGrid = new QCheckBox(i18n("Display grid around thumbnails")); 0070 lay->addWidget(m_thumbnailDisplayGrid, row, 0, 1, 2); 0071 0072 // Display Labels 0073 ++row; 0074 m_displayLabels = new QCheckBox(i18n("Display labels in thumbnail view")); 0075 lay->addWidget(m_displayLabels, row, 0, 1, 2); 0076 0077 // Display Categories 0078 ++row; 0079 m_displayCategories = new QCheckBox(i18n("Display categories in thumbnail view")); 0080 lay->addWidget(m_displayCategories, row, 0, 1, 2); 0081 0082 // Auto Show Thumbnail view 0083 ++row; 0084 QLabel *autoShowLabel = new QLabel(i18n("Threshold for automatic thumbnail view: "), this); 0085 m_autoShowThumbnailView = new QSpinBox; 0086 m_autoShowThumbnailView->setRange(0, 10000); 0087 m_autoShowThumbnailView->setSingleStep(10); 0088 m_autoShowThumbnailView->setSpecialValueText(i18nc("Describing: 'ThumbnailView will not be automatically shown'", "Disabled")); 0089 lay->addWidget(autoShowLabel, row, 0); 0090 lay->addWidget(m_autoShowThumbnailView, row, 1); 0091 0092 lay->setColumnStretch(1, 1); 0093 lay->setRowStretch(++row, 1); 0094 0095 // Whats This 0096 QString txt; 0097 0098 txt = i18n("<p>If you select <b>Settings -> Show Tooltips</b> in the thumbnail view, then you will see a small tool tip window " 0099 "displaying information about the thumbnails. This window includes a small preview image. " 0100 "This option configures the image size.</p>"); 0101 previewSizeLabel->setWhatsThis(txt); 0102 m_previewSize->setWhatsThis(txt); 0103 0104 txt = i18n("<p>Thumbnail image size. Changing the thumbnail size here triggers a rebuild of the thumbnail database.</p>"); 0105 thumbnailSizeLabel->setWhatsThis(txt); 0106 m_thumbnailSize->setWhatsThis(txt); 0107 0108 txt = i18n("<p>If this is set, thumbnails are built on demand. As you browse your image database, " 0109 "only those thumbnails that are needed are actually built. " 0110 "This means that when you change the thumbnail size, KPhotoAlbum will remain responsive " 0111 "even if you have lots of images.</p>" 0112 "<p>If this is not set, KPhotoAlbum will always build the thumbnails for all images as soon as possible. " 0113 "This means that when new images are found, KPhotoAlbum will immediately build thumbnails " 0114 "for them and you won't have a delay later while browsing.</p>"); 0115 m_incrementalThumbnails->setWhatsThis(txt); 0116 0117 txt = i18n("<p>Choose what aspect ratio the cells holding thumbnails should have.</p>"); 0118 m_thumbnailAspectRatio->setWhatsThis(txt); 0119 0120 txt = i18n("<p>How thick the cell padding should be.</p>"); 0121 thumbnailSpaceLabel->setWhatsThis(txt); 0122 0123 txt = i18n("<p>If you want to see grid around your thumbnail images, " 0124 "select this option.</p>"); 0125 m_thumbnailDisplayGrid->setWhatsThis(txt); 0126 0127 txt = i18n("<p>Checking this option will show the base name for the file under " 0128 "thumbnails in the thumbnail view.</p>"); 0129 m_displayLabels->setWhatsThis(txt); 0130 0131 txt = i18n("<p>Checking this option will show the Categories for the file under " 0132 "thumbnails in the thumbnail view</p>"); 0133 m_displayCategories->setWhatsThis(txt); 0134 0135 txt = i18n("<p>When you are browsing, and the count gets below the value specified here, " 0136 "the thumbnails will be shown automatically. The alternative is to continue showing the " 0137 "browser until you press <i>Show Images</i></p>"); 0138 m_autoShowThumbnailView->setWhatsThis(txt); 0139 autoShowLabel->setWhatsThis(txt); 0140 } 0141 0142 void Settings::ThumbnailsPage::loadSettings(Settings::SettingsData *opt) 0143 { 0144 m_previewSize->setValue(opt->previewSize()); 0145 m_thumbnailSize->setMinimum(opt->minimumThumbnailSize()); 0146 m_thumbnailSize->setMaximum(opt->maximumThumbnailSize()); 0147 m_thumbnailSize->setValue(opt->thumbnailSize()); 0148 m_thumbnailDisplayGrid->setChecked(opt->thumbnailDisplayGrid()); 0149 m_thumbnailAspectRatio->setCurrentIndex(opt->thumbnailAspectRatio()); 0150 m_thumbnailSpace->setValue(opt->thumbnailSpace()); 0151 m_displayLabels->setChecked(opt->displayLabels()); 0152 connect(opt, &Settings::SettingsData::displayLabelsChanged, m_displayLabels, &QCheckBox::setChecked); 0153 m_displayCategories->setChecked(opt->displayCategories()); 0154 connect(opt, &Settings::SettingsData::displayCategoriesChanged, m_displayCategories, &QCheckBox::setChecked); 0155 m_autoShowThumbnailView->setValue(opt->autoShowThumbnailView()); 0156 m_incrementalThumbnails->setChecked(opt->incrementalThumbnails()); 0157 } 0158 0159 void Settings::ThumbnailsPage::saveSettings(Settings::SettingsData *opt) 0160 { 0161 opt->setPreviewSize(m_previewSize->value()); 0162 if (m_thumbnailSize->value() != opt->thumbnailSize()) { 0163 opt->setThumbnailSize(m_thumbnailSize->value()); 0164 // ensure that the user actually sees the thumbnail size change: 0165 opt->setActualThumbnailSize(m_thumbnailSize->value()); 0166 } 0167 opt->setThumbnailAspectRatio((ThumbnailAspectRatio)m_thumbnailAspectRatio->currentIndex()); 0168 opt->setThumbnailDisplayGrid(m_thumbnailDisplayGrid->isChecked()); 0169 opt->setThumbnailSpace(m_thumbnailSpace->value()); 0170 opt->setDisplayLabels(m_displayLabels->isChecked()); 0171 opt->setDisplayCategories(m_displayCategories->isChecked()); 0172 opt->setAutoShowThumbnailView(m_autoShowThumbnailView->value()); 0173 opt->setIncrementalThumbnails(m_incrementalThumbnails->isChecked()); 0174 } 0175 0176 // vi:expandtab:tabstop=4 shiftwidth=4: