X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fkdenlivedoc.h;h=22aeac31b18014f2f12d306c5ebfb762073485bf;hb=ba1ba937af590000157599aca776708ded840a28;hp=7139dd9951e93a911fcd837c0cff53d1dd65c800;hpb=c59b232df628b84271a99765f32e03d606cc2733;p=kdenlive diff --git a/src/kdenlivedoc.h b/src/kdenlivedoc.h index 7139dd99..22aeac31 100644 --- a/src/kdenlivedoc.h +++ b/src/kdenlivedoc.h @@ -52,7 +52,7 @@ class KdenliveDoc: public QObject { Q_OBJECT public: - KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup *undoGroup, QString profileName, const QPoint tracks, Render *render, KTextEdit *notes, MainWindow *parent = 0, KProgressDialog *progressDialog = 0); + KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup *undoGroup, QString profileName, QMap properties, QMap metadata, const QPoint &tracks, Render *render, KTextEdit *notes, bool *openBackup, MainWindow *parent = 0, KProgressDialog *progressDialog = 0); ~KdenliveDoc(); QDomNodeList producersList(); double fps() const; @@ -83,12 +83,11 @@ Q_OBJECT public: * * If the clip wasn't added before, it tries to add it to the project. */ bool addClipInfo(QDomElement elem, QDomElement orig, QString clipId); - void slotAddClipFile(const KUrl url, const QString group, const QString &groupId = QString()); - void slotAddClipList(const KUrl::List urls, const QString group, const QString &groupId = QString()); + void slotAddClipList(const KUrl::List urls, stringMap data = stringMap()); void deleteClip(const QString &clipId); int getFramePos(QString duration); DocClipBase *getBaseClip(const QString &clipId); - void updateClip(const QString id); + void updateClip(const QString &id); /** @brief Informs Kdenlive of the audio thumbnails generation progress. */ void setThumbsProgress(const QString &message, int progress); @@ -112,24 +111,39 @@ Q_OBJECT public: QPoint zoom() const; double dar() const; double projectDuration() const; - bool saveSceneList(const QString &path, const QString &scene); + /** @brief Returns the project file xml. */ + QDomDocument xmlSceneList(const QString &scene, const QStringList &expandedFolders); + /** @brief Saves the project file xml to a file. */ + bool saveSceneList(const QString &path, const QString &scene, const QStringList &expandedFolders, bool autosave = false); int tracksCount() const; TrackInfo trackInfoAt(int ix) const; void insertTrack(int ix, TrackInfo type); void deleteTrack(int ix); void setTrackType(int ix, TrackInfo type); const QList tracksList() const; + + /** @brief Gets the number of audio and video tracks and returns them as a QPoint with x = video, y = audio. */ QPoint getTracksCount() const; + void switchTrackVideo(int ix, bool hide); void switchTrackAudio(int ix, bool hide); void switchTrackLock(int ix, bool lock); - void cachePixmap(const QString &fileId, const QPixmap &pix) const; + bool isTrackLocked(int ix) const; + + /** @brief Sets the duration of track @param ix to @param duration. + * This does not! influence the actual track but only the value in its TrackInfo. */ + void setTrackDuration(int ix, int duration); + + /** @brief Returns the duration of track @param ix. + * + * The returned duration might differ from the actual track duration! + * It is the one stored in the track's TrackInfo. */ + int trackDuration(int ix); + void cacheImage(const QString &fileId, const QImage &img) const; void setProjectFolder(KUrl url); - QString getLadspaFile() const; void setZone(int start, int end); QPoint zone() const; int setSceneList(); - bool isTrackLocked(int ix) const; void setDocumentProperty(const QString &name, const QString &value); const QString getDocumentProperty(const QString &name) const; @@ -139,8 +153,22 @@ Q_OBJECT public: void removeTrackEffect(int ix, QDomElement effect); void setTrackEffect(int trackIndex, int effectIndex, QDomElement effect); const EffectsList getTrackEffects(int ix); + /** @brief Enable / disable an effect in Kdenlive's xml list. */ + void enableTrackEffects(int trackIndex, QList effectIndexes, bool disable); QDomElement getTrackEffect(int trackIndex, int effectIndex) const; - + /** @brief Check if a track already contains a specific effect. */ + int hasTrackEffect(int trackIndex, const QString &tag, const QString &id) const; + /** @brief Get a list of folder id's that were opened on last save. */ + QStringList getExpandedFolders(); + /** @brief Read the display ratio from an xml project file. */ + static double getDisplayRatio(const QString &path); + /** @brief Backup the project file */ + void backupLastSavedVersion(const QString &path); + /** @brief Returns the document metadata (author, copyright, ...) */ + const QMap metadata() const; + /** @brief Set the document metadata (author, copyright, ...) */ + void setMetadata(const QMap meta); + private: KUrl m_url; QDomDocument m_document; @@ -162,6 +190,7 @@ private: /** @brief The project folder, used to store project files (titles, effects...). */ KUrl m_projectFolder; QMap m_documentProperties; + QMap m_documentMetadata; QList m_tracksList; void setNewClipResource(const QString &id, const QString &path); @@ -178,24 +207,21 @@ private: /** @brief Updates the project folder location entry in the kdenlive file dialogs to point to the current project folder. */ void updateProjectFolderPlacesEntry(); + /** @brief Only keep some backup files, delete some */ + void cleanupBackupFiles(); public slots: void slotCreateXmlClip(const QString &name, const QDomElement xml, QString group, const QString &groupId); void slotCreateColorClip(const QString &name, const QString &color, const QString &duration, QString group, const QString &groupId); - void slotCreateSlideshowClipFile(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, QString group, - const QString &groupId); + void slotCreateSlideshowClipFile(QMap properties, QString group, const QString &groupId); void slotCreateTextClip(QString group, const QString &groupId, const QString &templatePath = QString()); void slotCreateTextTemplateClip(QString group, const QString &groupId, KUrl path); /** @brief Sets the document as modified or up to date. * @param mod (optional) true if the document has to be saved */ void setModified(bool mod = true); - void checkProjectClips(); + void checkProjectClips(bool displayRatioChanged = false, bool fpsChanged = false); + void slotAddClipFile(const KUrl &url, stringMap data); private slots: void slotAutoSave(); @@ -205,7 +231,6 @@ signals: void addProjectClip(DocClipBase *, bool getInfo = true); void signalDeleteProjectClip(const QString &); void updateClipDisplay(const QString&); - void deleteTimelineClip(const QString&); void progressInfo(const QString &, int); /** @brief Informs that the document status has been changed. @@ -214,6 +239,8 @@ signals: void docModified(bool); void selectLastAddedClip(const QString &); void guidesUpdated(); + /** @brief When creating a backup file, also save a thumbnail of current timeline */ + void saveTimelinePreview(const QString &path); }; #endif