+void DvdWizardVob::slotAddVobFile(KUrl url, const QString &chapters)
+{
+ if (url.isEmpty()) url = KFileDialog::getOpenUrl(KUrl("kfiledialog:///projectfolder"), "video/mpeg", this, i18n("Add new video file"));
+ if (url.isEmpty()) return;
+ QFile f(url.path());
+ qint64 fileSize = f.size();
+ QString profilename;
+ switch (m_view.dvd_profile->currentIndex()) {
+ case 1:
+ profilename = "dv_pal_wide";
+ break;
+ case 2:
+ profilename = "dv_ntsc";
+ break;
+ case 3:
+ profilename = "dv_ntsc_wide";
+ break;
+ default:
+ profilename = "dv_pal";
+ break;
+ }
+
+ char *tmp = (char*) qstrdup(profilename.toUtf8().data());
+ Mlt::Profile profile(tmp);
+ delete[] tmp;
+ QTreeWidgetItem *item = new QTreeWidgetItem(m_view.vobs_list, QStringList() << url.path() << QString() << KIO::convertSize(fileSize));
+ item->setData(0, Qt::UserRole, fileSize);
+ item->setIcon(0, KIcon("video-x-generic"));
+
+ QPixmap pix(60, 45);
+
+ tmp = (char *) qstrdup(url.path().toUtf8().data());
+ Mlt::Producer *producer = new Mlt::Producer(profile, tmp);
+ delete[] tmp;
+
+ if (producer->is_blank() == false) {
+ pix = KThumb::getFrame(producer, 0, 60, 45);
+ item->setIcon(0, pix);
+ int playTime = producer->get_playtime();
+ item->setText(1, Timecode::getStringTimecode(playTime, profile.fps()));
+ item->setData(1, Qt::UserRole, playTime);
+ }
+ delete producer;
+
+ if (chapters.isEmpty() == false) {
+ item->setData(1, Qt::UserRole + 1, chapters);
+ } else if (QFile::exists(url.path() + ".dvdchapter")) {
+ // insert chapters as children
+ QFile file(url.path() + ".dvdchapter");
+ if (file.open(QIODevice::ReadOnly)) {
+ QDomDocument doc;
+ doc.setContent(&file);
+ file.close();
+ QDomNodeList chapters = doc.elementsByTagName("chapter");
+ QStringList chaptersList;
+ for (int j = 0; j < chapters.count(); j++) {
+ chaptersList.append(QString::number(chapters.at(j).toElement().attribute("time").toInt()));
+ }
+ item->setData(1, Qt::UserRole + 1, chaptersList.join(";"));
+ }
+ }
+
+ slotCheckVobList();
+}
+
+void DvdWizardVob::changeFormat()
+{
+ int max = m_view.vobs_list->topLevelItemCount();
+ QString profilename;
+ switch (m_view.dvd_profile->currentIndex()) {
+ case 1:
+ profilename = "dv_pal_wide";
+ break;
+ case 2:
+ profilename = "dv_ntsc";
+ break;
+ case 3:
+ profilename = "dv_ntsc_wide";
+ break;
+ default:
+ profilename = "dv_pal";
+ break;
+ }
+
+ char *tmp = (char*) qstrdup(profilename.toUtf8().data());
+ Mlt::Profile profile(tmp);
+ delete[] tmp;
+ QPixmap pix(180, 135);
+
+ for (int i = 0; i < max; i++) {
+ QTreeWidgetItem *item = m_view.vobs_list->topLevelItem(i);
+ tmp = (char *) qstrdup(item->text(0).toUtf8().data());
+ Mlt::Producer *producer = new Mlt::Producer(profile, tmp);
+ delete[] tmp;
+
+ if (producer->is_blank() == false) {
+ //pix = KThumb::getFrame(producer, 0, 180, 135);
+ //item->setIcon(0, pix);
+ item->setText(1, Timecode::getStringTimecode(producer->get_playtime(), profile.fps()));
+ }
+ delete producer;
+ int submax = item->childCount();
+ for (int j = 0; j < submax; j++) {
+ QTreeWidgetItem *subitem = item->child(j);
+ subitem->setText(1, Timecode::getStringTimecode(subitem->data(1, Qt::UserRole).toInt(), profile.fps()));
+ }
+ }
+ slotCheckVobList();
+}
+
+void DvdWizardVob::slotDeleteVobFile()
+{
+ QTreeWidgetItem *item = m_view.vobs_list->currentItem();
+ if (item == NULL) return;
+ delete item;
+ slotCheckVobList();
+}
+
+
+// virtual
+bool DvdWizardVob::isComplete() const
+{