]> git.sesse.net Git - kdenlive/commitdiff
Change tab icon & font when document was modified
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 13 Mar 2008 23:24:22 +0000 (23:24 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 13 Mar 2008 23:24:22 +0000 (23:24 +0000)
svn path=/branches/KDE4/; revision=2054

src/customtrackview.cpp
src/kdenlivedoc.cpp
src/kdenlivedoc.h
src/mainwindow.cpp
src/mainwindow.h

index d89292ba85a19011e5b37cb2fb05d066e99059e3..d98bceefac4fb564fc6d45fe229d2d78f529a8be 100644 (file)
@@ -455,11 +455,13 @@ void CustomTrackView::slotAddEffect(QDomElement effect, GenTime pos, int track)
             m_commandStack->push(command);
         }
     }
+    m_document->setModified(true);
 }
 
 void CustomTrackView::slotDeleteEffect(ClipItem *clip, QDomElement effect) {
     AddEffectCommand *command = new AddEffectCommand(this, m_tracksCount - clip->track(), clip->startPos(), effect, false);
     m_commandStack->push(command);
+    m_document->setModified(true);
 }
 
 void CustomTrackView::updateEffect(int track, GenTime pos, QDomElement effect) {
@@ -471,6 +473,7 @@ void CustomTrackView::updateEffect(int track, GenTime pos, QDomElement effect) {
             m_document->renderer()->mltRemoveEffect(track, pos, index);
         } else m_document->renderer()->mltEditEffect(m_tracksCount - clip->track(), clip->startPos(), effectParams);
     }
+    m_document->setModified(true);
 }
 
 void CustomTrackView::slotChangeEffectState(ClipItem *clip, QDomElement effect, bool disable) {
@@ -478,6 +481,7 @@ void CustomTrackView::slotChangeEffectState(ClipItem *clip, QDomElement effect,
     effect.setAttribute("disabled", disable);
     EditEffectCommand *command = new EditEffectCommand(this, m_tracksCount - clip->track(), clip->startPos(), oldEffect, effect, true);
     m_commandStack->push(command);
+    m_document->setModified(true);
 }
 
 void CustomTrackView::slotUpdateClipEffect(ClipItem *clip, QDomElement oldeffect, QDomElement effect) {
@@ -526,6 +530,7 @@ void CustomTrackView::dropEvent(QDropEvent * event) {
         m_document->updateClip(m_dropItem->baseClip()->getId());
         // kDebug()<<"IIIIIIIIIIIIIIIIIIIIIIII TRAX CNT: "<<m_tracksCount<<", DROP: "<<m_dropItem->track();
         m_document->renderer()->mltInsertClip(m_tracksCount - m_dropItem->track(), m_dropItem->startPos(), m_dropItem->xml());
+        m_document->setModified(true);
     } else QGraphicsView::dropEvent(event);
     m_dropItem = NULL;
 }
@@ -627,6 +632,7 @@ void CustomTrackView::mouseReleaseEvent(QMouseEvent * event) {
         m_commandStack->push(command);
         m_document->renderer()->doRefresh();
     }
+    m_document->setModified(true);
     m_operationMode = NONE;
     m_dragItem = NULL;
 }
