#include "kdenlivesettings.h"
#include "profilesdialog.h"
#include "docclipbase.h"
+#include "titlewidget.h"
#include <KStandardDirs>
#include <KMessageBox>
QDialog(parent), m_savedProject(savedProject), m_projectList(projectlist)
{
setupUi(this);
-
+
list_search->setListWidget(files_list);
QMap <QString, QString> profilesInfo = ProfilesDialog::getProfilesInfo();
KIO::filesize_t unUsedSize = 0;
QList <DocClipBase*> list = m_projectList->documentClipList();
files_list->clear();
-
+
// List all files that are used in the project. That also means:
- // images included in slideshow
- // TODO: images included in titles, images used in luma transitions, files used in playlist clips, files used for LADSPA effects
-
+ // images included in slideshow, titles
+ // TODO: images used in luma transitions, files used in playlist clips, files used for LADSPA effects
+
QStringList allFiles;
for (int i = 0; i < list.count(); i++) {
DocClipBase *clip = list.at(i);
- if (clip->clipType() == SLIDESHOW) {
- // special case, list all images
- QString path = clip->fileURL().directory();
- QString ext = clip->fileURL().path().section('.', -1);
- QDir dir(path);
- QStringList filters;
- filters << "*." + ext;
- dir.setNameFilters(filters);
- QStringList result = dir.entryList(QDir::Files);
- for (int j = 0; j < result.count(); j++) {
- allFiles.append(path + result.at(j));
- }
- } else if (!clip->fileURL().isEmpty()) allFiles.append(clip->fileURL().path());
-
+ if (clip->clipType() == SLIDESHOW) {
+ // special case, list all images
+ QString path = clip->fileURL().directory();
+ QString ext = clip->fileURL().path().section('.', -1);
+ QDir dir(path);
+ QStringList filters;
+ filters << "*." + ext;
+ dir.setNameFilters(filters);
+ QStringList result = dir.entryList(QDir::Files);
+ for (int j = 0; j < result.count(); j++) {
+ allFiles.append(path + result.at(j));
+ }
+ }
+ else if (!clip->fileURL().isEmpty()) allFiles.append(clip->fileURL().path());
+ if (clip->clipType() == TEXT) {
+ QStringList images = TitleWidget::extractImageList(clip->getProperty("xmldata"));
+ allFiles << images;
+ }
+
if (clip->numReferences() == 0) {
unused++;
unUsedSize += clip->fileSize();
return result;
}
+// static
QString TitleWidget::getTitleResourceFromName(const KUrl &projectUrl, const QString &titleName)
{
QStringList result;
return titlePath + titleName + ".png";
}
+// static
+QStringList TitleWidget::extractImageList(QString xml)
+{
+ QStringList result;
+ if (xml.isEmpty()) return result;
+ QDomDocument doc;
+ doc.setContent(xml);
+ QDomNodeList images = doc.elementsByTagName("content");
+ for (int i = 0; i < images.count(); i++) {
+ if (images.at(i).toElement().hasAttribute("url"))
+ result.append(images.at(i).toElement().attribute("url"));
+ }
+ return result;
+}
+
+
//virtual
void TitleWidget::resizeEvent(QResizeEvent * /*event*/)
{
void TitleWidget::slotImageTool()
{
- KUrl url = KFileDialog::getOpenUrl(KUrl(), "*.svg *.png *.jpg *.jpeg *.gif *.raw", this, i18n("Load Image"));
+ // TODO: find a way to get a list of all supported image types...
+ QString allExtensions = "image/gif image/jpeg image/png image/x-tga image/x-bmp image/svg+xml image/tiff image/x-xcf-gimp image/x-vnd.adobe.photoshop image/x-pcx image/x-exr";
+ KUrl url = KFileDialog::getOpenUrl(KUrl(), allExtensions, this, i18n("Load Image")); //"*.svg *.png *.jpg *.jpeg *.gif *.raw"
if (!url.isEmpty()) {
if (url.path().endsWith(".svg")) {
QGraphicsSvgItem *svg = new QGraphicsSvgItem(url.toLocalFile());
*
* The path "/titles/" is appended to projectUrl to locate the actual directory that contains the title pngs. */
static QStringList getFreeTitleInfo(const KUrl &projectUrl, bool isClone = false);
+
+ /** \brief Return a list af all images included in a title
+ * \param xml The xml data for title
+ */
+ static QStringList extractImageList(QString xml);
/** \brief Build a filename from a projectUrl and a titleName
* \param projectUrl Url to directory of project.