bool PlaylistsModel::load() { setUpdateSignaled(false); if (!m_provider) return false; clear(); const SONOS::PlayerPtr player = m_provider->getPlayer(); if (!player) return false; QString port; port.setNum(player->GetPort()); QString url = "http://"; url.append(player->GetHost().c_str()).append(":").append(port); SONOS::ContentDirectory cd(player->GetHost(), player->GetPort()); SONOS::ContentList cl(cd, m_root.isEmpty() ? SONOS::ContentSearch(SONOS::SearchSonosPlaylist,"").Root() : m_root.toUtf8().constData()); for (SONOS::ContentList::iterator it = cl.begin(); it != cl.end(); ++it) { PlaylistItem* item = new PlaylistItem(*it, url); if (item->isValid()) addItem(item); else delete item; } if (cl.failure()) return m_loaded = false; m_updateID = cl.GetUpdateID(); // sync new baseline return m_loaded = true; }
PlaylistItem *CollectionList::createItem(const FileHandle &file, QListViewItem *, bool) { // It's probably possible to optimize the line below away, but, well, right // now it's more important to not load duplicate items. if(m_itemsDict.find(file.absFilePath())) return 0; PlaylistItem *item = new CollectionListItem(file); if(!item->isValid()) { kdError() << "CollectionList::createItem() -- A valid tag was not created for \"" << file.absFilePath() << "\"" << endl; delete item; return 0; } setupItem(item); return item; }