index e01e86f18cabf0d2e1b3721439001c18a97e9630..36d0c7499d48df71eef3675efaba90bccebfd021 100644 (file)
@@ -259,7 +259,12 @@ KUrl KdenliveDoc::url() const {
 
 void KdenliveDoc::setUrl(KUrl url) {
     m_url = url;
-    m_modified = false;
+}
+
+void KdenliveDoc::setModified(bool mod) {
+    if (mod == m_modified) return;
+    m_modified = mod;
+    emit docModified(m_modified);
 }
 
 QString KdenliveDoc::description() const {
@@ -279,6 +284,7 @@ void KdenliveDoc::addClip(const QDomElement &elem, const int clipId) {
 void KdenliveDoc::deleteProjectClip(const uint clipId) {
     emit deletTimelineClip(clipId);
     m_clipManager->slotDeleteClip(clipId);
+    setModified(true);
 }
 
 void KdenliveDoc::deleteClip(const uint clipId) {
@@ -289,6 +295,7 @@ void KdenliveDoc::deleteClip(const uint clipId) {
 void KdenliveDoc::slotAddClipFile(const KUrl url, const QString group) {
     kDebug() << "/////////  DOCUM, ADD CLP: " << url;
     m_clipManager->slotAddClipFile(url, group);
+    setModified(true);
 }
 
 DocClipBase *KdenliveDoc::getBaseClip(int clipId) {
@@ -297,6 +304,7 @@ DocClipBase *KdenliveDoc::getBaseClip(int clipId) {
 
 void KdenliveDoc::slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group) {
     m_clipManager->slotAddColorClipFile(name, color, duration, group);
+    setModified(true);
 }
 
 #include "kdenlivedoc.moc"
index 6d09167d00dc069d62cb632f7b57d4ba0397412c..6c6f783f94b84c159054937075627cb7a87ea4c0 100644 (file)
@@ -74,6 +74,8 @@ Q_OBJECT public:
     void setUrl(KUrl url);
     QDomElement documentInfoXml();
     void setProfilePath(QString path);
+    /** Set to true if document needs saving, false otherwise */
+    void setModified(bool mod);
 
 private:
     KUrl m_url;
@@ -100,6 +102,8 @@ signals:
     void updateClipDisplay(int);
     void deletTimelineClip(int);
     void thumbsProgress(KUrl, int);
+    /** emited when the document state has been modified (= needs saving or not) */
+    void docModified(bool);
 };
 
 #endif
index 4faeff4ff476d8384a67ef8a5a863a6e7e422d55..a550896dcaba4b1734a11f2c8a498a7d2e59f06f 100644 (file)
@@ -376,6 +376,7 @@ void MainWindow::saveFileAs(const QString &outputFileName) {
     setCaption(m_activeDocument->description());
     m_timelineArea->setTabText(m_timelineArea->currentIndex(), m_activeDocument->description());
     m_timelineArea->setTabToolTip(m_timelineArea->currentIndex(), m_activeDocument->url().path());
+    m_activeDocument->setModified(false);
 }
 
 void MainWindow::saveFileAs() {
@@ -536,6 +537,16 @@ void MainWindow::slotUpdateMousePosition(int pos) {
         }
 }
 
+void MainWindow::slotUpdateDocumentState(bool modified) {
+    if (modified) {
+        m_timelineArea->setTabTextColor(m_timelineArea->currentIndex(), palette().color(QPalette::Link));
+        m_timelineArea->setTabIcon(m_timelineArea->currentIndex(), KIcon("document-save"));
+    } else {
+        m_timelineArea->setTabTextColor(m_timelineArea->currentIndex(), palette().color(QPalette::Text));
+        m_timelineArea->setTabIcon(m_timelineArea->currentIndex(), KIcon("kdenlive"));
+    }
+}
+
 void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) { //changed
     //m_projectMonitor->stop();
     kDebug() << "///////////////////   CONNECTING DOC TO PROJECT VIEW ////////////////";
@@ -551,6 +562,7 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) { //cha
             disconnect(m_activeDocument, SIGNAL(deletTimelineClip(int)), m_activeTimeline, SLOT(slotDeleteClip(int)));
             disconnect(m_activeDocument, SIGNAL(thumbsProgress(KUrl, int)), this, SLOT(slotGotProgressInfo(KUrl, int)));
             disconnect(m_activeTimeline, SIGNAL(clipItemSelected(ClipItem*)), effectStack, SLOT(slotClipItemSelected(ClipItem*)));
+            disconnect(m_activeDocument, SIGNAL(docModified(bool)), this, SLOT(slotUpdateDocumentState(bool)));
             disconnect(effectStack, SIGNAL(updateClipEffect(ClipItem*, QDomElement, QDomElement)), m_activeTimeline->projectView(), SLOT(slotUpdateClipEffect(ClipItem*, QDomElement, QDomElement)));
             disconnect(effectStack, SIGNAL(removeEffect(ClipItem*, QDomElement)), m_activeTimeline->projectView(), SLOT(slotDeleteEffect(ClipItem*, QDomElement)));
             disconnect(effectStack, SIGNAL(changeEffectState(ClipItem*, QDomElement, bool)), m_activeTimeline->projectView(), SLOT(slotChangeEffectState(ClipItem*, QDomElement, bool)));
@@ -573,6 +585,7 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) { //cha
     connect(doc, SIGNAL(updateClipDisplay(int)), m_projectList, SLOT(slotUpdateClip(int)));
     connect(doc, SIGNAL(deletTimelineClip(int)), trackView, SLOT(slotDeleteClip(int)));
     connect(doc, SIGNAL(thumbsProgress(KUrl, int)), this, SLOT(slotGotProgressInfo(KUrl, int)));
+    connect(doc, SIGNAL(docModified(bool)), this, SLOT(slotUpdateDocumentState(bool)));
 
     connect(trackView, SIGNAL(clipItemSelected(ClipItem*)), effectStack, SLOT(slotClipItemSelected(ClipItem*)));
     connect(effectStack, SIGNAL(updateClipEffect(ClipItem*, QDomElement, QDomElement)), trackView->projectView(), SLOT(slotUpdateClipEffect(ClipItem*, QDomElement, QDomElement)));
index 3c2657f97651dcf28a1c1dd4fb2aafa5f3b9e4e2..882f7667e7ed9b7c23111195b5a7372dff6c89e7 100644 (file)
@@ -135,6 +135,7 @@ private slots:
     void slotRenderProject();
     void slotDoRender(const QString &dest, const QString &render, const QStringList &avformat_args, bool zoneOnly, bool playAfter);
     void slotFullScreen();
+    void slotUpdateDocumentState(bool modified);
 };
 
 #endif