]> git.vomp.tv Git - vompclient.git/commitdiff
UI feedback for recording: mark as new
authorChris Tallon <chris@vomp.tv>
Fri, 4 Oct 2019 17:26:15 +0000 (18:26 +0100)
committerChris Tallon <chris@vomp.tv>
Fri, 4 Oct 2019 17:26:15 +0000 (18:26 +0100)
message.h
recinfo.cc
recinfo.h
recording.cc
recording.h
vrecording.cc
vrecording.h
vrecordinglist.cc

index ccddee02c994d3d3f521c5cad44a07e31de48b9b..d6a124c8e94398e5b24dac1592166b6dcadeea46 100644 (file)
--- a/message.h
+++ b/message.h
@@ -1,5 +1,5 @@
 /*
-    Copyright 2004-2005 Chris Tallon
+    Copyright 2004-2019 Chris Tallon
 
     This file is part of VOMP.
 
@@ -82,6 +82,7 @@ class Message
     const static ULONG MOUSE_SCROLL = 35;
     const static ULONG NEW_PICTURE = 36;
     const static ULONG NEW_PICTURE_STATIC = 37;
+    const static ULONG REDRAW = 38;
 
     const static ULONG HACK_MVP_RETURN_FROM_QUARTER = 999;
 };
index 1b7e2384f2e864f472711e70b4231e7bda422e46..45a34f0432cddd1415cd0e873b47b966323c6fbd 100644 (file)
@@ -156,10 +156,12 @@ bool RecInfo::hasNoVideo()
   return true;
 }
 
-char* RecInfo::buildSummaryWithDetails()
+char* RecInfo::buildSummaryWithDetails(bool forceRefresh)
 {
-  if (!summaryWithDetails)
+  if (!summaryWithDetails || forceRefresh)
   {
+    if (forceRefresh && summaryWithDetails) delete[] summaryWithDetails;
+
     Log* logger = Log::getInstance();
 
     int swdLength = strlen(summary) +
index 7180203468799dc3eb5e2e23d0de7a6c335b732c..195147ab62b17595cf8f1a4fbeff2e6326df79d9 100644 (file)
--- a/recinfo.h
+++ b/recinfo.h
@@ -64,7 +64,7 @@ class RecInfo
     void setNumComponents(ULONG);
     void addComponent(ULONG componentNum, UCHAR tstream, UCHAR ttype, char* tlanguage, char* tdescription);
     // addComponent accepts a pointer to a buffer that RecInfo will free, not the caller
-    char* buildSummaryWithDetails();
+    char* buildSummaryWithDetails(bool forceRefresh = false);
 
     void print();
 
index 6921c33f465c8223173336b60d67f4e24fc985fb..c1bcff9187e3cb33d3c9056df83f59caebeab8ad 100644 (file)
@@ -261,7 +261,7 @@ MarkList* Recording::getMarkList()
   return markList;
 }
 
-void Recording::resetResume()
+int Recording::resetResume()
 {
-  vdr->deleteRecResume(fileName);
+  return vdr->deleteRecResume(fileName);
 }
index 674061bd1dfc4562a4819e58f6d7ea8869068d8f..50ff7f2cf8052655cbf93c60721d951bf566db51 100644 (file)
@@ -49,7 +49,7 @@ class Recording
     void dropRecInfo();
 
     bool getNew() { return isNew; }
-    void resetResume();
+    int resetResume();
     bool isRadio(bool &h264);
     bool IsPesRecording;
 
index 48d78fb94c1d9f8004336bd9560503036e5f4a14..9a140285f5074e2642b01f9d9b4d8669a79d1551 100644 (file)
@@ -78,18 +78,18 @@ VRecording::VRecording(RecMan* trecman, Recording* trec)
 
 
 
+  epgSummaryTextBox = new WTextbox();
 
-  WTextbox * summary=new WTextbox();
-  summary->setParaMode(true);
+  epgSummaryTextBox->setParaMode(true);
 
   if (rec->recInfo)
-    summary->setText(rec->recInfo->buildSummaryWithDetails());
+    epgSummaryTextBox->setText(rec->recInfo->buildSummaryWithDetails());
   else
-    summary->setText(tr("Summary unavailable"));
+    epgSummaryTextBox->setText(tr("Summary unavailable"));
 
   OsdVector *osdv=dynamic_cast<OsdVector*>(Osd::getInstance());
 
-  tabbar.addTab(tr("EPG"), summary);
+  tabbar.addTab(tr("EPG"), epgSummaryTextBox);
   if (rec->movieInfo) {
          WMovieView *movieview = new WMovieView(rec->movieInfo);
          movieview->setParaMode(true);
@@ -243,7 +243,49 @@ int VRecording::handleCommand(int command)
 
                        if (selected == MARKASNEW)
             {
-              rec->resetResume();
+              int ret = rec->resetResume();
+
+              VInfo* vi = new VInfo();
+              vi->setSize(400, 150);
+              vi->createBuffer();
+              vi->setExitable();
+              vi->setBorderOn(1);
+              vi->setTitleBarOn(0);
+
+              if (Video::getInstance()->getFormat() == Video::PAL)
+              vi->setPosition(170, 200);
+              else
+              vi->setPosition(160, 150);
+
+              if (ret == 1) vi->setOneLiner(tr("Success"));
+              else if (ret == 2) vi->setOneLiner(tr("No resume point exists"));
+              else if (ret == 4) vi->setOneLiner(tr("Failure deleting resume point"));
+              else if (ret == 5) vi->setOneLiner(tr("Not supported with VDR < 2.4.0"));
+              vi->draw();
+
+              Message* m = new Message();
+              m->message = Message::ADD_VIEW;
+              m->to = BoxStack::getInstance();
+              m->parameter.num = (ULONG)vi;
+              Command::getInstance()->postMessageNoLock(m);
+
+              if (ret == 1)
+              {
+                // Change Resume at text in summary
+                rec->recInfo->resumePoint = 0;
+                epgSummaryTextBox->setText(rec->recInfo->buildSummaryWithDetails(true));
+                draw();
+                BoxStack::getInstance()->update(this);
+
+                // Update vrecordingslist to remove the * for new
+                rec->setNew(true);
+                Message* m2 = new Message();
+                m2->from = this;
+                m2->to = vRecList;
+                m2->message = Message::REDRAW;
+                Command::getInstance()->postMessageNoLock(m2);
+              }
+
               return 2;
             }
 
index faf8d0dac0764a2c5d4d3ef75f59960ab3949928..9cab393e0e2ab407c25a4709d1c1a273b7ae356c 100644 (file)
@@ -51,6 +51,7 @@ class VRecording : public TBBoxx
     VRecordingList* vRecList;
     Recording* rec;
     WTabBar tabbar;
+    WTextbox* epgSummaryTextBox;
 
     enum Action { PLAY=0, RESUME, MARKASNEW, MOVE, A_DELETE, last };
     WButton button[last];
index b99b991aba2eaa12725e8c91880785985cc4f270..bbb0e87753a4d57f96d736f79a1082e07656f017 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright 2004-2007 Chris Tallon
+    Copyright 2004-2019 Chris Tallon
 
     This file is part of VOMP.
 
@@ -98,6 +98,11 @@ void VRecordingList::processMessage(Message* m)
   {
     doPlay(true);
   }
+  else if (m->message == Message::REDRAW)
+  {
+    draw();
+    BoxStack::getInstance()->update(this);
+  }
 }
 
 void VRecordingList::doDeleteSelected()