#else
// Dummy KMessageWidget to allow compilation of MyMessageWidget class since Qt's moc doesn work inside #ifdef
#include <QLabel>
+
class KMessageWidget: public QLabel
{
public:
namespace Mlt
{
class Producer;
-};
+}
class ProjectItem;
class ProjectListView;
QString subText = index.data(DurationRole).toString();
int usage = index.data(UsageRole).toInt();
if (usage != 0) subText.append(QString(" (%1)").arg(usage));
- if (option.state & (QStyle::State_Selected)) painter->setPen(option.palette.color(QPalette::Mid));
QRectF bounding;
painter->drawText(r2, Qt::AlignLeft | Qt::AlignVCenter , subText, &bounding);
-
int jobProgress = index.data(Qt::UserRole + 5).toInt();
if (jobProgress != 0 && jobProgress != JOBDONE && jobProgress != JOBABORTED) {
if (jobProgress != JOBCRASHED) {
// Draw job progress bar
QColor color = option.palette.alternateBase().color();
- painter->setPen(Qt::NoPen);
- color.setAlpha(180);
- painter->setBrush(QBrush(color));
- QRect progress(pixmapPoint.x() + 1, pixmapPoint.y() + pixmap.height() - 9, pixmap.width() - 2, 8);
- painter->drawRect(progress);
- painter->setBrush(option.palette.text());
- if (jobProgress > 0) {
- progress.adjust(1, 1, 0, -1);
- progress.setWidth((pixmap.width() - 4) * jobProgress / 100);
- painter->drawRect(progress);
- } else if (jobProgress == JOBWAITING) {
- // Draw kind of a pause icon
- progress.adjust(1, 1, 0, -1);
- progress.setWidth(2);
- painter->drawRect(progress);
- progress.moveLeft(progress.right() + 2);
+ color.setAlpha(150);
+ painter->setPen(option.palette.link().color());
+ QRect progress(pixmapPoint.x() + 2, pixmapPoint.y() + pixmap.height() - 9, pixmap.width() - 4, 7);
+ painter->setBrush(QBrush(color));
+ painter->drawRect(progress);
+ painter->setBrush(option.palette.link());
+ progress.adjust(2, 2, -2, -2);
+ if (jobProgress == JOBWAITING) {
+ progress.setLeft(progress.right() - 2);
+ painter->drawRect(progress);
+ progress.moveLeft(progress.left() - 5);
+ painter->drawRect(progress);
+ }
+ else if (jobProgress > 0) {
+ progress.setWidth(progress.width() * jobProgress / 100);
painter->drawRect(progress);
}
} else if (jobProgress == JOBCRASHED) {
void setupGeneratorMenu(const QHash<QString,QMenu*>& menus);
QString currentClipUrl() const;
KUrl::List getConditionalUrls(const QString &condition) const;
- /** @brief Get a list of selected clip Id's that match a condition. */
- QStringList getConditionalIds(const QString &condition) const;
+ /** @brief Get a list of selected clip Id's and url's that match a condition. */
+ QMap <QString, QString> getConditionalIds(const QString &condition) const;
QDomDocument generateTemplateXml(QString data, const QString &replaceString);
void cleanup();
void trashUnusedClips();
void addClipCut(const QString &id, int in, int out, const QString desc, bool newItem);
void removeClipCut(const QString &id, int in, int out);
void focusTree() const;
- SubProjectItem *getSubItem(ProjectItem *clip, QPoint zone);
- void doUpdateClipCut(const QString &id, const QPoint oldzone, const QPoint zone, const QString &comment);
+ SubProjectItem *getSubItem(ProjectItem *clip, const QPoint &zone);
+ void doUpdateClipCut(const QString &id, const QPoint &oldzone, const QPoint &zone, const QString &comment);
bool hasMissingClips();
void deleteProjectFolder(QMap <QString, QString> map);
void selectItemById(const QString &clipId);
QAction *m_discardCurrentClipJobs;
QMenu *m_extractAudioAction;
QMenu *m_transcodeAction;
- QMenu *m_stabilizeAction;
+ QMenu *m_clipsActionsMenu;
KdenliveDoc *m_doc;
ItemDelegate *m_listViewDelegate;
/** @brief False if we have not yet finished opening the document. */
QList <QString> m_thumbnailQueue;
QAction *m_proxyAction;
QMutex m_jobMutex;
+ QMutex m_processMutex;
bool m_abortAllJobs;
/** @brief We are cleaning up the project list, so stop processing signals. */
bool m_closing;
/** @brief Get the list of job names for current clip. */
QStringList getPendingJobs(const QString &id);
/** @brief Start an MLT process job. */
- void processClipJob(QStringList ids, const QString&destination, bool autoAdd, QStringList jobParams, const QString &description, QMap <QString, QString>extraParams = QMap <QString, QString>());
+ void processClipJob(QStringList ids, const QString&destination, bool autoAdd, QStringList jobParams, const QString &description, stringMap extraParams = stringMap());
+ /** @brief Create rounded shape pixmap for project tree thumb. */
+ QPixmap roundedPixmap(const QImage &img);
+ QPixmap roundedPixmap(const QPixmap &source);
+ /** @brief Extract a clip's metadata with the exiftool program. */
+ void extractMetadata(DocClipBase *clip);
+ /** @brief Add a special FFmpeg tag if clip matches some properties (for example set full_luma for Sony NEX camcorders. */
+ //void checkCamcorderFilters(DocClipBase *clip, QMap <QString, QString> meta);
private slots:
void slotClipSelected();
/** @brief Try to find a matching profile for given item. */
bool adjustProjectProfileToItem(ProjectItem *item = NULL);
/** @brief Add a sequence from the stopmotion widget. */
- void slotAddOrUpdateSequence(const QString frameName);
+ void slotAddOrUpdateSequence(const QString &frameName);
/** @brief A proxy clip was created, update display. */
void slotGotProxy(const QString &proxyPath);
void slotGotProxy(ProjectItem *item);
/** @brief Enable / disable proxy for current clip. */
void slotProxyCurrentItem(bool doProxy, ProjectItem *itemToProxy = NULL);
/** @brief Put clip in the proxy waiting list. */
- void slotCreateProxy(const QString id);
+ void slotCreateProxy(const QString &id);
/** @brief Stop creation of this clip's proxy. */
- void slotAbortProxy(const QString id, const QString path);
+ void slotAbortProxy(const QString &id, const QString& path);
/** @brief Start creation of clip jobs. */
void slotProcessJobs();
/** @brief Discard running and pending clip jobs. */
/** @brief Discard a running clip jobs. */
void slotCancelRunningJob(const QString id, stringMap);
/** @brief Update a clip's job status. */
- void slotProcessLog(const QString, int progress, int, const QString = QString());
+ void slotProcessLog(const QString&, int progress, int, const QString & tmp= QString());
/** @brief A clip job crashed, inform user. */
void slotUpdateJobStatus(const QString id, int type, int status, const QString label, const QString actionName, const QString details);
void slotUpdateJobStatus(ProjectItem *item, int type, int status, const QString &label, const QString &actionName = QString(), const QString details = QString());
void showClipProperties(QList <DocClipBase *>, QMap<QString, QString> commonproperties);
void projectModified();
void loadingIsOver();
- void displayMessage(const QString, int progress);
+ void displayMessage(const QString, int progress, MessageType type = DefaultMessage);
void clipNameChanged(const QString, const QString);
void clipNeedsReload(const QString&);
/** @brief A property affecting display was changed, so we need to update monitors and thumbnails