X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fkdenlivedoc.h;h=da9e5881a5113cd1bd7096563a9afae76e8478a4;hb=96c6045c119454944e5f61cf3c81d14597188262;hp=463e4cda78af699bdd5c0642ee2d995d2bde7446;hpb=2117079e79767c3d63f7f116a47681b2180aacd3;p=kdenlive diff --git a/src/kdenlivedoc.h b/src/kdenlivedoc.h index 463e4cda..da9e5881 100644 --- a/src/kdenlivedoc.h +++ b/src/kdenlivedoc.h @@ -22,116 +22,189 @@ #define KDENLIVEDOC_H #include -#include -#include +#include +#include #include +#include #include #include +#include +#include -#include -#include +#include +#include #include "gentime.h" #include "timecode.h" #include "definitions.h" +#include "guide.h" class Render; class ClipManager; class DocClipBase; class MainWindow; +class TrackInfo; -class KdenliveDoc: public QObject { +class KdenliveDoc: public QObject +{ Q_OBJECT public: - KdenliveDoc(const KUrl &url, const KUrl &projectFolder, MltVideoProfile profile, QUndoGroup *undoGroup, MainWindow *parent = 0); + KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup *undoGroup, QString profileName, const QPoint tracks, Render *render, MainWindow *parent = 0); ~KdenliveDoc(); QDomNodeList producersList(); double fps() const; int width() const; int height() const; KUrl url() const; - void backupMltPlaylist(); + KAutoSaveFile *m_autosave; Timecode timecode() const; - QDomDocument toXml() const; - void setRenderer(Render *render); - KUndoStack *commandStack(); - QString producerName(int id); - void setProducerDuration(int id, int duration); - int getProducerDuration(int id); + QDomDocument toXml(); + //void setRenderer(Render *render); + QUndoStack *commandStack(); + QString producerName(const QString &id); Render *renderer(); + QDomDocument m_guidesXml; + QDomElement guidesXml() const; ClipManager *clipManager(); - void addClip(const QDomElement &elem, const int clipId); - void addFolder(const QString foldername, int clipId, bool edit); - void deleteFolder(const QString foldername, int clipId); - void slotAddClipFile(const KUrl url, const QString group, const int groupId = -1); - void slotAddTextClipFile(const QString path, const QString group, const int groupId = -1); - void editTextClip(QString path, int id); - void slotAddFolder(const QString folderName); - void slotDeleteFolder(const QString folderName, const int id); - void slotEditFolder(const QString folderName, const QString oldfolderName, int clipId); - void slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const int groupId = -1); - void slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, bool loop, const QString group, const int groupId = -1); - void deleteClip(const uint clipId); + + /** @brief Adds a clip to the project tree. + * @return false if the user aborted the operation, true otherwise */ + bool addClip(QDomElement elem, QString clipId, bool createClipItem = true); + + /** @brief Updates information about a clip. + * @param elem the + * @param orig the potential + * @param clipId the producer id + * @return false if the user aborted the operation (in case the clip wasn't + * there yet), true otherwise + * + * 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 deleteClip(const QString &clipId); int getFramePos(QString duration); - DocClipBase *getBaseClip(int clipId); - void updateClip(int id); - void deleteProjectClip(QList ids); - void deleteProjectFolder(QMap map); - /** Inform application of the audio thumbnails generation progress */ + DocClipBase *getBaseClip(const QString &clipId); + void updateClip(const QString id); + + /** @brief Informs Kdenlive of the audio thumbnails generation progress. */ void setThumbsProgress(const QString &message, int progress); - QString profilePath() const; - QString description() const; - /** Returns the document format: PAL or NTSC */ - QString getDocumentStandard(); + const QString &profilePath() const; + MltVideoProfile mltProfile() const; + const QString description() const; void setUrl(KUrl url); - QDomElement documentInfoXml(QDomElement timelineInfo); - void setProfilePath(QString path); - /** Set to true if document needs saving, false otherwise */ - void setModified(bool mod); - int getFreeClipId(); - /** does the document need saving */ + + /** @brief Updates the project profile. + * @return true if frame rate was changed */ + bool setProfilePath(QString path); + const QString getFreeClipId(); + + /** @brief Defines whether the document needs to be saved. */ bool isModified() const; - /** Returns project folder, used to store project files (titles, effects,...) */ + + /** @brief Returns the project folder, used to store project files. */ KUrl projectFolder() const; - /** Used to inform main app of the current document loading progress */ - void loadingProgressed(); + void syncGuides(QList guides); + void setZoom(int horizontal, int vertical); + QPoint zoom() const; + double dar(); + double projectDuration() const; + bool saveSceneList(const QString &path, const QString &scene); + 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; + 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; + void setProjectFolder(KUrl url); + QString getLadspaFile() const; + void setZone(int start, int end); + QPoint zone() const; + int setSceneList(); + void updatePreviewSettings(); + bool isTrackLocked(int ix) const; + void setDocumentProperty(const QString &name, const QString &value); + const QString getDocumentProperty(const QString &name) const; + + /** @brief Gets the list of renderer properties saved into the document. */ + QMap getRenderProperties() const; + void addTrackEffect(int ix, QDomElement effect); + void removeTrackEffect(int ix, QDomElement effect); + void setTrackEffect(int trackIndex, int effectIndex, QDomElement effect); + const EffectsList getTrackEffects(int ix); + QDomElement getTrackEffect(int trackIndex, int effectIndex) const; + private: KUrl m_url; QDomDocument m_document; - QString m_projectName; double m_fps; - /** Cursor position at document opening */ - int m_startPos; int m_width; int m_height; Timecode m_timecode; Render *m_render; - KUndoStack *m_commandStack; - QDomDocument generateSceneList(); + QUndoStack *m_commandStack; ClipManager *m_clipManager; MltVideoProfile m_profile; - QString m_scenelist; - /** tells whether current doc has been changed since last save event */ + QTimer *m_autoSaveTimer; + QString m_searchFolder; + + /** @brief Tells whether the current document has been changed after being saved. */ bool m_modified; - /** Project folder, used to store project files (titles, effects,...) */ + + /** @brief The project folder, used to store project files (titles, effects...). */ KUrl m_projectFolder; - double m_documentLoadingStep; - double m_documentLoadingProgress; - void convertDocument(double version); + QMap m_documentProperties; + + QList m_tracksList; + void setNewClipResource(const QString &id, const QString &path); + QString searchFileRecursively(const QDir &dir, const QString &matchSize, const QString &matchHash) const; + void moveProjectData(KUrl url); + bool checkDocumentClips(QDomNodeList infoproducers); + + /** @brief Creates a new project. */ + QDomDocument createEmptyDocument(int videotracks, int audiotracks); + QDomDocument createEmptyDocument(QList tracks); public slots: - void slotCreateTextClip(QString group, int groupId); + 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 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(); + +private slots: + void slotAutoSave(); signals: - void addProjectClip(DocClipBase *); - void addProjectFolder(const QString, int, bool, bool edit = false); - void signalDeleteProjectClip(int); - void updateClipDisplay(int); - void deletTimelineClip(int); + void resetProjectList(); + void addProjectClip(DocClipBase *, bool getInfo = true); + void signalDeleteProjectClip(const QString &); + void updateClipDisplay(const QString&); + void deleteTimelineClip(const QString&); void progressInfo(const QString &, int); - /** emited when the document state has been modified (= needs saving or not) */ + + /** @brief Informs that the document status has been changed. + * + * If the document has been modified, it's called with true as an argument. */ void docModified(bool); - void refreshClipThumbnail(int); + void selectLastAddedClip(const QString &); + void guidesUpdated(); }; #endif