Ticket #171: mythtv.autoexpire-priority.171.diff

File mythtv.autoexpire-priority.171.diff, 8.8 KB (added by Robert Tsai <rtsai1111>, 19 years ago)
  • libs/libmythtv/scheduledrecording.h

     
    8484
    8585    void setStart(const QDateTime& start);
    8686    void setEnd(const QDateTime& end);
     87    int getRecPriority(void) const;
    8788    void setRecPriority(int recpriority);
    8889    void setRecGroup(const QString& recgroup);
    8990
  • libs/libmythtv/dbcheck.cpp

     
    1010#include "mythdbcon.h"
    1111
    1212/// This is the DB schema version expected by the running MythTV instance.
    13 const QString currentDatabaseVersion = "1090";
     13const QString currentDatabaseVersion = "1091";
    1414
    1515static bool UpdateDBVersionNumber(const QString &newnumber);
    1616static bool performActualUpdate(const QString updates[], QString version,
     
    19911991            return false;
    19921992    }
    19931993
     1994    if (dbver == "1090")
     1995    {
     1996        const QString updates[] = {
     1997            "ALTER TABLE recorded ADD COLUMN recpriority INT NOT NULL DEFAULT 0;",
     1998            ""
     1999        };
     2000       
     2001        if (!performActualUpdate(updates, "1091", dbver))
     2002            return false;
     2003
     2004        MSqlQuery recordids(MSqlQuery::InitCon());
     2005        recordids.prepare("SELECT recordid,recpriority FROM record;");
     2006        if (recordids.exec() && recordids.isActive() && recordids.size() > 0)
     2007        {
     2008            MSqlQuery update(MSqlQuery::InitCon());
     2009            while (recordids.next())
     2010            {
     2011                update.prepare(QString(
     2012                    "UPDATE recorded SET recpriority = %1 WHERE recordid = %2;")
     2013                    .arg(recordids.value(1).toInt())
     2014                    .arg(recordids.value(0).toInt()));
     2015                update.exec();
     2016            }
     2017        }
     2018    }
     2019
    19942020// Drop xvmc_buffer_settings at some point
    19952021// Drop dead DVB tables eventually, too   
    19962022   
     
    24802506    return true;
    24812507}
    24822508
     2509/* vim: set expandtab tabstop=4 shiftwidth=4: */
  • libs/libmythtv/programinfo.cpp

     
    704704                  "channel.callsign,channel.name,channel.commfree, "
    705705                  "channel.outputfilters,seriesid,programid,filesize, "
    706706                  "lastmodified,stars,previouslyshown,originalairdate, "
    707                   "hostname,recordid,transcoder,timestretch "
     707                  "hostname,recordid,transcoder,timestretch, "
     708                  "recorded.recpriority "
    708709                  "FROM recorded "
    709710                  "LEFT JOIN channel "
    710711                  "ON recorded.chanid = channel.chanid "
     
    765766        proginfo->programflags = proginfo->getProgramFlags();
    766767
    767768        proginfo->timestretch = query.value(21).toString().toFloat();
     769        proginfo->recpriority = query.value(22).toInt();
    768770
    769771        return proginfo;
    770772    }
     
    12281230                  " subtitle,description,hostname,category,recgroup,"
    12291231                  " autoexpire,recordid,seriesid,programid,stars,"
    12301232                  " previouslyshown,originalairdate,findid,transcoder,"
    1231                   " timestretch)"
     1233                  " timestretch,recpriority)"
    12321234                  " VALUES(:CHANID,:STARTS,:ENDS,:TITLE,:SUBTITLE,:DESC,"
    12331235                  " :HOSTNAME,:CATEGORY,:RECGROUP,:AUTOEXP,:RECORDID,"
    12341236                  " :SERIESID,:PROGRAMID,:STARS,:REPEAT,:ORIGAIRDATE,"
    1235                   " :FINDID,:TRANSCODER,:TIMESTRETCH);");
     1237                  " :FINDID,:TRANSCODER,:TIMESTRETCH,:RECPRIORITY);");
    12361238    query.bindValue(":CHANID", chanid);
    12371239    query.bindValue(":STARTS", starts);
    12381240    query.bindValue(":ENDS", ends);
     
    12521254    query.bindValue(":ORIGAIRDATE", originalAirDate);
    12531255    query.bindValue(":TRANSCODER", record->GetTranscoder());
    12541256    query.bindValue(":TIMESTRETCH", timestretch);
     1257    query.bindValue(":RECPRIORITY", record->getRecPriority());
    12551258
    12561259    if (!query.exec() || !query.isActive())
    12571260        MythContext::DBError("WriteRecordedToDB", query);
     
    35253528    else
    35263529        return 0;
    35273530}
     3531
     3532/* vim: set expandtab tabstop=4 shiftwidth=4: */
  • libs/libmythtv/scheduledrecording.cpp

     
    608609    endDate->setValue(end.date());
    609610}
    610611
     612int ScheduledRecording::getRecPriority(void) const {
     613    return recpriority->getValue().toInt();
     614}
     615
    611616void ScheduledRecording::setRecPriority(int newrecpriority) {
    612617    recpriority->setValue(newrecpriority);
    613618}
     
    774779    recgroup->setChanged();
    775780}
    776781
    777 
    778 
    779 
     782/* vim: set expandtab tabstop=4 shiftwidth=4: */
  • programs/mythfrontend/globalsettings.cpp

     
    514514    bc->setLabel(QObject::tr("Auto Expire Method"));
    515515    bc->addSelection(QObject::tr("None"), "0");
    516516    bc->addSelection(QObject::tr("Oldest Show First"), "1");
     517    bc->addSelection(QObject::tr("Lowest Priority First"), "2");
    517518    bc->setHelpText(QObject::tr("Method used to determine which recorded "
    518519                                "shows to delete first. Set to 'None' to "
    519520                                "disable Auto Expire (not recommended)."));
  • programs/mythbackend/autoexpire.cpp

     
    467467
    468468    switch(expMethod)
    469469    {
    470         case 1: FillOldestFirst(); break;
     470        case 1:
     471        case 2:
     472            FillOldestFirst(expMethod);
     473            break;
    471474
    472475        // default falls through so list is empty so no AutoExpire
    473476    }
     
    489492        if (first->subtitle != "")
    490493            title += ": \"" + first->subtitle + "\"";
    491494
    492         cout << title.local8Bit().leftJustify(40, ' ', true) << " "
     495        cout << title.local8Bit().leftJustify(39, ' ', true) << " "
     496             << QString("%1").arg(first->filesize / 1024 / 1024).local8Bit()
     497                .rightJustify(5, ' ', true) << "MiB  "
    493498             << first->startts.toString().local8Bit().leftJustify(24, ' ', true)
    494              << "  " << first->filesize / 1024 / 1024 << " MBytes"
     499             << " [" << QString("%1").arg(first->recpriority).local8Bit()
     500                .rightJustify(3, ' ', true) << "]"
    495501             << endl;
    496502    }
    497503}
     
    512518/** \fn AutoExpire::FillOldestFirst()
    513519 *  \brief Creates a list of programs to delete, with the oldest file listed first.
    514520 */
    515 void AutoExpire::FillOldestFirst(void)
     521void AutoExpire::FillOldestFirst(int expMethod)
    516522{
    517523    QString fileprefix = gContext->GetFilePrefix();
    518524
     525    QString orderby;
     526
     527    switch (expMethod)
     528    {
     529    default:
     530    case 1: // Oldest first
     531        orderby = "starttime ASC";
     532        break;
     533
     534    case 2: // Lowest priority first
     535        orderby = "recorded.recpriority ASC, starttime ASC";
     536        break;
     537    }
     538
    519539    MSqlQuery query(MSqlQuery::InitCon());
    520540    QString querystr = QString(
    521541               "SELECT recorded.chanid,starttime,endtime,title,subtitle, "
    522                "description,hostname,channum,name,callsign,seriesid,programid "
     542               "description,hostname,channum,name,callsign,seriesid,programid, "
     543               "recorded.recpriority "
    523544               "FROM recorded "
    524545               "LEFT JOIN channel ON recorded.chanid = channel.chanid "
    525546               "WHERE autoexpire > 0 "
    526                "ORDER BY autoexpire DESC, starttime ASC");
    527 
     547               "ORDER BY autoexpire DESC, %1")
     548        .arg(orderby);
     549   
    528550    query.prepare(querystr);
    529551
    530552    if (!query.exec() || !query.isActive() || !query.size())
     
    561583
    562584        proginfo->seriesid = query.value(10).toString();
    563585        proginfo->programid = query.value(11).toString();
     586        proginfo->recpriority = query.value(12).toInt();
    564587
    565588        proginfo->pathname = proginfo->GetRecordFilename(fileprefix);
    566589
  • programs/mythbackend/autoexpire.h

     
    3434  private:
    3535    void ExpireEpisodesOverMax(void);
    3636
    37     void FillOldestFirst(void);
     37    void FillOldestFirst(int expMethod);
    3838    void SendDeleteMessages(size_t, size_t);
    3939    void ClearExpireList(void);
    4040    void Sleep();