|
a/dirbrowser/cdbrowser.cpp |
|
b/dirbrowser/cdbrowser.cpp |
|
... |
|
... |
158 |
}
|
158 |
}
|
159 |
#endif
|
159 |
#endif
|
160 |
|
160 |
|
161 |
void CDBrowser::runJS(const QString& js)
|
161 |
void CDBrowser::runJS(const QString& js)
|
162 |
{
|
162 |
{
|
|
|
163 |
qDebug() << "CDBrowser::runJS: " << js;
|
|
|
164 |
|
163 |
#ifdef USING_WEBENGINE
|
165 |
#ifdef USING_WEBENGINE
|
164 |
page()->runJavaScript(js, [] (QVariant res) {
|
166 |
page()->runJavaScript(js, [] (QVariant res) {
|
165 |
Q_UNUSED(res);
|
167 |
Q_UNUSED(res);
|
166 |
});
|
168 |
});
|
167 |
#else
|
169 |
#else
|
|
... |
|
... |
301 |
|
303 |
|
302 |
switch (what) {
|
304 |
switch (what) {
|
303 |
|
305 |
|
304 |
case 'a':
|
306 |
case 'a':
|
305 |
{
|
307 |
{
|
306 |
string initial = scurl.substr(1,1);
|
308 |
char initial = scurl[1];
|
307 |
auto it = m_alphamap.find(initial);
|
309 |
auto it = m_alphamap.find(initial);
|
308 |
if (it != m_alphamap.end()) {
|
310 |
if (it != m_alphamap.end()) {
|
309 |
m_browsers->doSearch(u8s2qs(it->second), false);
|
311 |
m_browsers->doSearch(u8s2qs(it->second), false);
|
310 |
}
|
312 |
}
|
311 |
}
|
313 |
}
|
|
... |
|
... |
344 |
break;
|
346 |
break;
|
345 |
|
347 |
|
346 |
case 'C':
|
348 |
case 'C':
|
347 |
{
|
349 |
{
|
348 |
// Directory listing container link clicked: browse subdir.
|
350 |
// Directory listing container link clicked: browse subdir.
|
349 |
m_curinitial = 0;
|
|
|
350 |
#ifdef USING_WEBENGINE
|
351 |
#ifdef USING_WEBENGINE
|
351 |
#warning tobedone
|
352 |
#warning tobedone
|
352 |
#else
|
353 |
#else
|
353 |
m_curpath.back().scrollpos = page()->mainFrame()->scrollPosition();
|
354 |
m_curpath.back().scrollpos = page()->mainFrame()->scrollPosition();
|
354 |
#endif
|
355 |
#endif
|
|
... |
|
... |
533 |
// onSliceAvailable could be called at a later time and mess the
|
534 |
// onSliceAvailable could be called at a later time and mess the
|
534 |
// display.
|
535 |
// display.
|
535 |
qApp->processEvents();
|
536 |
qApp->processEvents();
|
536 |
}
|
537 |
}
|
537 |
|
538 |
|
538 |
void CDBrowser::updateAlphamap(const string& tt)
|
539 |
void CDBrowser::updateAlphamap(char& curinitial, const string& tt)
|
539 |
{
|
540 |
{
|
540 |
char ninit = ::toupper(tt[0]);
|
541 |
char ninit = ::toupper(tt[0]);
|
541 |
if (ninit != m_curinitial) {
|
542 |
if (ninit != curinitial && ninit >= 'A' && ninit <= 'Z') {
|
542 |
m_alphamap[string(1, ninit)] = CTTitleStartMarker + tt;
|
543 |
m_alphamap[ninit] = CTTitleStartMarker + tt;
|
543 |
m_curinitial = ninit;
|
544 |
curinitial = ninit;
|
|
|
545 |
}
|
|
|
546 |
}
|
|
|
547 |
|
|
|
548 |
void CDBrowser::maybeShowAlphamap(unsigned int nct)
|
|
|
549 |
{
|
|
|
550 |
if (nct >= 40 && m_alphamap.size() > 1) {
|
|
|
551 |
string initials;
|
|
|
552 |
for (auto& ent: m_alphamap) {
|
|
|
553 |
if (ent.first >= 'A' && ent.first <= 'Z') {
|
|
|
554 |
initials += ent.first;
|
|
|
555 |
}
|
|
|
556 |
}
|
|
|
557 |
runJS("document.getElementById('alphalist').style.visibility = "
|
|
|
558 |
"'visible';");
|
|
|
559 |
qDebug() << "SETTING ALPHABET:" << initials.c_str();
|
|
|
560 |
runJS(QString("document.getElementById('alphalist').innerHTML = \"") +
|
|
|
561 |
alphalinks(initials) + QString("\";"));
|
|
|
562 |
} else {
|
|
|
563 |
runJS("document.getElementById('alphalist').style.visibility = "
|
|
|
564 |
"'hidden';");
|
544 |
}
|
565 |
}
|
545 |
}
|
566 |
}
|
546 |
|
567 |
|
547 |
void CDBrowser::onSliceAvailable(UPnPDirContent *dc)
|
568 |
void CDBrowser::onSliceAvailable(UPnPDirContent *dc)
|
548 |
{
|
569 |
{
|
|
... |
|
... |
558 |
m_entries.reserve(m_entries.size() + dc->m_containers.size() +
|
579 |
m_entries.reserve(m_entries.size() + dc->m_containers.size() +
|
559 |
dc->m_items.size());
|
580 |
dc->m_items.size());
|
560 |
|
581 |
|
561 |
for (auto& entry: dc->m_containers) {
|
582 |
for (auto& entry: dc->m_containers) {
|
562 |
//qDebug() << "Container: " << it->dump().c_str();;
|
583 |
//qDebug() << "Container: " << it->dump().c_str();;
|
563 |
updateAlphamap(entry.m_title);
|
|
|
564 |
m_entries.push_back(entry);
|
584 |
m_entries.push_back(entry);
|
565 |
html += CTToHtml(m_entries.size()-1, entry);
|
585 |
html += CTToHtml(m_entries.size()-1, entry);
|
566 |
}
|
|
|
567 |
if (m_entries.size() < 40) {
|
|
|
568 |
runJS("document.getElementById('alphalist').style.visibility = 'hidden';");
|
|
|
569 |
} else {
|
|
|
570 |
runJS("document.getElementById('alphalist').style.visibility = 'visible';");
|
|
|
571 |
}
|
586 |
}
|
572 |
QSettings settings;
|
587 |
QSettings settings;
|
573 |
int maxartlen = 0;
|
588 |
int maxartlen = 0;
|
574 |
if (settings.value("truncateartistindir").toBool()) {
|
589 |
if (settings.value("truncateartistindir").toBool()) {
|
575 |
maxartlen = settings.value("truncateartistlen").toInt();
|
590 |
maxartlen = settings.value("truncateartistlen").toInt();
|
|
... |
|
... |
664 |
QStringList qcrits = CSettingsStorage::getInstance()->getSortCrits();
|
679 |
QStringList qcrits = CSettingsStorage::getInstance()->getSortCrits();
|
665 |
for (int i = 0; i < qcrits.size(); i++) {
|
680 |
for (int i = 0; i < qcrits.size(); i++) {
|
666 |
sortcrits.push_back(qs2utf8s(qcrits[i]));
|
681 |
sortcrits.push_back(qs2utf8s(qcrits[i]));
|
667 |
}
|
682 |
}
|
668 |
}
|
683 |
}
|
669 |
if (m_entries.size() < 40) {
|
684 |
int nct = 0;
|
670 |
runJS("document.getElementById('alphalist').style.visibility = 'hidden';");
|
685 |
char curinitial = 0;
|
671 |
} else {
|
686 |
m_alphamap.clear();
|
672 |
runJS("document.getElementById('alphalist').style.visibility = 'visible';");
|
|
|
673 |
}
|
|
|
674 |
|
|
|
675 |
if (!sortcrits.empty()) {
|
687 |
if (!sortcrits.empty()) {
|
676 |
DirObjCmp cmpo(sortcrits);
|
688 |
DirObjCmp cmpo(sortcrits);
|
677 |
|
689 |
|
678 |
sort(m_entries.begin(), m_entries.end(), cmpo);
|
690 |
sort(m_entries.begin(), m_entries.end(), cmpo);
|
679 |
initContainerHtml();
|
691 |
initContainerHtml();
|
|
... |
|
... |
681 |
int maxartlen = 0;
|
693 |
int maxartlen = 0;
|
682 |
QSettings settings;
|
694 |
QSettings settings;
|
683 |
if (settings.value("truncateartistindir").toBool()) {
|
695 |
if (settings.value("truncateartistindir").toBool()) {
|
684 |
maxartlen = settings.value("truncateartistlen").toInt();
|
696 |
maxartlen = settings.value("truncateartistlen").toInt();
|
685 |
}
|
697 |
}
|
686 |
m_curinitial = 0;
|
|
|
687 |
for (unsigned i = 0; i < m_entries.size(); i++) {
|
698 |
for (unsigned i = 0; i < m_entries.size(); i++) {
|
688 |
if (m_entries[i].m_type == UPnPDirObject::container) {
|
699 |
if (m_entries[i].m_type == UPnPDirObject::container) {
|
689 |
updateAlphamap(m_entries[i].m_title);
|
700 |
updateAlphamap(curinitial, m_entries[i].m_title);
|
690 |
html += CTToHtml(i, m_entries[i]);
|
701 |
html += CTToHtml(i, m_entries[i]);
|
|
|
702 |
nct++;
|
691 |
} else {
|
703 |
} else {
|
692 |
html += ItemToHtml(i, m_entries[i], maxartlen);
|
704 |
html += ItemToHtml(i, m_entries[i], maxartlen);
|
693 |
}
|
705 |
}
|
694 |
}
|
706 |
}
|
695 |
appendHtml("entrylist", html);
|
707 |
appendHtml("entrylist", html);
|
|
|
708 |
} else {
|
|
|
709 |
for (unsigned i = 0; i < m_entries.size(); i++) {
|
|
|
710 |
if (m_entries[i].m_type == UPnPDirObject::container) {
|
|
|
711 |
updateAlphamap(curinitial, m_entries[i].m_title);
|
|
|
712 |
nct++;
|
|
|
713 |
}
|
696 |
}
|
714 |
}
|
|
|
715 |
}
|
|
|
716 |
maybeShowAlphamap(nct);
|
697 |
|
717 |
|
698 |
m_reader->wait();
|
718 |
m_reader->wait();
|
699 |
#ifdef USING_WEBENGINE
|
719 |
#ifdef USING_WEBENGINE
|
700 |
#warning tobedone
|
720 |
#warning tobedone
|
701 |
#else
|
721 |
#else
|