on 7356cfa help sign in
unity8/plugins/Unity/musicpreviewtrackmodel.cpp
71 lines 2.2 kB history raw
1/*
2 * Copyright (C) 2013 Canonical, Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
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 General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authors:
17 * Michael Zanetti <michael.zanetti@canonical.com>
18 */
20#include "musicpreviewtrackmodel.h"
22#include <QTime>
24// TODO: use something from libunity once it's public
25enum ResultsColumn {
26 URI,
27 TRACK_NO,
28 TITLE,
29 LENGTH,
30 PLAY_STATE,
31 PROGRESS
32};
34MusicPreviewTrackModel::MusicPreviewTrackModel(QObject *parent): DeeListModel(parent)
36 m_roles.insert(RoleUri, "uri");
37 m_roles.insert(RoleTrackNo, "trackNo");
38 m_roles.insert(RoleTitle, "title");
39 m_roles.insert(RoleLength, "length");
40 m_roles.insert(RolePlayState, "playState");
41 m_roles.insert(RoleProgress, "progress");
44QVariant MusicPreviewTrackModel::data(const QModelIndex &index, int role) const
46 switch(role) {
47 case RoleUri:
48 return DeeListModel::data(index, ResultsColumn::URI);
49 case RoleTrackNo:
50 return DeeListModel::data(index, ResultsColumn::TRACK_NO);
51 case RoleTitle:
52 return DeeListModel::data(index, ResultsColumn::TITLE);
53 case RoleLength: {
54 QTime length = QTime(0,0).addSecs(DeeListModel::data(index, ResultsColumn::LENGTH).toInt());
55 if (length.hour() > 0) {
56 return length.toString("h:mm:ss");
57 }
58 return length.toString("m:ss");
59 }
60 case RolePlayState:
61 return DeeListModel::data(index, ResultsColumn::PLAY_STATE);
62 case RoleProgress:
63 return DeeListModel::data(index, ResultsColumn::PROGRESS);
64 }
65 return QVariant();
68QHash<int, QByteArray> MusicPreviewTrackModel::roleNames() const
70 return m_roles;