{
m_clipIdCounter = 1;
m_folderIdCounter = 1;
+ connect(&m_fileWatcher, SIGNAL(dirty(const QString &)), this, SLOT(slotClipModified(const QString &)));
}
ClipManager::~ClipManager()
void ClipManager::addClip(DocClipBase *clip)
{
m_clipList.append(clip);
+ if (clip->clipType() == IMAGE || clip->clipType() == AUDIO) {
+ // listen for file change
+ m_fileWatcher.addFile(clip->fileURL().path());
+ }
const QString id = clip->getId();
if (id.toInt() >= m_clipIdCounter) m_clipIdCounter = id.toInt() + 1;
const QString gid = clip->getProperty("groupid");
{
for (int i = 0; i < m_clipList.count(); i++) {
if (m_clipList.at(i)->getId() == clipId) {
+ if (m_clipList.at(i)->clipType() == IMAGE || m_clipList.at(i)->clipType() == AUDIO) {
+ // listen for file change
+ m_fileWatcher.removeFile(m_clipList.at(i)->fileURL().path());
+ }
delete m_clipList.takeAt(i);
break;
}
}
return doc.documentElement();
}
+
+
+void ClipManager::slotClipModified(const QString &path)
+{
+ //kDebug()<<"// CLIP: "<<path<<" WAS MODIFIED";
+ DocClipBase *clip = getClipByResource(path);
+ if (clip == NULL) return;
+ emit reloadClip(clip->getId());
+}
\ No newline at end of file
#include <KUrl>
#include <KUndoStack>
+#include <KDirWatch>
#include <klocale.h>
#include "gentime.h"
public slots:
void updatePreviewSettings();
+private slots:
+ void slotClipModified(const QString &path);
+
private: // Private attributes
/** the list of clips in the document */
QList <DocClipBase*> m_clipList;
int m_folderIdCounter;
bool m_audioThumbsEnabled;
QString m_generatingAudioId;
+ KDirWatch m_fileWatcher;
+signals:
+ void reloadClip(const QString &);
};
#endif
}
}
-void ProjectList::slotReloadClip()
+void ProjectList::slotReloadClip(const QString &id)
{
- QList<QTreeWidgetItem *> selected = m_listView->selectedItems();
+ QList<QTreeWidgetItem *> selected;
+ if (id.isEmpty()) selected = m_listView->selectedItems();
+ else selected.append(getItemById(id));
ProjectItem *item;
for (int i = 0; i < selected.count(); i++) {
item = static_cast <ProjectItem *>(selected.at(i));
m_commandStack = doc->commandStack();
m_doc = doc;
+ connect(m_doc->clipManager(), SIGNAL(reloadClip(const QString &)), this, SLOT(slotReloadClip(const QString &)));
+
QMap <QString, QString> flist = doc->clipManager()->documentFolderList();
QMapIterator<QString, QString> f(flist);
while (f.hasNext()) {
void slotResetProjectList();
void slotOpenClip();
void slotEditClip();
- void slotReloadClip();
+ void slotReloadClip(const QString &id = QString());
void slotAddColorClip();
void regenerateTemplate(const QString &id);