]> git.sesse.net Git - kdenlive/blobdiff - src/projectlist.h
Cleanup document loading and make sure to read all thumbs from disk cache on opening
[kdenlive] / src / projectlist.h
index 9d7727f2046ee1335d319ed5d26d2e6be3b966db..2bc2f950a962f411956744f1b12c894f325207ad 100644 (file)
@@ -32,6 +32,7 @@
 #include <QApplication>
 #include <QFuture>
 #include <QFutureSynchronizer>
+#include <QListWidget>
 
 #include <KTreeWidgetSearchLine>
 #include <KUrl>
@@ -47,6 +48,7 @@
 #include "kdenlivesettings.h"
 #include "folderprojectitem.h"
 #include "subprojectitem.h"
+#include <kdialog.h>
 
 namespace Mlt
 {
@@ -70,6 +72,19 @@ const int NameRole = Qt::UserRole;
 const int DurationRole = NameRole + 1;
 const int UsageRole = NameRole + 2;
 
+class InvalidDialog: public KDialog
+{
+    Q_OBJECT
+public:
+    InvalidDialog(const QString &caption, const QString &message, bool infoOnly, QWidget *parent = 0);
+    virtual ~InvalidDialog();
+    void addClip(const QString &id, const QString &path);
+    QStringList getIds() const;
+private:
+    QListWidget *m_clipList;
+};
+
+
 class ItemDelegate: public QStyledItemDelegate
 {
 public:
@@ -221,13 +236,15 @@ public:
     bool generateImageProxy() const;
     /** @brief Returns a list of the expanded folder ids. */
     QStringList expandedFolders() const;
+    /** @brief Deselect all clips in project tree. */
+    void clearSelection();
 
 public slots:
     void setDocument(KdenliveDoc *doc);
     void updateAllClips(bool displayRatioChanged, bool fpsChanged);
     void slotReplyGetImage(const QString &clipId, const QImage &img);
     void slotReplyGetImage(const QString &clipId, const QString &name, int width, int height);
-    void slotReplyGetFileProperties(const QString &clipId, Mlt::Producer *producer, const stringMap &properties, const stringMap &metadata, bool replace, bool refreshThumbnail);
+    void slotReplyGetFileProperties(const QString &clipId, Mlt::Producer *producer, const stringMap &properties, const stringMap &metadata, bool replace);
     void slotAddClip(DocClipBase *clip, bool getProperties);
     void slotDeleteClip(const QString &clipId);
     void slotUpdateClip(const QString &id);
@@ -277,6 +294,8 @@ private:
     ItemDelegate *m_listViewDelegate;
     /** @brief False if we have not yet finished opening the document. */
     bool m_refreshed;
+    /** @brief False if we have not yet finished checking all project tree thumbs. */
+    bool m_allClipsProcessed;
     QToolButton *m_addButton;
     QToolButton *m_deleteButton;
     QToolButton *m_editButton;
@@ -293,6 +312,7 @@ private:
     bool m_abortAllProxies;
     QList <PROXYINFO> m_proxyList;
     QFutureSynchronizer<void> m_proxyThreads;
+    InvalidDialog *m_invalidClipDialog;
     
     void requestClipThumbnail(const QString id);
 
@@ -324,6 +344,9 @@ private:
     void setThumbnail(const QString &clipId, const QPixmap &pix);
     /** @brief Get cached thumbnail for a project's clip or create it if no cache. */
     void getCachedThumbnail(ProjectItem *item);
+    void getCachedThumbnail(SubProjectItem *item);
+    /** @brief The clip is about to be reloaded, cancel thumbnail requests. */
+    void resetThumbsProducer(DocClipBase *clip);
 
 private slots:
     void slotClipSelected();
@@ -363,11 +386,10 @@ private slots:
     /** @brief Stop creation of this clip's proxy. */
     void slotAbortProxy(const QString id, const QString path);
     /** @brief Start creation of proxy clip. */
-    void slotGenerateProxy();//const QString destPath, const QString sourcePath, int clipType, int exif);
+    void slotGenerateProxy();
 
 signals:
     void clipSelected(DocClipBase *, QPoint zone = QPoint());
-    void getFileProperties(const QDomElement, const QString &, int pixHeight, bool);
     void receivedClipDuration(const QString &);
     void showClipProperties(DocClipBase *);
     void showClipProperties(QList <DocClipBase *>, QMap<QString, QString> commonproperties);
@@ -375,7 +397,7 @@ signals:
     void loadingIsOver();
     void displayMessage(const QString, int progress);
     void clipNameChanged(const QString, const QString);
-    void clipNeedsReload(const QString&, bool);
+    void clipNeedsReload(const QString&);
     /** @brief A property affecting display was changed, so we need to update monitors and thumbnails
      *  @param id: The clip's id string
      *  @param resetThumbs Should we recreate the timeline thumbnails. */
@@ -386,6 +408,8 @@ signals:
     /** @brief Request a profile change for current document. */
     void updateProfile(const QString &);
     void processNextThumbnail();
+    /** @brief Activate the clip monitor. */
+    void raiseClipMonitor();
 };
 
 #endif