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 -&gt; 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: