--- a/application.cpp
+++ b/application.cpp
@@ -26,6 +26,7 @@
#include <QMessageBox>
#include <QDir>
#include <QDesktopWidget>
+#include <QFileDialog>
#include "libupnpp/upnpplib.hxx"
#include "libupnpp/log.hxx"
@@ -61,6 +62,7 @@
#include "upqo/ohtime_qo.h"
#include "upqo/ohvolume_qo.h"
#include "upqo/renderingcontrol_qo.h"
+#include "utils/writedescription.h"
using namespace std;
using namespace UPnPClient;
@@ -672,6 +674,8 @@
// volume and time mostly.
void Application::renderer_connections()
{
+ CONNECT(m->m_player, sig_dumpDescription(),
+ this, writeDescription());
// Use either ohtime or avt for time updates
if (m->m_ohtmo) {
CONNECT(m->m_ohtmo, secsInSongChanged(quint32),
@@ -733,3 +737,29 @@
CONNECT(m->m_cdb, sig_sort_order(), this, onDirSortOrder());
CONNECT(m->m_player, sig_sortprefs(), m->m_cdb, onSortprefs());
}
+
+void Application::writeDescription()
+{
+ if (!superdir || !m || !m->m_rdr) {
+ return;
+ }
+
+ string deviceXML;
+ unordered_map<string, string> srvsXML;
+ const string& devname(m->m_rdr->desc()->UDN);
+ if (!superdir->getDescriptionDocuments(devname,
+ deviceXML, srvsXML)) {
+ qDebug() << "Could not retrieve description documents";
+ return;
+ }
+ QString dir = QFileDialog::getExistingDirectory(
+ m->m_player,
+ tr("Directory for description files"));
+ if (dir.isEmpty()) {
+ return;
+ }
+ if (!writeDescriptionFiles(qs2utf8s(dir), devname, deviceXML, srvsXML)) {
+ QMessageBox::warning(0, "Upplay",
+ tr("Could not write description files."));
+ }
+}