File indexing completed on 2025-03-09 03:52:03
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2017-05-25 0007 * Description : a tool to generate video slideshow from images. 0008 * 0009 * SPDX-FileCopyrightText: 2017-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0010 * 0011 * SPDX-License-Identifier: GPL-2.0-or-later 0012 * 0013 * ============================================================ */ 0014 0015 #include "vidslideimagespage.h" 0016 0017 // Qt includes 0018 0019 #include <QIcon> 0020 #include <QPixmap> 0021 #include <QLabel> 0022 0023 // KDE includes 0024 0025 #include <klocalizedstring.h> 0026 0027 // Local includes 0028 0029 #include "vidslidewizard.h" 0030 #include "ditemslist.h" 0031 #include "dlayoutbox.h" 0032 0033 namespace DigikamGenericVideoSlideShowPlugin 0034 { 0035 0036 class Q_DECL_HIDDEN VidSlideImagesPage::Private 0037 { 0038 0039 public: 0040 0041 explicit Private(QWizard* const dialog) 0042 { 0043 wizard = dynamic_cast<VidSlideWizard*>(dialog); 0044 0045 if (wizard) 0046 { 0047 settings = wizard->settings(); 0048 } 0049 } 0050 0051 DItemsList* imageList = nullptr; 0052 VidSlideWizard* wizard = nullptr; 0053 VidSlideSettings* settings = nullptr; 0054 }; 0055 0056 VidSlideImagesPage::VidSlideImagesPage(QWizard* const dialog, const QString& title) 0057 : DWizardPage(dialog, title), 0058 d (new Private(dialog)) 0059 { 0060 setObjectName(QLatin1String("ImagesSelectorPage")); 0061 0062 DVBox* const vbox = new DVBox(this); 0063 QLabel* const desc = new QLabel(vbox); 0064 desc->setText(i18n("<p>This view list all items to include on video stream.</p>" 0065 "<p>The first one is on top of the list, the last one</p>" 0066 "<p>on the bottom. You can adjust the order of each item.</p>")); 0067 0068 d->imageList = new DItemsList(vbox); 0069 d->imageList->setObjectName(QLatin1String("VideoSlideshow ImagesList")); 0070 d->imageList->setControlButtonsPlacement(DItemsList::ControlButtonsBelow); 0071 0072 setPageWidget(vbox); 0073 setLeftBottomPix(QIcon::fromTheme(QLatin1String("image-stack"))); 0074 0075 connect(d->imageList, SIGNAL(signalImageListChanged()), 0076 this, SIGNAL(completeChanged())); 0077 } 0078 0079 VidSlideImagesPage::~VidSlideImagesPage() 0080 { 0081 delete d; 0082 } 0083 0084 void VidSlideImagesPage::setItemsList(const QList<QUrl>& urls) 0085 { 0086 d->imageList->slotAddImages(urls); 0087 } 0088 0089 void VidSlideImagesPage::initializePage() 0090 { 0091 d->imageList->setIface(d->settings->iface); 0092 d->imageList->listView()->clear(); 0093 0094 if (d->wizard->settings()->selMode == VidSlideSettings::IMAGES) 0095 { 0096 d->imageList->loadImagesFromCurrentSelection(); 0097 } 0098 else 0099 { 0100 setItemsList(d->wizard->settings()->inputImages); 0101 } 0102 } 0103 0104 bool VidSlideImagesPage::validatePage() 0105 { 0106 if (d->imageList->imageUrls().isEmpty()) 0107 { 0108 return false; 0109 } 0110 0111 d->wizard->settings()->inputImages = d->imageList->imageUrls(); 0112 0113 return true; 0114 } 0115 0116 bool VidSlideImagesPage::isComplete() const 0117 { 0118 return (!d->imageList->imageUrls().isEmpty()); 0119 } 0120 0121 } // namespace DigikamGenericVideoSlideShowPlugin 0122 0123 #include "moc_vidslideimagespage.cpp"