File indexing completed on 2024-04-28 04:52:15
0001 /* 0002 SPDX-FileCopyrightText: 2008 Jean-Baptiste Mardelle <jb@kdenlive.org> 0003 0004 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #pragma once 0008 0009 #include "definitions.h" 0010 #include "utils/timecode.h" 0011 #include "ui_slideshowclip_ui.h" 0012 0013 #include <KIO/PreviewJob> 0014 0015 class ProjectClip; 0016 0017 class SlideshowClip : public QDialog 0018 { 0019 Q_OBJECT 0020 0021 public: 0022 explicit SlideshowClip(const Timecode &tc, QString clipFolder, ProjectClip *clip = nullptr, QWidget *parent = nullptr); 0023 ~SlideshowClip() override; 0024 /** return selected path for slideshow in MLT format */ 0025 QString selectedPath(); 0026 QString clipName() const; 0027 QString clipDuration() const; 0028 QString lumaDuration() const; 0029 int imageCount() const; 0030 bool loop() const; 0031 bool crop() const; 0032 bool fade() const; 0033 QString lumaFile() const; 0034 int softness() const; 0035 QString animation() const; 0036 /** @brief Should we add a low-pass (blur) filter */ 0037 int lowPass() const; 0038 /** @brief The selected image extension */ 0039 const QString extension() const; 0040 0041 /** @brief Get the image frame number from a file path, for example image_047.jpg will return 47. */ 0042 static int getFrameNumberFromPath(const QUrl &path); 0043 /** @brief return the url pattern for selected slideshow. */ 0044 static QString selectedPath(const QUrl &url, bool isMime, QString extension, QStringList *list); 0045 /** @brief Convert the selection animation style into an affine geometry string. */ 0046 static QString animationToGeometry(const QString &animation, int &ttl); 0047 0048 private Q_SLOTS: 0049 void parseFolder(); 0050 void slotEnableLuma(int state); 0051 void slotEnableThumbs(int state); 0052 void slotEnableLumaFile(int state); 0053 void slotUpdateDurationFormat(int ix); 0054 void slotGenerateThumbs(); 0055 void slotSetPixmap(const KFileItem &fileItem, const QPixmap &pix); 0056 /** @brief Display correct widget depending on user choice (MIME type or pattern method). */ 0057 void slotMethodChanged(bool active); 0058 0059 private: 0060 Ui::SlideshowClip_UI m_view; 0061 int m_count; 0062 Timecode m_timecode; 0063 KIO::PreviewJob *m_thumbJob; 0064 };