Ticket #3740: 026-sortupcoming.patch

File 026-sortupcoming.patch, 5.5 KB (added by cizek@…, 12 years ago)

Updated patch file

  • mythtv/programs/mythfrontend/viewscheduled.cpp

    diff -r -u -N -X diff.exclude -x myth.20018.0218a -x myth.20018.0218b myth.20018.0218a/mythtv/programs/mythfrontend/viewscheduled.cpp myth.20018.0218b/mythtv/programs/mythfrontend/viewscheduled.cpp
     
    5050    m_inFill = false;
    5151    m_needFill = false;
    5252
     53    m_curView = TIMESORT;
     54
    5355    m_curcard  = 0;
    5456    m_maxcard  = 0;
    5557    m_curinput = 0;
     
    151153            setShowAll(true);
    152154        else if (action == "2")
    153155            setShowAll(false);
     156        else if (action == "4")
     157        {
     158            if (m_curView == TIMESORT)
     159                m_curView = TIMESORTR;
     160            else
     161                m_curView = TIMESORT;
     162
     163            m_needFill = true;
     164        }
     165        else if (action == "5")
     166        {
     167            if (m_curView == TITLESORT)
     168                m_curView = TITLESORTR;
     169            else
     170                m_curView = TITLESORT;
     171
     172            m_needFill = true;
     173        }
     174
    154175        else if (action == "PREVVIEW" || action == "NEXTVIEW")
    155176            setShowAll(!m_showAll);
    156177        else if (action == "VIEWCARD")
     
    278299            m_currentGroup = m_defaultGroup;
    279300
    280301        plist = m_recgroupList[m_currentGroup];
     302        SortList(plist); // FIXME
    281303
    282304        int listPos = plist.count() - 1;
    283305        int i;
     
    313335        FillList();
    314336}
    315337
     338class pbTitleSortP
     339{
     340    public:
     341        pbTitleSortP(bool reverseSort = false) {m_reverse = reverseSort;}
     342
     343        bool operator()(const ProgramInfo *a, const ProgramInfo *b)
     344        {
     345            if (a->sortTitle == b->sortTitle)
     346            {
     347                if (a->programid == b->programid)
     348                    return (a->startts < b->startts);
     349                else
     350                    return (a->programid < b->programid);
     351            }
     352            else if (m_reverse)
     353                return (a->sortTitle > b->sortTitle);
     354            else
     355                return (a->sortTitle < b->sortTitle);
     356        }
     357
     358    private:
     359        bool m_reverse;
     360};
     361
     362class pbTimeSortP
     363{
     364    public:
     365        pbTimeSortP(bool reverseSort = false) {m_reverse = reverseSort;}
     366
     367        bool operator()(const ProgramInfo *a, const ProgramInfo *b)
     368        {
     369            if (m_reverse)
     370                return (a->startts > b->startts);
     371            else
     372                return (a->startts < b->startts);
     373        }
     374
     375    private:
     376        bool m_reverse;
     377};
     378
     379void ViewScheduled::SortList(ProgramList& plist)
     380{
     381  // Sort according to to 4/5 rules
     382
     383    vector<ProgramInfo *> sortedList;
     384
     385    ProgramList::iterator pit = plist.begin();
     386    while (pit != plist.end())
     387    {
     388        ProgramInfo *pginfo = *pit;
     389        if (!pginfo)
     390        {
     391            ++pit;
     392            continue;
     393        }
     394        QString title = pginfo->title;
     395        QString subtitle = pginfo->subtitle;
     396        title.remove(QRegExp("^(The |A |An )"));
     397        subtitle.remove(QRegExp("^(The |A |An )"));
     398        pginfo->sortTitle = title + subtitle;
     399        sortedList.push_back(pginfo);
     400        ++pit;
     401    }
     402
     403    if (m_curView == TIMESORTR)
     404        sort(sortedList.begin(), sortedList.end(), pbTimeSortP(true));
     405    else if (m_curView == TIMESORT)
     406        sort(sortedList.begin(), sortedList.end(), pbTimeSortP(false));
     407    else if (m_curView == TITLESORTR)
     408        sort(sortedList.begin(), sortedList.end(), pbTitleSortP(true));
     409    else
     410        sort(sortedList.begin(), sortedList.end(), pbTitleSortP(false));
     411
     412    plist.clear();
     413    vector<ProgramInfo *>::iterator i = sortedList.begin();
     414    for (; i != sortedList.end(); i++)
     415        plist.append(*i);
     416}
     417
    316418void ViewScheduled::FillList()
    317419{
    318420    m_schedulesList->Reset();
     
    333435
    334436    plist = m_recgroupList[m_currentGroup];
    335437
     438    SortList(plist);
     439
    336440    ProgramList::iterator pit = plist.begin();
    337441    while (pit != plist.end())
    338442    {
     
    453557    MythUIText *filterText = dynamic_cast<MythUIText*>(GetChild("filter"));
    454558    if (filterText)
    455559    {
     560        QString newtag;
     561
     562        if (m_curView == TIMESORT)
     563            newtag += tr("Time");
     564        else if (m_curView == TIMESORTR)
     565            newtag += tr("Desc Time");
     566        else if (m_curView == TITLESORT)
     567            newtag += tr("Title");
     568        else if (m_curView == TITLESORTR)
     569            newtag += tr("Desc Title");
     570
    456571        if (m_showAll)
    457             filterText->SetText(tr("All"));
     572            newtag += tr(" All");
    458573        else
    459             filterText->SetText(tr("Important"));
     574            newtag += tr(" Important");
     575
     576        filterText->SetText(newtag);
    460577    }
    461578}
    462579
  • mythtv/programs/mythfrontend/viewscheduled.h

    diff -r -u -N -X diff.exclude -x myth.20018.0218a -x myth.20018.0218b myth.20018.0218a/mythtv/programs/mythfrontend/viewscheduled.h myth.20018.0218b/mythtv/programs/mythfrontend/viewscheduled.h
     
    4646    void SwitchList(void);
    4747
    4848  private:
     49    enum SORTORDER {
     50        TIMESORT   = 0,
     51        TIMESORTR  = 1,
     52        TITLESORT  = 2,
     53        TITLESORTR = 3
     54    };
     55    void SortList(ProgramList&);
    4956    void FillList(void);
    5057    void LoadList(void);
    5158    void setShowAll(bool all);
     
    6774    MythUIButtonList *m_groupList;
    6875
    6976    bool m_showAll;
     77    enum SORTORDER m_curView;
    7078
    7179    bool m_inEvent;
    7280    bool m_inFill;