Ticket #7741: bookmarkdiag.patch

File bookmarkdiag.patch, 3.5 KB (added by Jonatan <mythtv@…>, 14 years ago)
  • main.cpp

     
    8181
    8282namespace
    8383{
     84    class BookmarkDialog : MythScreenType
     85    {
     86      public:
     87        BookmarkDialog(ProgramInfo *pginfo, MythScreenStack *parent) :
     88                MythScreenType(parent, "bookmarkdialog"),
     89                pgi(pginfo)
     90        {
     91        }
     92
     93        bool Create()
     94        {
     95            QString msg = QObject::tr("DVD/Video contains a bookmark");
     96            QString btn0msg = QObject::tr("Play from bookmark");
     97            QString btn1msg = QObject::tr("Play from beginning");
     98
     99            MythDialogBox *popup = new MythDialogBox(msg, GetScreenStack(), "bookmarkdialog");
     100            if (!popup->Create())
     101            {
     102                delete popup;
     103                return false;
     104            }
     105
     106            GetScreenStack()->AddScreen(popup);
     107
     108            popup->SetReturnEvent(this, "bookmarkdialog");
     109            popup->AddButton(btn0msg);
     110            popup->AddButton(btn1msg);
     111            return true;
     112        }
     113
     114        void customEvent(QEvent *event)
     115        {
     116            if (event->type() == kMythDialogBoxCompletionEventType)
     117            {
     118                DialogCompletionEvent *dce = dynamic_cast<DialogCompletionEvent*>(event);
     119                int buttonnum = dce->GetResult();
     120
     121                if (dce->GetId() == "bookmarkdialog")
     122                {
     123                    if (buttonnum == 1)
     124                        pgi->setIgnoreBookmark(true);
     125                    else if (buttonnum != 0)
     126                    {
     127                        delete pgi;
     128                        return;
     129                    }
     130
     131                    TV::StartTV(pgi);
     132
     133                    sleep(1);
     134                    delete pgi;
     135                }
     136            }
     137        }
     138
     139      private:
     140        ProgramInfo* pgi;
     141    };
     142
    84143    void cleanup()
    85144    {
    86145        delete exitPopup;
     
    711770                                        "Check if the video exists")
    712771                                        .arg(mrl.section("/", -1))
    713772                                        .arg(mrl.section("/", 0, -2));
    714         MythPopupBox::showOkPopup(gContext->GetMainWindow(),
    715                                     "Open Failed",
    716                                     errorText);
     773        ShowOkPopup(errorText);
    717774        return res;
    718775    }
    719776
     
    795852 
    796853    if (pos > 0)
    797854    {
    798         QString msg = QObject::tr("DVD/Video contains a bookmark");
    799         QString btn0msg = QObject::tr("Play from bookmark");
    800         QString btn1msg = QObject::tr("Play from beginning");
    801  
    802         DialogCode ret = MythPopupBox::Show2ButtonPopup(
    803             gContext->GetMainWindow(),
    804             "", msg,
    805             btn0msg,
    806             btn1msg,
    807             kDialogCodeButton0);
    808         if (kDialogCodeButton1 == ret)
    809             pginfo->setIgnoreBookmark(true);
    810         else if (kDialogCodeRejected == ret)
    811         {
    812             delete pginfo;
     855        MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
     856        BookmarkDialog *bookmarkdialog = new BookmarkDialog(pginfo, mainStack);
     857        if (!bookmarkdialog->Create())
     858        {
     859            delete bookmarkdialog;
    813860            return res;
    814         } 
     861        }
    815862    }
     863    else
     864    {
     865        TV::StartTV(pginfo);
    816866
    817     TV::StartTV(pginfo);
     867        res = 0;
    818868
    819     res = 0;
     869        sleep(1);
     870        delete pginfo;
     871    }
    820872
    821     sleep(1);
    822     delete pginfo;
    823 
    824873    return res;
    825874}
    826875