X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fclipmanager.h;h=ca85ab05894691660a039c815358e1302188f054;hb=0a470cfe6d9058c7c3c043485bae8216c66fe9f5;hp=7f1622e33c48f3fba9e3aa948a285a3130fce51a;hpb=5979b42a1f3334b3724c860eba4d68b2ad6a1c97;p=kdenlive diff --git a/src/clipmanager.h b/src/clipmanager.h index 7f1622e3..ca85ab05 100644 --- a/src/clipmanager.h +++ b/src/clipmanager.h @@ -38,6 +38,7 @@ #include #include #include +#include #if KDE_IS_VERSION(4,5,0) #include @@ -52,6 +53,21 @@ class KdenliveDoc; class DocClipBase; class AbstractGroupItem; + +class SolidVolumeInfo +{ + +public: + + QString path; // mount path of volume, with trailing slash + QString uuid; // UUID as from Solid + QString label; // volume label (think of CDs) + bool isRemovable; // may be removed + bool isMounted; + + bool isNull() const { return path.isNull(); } +}; + namespace Mlt { class Producer; @@ -72,22 +88,19 @@ Q_OBJECT public: * @param url file to add * @param group name of the group to insert the file in (can be empty) * @param groupId id of the group (if any) */ - void slotAddClipFile(const KUrl &url, const QString &group, const QString &groupId); + void slotAddClipFile(const KUrl &url, QMap data); /** @brief Adds a list of files to the project. * @param urls files to add * @param group name of the group to insert the files in (can be empty) * @param groupId id of the group (if any) * It checks for duplicated items and asks to the user for instructions. */ - void slotAddClipList(const KUrl::List urls, const QString &group, const QString &groupId); + void slotAddClipList(const KUrl::List urls, QMap data); void slotAddTextClipFile(const QString &titleName, int out, const QString &xml, const QString &group, const QString &groupId); void slotAddTextTemplateClip(QString titleName, const KUrl &path, const QString &group, const QString &groupId); void slotAddXmlClipFile(const QString &name, const QDomElement &xml, const QString &group, const QString &groupId); void slotAddColorClipFile(const QString &name, const QString &color, QString duration, const QString &group, const QString &groupId); - void slotAddSlideshowClipFile(const QString &name, const QString &path, int count, const QString &duration, - const bool loop, const bool crop,const bool fade, - const QString &luma_duration, const QString &luma_file, const int softness, - const QString &animation, const QString &group, const QString &groupId); + void slotAddSlideshowClipFile(QMap properties, const QString &group, const QString &groupId); DocClipBase *getClipById(QString clipId); const QList getClipByResource(QString resource); void slotDeleteClips(QStringList ids); @@ -98,8 +111,6 @@ Q_OBJECT public: int getFreeClipId(); int getFreeFolderId(); int lastClipId() const; - void startAudioThumbsGeneration(); - void endAudioThumbsGeneration(const QString &requestedId); void askForAudioThumb(const QString &id); QString projectFolder() const; void clearUnusedProducers(); @@ -116,6 +127,7 @@ Q_OBJECT public: void requestThumbs(const QString id, QList frames); /** @brief remove a clip id from the queue list. */ void stopThumbs(const QString &id); + void projectTreeThumbReady(const QString &id, int frame, QImage img, int type); #if KDE_IS_VERSION(4,5,0) KImageCache* pixmapCache; @@ -129,6 +141,9 @@ private slots: /** Check the list of externally modified clips, and process them if they were not modified in the last 1500 milliseconds */ void slotProcessModifiedClips(); void slotGetThumbs(); + void slotGetAudioThumbs(); + /** @brief Clip has been copied, add it now. */ + void slotAddClip(KIO::Job *job, const KUrl &, const KUrl &dst); private: // Private attributes /** the list of clips in the document */ @@ -141,7 +156,6 @@ private: // Private attributes KdenliveDoc *m_doc; int m_clipIdCounter; int m_folderIdCounter; - QString m_generatingAudioId; KDirWatch m_fileWatcher; /** Timer used to reload clips when they have been externally modified */ QTimer m_modifiedTimer; @@ -151,10 +165,26 @@ private: // Private attributes QMap m_requestedThumbs; QMutex m_thumbsMutex; QFuture m_thumbsThread; + /** @brief The id of currently processed clip for thumbs creation. */ + QString m_processingThumbId; /** @brief If true, abort processing of clip thumbs before removing a clip. */ bool m_abortThumb; /** @brief We are about to delete the clip producer, stop processing thumbs. */ bool m_closing; + QFuture m_audioThumbsThread; + /** @brief If true, abort processing of audio thumbs. */ + bool m_abortAudioThumb; + /** @brief The id of currently processed clip for audio thumbs creation. */ + QString m_processingAudioThumbId; + /** @brief The list of removable drives. */ + QList m_removableVolumes; + + QPoint m_projectTreeThumbSize; + + /** @brief Get a list of drives, to check if we have files on removable media. */ + void listRemovableVolumes(); + /** @brief Check if added file is on a removable drive. */ + bool isOnRemovableDevice(const KUrl &url); signals: void reloadClip(const QString &); @@ -163,6 +193,8 @@ signals: void availableClip(const QString &); void checkAllClips(bool displayRatioChanged, bool fpsChanged, QStringList brokenClips); void displayMessage(const QString &, int); + void thumbReady(const QString &id, int, QImage); + void gotClipPropertyThumbnail(const QString &id, QImage); }; #endif