void MainWindow::slotEditProjectSettings()
{
QPoint p = m_activeDocument->getTracksCount();
- ProjectSettings *w = new ProjectSettings(m_activeDocument->clipManager(), p.x(), p.y(), m_activeDocument->projectFolder().path(), true, !m_activeDocument->isModified(), this);
+ ProjectSettings *w = new ProjectSettings(m_projectList, p.x(), p.y(), m_activeDocument->projectFolder().path(), true, !m_activeDocument->isModified(), this);
if (w->exec() == QDialog::Accepted) {
- if (w->deleteUnused()) {
- // we are going to trash the unused clips
- m_projectList->trashUnusedClips();
- }
QString profile = w->selectedProfile();
m_activeDocument->setProjectFolder(w->selectedFolder());
if (m_renderWidget) m_renderWidget->setDocumentPath(w->selectedFolder().path(KUrl::AddTrailingSlash));
m_openAction(NULL),
m_reloadAction(NULL),
m_transcodeAction(NULL),
+ m_doc(NULL),
m_selectedItem(NULL),
m_refreshed(false),
m_infoQueue(),
QTreeWidgetItemIterator it(m_listView);
ProjectItem *item;
QStringList ids;
- KUrl::List urls;
+ QStringList urls;
while (*it) {
item = static_cast <ProjectItem *>(*it);
if (!item->isGroup() && item->numReferences() == 0) {
ids << item->clipId();
KUrl url = item->clipUrl();
- if (!url.isEmpty()) urls << url;
+ if (!url.isEmpty()) urls << url.path();
}
it++;
}
+ urls.removeDuplicates();
// Check that we don't use the URL in another clip
QTreeWidgetItemIterator it2(m_listView);
while (*it2) {
item = static_cast <ProjectItem *>(*it2);
if (item->numReferences() > 0) {
KUrl url = item->clipUrl();
- if (!url.isEmpty() && urls.contains(url)) urls.removeAll(url);
+ if (!url.isEmpty() && urls.contains(url.path())) urls.removeAll(url.path());
}
it2++;
}
m_doc->deleteProjectClip(ids);
for (int i = 0; i < urls.count(); i++) {
- KIO::NetAccess::del(urls.at(i), this);
+ KIO::NetAccess::del(KUrl(urls.at(i)), this);
}
}
connect(m_doc->clipManager(), SIGNAL(checkAllClips()), this, SLOT(updateAllClips()));
}
+QList <DocClipBase*> ProjectList::documentClipList() const
+{
+ if (m_doc == NULL) return QList <DocClipBase*> ();
+ return m_doc->clipManager()->documentClipList();
+}
+
QDomElement ProjectList::producersList()
{
QDomDocument doc;
QString subText = index.data(DurationRole).toString();
int usage = index.data(UsageRole).toInt();
if (usage != 0) subText.append(QString(" (%1)").arg(usage));
- painter->setPen(option.palette.color(QPalette::Mid));
+ if (option.state & (QStyle::State_Selected)) painter->setPen(option.palette.color(QPalette::Mid));
painter->drawText(r2, Qt::AlignLeft | Qt::AlignVCenter , subText);
painter->restore();
} else if (index.column() == 3 && KdenliveSettings::activate_nepomuk()) {
QDomDocument generateTemplateXml(QString data, const QString &replaceString);
void cleanup();
void trashUnusedClips();
+ QList <DocClipBase*> documentClipList() const;
public slots:
void setDocument(KdenliveDoc *doc);
#include <QDir>
#include <kmessagebox.h>
-ProjectSettings::ProjectSettings(ClipManager *manager, int videotracks, int audiotracks, const QString projectPath, bool readOnlyTracks, bool savedProject, QWidget * parent) :
- QDialog(parent), m_savedProject(savedProject), m_clipManager(manager), m_deleteUnused(false)
+ProjectSettings::ProjectSettings(ProjectList *projectlist, int videotracks, int audiotracks, const QString projectPath, bool readOnlyTracks, bool savedProject, QWidget * parent) :
+ QDialog(parent), m_savedProject(savedProject), m_projectList(projectlist)
{
setupUi(this);
audio_tracks->setEnabled(false);
}
slotUpdateDisplay();
- if (manager != NULL) {
+ if (m_projectList != NULL) {
slotUpdateFiles();
connect(clear_cache, SIGNAL(clicked()), this, SLOT(slotClearCache()));
connect(delete_unused, SIGNAL(clicked()), this, SLOT(slotDeleteUnused()));
void ProjectSettings::slotDeleteUnused()
{
QStringList toDelete;
- QList <DocClipBase*> list = m_clipManager->documentClipList();
+ QList <DocClipBase*> list = m_projectList->documentClipList();
for (int i = 0; i < list.count(); i++) {
DocClipBase *clip = list.at(i);
if (clip->numReferences() == 0) {
if (!url.isEmpty()) toDelete << url.path();
}
}
+ toDelete.removeDuplicates();
// make sure our urls are not used in another clip
for (int i = 0; i < list.count(); i++) {
}
if (toDelete.count() == 0) {
- KMessageBox::sorry(this, i18n("No clip to delete"));
+ // No physical url to delete, we only remove unused clips from project (color clips for example have no physical url)
+ if (KMessageBox::warningContinueCancel(this, i18n("This will remove all unused clips from your project."), i18n("Clean up project")) == KMessageBox::Cancel) return;
+ m_projectList->cleanup();
+ slotUpdateFiles();
return;
}
if (KMessageBox::warningYesNoList(this, i18n("This will remove the following files from your hard drive.\nThis action cannot be undone, only use if you know what you are doing.\nAre you sure you want to continue?"), toDelete, i18n("Delete unused clips")) != KMessageBox::Yes) return;
- m_deleteUnused = true;
- delete_unused->setEnabled(false);
-}
-
-bool ProjectSettings::deleteUnused() const
-{
- return m_deleteUnused;
+ m_projectList->trashUnusedClips();
+ slotUpdateFiles();
}
void ProjectSettings::slotClearCache()
int used = 0;
KIO::filesize_t usedSize = 0;
KIO::filesize_t unUsedSize = 0;
- QList <DocClipBase*> list = m_clipManager->documentClipList();
+ QList <DocClipBase*> list = m_projectList->documentClipList();
for (int i = 0; i < list.count(); i++) {
DocClipBase *clip = list.at(i);
used_size->setText(KIO::convertSize(usedSize));
unused_count->setText(QString::number(unused));
unused_size->setText(KIO::convertSize(unUsedSize));
- if (!m_deleteUnused) delete_unused->setEnabled(unused > 0);
+ delete_unused->setEnabled(unused > 0);
}
void ProjectSettings::accept()
#include <QDialog>
#include <QPushButton>
-#include "clipmanager.h"
+#include "projectlist.h"
#include "ui_projectsettings_ui.h"
class ProjectSettings : public QDialog, public Ui::ProjectSettings_UI
Q_OBJECT
public:
- ProjectSettings(ClipManager *manager, int videotracks, int audiotracks, const QString projectPath, bool readOnlyTracks, bool unsavedProject, QWidget * parent = 0);
+ ProjectSettings(ProjectList *projectlist, int videotracks, int audiotracks, const QString projectPath, bool readOnlyTracks, bool unsavedProject, QWidget * parent = 0);
QString selectedProfile() const;
KUrl selectedFolder() const;
QPoint tracks();
bool enableVideoThumbs() const;
bool enableAudioThumbs() const;
- bool deleteUnused() const;
public slots:
virtual void accept();
private:
QPushButton *m_buttonOk;
bool m_savedProject;
- ClipManager *m_clipManager;
- bool m_deleteUnused;
+ ProjectList *m_projectList;
};