/** * Purpose: When inserting or removing playlists, * we require the sidebar model not to reset. * This method queries the database and does dynamic insertion */ QModelIndex CrateFeature::constructChildModel(int selected_id) { buildCrateList(); QList<TreeItem*> data_list; int selected_row = -1; // Access the invisible root item TreeItem* root = m_childModel.getItem(QModelIndex()); int row = 0; for (QList<QPair<int, QString> >::const_iterator it = m_crateList.begin(); it != m_crateList.end(); ++it, ++row) { int crate_id = it->first; QString crate_name = it->second; if (selected_id == crate_id) { // save index for selection selected_row = row; m_childModel.index(selected_row, 0); } // Create the TreeItem whose parent is the invisible root item TreeItem* item = new TreeItem(crate_name, QString::number(crate_id), this, root); bool locked = m_crateDao.isCrateLocked(crate_id); item->setIcon(locked ? QIcon(":/images/library/ic_library_locked.png") : QIcon()); data_list.append(item); } // Append all the newly created TreeItems in a dynamic way to the childmodel m_childModel.insertRows(data_list, 0, m_crateList.size()); if (selected_row == -1) { return QModelIndex(); } return m_childModel.index(selected_row, 0); }
void CrateFeature::updateChildModel(int selected_id) { buildCrateList(); int row = 0; for (QList<QPair<int, QString> >::const_iterator it = m_crateList.begin(); it != m_crateList.end(); ++it, ++row) { int crate_id = it->first; QString crate_name = it->second; if (selected_id == crate_id) { TreeItem* item = m_childModel.getItem(indexFromCrateId(crate_id)); item->setData(crate_name, QString::number(crate_id)); bool locked = m_crateDao.isCrateLocked(crate_id); item->setIcon(locked ? QIcon(":/images/library/ic_library_locked.png") : QIcon()); } } }