void MprisPlayer::onPropertiesChanged(const QDBusMessage &msg) { QDBusArgument arg = msg.arguments().at(1).value<QDBusArgument>(); QVariantMap map = qdbus_cast<QVariantMap>(arg); QVariantMap::const_iterator it = map.find(QLatin1String("Metadata")); if (it != map.end()) { arg = it.value().value<QDBusArgument>(); onTrackChanged(qdbus_cast<QVariantMap>(arg)); } it = map.find(QLatin1String("PlaybackStatus")); if (it != map.end()) { DBusMprisPlayerStatus status; status.Play = it.value().toString() == QLatin1String("Playing") ? 0 : 1; onStatusChanged(status); } }
PlaylistWidget::PlaylistWidget(QWidget *parent) : QWidget(parent), ui(new Ui::PlaylistWidget) { ui->setupUi(this); m_delegate = new TrackDelegate(this); ui->listView->setItemDelegate(m_delegate); ui->listView->setAcceptDrops(true); m_model = new PlaylistModel(this); m_model->setTrackCycler(Player::instance()->cycler()); m_model->setMediaLibrary(Player::instance()->media()); m_model->setFavoritesManager(Player::instance()->favorites()); m_favFilterModel = new FavoritesFilterModel(this); m_favFilterModel->setSourceModel(m_model); m_favFilterModel->setDynamicSortFilter(true); connect(ui->listView, SIGNAL(showFavoritesToggled(bool)), this, SLOT(setFavoritesFilterEnabled(bool))); connect(m_favFilterModel, SIGNAL(enabledChanged(bool)), ui->listView, SLOT(toggleFavorites(bool))); m_sortModel = new QSortFilterProxyModel(this); m_sortModel->setSourceModel(m_favFilterModel); m_sortModel->setFilterRole(PlaylistModel::SearchRole); m_sortModel->setDynamicSortFilter(true); m_sortModel->setFilterCaseSensitivity(Qt::CaseInsensitive); ui->listView->setModel(m_sortModel); connect(ui->clearButton, SIGNAL(clicked()), ui->filterEdit, SLOT(clear())); connect(ui->filterEdit, SIGNAL(textChanged(QString)), this, SLOT(setFilter(QString))); TrackCycler * cycler = Player::instance()->cycler(); if (cycler != 0) { connect(cycler, SIGNAL(trackChanged(PlayId)), this, SLOT(onTrackChanged(PlayId))); } PlaylistHistory *history = Player::instance()->history(); if (history != 0) { connect(history,SIGNAL(currentChanged(Playlist*)), this, SLOT(setPlaylist(Playlist*))); connect(history,SIGNAL(countChanged()), this, SLOT(onPlaylistCountChanged())); setPlaylist(history->current()); }
void MprisPlayer::stopWatching() { QDBusConnection bus = QDBusConnection::sessionBus(); if (m_version == 1) { bus.disconnect(m_service, "/Player", "org.freedesktop.MediaPlayer", "TrackChange", this, SLOT(onTrackChanged(QVariantMap))); bus.disconnect(m_service, "/Player", "org.freedesktop.MediaPlayer", "StatusChange", this, SLOT(statusChanged(DBusMprisPlayerStatus))); } else if (m_version == 2) { bus.disconnect(m_service, QLatin1String("/org/mpris/MediaPlayer2"), QLatin1String("org.freedesktop.DBus.Properties"), QLatin1String("PropertiesChanged"), this, SLOT(onPropertiesChanged(QDBusMessage))); } }