summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Merry <dev@randomguy3.me.uk>2011-10-29 19:49:57 +0200
committerAlex Merry <dev@randomguy3.me.uk>2011-10-29 19:49:57 +0200
commit3a853f050b5e253323eba30090803665f738afd8 (patch)
tree6a69aaa7e6fe11c4468bbcd9ee5e42db7f79370e
parent0e465c8e07a45778837757d5cf1e05a8f5a331b4 (diff)
A working root interface test
-rw-r--r--.gitignore3
-rw-r--r--CMakeLists.txt2
-rw-r--r--main.cpp5
-rw-r--r--mpris2/interfacetest.cpp5
-rw-r--r--mpris2/interfacetest.h6
-rw-r--r--mpris2/rootinterfacetest.cpp10
-rw-r--r--mpris2/roottestwidget.cpp5
-rw-r--r--mpris2/testconsole.h6
-rw-r--r--ui/window.ui599
-rw-r--r--window.cpp591
-rw-r--r--window.h50
11 files changed, 120 insertions, 1162 deletions
diff --git a/.gitignore b/.gitignore
index 4a2c611..7ac7e1d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,6 +18,9 @@ ui_*
# Ignore backup files
*~
+# Ignore build dir
+build
+
*.pro.user
.kdev4
*.kdev4
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2ed8983..8b32709 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,6 +4,7 @@ project (mpristester)
find_package (Qt4 4.5 REQUIRED QtCore QtGui QtDBus)
include (${QT_USE_FILE})
+include_directories (${PROJECT_BINARY_DIR})
set (mpristester_SRCS
main.cpp
@@ -24,6 +25,7 @@ qt4_wrap_cpp (mpristester_SRCS
)
qt4_wrap_ui (mpristester_SRCS
ui/roottest.ui
+ ui/window.ui
)
add_executable (mpristester ${mpristester_SRCS})
target_link_libraries (mpristester ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTDBUS_LIBRARY})
diff --git a/main.cpp b/main.cpp
index 41529c6..e7d978e 100644
--- a/main.cpp
+++ b/main.cpp
@@ -18,15 +18,12 @@
#include <QApplication>
#include "window.h"
-#include "dbus/1.0/mpristypes.h"
int main(int argc, char *argv[])
{
- QCoreApplication::setApplicationName("MPRIS Tester");
+ QCoreApplication::setApplicationName("MPRIS2 Tester");
QApplication app(argc, argv);
- Mpris::registerTypes();
-
Window window;
window.show();
diff --git a/mpris2/interfacetest.cpp b/mpris2/interfacetest.cpp
index b6ebb62..4df0d59 100644
--- a/mpris2/interfacetest.cpp
+++ b/mpris2/interfacetest.cpp
@@ -23,6 +23,7 @@
#include "interfacetest.h"
#include <QtDBus>
+#include <QDebug>
#include <QTimer>
using namespace Mpris2;
@@ -131,6 +132,8 @@ bool InterfaceTest::checkPropValid(const QString& propName, QVariant::Type expTy
} else if (oldProps.contains(propName)) {
// FIXME: QVariant equality only works for builtin types
if (props[propName] != oldProps[propName]) {
+ qDebug() << "Old value:" << oldProps[propName];
+ qDebug() << "New value:" << props[propName];
outOfDateProperties.insert(propName, props[propName]);
props[propName] = oldProps[propName];
}
@@ -159,6 +162,8 @@ void InterfaceTest::initialTest()
QDBusConnection::sessionBus().connect(iface->service(), iface->path(), iface->interface(),
"propertiesChanged", /* signature, */
this, SLOT( _m_propertiesChanged(QString,QVariantMap,QStringList)));
+
+ emit propertiesChanged(properties().keys());
}
void InterfaceTest::incrementalTest()
diff --git a/mpris2/interfacetest.h b/mpris2/interfacetest.h
index 38f9627..0d2da75 100644
--- a/mpris2/interfacetest.h
+++ b/mpris2/interfacetest.h
@@ -72,7 +72,7 @@ namespace Mpris2
*
* @param desc a user-readable description of the error
*/
- void interfaceError(LocationType locType, const QString& location, const QString& desc);
+ void interfaceError(Mpris2::InterfaceTest::LocationType locType, const QString& location, const QString& desc);
/**
* Reports that there might be a problem with the interface.
@@ -83,7 +83,7 @@ namespace Mpris2
*
* @param desc a user-readable description of the warning
*/
- void interfaceWarning(LocationType locType, const QString& location, const QString& desc);
+ void interfaceWarning(Mpris2::InterfaceTest::LocationType locType, const QString& location, const QString& desc);
/**
* Reports salient information about the testing.
@@ -97,7 +97,7 @@ namespace Mpris2
* needs to check something worked as expected (because it
* can't be checked directly in the interface).
*/
- void interfaceInfo(LocationType locType, const QString& location, const QString& desc);
+ void interfaceInfo(Mpris2::InterfaceTest::LocationType locType, const QString& location, const QString& desc);
/**
* Reports that some properties have changed.
diff --git a/mpris2/rootinterfacetest.cpp b/mpris2/rootinterfacetest.cpp
index 095d375..7359fa0 100644
--- a/mpris2/rootinterfacetest.cpp
+++ b/mpris2/rootinterfacetest.cpp
@@ -25,7 +25,7 @@
using namespace Mpris2;
RootInterfaceTest::RootInterfaceTest(const QString& service, QObject* parent)
- : InterfaceTest(service, MPRIS2_ROOT_IFACE, parent)
+ : InterfaceTest(MPRIS2_ROOT_IFACE, service, parent)
{
}
@@ -53,8 +53,8 @@ void RootInterfaceTest::checkPropertyDesktopEntry(const QVariantMap& oldProps)
void RootInterfaceTest::checkPropertySupportedUriSchemes(const QVariantMap& oldProps)
{
- if (checkPropValid("SupportedUriSchemes", QVariant::Map, oldProps)) {
- QVariantMap uriSchemes = props["SupportedUriSchemes"].toMap();
+ if (checkPropValid("SupportedUriSchemes", QVariant::StringList, oldProps)) {
+ QStringList uriSchemes = props["SupportedUriSchemes"].toStringList();
if (!uriSchemes.contains("file")) {
emit interfaceWarning(Property, "SupportedUriSchemes", "\"file\" is not listed as a supported URI scheme (this is unusual)");
}
@@ -64,8 +64,8 @@ void RootInterfaceTest::checkPropertySupportedUriSchemes(const QVariantMap& oldP
void RootInterfaceTest::checkPropertySupportedMimeTypes(const QVariantMap& oldProps)
{
- if (checkPropValid("SupportedMimeTypes", QVariant::Map, oldProps)) {
- QVariantMap mimeTypes = props["SupportedMimeTypes"].toMap();
+ if (checkPropValid("SupportedMimeTypes", QVariant::StringList, oldProps)) {
+ QStringList mimeTypes = props["SupportedMimeTypes"].toStringList();
if (mimeTypes.isEmpty()) {
emit interfaceWarning(Property, "SupportedMimeTypes", "The media player claims not to support any mime types");
}
diff --git a/mpris2/roottestwidget.cpp b/mpris2/roottestwidget.cpp
index 08685a6..42c9d52 100644
--- a/mpris2/roottestwidget.cpp
+++ b/mpris2/roottestwidget.cpp
@@ -31,6 +31,8 @@ RootTestWidget::RootTestWidget(RootInterfaceTest *test, QWidget *parent)
this->test, SLOT(testRaise()));
connect(ui.quitBtn, SIGNAL(clicked(bool)),
this->test, SLOT(testQuit()));
+ connect(test, SIGNAL(propertiesChanged(QStringList)),
+ this, SLOT(propertiesChanged(QStringList)));
}
RootTestWidget::~RootTestWidget()
@@ -40,9 +42,6 @@ RootTestWidget::~RootTestWidget()
void RootTestWidget::runInitialTest()
{
test->initialTest();
- ui.raiseBtn->setEnabled(true);
- ui.quitBtn->setEnabled(true);
- updateProperties();
}
void RootTestWidget::runIncrementalTest()
diff --git a/mpris2/testconsole.h b/mpris2/testconsole.h
index b530dd8..4ac3039 100644
--- a/mpris2/testconsole.h
+++ b/mpris2/testconsole.h
@@ -35,9 +35,9 @@ namespace Mpris2
virtual ~TestConsole();
public slots:
- void interfaceError(InterfaceTest::LocationType locType, const QString& location, const QString& desc);
- void interfaceWarning(InterfaceTest::LocationType locType, const QString& location, const QString& desc);
- void interfaceInfo(InterfaceTest::LocationType locType, const QString& location, const QString& desc);
+ void interfaceError(Mpris2::InterfaceTest::LocationType locType, const QString& location, const QString& desc);
+ void interfaceWarning(Mpris2::InterfaceTest::LocationType locType, const QString& location, const QString& desc);
+ void interfaceInfo(Mpris2::InterfaceTest::LocationType locType, const QString& location, const QString& desc);
private:
QTextEdit* edit;
diff --git a/ui/window.ui b/ui/window.ui
index 445c013..91a2fad 100644
--- a/ui/window.ui
+++ b/ui/window.ui
@@ -1,608 +1,89 @@
-<ui version="4.0" >
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
<class>MainWindow</class>
- <widget class="QMainWindow" name="MainWindow" >
- <property name="geometry" >
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
<rect>
<x>0</x>
<y>0</y>
- <width>948</width>
- <height>749</height>
+ <width>495</width>
+ <height>628</height>
</rect>
</property>
- <property name="windowTitle" >
+ <property name="windowTitle">
<string>MPRIS Tester</string>
</property>
- <widget class="QWidget" name="centralwidget" >
- <layout class="QGridLayout" name="gridLayout_7" >
- <item row="0" column="0" >
- <widget class="QGroupBox" name="appInfoBox" >
- <property name="title" >
- <string>Application</string>
- </property>
- <layout class="QGridLayout" name="gridLayout_5" >
- <item row="0" column="0" >
- <widget class="QLabel" name="labelAppName" >
- <property name="text" >
- <string>Name:</string>
- </property>
- </widget>
- </item>
- <item row="0" column="1" >
- <widget class="QLabel" name="appName" >
- <property name="text" >
- <string>N/A</string>
- </property>
- </widget>
- </item>
- <item row="1" column="0" >
- <widget class="QLabel" name="labelMprisVersion" >
- <property name="text" >
- <string>MPRIS version:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1" >
- <widget class="QLabel" name="mprisVersion" >
- <property name="text" >
- <string>0</string>
- </property>
- </widget>
- </item>
- <item row="2" column="0" colspan="2" >
- <widget class="QPushButton" name="quitButton" >
- <property name="text" >
- <string>Quit</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item rowspan="2" row="0" column="1" colspan="2" >
- <widget class="QGroupBox" name="metadataBox" >
- <property name="title" >
- <string>Current Track Metadata</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_3" >
- <item>
- <widget class="QTableView" name="metadataView" />
- </item>
- </layout>
- </widget>
- </item>
- <item rowspan="5" row="0" column="3" >
- <widget class="QGroupBox" name="tracklistBox" >
- <property name="title" >
- <string>Tracklist</string>
- </property>
- <layout class="QGridLayout" name="gridLayout_6" >
- <item row="2" column="2" >
- <widget class="QLabel" name="label_7" >
- <property name="minimumSize" >
- <size>
- <width>0</width>
- <height>58</height>
- </size>
- </property>
- <property name="text" >
- <string>Current track:</string>
- </property>
- </widget>
- </item>
- <item row="2" column="3" >
- <widget class="QLabel" name="currentTrack" >
- <property name="text" >
- <string>N/A</string>
- </property>
- </widget>
- </item>
- <item row="3" column="2" >
- <widget class="QLabel" name="label_8" >
- <property name="text" >
- <string>Total tracks:</string>
- </property>
- </widget>
- </item>
- <item row="3" column="3" >
- <widget class="QLabel" name="totalTracks" >
- <property name="text" >
- <string>0</string>
- </property>
- </widget>
- </item>
- <item row="1" column="2" >
- <widget class="QLabel" name="label_6" >
- <property name="text" >
- <string>Metadata for track:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="3" >
- <widget class="QSpinBox" name="fetchTrackNumber" />
- </item>
- <item row="1" column="4" >
- <widget class="QPushButton" name="fetchMetadataButton" >
- <property name="text" >
- <string>Fetch</string>
- </property>
- </widget>
- </item>
- <item row="4" column="2" >
- <widget class="QLabel" name="label_9" >
- <property name="text" >
- <string>Delete track:</string>
- </property>
- </widget>
- </item>
- <item row="4" column="3" >
- <widget class="QSpinBox" name="deleteTrackNumber" />
- </item>
- <item row="4" column="4" >
- <widget class="QPushButton" name="deleteTrackButton" >
- <property name="text" >
- <string>Delete</string>
- </property>
- </widget>
- </item>
- <item row="5" column="2" >
- <widget class="QLabel" name="label_10" >
- <property name="text" >
- <string>Add track:</string>
- </property>
- </widget>
- </item>
- <item row="5" column="4" >
- <widget class="QLineEdit" name="trackUri" />
- </item>
- <item row="5" column="3" >
- <widget class="QLabel" name="label_11" >
- <property name="text" >
- <string>URI:</string>
- </property>
- </widget>
- </item>
- <item row="8" column="4" >
- <widget class="QPushButton" name="addTrackButton" >
- <property name="text" >
- <string>Add</string>
- </property>
- </widget>
- </item>
- <item row="6" column="3" colspan="2" >
- <widget class="QCheckBox" name="playNow" >
- <property name="text" >
- <string>Play immediately</string>
- </property>
- </widget>
- </item>
- <item row="0" column="2" colspan="3" >
- <widget class="QTableView" name="tracklistView" />
- </item>
- </layout>
- </widget>
- </item>
- <item rowspan="2" row="1" column="0" >
- <widget class="QGroupBox" name="controlsBox" >
- <property name="title" >
- <string>Play Controls</string>
- </property>
- <layout class="QGridLayout" name="gridLayout_4" >
- <item row="0" column="0" >
- <widget class="QPushButton" name="playButton" >
- <property name="text" >
- <string>Play</string>
- </property>
- </widget>
- </item>
- <item row="0" column="1" colspan="2" >
- <widget class="QPushButton" name="pauseButton" >
- <property name="text" >
- <string>Pause</string>
- </property>
- </widget>
- </item>
- <item row="0" column="3" >
- <widget class="QPushButton" name="stopButton" >
- <property name="text" >
- <string>Stop</string>
- </property>
- </widget>
- </item>
- <item row="1" column="0" colspan="2" >
- <widget class="QPushButton" name="prevButton" >
- <property name="text" >
- <string>Prev</string>
- </property>
- </widget>
- </item>
- <item row="1" column="2" colspan="2" >
- <widget class="QPushButton" name="nextButton" >
- <property name="text" >
- <string>Next</string>
- </property>
- </widget>
- </item>
- <item row="2" column="0" colspan="2" >
- <widget class="QPushButton" name="randomOnButton" >
- <property name="text" >
- <string>Random On</string>
- </property>
- </widget>
- </item>
- <item row="2" column="2" colspan="2" >
- <widget class="QPushButton" name="randomOffButton" >
- <property name="text" >
- <string>Random off</string>
- </property>
- </widget>
- </item>
- <item row="3" column="0" colspan="2" >
- <widget class="QPushButton" name="trackRepeatOnButton" >
- <property name="text" >
- <string>Repeat track</string>
- </property>
- </widget>
- </item>
- <item row="3" column="2" colspan="2" >
- <widget class="QPushButton" name="trackRepeatOffButton" >
- <property name="text" >
- <string>No repeat track</string>
- </property>
- </widget>
- </item>
- <item row="4" column="0" colspan="2" >
- <widget class="QPushButton" name="playlistRepeatOnButton" >
- <property name="text" >
- <string>Repeat all</string>
- </property>
- </widget>
- </item>
- <item row="4" column="2" colspan="2" >
- <widget class="QPushButton" name="playlistRepeatOffButton" >
- <property name="text" >
- <string>No repeat all</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item rowspan="3" row="2" column="1" >
- <widget class="QGroupBox" name="capsBox" >
- <property name="title" >
- <string>Capabilities</string>
- </property>
- <layout class="QGridLayout" name="gridLayout" >
- <item row="8" column="0" >
- <widget class="QLabel" name="labelCapsExcess" >
- <property name="toolTip" >
- <string>This shows the value of the capabilities bitfield once the above capabilities are cleared. If this is not 0, the player claims a capability not in the above list.</string>
- </property>
- <property name="whatsThis" >
- <string>This shows the value of the capabilities bitfield once the above capabilities are cleared. If this is not 0, the player claims a capability not in the above list.</string>
- </property>
- <property name="text" >
- <string>Excess:</string>
- </property>
- </widget>
- </item>
- <item row="8" column="1" >
- <widget class="QLabel" name="capsExcess" >
- <property name="toolTip" >
- <string>This shows the value of the capabilities bitfield once the above capabilities are cleared. If this is not 0, the player claims a capability not in the above list.</string>
- </property>
- <property name="whatsThis" >
- <string>This shows the value of the capabilities bitfield once the above capabilities are cleared. If this is not 0, the player claims a capability not in the above list.</string>
- </property>
- <property name="text" >
- <string>0</string>
- </property>
- </widget>
- </item>
- <item row="1" column="0" colspan="2" >
- <widget class="QLabel" name="capGoNext" >
- <property name="enabled" >
- <bool>false</bool>
- </property>
- <property name="text" >
- <string>Cannot go next</string>
- </property>
- </widget>
- </item>
- <item row="2" column="0" colspan="2" >
- <widget class="QLabel" name="capGoPrev" >
- <property name="enabled" >
- <bool>false</bool>
- </property>
- <property name="text" >
- <string>Cannot go previous</string>
- </property>
- </widget>
- </item>
- <item row="3" column="0" colspan="2" >
- <widget class="QLabel" name="capPause" >
- <property name="enabled" >
- <bool>false</bool>
- </property>
- <property name="text" >
- <string>Cannot pause</string>
- </property>
- </widget>
- </item>
- <item row="4" column="0" colspan="2" >
- <widget class="QLabel" name="capPlay" >
- <property name="enabled" >
- <bool>false</bool>
- </property>
- <property name="text" >
- <string>Cannot play</string>
- </property>
- </widget>
- </item>
- <item row="5" column="0" colspan="2" >
- <widget class="QLabel" name="capSeek" >
- <property name="enabled" >
- <bool>false</bool>
- </property>
- <property name="text" >
- <string>Cannot seek</string>
- </property>
- </widget>
- </item>
- <item row="6" column="0" colspan="2" >
- <widget class="QLabel" name="capMetadata" >
- <property name="enabled" >
- <bool>false</bool>
- </property>
- <property name="text" >
- <string>Cannot provide metadata</string>
- </property>
- </widget>
- </item>
- <item row="7" column="0" colspan="2" >
- <widget class="QLabel" name="capTracklist" >
- <property name="enabled" >
- <bool>false</bool>
- </property>
- <property name="text" >
- <string>No tracklist</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item rowspan="2" row="2" column="2" >
- <widget class="QGroupBox" name="statusBox" >
- <property name="title" >
- <string>Status</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout" >
- <item>
- <widget class="QLabel" name="statusPlaying" >
- <property name="text" >
- <string>Stopped</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="statusRandom" >
- <property name="text" >
- <string>Linear play</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="statusTrackRepeat" >
- <property name="text" >
- <string>Go to next track</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="statusPlaylistRepeat" >
- <property name="text" >
- <string>Stop at end of playlist</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item row="3" column="0" >
- <widget class="QGroupBox" name="positionBox" >
- <property name="title" >
- <string>Position</string>
- </property>
- <layout class="QGridLayout" name="gridLayout_2" >
- <item row="0" column="0" colspan="2" >
- <widget class="QLabel" name="label" >
- <property name="text" >
- <string>Current position:</string>
- </property>
- </widget>
- </item>
- <item row="0" column="2" >
- <widget class="QLabel" name="currentPosition" >
- <property name="text" >
- <string>0</string>
- </property>
- </widget>
- </item>
- <item row="1" column="0" colspan="2" >
- <widget class="QSpinBox" name="newPosition" >
- <property name="suffix" >
- <string> msec</string>
- </property>
- <property name="maximum" >
- <number>999999999</number>
- </property>
- </widget>
- </item>
- <item row="1" column="2" >
- <widget class="QPushButton" name="setPositionButton" >
- <property name="text" >
- <string>Set position</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item row="4" column="0" >
- <widget class="QGroupBox" name="volumeBox" >
- <property name="title" >
- <string>Volume</string>
- </property>
- <layout class="QGridLayout" name="gridLayout_3" >
- <item row="2" column="0" colspan="2" >
- <widget class="QSpinBox" name="newVolume" >
- <property name="suffix" >
- <string>%</string>
- </property>
- <property name="maximum" >
- <number>100</number>
- </property>
- </widget>
- </item>
- <item row="2" column="2" >
- <widget class="QPushButton" name="setVolumeButton" >
- <property name="text" >
- <string>Set volume</string>
- </property>
- </widget>
- </item>
- <item row="1" column="2" >
- <widget class="QLabel" name="currentVolume" >
- <property name="text" >
- <string>0</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1" >
- <widget class="QLabel" name="label_2" >
- <property name="text" >
- <string>Current volume:</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item row="5" column="0" colspan="4" >
- <widget class="QGroupBox" name="consoleBox" >
- <property name="title" >
- <string>Console</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_2" >
- <item>
- <widget class="QPlainTextEdit" name="console" >
- <property name="undoRedoEnabled" >
- <bool>false</bool>
- </property>
- <property name="readOnly" >
- <bool>true</bool>
- </property>
- <property name="centerOnScroll" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- </layout>
+ <widget class="QWidget" name="centralwidget">
+ <layout class="QGridLayout" name="gridLayout_7"/>
</widget>
- <widget class="QMenuBar" name="menubar" >
- <property name="geometry" >
+ <widget class="QMenuBar" name="menubar">
+ <property name="geometry">
<rect>
<x>0</x>
<y>0</y>
- <width>948</width>
- <height>27</height>
+ <width>495</width>
+ <height>20</height>
</rect>
</property>
- <widget class="QMenu" name="menuFile" >
- <property name="title" >
+ <widget class="QMenu" name="menuFile">
+ <property name="title">
<string>File</string>
</property>
- <addaction name="actionForce_metadata_update" />
- <addaction name="actionForce_capabilities_update" />
- <addaction name="actionForce_status_update" />
- <addaction name="actionForce_tracklist_update" />
- <addaction name="separator" />
- <addaction name="action_Clear_console" />
- <addaction name="action_Quit" />
+ <addaction name="action_Clear_console"/>
+ <addaction name="action_Quit"/>
</widget>
- <widget class="QMenu" name="menuPlayers" >
- <property name="title" >
+ <widget class="QMenu" name="menuPlayers">
+ <property name="title">
<string>Players</string>
</property>
- <addaction name="actionNo_players_found" />
+ <addaction name="actionNo_players_found"/>
</widget>
- <addaction name="menuFile" />
- <addaction name="menuPlayers" />
+ <addaction name="menuFile"/>
+ <addaction name="menuPlayers"/>
</widget>
- <widget class="QStatusBar" name="statusbar" />
- <action name="action_Quit" >
- <property name="enabled" >
+ <widget class="QStatusBar" name="statusbar"/>
+ <action name="action_Quit">
+ <property name="enabled">
<bool>true</bool>
</property>
- <property name="text" >
+ <property name="text">
<string>&amp;Quit</string>
</property>
</action>
- <action name="actionNo_players_found" >
- <property name="enabled" >
+ <action name="actionNo_players_found">
+ <property name="enabled">
<bool>false</bool>
</property>
- <property name="text" >
+ <property name="text">
<string>No players found</string>
</property>
</action>
- <action name="action_Clear_console" >
- <property name="text" >
+ <action name="action_Clear_console">
+ <property name="text">
<string>C&amp;lear console</string>
</property>
</action>
- <action name="actionForce_metadata_update" >
- <property name="text" >
+ <action name="actionForce_metadata_update">
+ <property name="text">
<string>Force &amp;metadata update</string>
</property>
</action>
- <action name="actionForce_capabilities_update" >
- <property name="text" >
+ <action name="actionForce_capabilities_update">
+ <property name="text">
<string>Force &amp;capabilities update</string>
</property>
</action>
- <action name="actionForce_status_update" >
- <property name="text" >
+ <action name="actionForce_status_update">
+ <property name="text">
<string>Force &amp;status update</string>
</property>
</action>
- <action name="actionForce_tracklist_update" >
- <property name="text" >
+ <action name="actionForce_tracklist_update">
+ <property name="text">
<string>Force &amp;tracklist update</string>
</property>
</action>
</widget>
<resources/>
- <connections>
- <connection>
- <sender>action_Clear_console</sender>
- <signal>triggered()</signal>
- <receiver>console</receiver>
- <slot>clear()</slot>
- <hints>
- <hint type="sourcelabel" >
- <x>-1</x>
- <y>-1</y>
- </hint>
- <hint type="destinationlabel" >
- <x>473</x>
- <y>663</y>
- </hint>
- </hints>
- </connection>
- </connections>
+ <connections/>
</ui>
diff --git a/window.cpp b/window.cpp
index ee1bb8b..62efd5f 100644
--- a/window.cpp
+++ b/window.cpp
@@ -17,24 +17,27 @@
#include "window.h"
-#include "dbus/1.0/root_proxy.h"
-#include "dbus/1.0/player_proxy.h"
-#include "dbus/1.0/tracklist_proxy.h"
+#include "mpris2/rootinterfacetest.h"
+#include "mpris2/roottestwidget.h"
+#include "mpris2/testconsole.h"
-#include <QDBusConnection>
#include <QAction>
#include <QActionGroup>
+#include <QDBusConnection>
+#include <QDBusConnectionInterface>
+#include <QDBusReply>
+#include <QDebug>
+#include <QMetaObject>
+
+static const QString playerPrefix = QLatin1String("org.mpris.MediaPlayer2.");
Window::Window(QWidget* parent)
: QMainWindow(parent),
- m_mprisRoot(0),
- m_mprisPlayer(0),
- m_mprisTracklist(0),
- m_playerActionGroup(new QActionGroup(this))
+ m_playerActionGroup(new QActionGroup(this)),
+ m_rootTest(0),
+ m_rootWidget(0)
{
m_ui.setupUi(this);
- m_ui.metadataView->setModel(&m_currentTrackModel);
- m_ui.tracklistView->setModel(&m_tracklistModel);
connect(m_ui.action_Quit, SIGNAL(triggered()),
this, SLOT(close()));
@@ -42,57 +45,7 @@ Window::Window(QWidget* parent)
connect(m_playerActionGroup, SIGNAL(triggered(QAction*)),
this, SLOT(changePlayer(QAction*)));
- m_timer.setInterval(500);
- connect(&m_timer, SIGNAL(timeout()),
- this, SLOT(updateChangables()));
-
- connect(m_ui.quitButton, SIGNAL(clicked()),
- this, SLOT(quitPlayer()));
-
- connect(m_ui.playButton, SIGNAL(clicked()),
- this, SLOT(play()));
- connect(m_ui.pauseButton, SIGNAL(clicked()),
- this, SLOT(pause()));
- connect(m_ui.stopButton, SIGNAL(clicked()),
- this, SLOT(stop()));
- connect(m_ui.prevButton, SIGNAL(clicked()),
- this, SLOT(prev()));
- connect(m_ui.nextButton, SIGNAL(clicked()),
- this, SLOT(next()));
- connect(m_ui.randomOnButton, SIGNAL(clicked()),
- this, SLOT(randomOn()));
- connect(m_ui.randomOffButton, SIGNAL(clicked()),
- this, SLOT(randomOff()));
- connect(m_ui.trackRepeatOnButton, SIGNAL(clicked()),
- this, SLOT(trackRepeatOn()));
- connect(m_ui.trackRepeatOffButton, SIGNAL(clicked()),
- this, SLOT(trackRepeatOff()));
- connect(m_ui.playlistRepeatOnButton, SIGNAL(clicked()),
- this, SLOT(playlistRepeatOn()));
- connect(m_ui.playlistRepeatOffButton, SIGNAL(clicked()),
- this, SLOT(playlistRepeatOff()));
-
- connect(m_ui.setPositionButton, SIGNAL(clicked()),
- this, SLOT(setPosition()));
-
- connect(m_ui.setVolumeButton, SIGNAL(clicked()),
- this, SLOT(setVolume()));
-
- connect(m_ui.fetchMetadataButton, SIGNAL(clicked()),
- this, SLOT(fetchTrackMetadata()));
- connect(m_ui.addTrackButton, SIGNAL(clicked()),
- this, SLOT(addTrack()));
- connect(m_ui.deleteTrackButton, SIGNAL(clicked()),
- this, SLOT(deleteTrack()));
-
- connect(m_ui.actionForce_metadata_update, SIGNAL(triggered()),
- this, SLOT(forceMetadataUpdate()));
- connect(m_ui.actionForce_capabilities_update, SIGNAL(triggered()),
- this, SLOT(forceCapsUpdate()));
- connect(m_ui.actionForce_status_update, SIGNAL(triggered()),
- this, SLOT(forceStatusUpdate()));
- connect(m_ui.actionForce_tracklist_update, SIGNAL(triggered()),
- this, SLOT(forceTracklistUpdate()));
+ m_timer.setInterval(2500);
QDBusConnection sessionConn = QDBusConnection::sessionBus();
if (sessionConn.isConnected()) {
@@ -104,15 +57,15 @@ Window::Window(QWidget* parent)
if (reply.isValid()) {
QStringList services = reply.value();
foreach (const QString& name, services) {
- if (name.startsWith("org.mpris.")) {
+ if (name.startsWith(playerPrefix)) {
serviceChange(name, QString(), "dummy");
}
}
} else {
- consoleMessage("Couldn't get service names: " + reply.error().message());
+ qDebug() << "Couldn't get service names:" << reply.error().message();
}
} else {
- consoleMessage("Could not connect to session bus");
+ qDebug() << "Could not connect to session bus";
}
}
@@ -120,7 +73,7 @@ void Window::serviceChange(const QString& name,
const QString& oldOwner,
const QString& newOwner)
{
- if (!name.startsWith("org.mpris.")) {
+ if (!name.startsWith(playerPrefix)) {
return;
}
if (oldOwner.isEmpty() && !newOwner.isEmpty()) {
@@ -134,13 +87,13 @@ void Window::serviceChange(const QString& name,
if (m_playerActions.contains(name)) {
if (name == m_currentPlayer) {
clear();
- consoleMessage(tr("Player %1 disappeared").arg(name));
+ qDebug() << "Player" << name << "disappeared";
}
m_playerActionGroup->removeAction(m_playerActions[name]);
delete m_playerActions[name];
m_playerActions.remove(name);
} else {
- consoleMessage(tr("Player %1 disappeared, but we didn't know about it").arg(name));
+ qDebug() << "Player" << name << "disappeared, but we didn't know about it";
}
if (m_playerActions.isEmpty()) {
m_ui.actionNo_players_found->setVisible(true);
@@ -155,494 +108,48 @@ void Window::changePlayer(QAction* action)
}
}
-void Window::updateChangables() // slot
-{
- if (m_mprisPlayer) {
- QDBusReply<int> position = m_mprisPlayer->PositionGet();
- QDBusReply<int> volume = m_mprisPlayer->VolumeGet();
- if (position.isValid()) {
- m_ui.currentPosition->setText(QString::number(position));
- } else {
- printDBusError(position.error());
- }
- if (volume.isValid()) {
- m_ui.currentVolume->setText(QString::number(volume));
- } else {
- printDBusError(volume.error());
- }
- }
-}
-
-static void setCap(QLabel* label,
- bool enabled,
- const QString& enabledText,
- const QString& disabledText)
-{
- label->setEnabled(enabled);
- label->setText(enabled ? enabledText : disabledText);
-}
-
-void Window::setCaps(int caps) // slot
-{
- ::setCap(m_ui.capGoNext, (caps & Mpris::CAN_GO_NEXT),
- tr("Can go next"),
- tr("Cannot go next"));
- ::setCap(m_ui.capGoPrev, (caps & Mpris::CAN_GO_PREV),
- tr("Can go previous"),
- tr("Cannot go previous"));
- ::setCap(m_ui.capPause, (caps & Mpris::CAN_PAUSE),
- tr("Can pause"),
- tr("Cannot pause"));
- ::setCap(m_ui.capPlay, (caps & Mpris::CAN_PLAY),
- tr("Can play"),
- tr("Cannot play"));
- ::setCap(m_ui.capSeek, (caps & Mpris::CAN_SEEK),
- tr("Can seek"),
- tr("Cannot seek"));
- ::setCap(m_ui.capMetadata, (caps & Mpris::CAN_PROVIDE_METADATA),
- tr("Can provide metadata"),
- tr("Cannot provide metadata"));
- ::setCap(m_ui.capTracklist, (caps & Mpris::CAN_HAS_TRACKLIST),
- tr("Has tracklist"),
- tr("No tracklist"));
-
- const int excess = (caps | Mpris::ALL_KNOWN_CAPS) - Mpris::ALL_KNOWN_CAPS;
- m_ui.capsExcess->setText(QString::number(excess));
-}
-
-void Window::capsChangeNotify(int caps) // slot
-{
- consoleMessage(tr("CapsChange(%1) signal received").arg(QString::number(caps)));
-}
-
-void Window::setStatus(Mpris::Status status) // slot
-{
- switch (status.play) {
- case Mpris::Status::Playing:
- m_ui.statusPlaying->setText(tr("Playing"));
- break;
- case Mpris::Status::Paused:
- m_ui.statusPlaying->setText(tr("Paused"));
- break;
- case Mpris::Status::Stopped:
- m_ui.statusPlaying->setText(tr("Stopped"));
- break;
- default:
- m_ui.statusPlaying->setText(tr("Invalid play mode"));
- }
- switch (status.random) {
- case Mpris::Status::Linear:
- m_ui.statusRandom->setText(tr("Linear play"));
- break;
- case Mpris::Status::Random:
- m_ui.statusRandom->setText(tr("Random play"));
- break;
- default:
- m_ui.statusRandom->setText(tr("Invalid random mode"));
- }
- switch (status.trackRepeat) {
- case Mpris::Status::GoToNext:
- m_ui.statusTrackRepeat->setText(tr("Go to next track"));
- break;
- case Mpris::Status::RepeatCurrent:
- m_ui.statusTrackRepeat->setText(tr("Repeat track"));
- break;
- default:
- m_ui.statusTrackRepeat->setText(tr("Invalid track repeat mode"));
- }
- switch (status.playlistRepeat) {
- case Mpris::Status::StopWhenFinished:
- m_ui.statusPlaylistRepeat->setText(tr("Stop at end of playlist"));
- break;
- case Mpris::Status::RepeatCurrent:
- m_ui.statusPlaylistRepeat->setText(tr("Play forever"));
- break;
- default:
- m_ui.statusPlaylistRepeat->setText(tr("Invalid playlist repeat mode"));
- }
-}
-
-void Window::statusChangeNotify(Mpris::Status status) // slot
-{
- consoleMessage(tr("StatusChange(%1-%2-%3-%4) signal received")
- .arg(QString::number(status.play))
- .arg(QString::number(status.random))
- .arg(QString::number(status.trackRepeat))
- .arg(QString::number(status.playlistRepeat)));
-}
-
-void Window::trackChangeNotify(const QVariantMap&) // slot
-{
- consoleMessage(tr("TrackChange([new track metadata]) signal received"));
-}
-
-void Window::trackListChangeNotify(int length) // slot
-{
- consoleMessage(tr("TrackListChange(%1) signal received").arg(QString::number(length)));
-}
-
-void Window::quitPlayer()
-{
- if (m_mprisRoot) {
- QDBusReply<void> reply = m_mprisRoot->Quit();
- if (!reply.isValid()) {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::play()
-{
- if (m_mprisPlayer) {
- QDBusReply<void> reply = m_mprisPlayer->Play();
- if (!reply.isValid()) {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::pause()
-{
- if (m_mprisPlayer) {
- QDBusReply<void> reply = m_mprisPlayer->Pause();
- if (!reply.isValid()) {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::stop()
-{
- if (m_mprisPlayer) {
- QDBusReply<void> reply = m_mprisPlayer->Stop();
- if (!reply.isValid()) {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::prev()
-{
- if (m_mprisPlayer) {
- QDBusReply<void> reply = m_mprisPlayer->Prev();
- if (!reply.isValid()) {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::next()
-{
- if (m_mprisPlayer) {
- QDBusReply<void> reply = m_mprisPlayer->Next();
- if (!reply.isValid()) {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::randomOn()
-{
- if (m_mprisTracklist) {
- QDBusReply<void> reply = m_mprisTracklist->SetRandom(true);
- if (!reply.isValid()) {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::randomOff()
-{
- if (m_mprisTracklist) {
- QDBusReply<void> reply = m_mprisTracklist->SetRandom(false);
- if (!reply.isValid()) {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::trackRepeatOn()
-{
- if (m_mprisPlayer) {
- QDBusReply<void> reply = m_mprisPlayer->Repeat(true);
- if (!reply.isValid()) {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::trackRepeatOff()
-{
- if (m_mprisPlayer) {
- QDBusReply<void> reply = m_mprisPlayer->Repeat(false);
- if (!reply.isValid()) {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::playlistRepeatOn()
-{
- if (m_mprisTracklist) {
- QDBusReply<void> reply = m_mprisTracklist->SetLoop(true);
- if (!reply.isValid()) {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::playlistRepeatOff()
-{
- if (m_mprisTracklist) {
- QDBusReply<void> reply = m_mprisTracklist->SetLoop(false);
- if (!reply.isValid()) {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::setPosition()
-{
- if (m_mprisPlayer) {
- int position = m_ui.newPosition->value();
- QDBusReply<void> reply = m_mprisPlayer->PositionSet(position);
- if (!reply.isValid()) {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::setVolume() // slot
-{
- if (m_mprisPlayer) {
- int volume = m_ui.newVolume->value();
- QDBusReply<void> reply = m_mprisPlayer->VolumeSet(volume);
- if (!reply.isValid()) {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::updateTracklist(int tracks)
-{
- if (!tracks) {
- m_ui.currentTrack->setText(tr("N/A"));
- m_ui.totalTracks->setText("0");
- } else if (m_mprisTracklist) {
- m_ui.totalTracks->setText(QString::number(tracks));
- QDBusReply<int> current = m_mprisTracklist->GetCurrentTrack();
- if (current.isValid()) {
- m_ui.currentTrack->setText(QString::number(current));
- } else {
- m_ui.currentTrack->setText(tr("Invalid reply"));
- printDBusError(current.error());
- }
- }
-}
-
-void Window::fetchTrackMetadata()
-{
- if (m_mprisTracklist) {
- int track = m_ui.fetchTrackNumber->value();
- QDBusReply<QVariantMap> metadata = m_mprisTracklist->GetMetadata(track);
- if (metadata.isValid()) {
- m_tracklistModel.setMetadata(metadata);
- } else {
- printDBusError(metadata.error());
- }
- }
-}
-
-void Window::addTrack()
-{
- if (m_mprisTracklist) {
- QString uri = m_ui.trackUri->text();
- bool playNow = m_ui.playNow->isChecked();
- QDBusReply<int> reply = m_mprisTracklist->AddTrack(uri, playNow);
- if (reply.isValid()) {
- if (reply.value()) {
- consoleMessage(tr("Player reported adding track was successful"));
- m_ui.trackUri->clear();
- } else {
- consoleMessage(tr("Player reported adding track failed"));
- }
- } else {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::deleteTrack()
-{
- if (m_mprisTracklist) {
- int track = m_ui.deleteTrackNumber->value();
- QDBusReply<void> reply = m_mprisTracklist->DelTrack(track);
- if (!reply.isValid()) {
- printDBusError(reply.error());
- }
- }
-}
-
-void Window::forceMetadataUpdate()
-{
- if (m_mprisPlayer) {
- QDBusReply<QVariantMap> metadata = m_mprisPlayer->GetMetadata();
- if (metadata.isValid()) {
- m_currentTrackModel.setMetadata(metadata);
- } else {
- printDBusError(metadata.error());
- }
- }
-}
-
-void Window::forceCapsUpdate()
-{
- if (m_mprisPlayer) {
- QDBusReply<int> caps = m_mprisPlayer->GetCaps();
- if (caps.isValid()) {
- setCaps(caps);
- } else {
- printDBusError(caps.error());
- }
- }
-}
-
-void Window::forceStatusUpdate()
-{
- if (m_mprisPlayer) {
- QDBusReply<Mpris::Status> status = m_mprisPlayer->GetStatus();
- if (status.isValid()) {
- setStatus(status);
- } else {
- printDBusError(status.error());
- }
- }
-}
-
-void Window::forceTracklistUpdate()
-{
- if (m_mprisTracklist) {
- QDBusReply<int> current = m_mprisTracklist->GetCurrentTrack();
- QDBusReply<int> length = m_mprisTracklist->GetLength();
- if (current.isValid()) {
- m_ui.currentTrack->setText(QString::number(current));
- } else {
- printDBusError(current.error());
- }
- if (length.isValid()) {
- m_ui.totalTracks->setText(QString::number(length));
- } else {
- printDBusError(length.error());
- }
- }
-}
-
void Window::clear()
{
m_timer.stop();
- delete m_mprisRoot;
- m_mprisRoot = 0;
- delete m_mprisPlayer;
- m_mprisPlayer = 0;
- delete m_mprisTracklist;
- m_mprisTracklist = 0;
-
- m_ui.appName->setText(tr("N/A"));
- m_ui.mprisVersion->setText("0");
-
- m_ui.currentPosition->setText("0");
- m_ui.currentVolume->setText("0");
-
- m_currentTrackModel.setMetadata(QVariantMap());
- m_tracklistModel.setMetadata(QVariantMap());
-
- setCaps(0);
- setStatus(Mpris::Status());
- updateTracklist(0);
+ setCentralWidget(new QWidget());
+
+ m_rootTest->deleteLater();
+ m_rootTest = 0;
+ m_rootWidget->deleteLater();
+ m_rootWidget = 0;
m_currentPlayer.clear();
}
-void Window::consoleMessage(const QString& message)
-{
- QString time = QTime::currentTime().toString();
- m_ui.console->appendPlainText("[ " + time + " ]: " + message);
-}
-
-void Window::printDBusError(const QDBusError& error)
-{
- consoleMessage(tr("Got the error %1: %2").arg(error.name()).arg(error.message()));
-}
-
void Window::setPlayer(const QString& dbusAddress)
{
clear();
- consoleMessage(tr("Connecting to player %1").arg(dbusAddress));
-
- m_mprisRoot = new Mpris1RootProxy(dbusAddress,
- "/",
- QDBusConnection::sessionBus());
- m_mprisPlayer = new Mpris1PlayerProxy(dbusAddress,
- "/Player",
- QDBusConnection::sessionBus());
- m_mprisTracklist = new Mpris1TrackListProxy(dbusAddress,
- "/TrackList",
- QDBusConnection::sessionBus());
-
- if (!m_mprisRoot->isValid() || !m_mprisPlayer->isValid() || !m_mprisTracklist->isValid()) {
- consoleMessage(tr("Connection to player %1 failed").arg(dbusAddress));
- clear();
- } else {
- m_currentPlayer = dbusAddress;
+ qDebug() << "Connecting to player" << dbusAddress;
- QDBusReply<QString> identity = m_mprisRoot->Identity();
- QDBusReply<Mpris::Version> version = m_mprisRoot->MprisVersion();
- if (identity.isValid()) {
- m_ui.appName->setText(identity);
- } else {
- m_ui.appName->setText(tr("Invalid reply"));
- printDBusError(identity.error());
- }
- if (version.isValid()) {
- Mpris::Version mprisVersion = version.value();
- m_ui.mprisVersion->setText(QString::number(mprisVersion.major) +
- QString('.') +
- QString::number(mprisVersion.minor));
- if (mprisVersion.major < 1) {
- consoleMessage(tr("Player reports an unknown MPRIS specification version"));
- } else if (mprisVersion.major > 1) {
- consoleMessage(tr("Player reports that it implements a (more recent) incompatible version of the MPRIS specification. This tool cannot be used to usefully test compliance with this version of MPRIS."));
- } else if (mprisVersion.minor > 0) {
- consoleMessage(tr("Player reports that it implements a compatible but more recent version of the MPRIS specification than this tool knows about. This tool can only be used to test those part of the MPRIS specification that were included in version 1.0."));
- }
- } else {
- m_ui.mprisVersion->setText(tr("Invalid reply"));
- printDBusError(version.error());
- }
- connect(m_mprisPlayer, SIGNAL(CapsChange(int)),
- this, SLOT(setCaps(int)));
- connect(m_mprisPlayer, SIGNAL(CapsChange(int)),
- this, SLOT(capsChangeNotify(int)));
- connect(m_mprisPlayer, SIGNAL(StatusChange(Mpris::Status)),
- this, SLOT(setStatus(Mpris::Status)));
- connect(m_mprisPlayer, SIGNAL(StatusChange(Mpris::Status)),
- this, SLOT(statusChangeNotify(Mpris::Status)));
- connect(m_mprisPlayer, SIGNAL(TrackChange(QVariantMap)),
- this, SLOT(trackChangeNotify(QVariantMap)));
- connect(m_mprisPlayer, SIGNAL(TrackChange(QVariantMap)),
- &m_currentTrackModel, SLOT(setMetadata(QVariantMap)));
- connect(m_mprisTracklist, SIGNAL(TrackListChange(int)),
- this, SLOT(trackListChangeNotify(int)));
- connect(m_mprisTracklist, SIGNAL(TrackListChange(int)),
- this, SLOT(updateTracklist(int)));
- forceCapsUpdate();
- forceStatusUpdate();
- forceMetadataUpdate();
- forceTracklistUpdate();
- m_timer.start();
- }
+ m_rootTest = new Mpris2::RootInterfaceTest(dbusAddress, this);
+ connect(&m_timer, SIGNAL(timeout()),
+ m_rootTest, SLOT(incrementalTest()));
+
+ m_rootWidget = new QWidget(this);
+ QBoxLayout *layout = new QVBoxLayout(m_rootWidget);
+ layout->addWidget(new Mpris2::RootTestWidget(m_rootTest));
+ Mpris2::TestConsole* console = new Mpris2::TestConsole();
+ connect(m_rootTest, SIGNAL(interfaceError(Mpris2::InterfaceTest::LocationType,QString,QString)),
+ console, SLOT(interfaceError(Mpris2::InterfaceTest::LocationType,QString,QString)));
+ connect(m_rootTest, SIGNAL(interfaceWarning(Mpris2::InterfaceTest::LocationType,QString,QString)),
+ console, SLOT(interfaceWarning(Mpris2::InterfaceTest::LocationType,QString,QString)));
+ connect(m_rootTest, SIGNAL(interfaceInfo(Mpris2::InterfaceTest::LocationType,QString,QString)),
+ console, SLOT(interfaceInfo(Mpris2::InterfaceTest::LocationType,QString,QString)));
+ layout->addWidget(console);
+ this->setCentralWidget(m_rootWidget);
+ layout->update();
+
+ this->update();
+
+ QMetaObject::invokeMethod(m_rootTest, "initialTest", Qt::QueuedConnection);
+ m_timer.start();
}
diff --git a/window.h b/window.h
index eaae8f4..bef703d 100644
--- a/window.h
+++ b/window.h
@@ -20,17 +20,15 @@
#include "ui_window.h"
#include "metadatamodel.h"
-#include "dbus/1.0/mpristypes.h"
-#include <QDBusError>
#include <QMainWindow>
#include <QTimer>
class QActionGroup;
-class Mpris1RootProxy;
-class Mpris1PlayerProxy;
-class Mpris1TrackListProxy;
class QAction;
+namespace Mpris2 {
+ class RootInterfaceTest;
+}
class Window : public QMainWindow
{
@@ -44,56 +42,22 @@ private slots:
const QString& oldOwner,
const QString& newOwner);
void changePlayer(QAction* action);
- void updateChangables();
- void setCaps(int caps);
- void setStatus(Mpris::Status);
- void capsChangeNotify(int caps);
- void statusChangeNotify(Mpris::Status);
- void trackChangeNotify(const QVariantMap& metadata);
- void trackListChangeNotify(int length);
- void quitPlayer();
- void play();
- void pause();
- void stop();
- void prev();
- void next();
- void randomOn();
- void randomOff();
- void trackRepeatOn();
- void trackRepeatOff();
- void playlistRepeatOn();
- void playlistRepeatOff();
- void setPosition();
- void setVolume();
- void updateTracklist(int tracks);
- void fetchTrackMetadata();
- void addTrack();
- void deleteTrack();
- void forceMetadataUpdate();
- void forceCapsUpdate();
- void forceStatusUpdate();
- void forceTracklistUpdate();
private:
- void clear();
- void consoleMessage(const QString& message);
- void printDBusError(const QDBusError& error);
void setPlayer(const QString& dbusAddress);
+ void clear();
private:
Ui_MainWindow m_ui;
- MetadataModel m_currentTrackModel;
- MetadataModel m_tracklistModel;
QTimer m_timer;
- Mpris1RootProxy* m_mprisRoot;
- Mpris1PlayerProxy* m_mprisPlayer;
- Mpris1TrackListProxy* m_mprisTracklist;
-
QMap<QString, QAction*> m_playerActions;
QActionGroup* m_playerActionGroup;
QString m_currentPlayer;
+
+ Mpris2::RootInterfaceTest* m_rootTest;
+ QWidget* m_rootWidget;
};
#endif // WINDOW_H