示例#1
0
	PlaylistManager::PlaylistManager (QObject *parent)
	: QObject (parent)
	, Model_ (new PlaylistModel (this))
	, StaticRoot_ (new QStandardItem (tr ("Static playlists")))
	, Static_ (new StaticPlaylistManager (this))
	{
		StaticRoot_->setEditable (false);
		Model_->appendRow (StaticRoot_);

		connect (Static_,
				SIGNAL (customPlaylistsChanged ()),
				this,
				SLOT (handleStaticPlaylistsChanged ()));
		QTimer::singleShot (100,
				this,
				SLOT (handleStaticPlaylistsChanged ()));

		auto dynamicRoot = new QStandardItem (tr ("Dynamic playlists"));
		dynamicRoot->setEditable (false);
		Model_->appendRow (dynamicRoot);

		const auto types =
		{
			PlaylistTypes::Random50,
			PlaylistTypes::LovedTracks,
			PlaylistTypes::BannedTracks
		};
		const auto names =
		{
			tr ("50 random tracks"),
			tr ("Loved tracks"),
			tr ("Banned tracks")
		};

		for (const auto& pair : Util::Views::Zip (types, names))
		{
			auto item = new QStandardItem { pair.second };
			item->setData (pair.first, Roles::PlaylistType);
			item->setEditable (false);
			dynamicRoot->appendRow (item);
		}
	}
	void StaticPlaylistManager::DeleteCustomPlaylist (const QString& name)
	{
		if (PlaylistsDir_.remove (GetFileName (name)))
			emit customPlaylistsChanged ();
	}
	void StaticPlaylistManager::SaveCustomPlaylist (QString name,
			const QList<Phonon::MediaSource>& sources)
	{
		WritePlaylist (PlaylistsDir_.filePath (GetFileName (name)), sources);
		emit customPlaylistsChanged ();
	}