Switch to unified view

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