+
+void RenderWidget::saveProfile(const QDomElement &newprofile)
+{
+ QString exportFile = KStandardDirs::locateLocal("appdata", "export/customprofiles.xml");
+ QDomDocument doc;
+ QFile file(exportFile);
+ doc.setContent(&file, false);
+ file.close();
+ QDomElement documentElement;
+ QDomElement profiles = doc.documentElement();
+ if (profiles.isNull() || profiles.tagName() != "profiles") {
+ doc.clear();
+ profiles = doc.createElement("profiles");
+ profiles.setAttribute("version", 1);
+ doc.appendChild(profiles);
+ }
+ int version = profiles.attribute("version", 0).toInt();
+ if (version < 1) {
+ kDebug() << "// OLD profile version";
+ doc.clear();
+ profiles = doc.createElement("profiles");
+ profiles.setAttribute("version", 1);
+ doc.appendChild(profiles);
+ }
+
+
+ QDomNodeList profilelist = doc.elementsByTagName("profile");
+ int i = 0;
+ while (!profilelist.item(i).isNull()) {
+ // make sure a profile with same name doesn't exist
+ documentElement = profilelist.item(i).toElement();
+ QString profileName = documentElement.attribute("name");
+ if (profileName == newprofile.attribute("name")) {
+ // a profile with that same name already exists
+ bool ok;
+ QString newProfileName = QInputDialog::getText(this, i18n("Profile already exists"), i18n("This profile name already exists. Change the name if you don't want to overwrite it."), QLineEdit::Normal, profileName, &ok);
+ if (!ok) return;
+ if (profileName == newProfileName) {
+ profiles.removeChild(profilelist.item(i));
+ break;
+ }
+ }
+ ++i;
+ }
+
+ profiles.appendChild(newprofile);
+
+ //QCString save = doc.toString().utf8();
+
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
+ KMessageBox::sorry(this, i18n("Unable to write to file %1", exportFile));
+ return;
+ }
+ QTextStream out(&file);
+ out << doc.toString();
+ if (file.error() != QFile::NoError) {
+ KMessageBox::error(this, i18n("Cannot write to file %1", exportFile));
+ file.close();
+ return;
+ }
+ file.close();
+}
+
+void RenderWidget::slotCopyToFavorites()
+{
+ QListWidgetItem *item = m_view.size_list->currentItem();
+ if (!item)
+ return;
+ QString currentGroup = m_view.format_list->currentItem()->text();
+
+ QString params = item->data(ParamsRole).toString();
+ QString extension = item->data(ExtensionRole).toString();
+ QString currentProfile = item->text();
+ QDomDocument doc;
+ QDomElement profileElement = doc.createElement("profile");
+ profileElement.setAttribute("name", currentProfile);
+ profileElement.setAttribute("category", i18nc("Category Name", "Custom"));
+ profileElement.setAttribute("destinationid", "favorites");
+ profileElement.setAttribute("extension", extension);
+ profileElement.setAttribute("args", params);
+ profileElement.setAttribute("bitrates", item->data(BitratesRole).toStringList().join(","));
+ profileElement.setAttribute("defaultbitrate", item->data(DefaultBitrateRole).toString());
+ profileElement.setAttribute("audiobitrates", item->data(AudioBitratesRole).toStringList().join(","));
+ profileElement.setAttribute("defaultaudiobitrate", item->data(DefaultAudioBitrateRole).toString());
+ doc.appendChild(profileElement);
+ saveProfile(doc.documentElement());
+ parseProfiles(m_view.destination_list->itemData(m_view.destination_list->currentIndex(), Qt::UserRole).toString(), currentGroup, currentProfile);
+}
+