47
48
qDebug() << "An unknown error occurred while creating playlist: " << set_log_name;
50
// Setup the sidebar playlist model
51
m_playlistTableModel.setTable("Playlists");
52
m_playlistTableModel.setFilter("hidden=2"); // PLHT_SET_LOG
53
m_playlistTableModel.setSort(m_playlistTableModel.fieldIndex("id"),
55
m_playlistTableModel.select();
57
51
//construct child model
58
52
TreeItem *rootItem = new TreeItem();
59
53
m_childModel.setRootItem(rootItem);
143
* Purpose: When inserting or removing playlists,
144
* we require the sidebar model not to reset.
145
* This method queries the database and does dynamic insertion
147
QModelIndex SetlogFeature::constructChildModel(int selected_id)
149
QList<TreeItem*> data_list;
150
int nameColumn = m_playlistTableModel.record().indexOf("name");
151
int idColumn = m_playlistTableModel.record().indexOf("id");
152
int selected_row = -1;
153
// Access the invisible root item
154
TreeItem* root = m_childModel.getItem(QModelIndex());
156
// Create new TreeItems for the playlists in the database
157
for (int row = 0; row < m_playlistTableModel.rowCount(); ++row) {
158
QModelIndex ind = m_playlistTableModel.index(row, nameColumn);
159
QString playlist_name = m_playlistTableModel.data(ind).toString();
160
ind = m_playlistTableModel.index(row, idColumn);
161
int playlist_id = m_playlistTableModel.data(ind).toInt();
163
if ( selected_id == playlist_id) {
164
// save index for selection
168
// Create the TreeItem whose parent is the invisible root item
169
TreeItem* item = new TreeItem(playlist_name, playlist_name, this, root);
170
if (playlist_id == m_playlistId) {
171
item->setIcon(QIcon(":/images/library/ic_library_history_current.png"));
172
} else if (m_playlistDao.isPlaylistLocked(playlist_id)) {
173
item->setIcon(QIcon(":/images/library/ic_library_locked.png"));
175
item->setIcon(QIcon());
177
data_list.append(item);
180
// Append all the newly created TreeItems in a dynamic way to the childmodel
181
m_childModel.insertRows(data_list, 0, m_playlistTableModel.rowCount());
182
if (selected_row == -1) {
183
return QModelIndex();
185
return m_childModel.index(selected_row, 0);
143
void SetlogFeature::buildPlaylistList() {
144
m_playlistList.clear();
145
// Setup the sidebar playlist model
146
QSqlTableModel playlistTableModel(this, m_pTrackCollection->getDatabase());
147
playlistTableModel.setTable("Playlists");
148
playlistTableModel.setFilter("hidden=2"); // PLHT_SET_LOG
149
playlistTableModel.setSort(playlistTableModel.fieldIndex("id"),
151
playlistTableModel.select();
152
while (playlistTableModel.canFetchMore()) {
153
playlistTableModel.fetchMore();
155
int nameColumn = playlistTableModel.record().indexOf("name");
156
int idColumn = playlistTableModel.record().indexOf("id");
158
for (int row = 0; row < playlistTableModel.rowCount(); ++row) {
159
int id = playlistTableModel.data(
160
playlistTableModel.index(row, idColumn)).toInt();
161
QString name = playlistTableModel.data(
162
playlistTableModel.index(row, nameColumn)).toString();
163
m_playlistList.append(qMakePair(id, name));
167
void SetlogFeature::decorateChild(TreeItem* item, int playlist_id) {
168
if (playlist_id == m_playlistId) {
169
item->setIcon(QIcon(":/images/library/ic_library_history_current.png"));
170
} else if (m_playlistDao.isPlaylistLocked(playlist_id)) {
171
item->setIcon(QIcon(":/images/library/ic_library_locked.png"));
173
item->setIcon(QIcon());
188
177
void SetlogFeature::slotJoinWithPrevious() {