#define PROJECTLIST_H
#include <QDomNodeList>
+#include <QHash>
#include <QToolBar>
#include <QToolButton>
#include <QTreeWidget>
QBrush brush;
QColor color;
if (proxy > 0) {
- proxyText = QString::number(proxy) + "% ";
- proxyText.append(i18n("Generating proxy ..."));
+ proxyText = i18n("Proxy %1\%", proxy);
brush = option.palette.highlight();
color = option.palette.color(QPalette::HighlightedText);
void setHeaderInfo(const QByteArray &state);
void updateProjectFormat(Timecode t);
void setupMenu(QMenu *addMenu, QAction *defaultAction);
- void setupGeneratorMenu(QMenu *addMenu, QMenu *transcodeMenu, QMenu *inTimelineMenu);
+ void setupGeneratorMenu(const QHash<QString,QMenu*>& menus);
QString currentClipUrl() const;
KUrl::List getConditionalUrls(const QString &condition) const;
QDomDocument generateTemplateXml(QString data, const QString &replaceString);
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 updateAllClips(bool displayRatioChanged, bool fpsChanged, QStringList brokenClips);
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);
QAction *m_openAction;
QAction *m_reloadAction;
QMenu *m_transcodeAction;
+ QMenu *m_stabilizeAction;
KdenliveDoc *m_doc;
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;
QList <PROXYINFO> m_proxyList;
QFutureSynchronizer<void> m_proxyThreads;
InvalidDialog *m_invalidClipDialog;
- QTimer m_refreshMonitorTimer;
void requestClipThumbnail(const QString id);
/** @brief Enables and disables transcode actions based on the selected clip's type. */
void adjustTranscodeActions(ProjectItem *clip) const;
+ /** @brief Enables and disables stabilize actions based on the selected clip's type. */
+ void adjustStabilizeActions(ProjectItem *clip) const;
/** @brief Enables and disables proxy action based on the selected clip. */
void adjustProxyActions(ProjectItem *clip) 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 proxyPath, PROXYSTATUS status, int progress = 0);
void setProxyStatus(ProjectItem *item, PROXYSTATUS status, int progress = 0);
/** @brief Process ffmpeg output to find out process progress. */
- void processLogInfo(const QString &path, int *duration, const QString &log);
+ void processLogInfo(QList <ProjectItem *>items, int *duration, const QString &log);
void monitorItemEditing(bool enable);
- /** @brief Set thumbnail for a project's clip. */
- 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();
void slotGotProxy(const QString &proxyPath);
void slotGotProxy(ProjectItem *item);
/** @brief Enable / disable proxy for current clip. */
- void slotProxyCurrentItem(bool doProxy);
+ void slotProxyCurrentItem(bool doProxy, ProjectItem *itemToProxy = NULL);
/** @brief Put clip in the proxy waiting list. */
void slotCreateProxy(const QString id);
/** @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);
- /** @brief Timer triggering a refresh of the clip monitor. */
- void slotRefreshMonitor();
+ void slotGenerateProxy();
signals:
void clipSelected(DocClipBase *, QPoint zone = QPoint());
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. */
/** @brief Request a profile change for current document. */
void updateProfile(const QString &);
void processNextThumbnail();
+ /** @brief Activate the clip monitor. */
+ void raiseClipMonitor();
};
#endif