X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fkdenlivedoc.h;h=cae8843905b2345d27f30813815a5544fd9bcefc;hb=7aed2fb6d844d74daf7159117026deb153307b25;hp=0c7d93ea64e44ddbe266ea8e7084ffa37c2e5232;hpb=8244f2dfae1c7d4e7f1bf3ed5098d7994e4230e4;p=kdenlive diff --git a/src/kdenlivedoc.h b/src/kdenlivedoc.h index 0c7d93ea..cae88439 100644 --- a/src/kdenlivedoc.h +++ b/src/kdenlivedoc.h @@ -22,53 +22,137 @@ #define KDENLIVEDOC_H #include -#include -#include +#include +#include #include #include +#include +#include +#include -#include -#include +#include +#include #include "gentime.h" #include "timecode.h" -#include "renderer.h" +#include "definitions.h" +#include "guide.h" -class KdenliveDoc:public QObject { - Q_OBJECT public: +class Render; +class ClipManager; +class DocClipBase; +class MainWindow; - KdenliveDoc(const KUrl &url, double fps, int width, int height, QWidget *parent = 0); +class KdenliveDoc: public QObject { +Q_OBJECT public: + + KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup *undoGroup, const QString &profileName, const QPoint tracks, MainWindow *parent = 0); ~KdenliveDoc(); - QString documentName(); QDomNodeList producersList(); - double fps(); - int width(); - int height(); - KUrl url(); - void setProducers(QDomElement doc); - Timecode timecode(); - QDomDocument toXml(); + double fps() const; + int width() const; + int height() const; + KUrl url() const; + KAutoSaveFile *m_autosave; + void backupMltPlaylist(); + 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); + QUndoStack *commandStack(); + QString producerName(const QString &id); + void setProducerDuration(const QString &id, int duration); + int getProducerDuration(const QString &id); Render *renderer(); + QDomElement m_guidesXml; + QDomElement guidesXml() const; + ClipManager *clipManager(); + void addClip(QDomElement elem, QString clipId, bool createClipItem = true); + void addClipInfo(QDomElement elem, QString clipId); + void addFolder(const QString foldername, const QString &clipId, bool edit); + void deleteFolder(const QString foldername, const 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 slotAddFolder(const QString folderName); + void slotDeleteFolder(const QString folderName, const QString &id); + void slotEditFolder(const QString folderName, const QString oldfolderName, const QString &clipId); + void slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const QString &groupId = QString()); + void slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, const bool fade, const QString &luma_duration, const QString &luma_file, const int softness, const QString group, const QString &groupId = QString()); + void deleteClip(const QString &clipId); + int getFramePos(QString duration); + DocClipBase *getBaseClip(const QString &clipId); + void updateClip(const QString &id); + void deleteProjectClip(QList ids); + void deleteProjectFolder(QMap map); + /** Inform application of the audio thumbnails generation progress */ + void setThumbsProgress(const QString &message, int progress); + QString profilePath() const; + MltVideoProfile mltProfile() const; + QString description() const; + void setUrl(KUrl url); + QDomElement documentInfoXml(); + void setProfilePath(QString path); + const QString&getFreeClipId(); + /** does the document need saving */ + bool isModified() const; + /** Returns project folder, used to store project files (titles, effects,...) */ + KUrl projectFolder() const; + /** Used to inform main app of the current document loading progress */ + void loadingProgressed(); + void syncGuides(QList guides); + void setZoom(int factor); + int zoom() const; + const double dar(); + double projectDuration() const; + bool saveSceneList(const QString &path, QDomDocument sceneList); - private: +private: KUrl m_url; QDomDocument m_document; QString m_projectName; double m_fps; + int m_zoom; + /** Cursor position at document opening */ + int m_startPos; int m_width; int m_height; Timecode m_timecode; Render *m_render; - KUndoStack *m_commandStack; + QUndoStack *m_commandStack; QDomDocument generateSceneList(); + ClipManager *m_clipManager; + MltVideoProfile m_profile; + QString m_scenelist; + QTimer *m_autoSaveTimer; + /** tells whether current doc has been changed since last save event */ + bool m_modified; + /** Project folder, used to store project files (titles, effects,...) */ + KUrl m_projectFolder; + double m_documentLoadingStep; + double m_documentLoadingProgress; + void convertDocument(double version); + QDomDocument createEmptyDocument(const int videotracks, const int audiotracks); + QString colorToString(const QColor& c); + void checkProjectClips(); + +public slots: + void slotCreateTextClip(QString group, const QString &groupId); + /** Set to true if document needs saving, false otherwise */ + void setModified(bool mod = true); + +private slots: + void slotAutoSave(); - public slots: - +signals: + void addProjectClip(DocClipBase *); + void addProjectFolder(const QString, const QString &, bool, bool edit = false); + 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) */ + void docModified(bool); + void selectLastAddedClip(const QString &); + void guidesUpdated(); }; #endif