Ticket #3711: mythvideo-bookmark.patch

File mythvideo-bookmark.patch, 3.6 KB (added by maverik044, 17 years ago)
  • programs/mythfrontend/main.cpp

    old new int internal_play_media(const QString &m 
    585585   
    586586    pginfo->title = title;
    587587
     588    long long pos = 0;
     589
    588590    if (pginfo->pathname.startsWith("dvd:"))
    589591    {
    590592        bool allowdvdbookmark = gContext->GetNumSetting("EnableDVDBookmark", 0);
    591593        pginfo->setIgnoreBookmark(!allowdvdbookmark);
    592         if (allowdvdbookmark &&
    593             gContext->GetNumSetting("DVDBookmarkPrompt", 0))
     594        if (allowdvdbookmark && gContext->GetNumSetting("DVDBookmarkPrompt", 0))
    594595        {
    595596            RingBuffer *tmprbuf = new RingBuffer(pginfo->pathname, false);
     597           
     598            if (!tmprbuf)
     599            {
     600                delete pginfo;
     601                return res;             
     602            }
     603           
    596604            QString name;
    597605            QString serialid;
    598             if (tmprbuf->isDVD() &&
    599                  tmprbuf->DVD()->GetNameAndSerialNum(name, serialid))
     606            if (tmprbuf->isDVD() && tmprbuf->DVD()->GetNameAndSerialNum(name, serialid))
    600607            {
    601608                QStringList fields = pginfo->GetDVDBookmark(serialid, false);
    602609                if (!fields.empty())
    603610                {
    604611                    QStringList::Iterator it = fields.begin();
    605                     long long pos = (long long)(atoi((*++it).ascii()) & 0xffffffffLL);
    606                     if (pos > 0)
    607                     {
    608                         QString msg = QString("DVD contains a bookmark");
    609                         QString button1msg = QString("Play from bookmark");
    610                         QString button2msg = QString("Play from beginning");
    611        
    612                         int ret = MythPopupBox::show2ButtonPopup(gContext->GetMainWindow(),
    613                                                             "", msg,
    614                                                             button1msg,
    615                                                             button2msg,
    616                                                             1);
    617                         if (ret == 1)
    618                             pginfo->setIgnoreBookmark(true);
    619                         else if (ret == -1)
    620                         {
    621                             delete tmprbuf;
    622                             delete pginfo;
    623                             return res;
    624                         }
    625                     }
     612                    pos = (long long)(atoi((*++it).ascii()) & 0xffffffffLL);
    626613                }
    627614            }
    628615            delete tmprbuf;
    629616        }
    630617    }
     618    else
     619    {
     620        bool allowdvdbookmark = gContext->GetNumSetting("EnableDVDBookmark", 0);
     621        pginfo->setIgnoreBookmark(!allowdvdbookmark);
     622        if (allowdvdbookmark && gContext->GetNumSetting("DVDBookmarkPrompt", 0))
     623            pos = pginfo->GetBookmark();
     624    }
     625
     626    if (pos > 0)
     627    {
     628        QString msg;
     629        QString button1msg = QString("Play from bookmark");
     630        QString button2msg = QString("Play from beginning");
     631       
     632        if (pginfo->pathname.startsWith("dvd:"))
     633           msg = QString("DVD contains a bookmark");
     634        else
     635           msg = QString("Video contains a bookmark");
     636
     637        int ret = MythPopupBox::show2ButtonPopup(gContext->GetMainWindow(),
     638                                                 "", msg, button1msg, button2msg, 1);
     639        if (ret == 1)
     640           pginfo->setIgnoreBookmark(true);
     641        else if (ret == -1)
     642        {
     643           delete pginfo;
     644           return res;
     645        }
     646    }
    631647
    632648    TV::StartTV(pginfo);
    633649