// Adjust the search panel according the the server caps for the // active tab void DirBrowser::onCurrentTabChanged(int) { CDBrowser *cdb = currentBrowser(); set<string> caps; if (cdb) cdb->getSearchCaps(caps); while(ui->propsCMB->count()) ui->propsCMB->removeItem(0); if (caps.empty()) { ui->serverSearchCB->setCheckState(Qt::Unchecked); ui->serverSearchCB->setEnabled(false); } else { ui->serverSearchCB->setEnabled(true); QString scs; vector<pair<string, string> > props; props.push_back(pair<string,string>("upnp:artist", "Artist")); props.push_back(pair<string,string>("upnp:album", "Album")); props.push_back(pair<string,string>("dc:title", "Title")); props.push_back(pair<string,string>("upnp:genre", "Genre")); for (vector<pair<string, string> >::iterator it = props.begin(); it != props.end(); it++) { if (caps.find("*") != caps.end() || caps.find(it->first) != caps.end()) { ui->propsCMB->addItem(u8s2qs(it->second), QVariant(u8s2qs(it->first))); } scs += u8s2qs(it->first.c_str()) + " "; } qDebug() << "Search caps: " << scs; onSearchKindChanged(ui->serverSearchCB->checkState()); } }
void DirBrowser::onBrowseInNewTab(QString UDN, vector<CDBrowser::CtPathElt> path) { //qDebug() << "onBrowseInNewTab(): " << UDN; addTab(); CDBrowser *cdb = currentBrowser(); if (cdb) cdb->browseIn(UDN, path); }
// Perform text search in current tab. // @param next if true, we look for the next match of the // current search, trying to advance and possibly wrapping around. Else is // false, the search string has been modified, we search for the new string, // starting from the current position void DirBrowser::doSearch(const QString& text, bool reverse) { qDebug() << "DirBrowser::doSearch: text " << text << " reverse " << reverse; CDBrowser *cdb = currentBrowser(); if (cdb == 0) { return; } QWebPage::FindFlags options = QWebPage::FindWrapsAroundDocument; if (reverse) options |= QWebPage::FindBackward; cdb->findText(text, options); }
void DirBrowser::serverSearch() { QString text = ui->searchCMB->lineEdit()->text(); int i = ui->propsCMB->currentIndex(); string prop = qs2utf8s(ui->propsCMB->itemData(i).toString()); if (text != "") { string iss = qs2utf8s(text); string ss(prop); ss += " contains \""; for (unsigned i = 0; i < iss.size(); i++) { if (iss[i] == '"' || iss[i] == '\\') ss += string("\\"); ss += iss[i]; } ss += '"'; CDBrowser *cdb = currentBrowser(); if (cdb) cdb->search(ss); } }
void DirBrowser::onSortprefs() { static map<string, string> allSortCrits; static map<string, string> allSortCritsRev; if (allSortCrits.empty()) { allSortCrits["Track Number"] = "upnp:originalTrackNumber"; allSortCrits["Track Title"] = "dc:title"; allSortCrits["Date"] = "dc:date"; allSortCrits["Artist"] = "upnp:artist"; allSortCrits["Album Title"] = "upnp:album"; allSortCrits["URI"] = "uri"; for (map<string, string>::iterator it = allSortCrits.begin(); it != allSortCrits.end(); it++) { allSortCritsRev[it->second] = it->first; } } QStringList qcrits = CSettingsStorage::getInstance()->getSortCrits(); vector<string> crits; if (qcrits.size() == 0) { qcrits.push_back("upnp:artist"); qcrits.push_back("upnp:album"); qcrits.push_back("upnp:originalTrackNumber"); qcrits.push_back("dc:title"); qcrits.push_back("dc:date"); qcrits.push_back("uri"); } for (int i = 0; i < qcrits.size(); i++) { string nm = allSortCritsRev[qs2utf8s(qcrits[i])]; if (nm == "") { // Bummer. Limp along and hope for the best nm = qs2utf8s(qcrits[i]); } crits.push_back(nm); } int sortkind = CSettingsStorage::getInstance()->getSortKind(); SortprefsDLG dlg(crits); switch (sortkind) { case CSettingsStorage::SK_NOSORT: default: dlg.noSortRB->setChecked(true); break; case CSettingsStorage::SK_MINIMFNORDER: dlg.minimfnRB->setChecked(true); break; case CSettingsStorage::SK_CUSTOM: dlg.sortRB->setChecked(true); break; } if (dlg.exec()) { sortkind = CSettingsStorage::SK_NOSORT; if (dlg.minimfnRB->isChecked()) { sortkind = CSettingsStorage::SK_MINIMFNORDER; } else if (dlg.sortRB->isChecked()) { sortkind = CSettingsStorage::SK_CUSTOM; } CSettingsStorage::getInstance()->setSortKind(sortkind); qcrits.clear(); for (int i = 0; i < dlg.critsLW->count(); i++) { QString val = dlg.critsLW->item(i)->data(Qt::DisplayRole).toString(); //qDebug() << "Sort nm: " << val; val = u8s2qs(allSortCrits[qs2utf8s(val)]); if (val != "") { qcrits += val; //qDebug() << "Sort crit: " << val; } } CSettingsStorage::getInstance()->setSortCrits(qcrits); currentBrowser()->refresh(); } }
BrowserBar::~BrowserBar() { KConfig* const config = Amarok::config( "BrowserBar" ); config->writeEntry( "CurrentPane", m_currentIndex != -1 ? QString(currentBrowser()->name()) : QString::null ); config->writeEntry( "Width", m_browserBox->width() ); }