X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fprojectlist.h;h=a39e84e9e42fffb6d0d1cf0e5cbbc9145e3977c9;hb=43dbe2e6432aec0c1e157c8a46de10a8d6f85bd3;hp=9446daebf0ca3244c44bdbdb70a4b9b6878b4b18;hpb=2edebe5cd8671008c2f1d493a558808818b6ad8a;p=kdenlive diff --git a/src/projectlist.h b/src/projectlist.h index 9446daeb..a39e84e9 100644 --- a/src/projectlist.h +++ b/src/projectlist.h @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -116,16 +117,19 @@ public: QString proxyText; QBrush brush; QColor color; - if (proxy == 1) { - proxyText = i18n("Generating proxy..."); - brush = option.palette.highlight(); - color = option.palette.color(QPalette::HighlightedText); - } - else { + if (proxy == PROXYDONE) { proxyText = i18n("Proxy"); brush = option.palette.mid(); color = option.palette.color(QPalette::WindowText); } + else { + if (proxy == CREATINGPROXY) proxyText = i18n("Generating proxy..."); + else if (proxy == PROXYWAITING) proxyText = i18n("Waiting proxy..."); + else if (proxy == PROXYCRASHED) proxyText = i18n("proxy crashed"); + brush = option.palette.highlight(); + color = option.palette.color(QPalette::HighlightedText); + } + txtBounding = painter->boundingRect(r2, Qt::AlignRight | Qt::AlignVCenter, " " + proxyText + " "); painter->setPen(Qt::NoPen); painter->setBrush(brush); @@ -191,18 +195,28 @@ public: QMap getProxies(); /** @brief Enable / disable proxies. */ void updateProxyConfig(); + /** @brief Get a property from the document. */ + QString getDocumentProperty(const QString &key) const; + + /** @brief Does this project allow proxies. */ + bool useProxy() const; + /** @brief Should we automatically create proxy clips for newly added clips. */ + bool generateProxy() const; + /** @brief Should we automatically create proxy clips for newly added clips. */ + bool generateImageProxy() const; public slots: void setDocument(KdenliveDoc *doc); void updateAllClips(); void slotReplyGetImage(const QString &clipId, const QPixmap &pix); - void slotReplyGetFileProperties(const QString &clipId, Mlt::Producer *producer, const QMap < QString, QString > &properties, const QMap < QString, QString > &metadata, bool replace); + void slotReplyGetFileProperties(const QString &clipId, Mlt::Producer *producer, const QMap < QString, QString > &properties, const QMap < QString, QString > &metadata, bool replace, bool selectClip); void slotAddClip(DocClipBase *clip, bool getProperties); void slotDeleteClip(const QString &clipId); void slotUpdateClip(const QString &id); void slotRefreshClipThumbnail(const QString &clipId, bool update = true); void slotRefreshClipThumbnail(QTreeWidgetItem *item, bool update = true); void slotRemoveInvalidClip(const QString &id, bool replace); + void slotRemoveInvalidProxy(const QString &id); void slotSelectClip(const QString &ix); /** @brief Prepares removing the selected items. */ @@ -230,8 +244,8 @@ private: Render *m_render; Timecode m_timecode; double m_fps; - QTimer m_queueTimer; QMenu *m_menu; + QFuture m_queueRunner; QUndoStack *m_commandStack; ProjectItem *getItemById(const QString &id); QTreeWidgetItem *getAnyItemById(const QString &id); @@ -250,6 +264,12 @@ private: void requestClipInfo(const QDomElement xml, const QString id); QList m_thumbnailQueue; QAction *m_proxyAction; + QStringList m_processingClips; + /** @brief Holds a list of ids for the clips that need to be proxied. */ + QStringList m_proxyList; + /** @brief Holds a list of proxy clip that should be aborted. */ + QStringList m_abortProxyId; + void requestClipThumbnail(const QString id); /** @brief Creates an EditFolderCommand to change the name of an folder item. */ @@ -268,6 +288,14 @@ private: /** @brief Sets the buttons enabled/disabled according to selected item. */ void updateButtons() const; + /** @brief Set the Proxy status on a clip. + * @param item The clip item to set status + * @param status The proxy status (see definitions.h) */ + void setProxyStatus(const QString id, PROXYSTATUS status); + void setProxyStatus(ProjectItem *item, PROXYSTATUS status); + + void monitorItemEditing(bool enable); + private slots: void slotClipSelected(); void slotAddSlideshowClip(); @@ -298,13 +326,19 @@ private slots: /** @brief Add a sequence from the stopmotion widget. */ void slotAddOrUpdateSequence(const QString frameName); /** @brief A proxy clip was created, update display. */ - void slotGotProxy(const QString id, bool success); + void slotGotProxy(const QString &id); /** @brief Enable / disable proxy for current clip. */ void slotProxyCurrentItem(bool doProxy); + /** @brief Put clip in the proxy waiting list. */ + void slotCreateProxy(const QString id, bool createProducer = true); + /** @brief Stop creation of this clip's proxy. */ + void slotAbortProxy(const QString id); + /** @brief Start creation of proxy clip. */ + void slotGenerateProxy(const QString id); signals: void clipSelected(DocClipBase *, QPoint zone = QPoint()); - void getFileProperties(const QDomElement, const QString &, int pixHeight, bool); + void getFileProperties(const QDomElement, const QString &, int pixHeight, bool, bool); void receivedClipDuration(const QString &); void showClipProperties(DocClipBase *); void showClipProperties(QList , QMap commonproperties); @@ -322,6 +356,7 @@ signals: void findInTimeline(const QString &clipId); /** @brief Request a profile change for current document. */ void updateProfile(const QString &); + void processNextThumbnail(); }; #endif