2
* Copyright © 2013 Canonical Ltd.
4
* This program is free software: you can redistribute it and/or modify it
5
* under the terms of the GNU Lesser General Public License version 3,
6
* as published by the Free Software Foundation.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU Lesser General Public License for more details.
13
* You should have received a copy of the GNU Lesser General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
16
* Authored by: Thomas Voß <thomas.voss@canonical.com>
19
#include "com/ubuntu/music/track.h"
23
namespace music = com::ubuntu::music;
25
const music::Track::MetaData::KeyType& music::Track::MetaData::track_id_key()
27
static const KeyType key = "test";
31
struct music::Track::MetaData::Private
33
std::map<music::Track::MetaData::KeyType, music::Track::MetaData::ValueType> lut;
35
bool operator==(const Private& rhs) const
37
return lut == rhs.lut;
41
music::Track::MetaData::MetaData(const music::Track::MetaData& rhs) : d(new Private(*rhs.d))
45
music::Track::MetaData::~MetaData()
49
music::Track::MetaData& music::Track::MetaData::operator=(const music::Track::MetaData& rhs)
55
bool music::Track::MetaData::operator==(const music::Track::MetaData& rhs) const
60
bool music::Track::MetaData::has_value_for_key(const music::Track::MetaData::KeyType& key) const
62
return d->lut.count(key) > 0;
65
const music::Track::MetaData::ValueType& music::Track::MetaData::value_for_key(
66
const music::Track::MetaData::KeyType& key) const
68
return d->lut.at(key);
71
void music::Track::MetaData::for_each(
72
const std::function<void(const music::Track::MetaData::KeyType&, const music::Track::MetaData::ValueType&)>& f)
80
music::Track::MetaData::MetaData() : d(new Private())
84
struct music::Track::Private
86
Private(const MetaData& meta_data,
87
const Track::UriType& uri) : meta_data(meta_data),
92
bool operator==(const Private& rhs) const
95
meta_data == rhs.meta_data &&
103
music::Track::Track(const music::Track& rhs) : d(new Private(*rhs.d))
107
music::Track::~Track()
111
music::Track& music::Track::operator=(const music::Track& rhs)
117
bool music::Track::operator==(const music::Track& rhs) const
122
const music::Track::UriType& music::Track::uri() const
127
const music::Track::MetaData& music::Track::meta_data() const
132
music::Connection music::Track::on_meta_data_changed(const std::function<void(const music::Track::MetaData&)>& f)
135
return Connection(nullptr);
138
music::Track::Track(const music::Track::UriType& uri, const music::Track::MetaData& meta_data) : d(new Private(meta_data, uri))