Index: mythtv/programs/mythfrontend/playbackbox.cpp =================================================================== --- mythtv/programs/mythfrontend/playbackbox.cpp (revision 20130) +++ mythtv/programs/mythfrontend/playbackbox.cpp (working copy) @@ -877,7 +877,6 @@ QString tempShortDate = ((*it)->recstartts).toString(m_formatShortDate); QString tempLongDate = ((*it)->recstartts).toString(m_formatLongDate); - QString tempTime = ((*it)->recstartts).toString(m_formatTime); QString state = ((*it)->recstatus == rsRecording) ? QString("running") : QString::null; @@ -903,7 +902,8 @@ (*it)->ToMap(infoMap); item->SetTextFromMap(infoMap, state); - item->SetText(tempSubTitle, "titlesubtitle", state); + if (groupname == (*it)->title.toLower()) + item->SetText(tempSubTitle, "titlesubtitle", state); item->SetText(tempLongDate, "longdate", state); item->SetText(tempShortDate, "shortdate", state); @@ -1486,9 +1486,6 @@ else showAvailablePopup(pginfo); - if (m_player) - { - } } void PlaybackBox::stopSelected() @@ -1511,19 +1508,26 @@ if (!pginfo) return; + if (m_delItem) + { + delete m_delItem; + m_delItem = NULL; + } + + m_delItem = new ProgramInfo(*pginfo); + bool undelete_possible = gContext->GetNumSetting("AutoExpireInsteadOfDelete", 0); if (pginfo->recgroup == "Deleted" && undelete_possible) { - m_delItem = pginfo; - doRemove(pginfo, false, false); + doRemove(m_delItem, false, false); } - else if ((pginfo->availableStatus != asPendingDelete) && - (REC_CAN_BE_DELETED(pginfo))) - askDelete(pginfo); + else if ((m_delItem->availableStatus != asPendingDelete) && + (REC_CAN_BE_DELETED(m_delItem))) + askDelete(); else - showAvailablePopup(pginfo); + showAvailablePopup(m_delItem); } void PlaybackBox::upcoming() @@ -1763,34 +1767,42 @@ bool PlaybackBox::doRemove(ProgramInfo *rec, bool forgetHistory, bool forceMetadataDelete) { - m_delItem = NULL; + ProgramInfo *delItem = findMatchingProg(rec); - if (!rec) + if (!delItem) return false; if (!forceMetadataDelete && - ((rec->availableStatus == asPendingDelete) || - (!REC_CAN_BE_DELETED(rec)))) + ((delItem->availableStatus == asPendingDelete) || + (!REC_CAN_BE_DELETED(delItem)))) { - showAvailablePopup(rec); + showAvailablePopup(m_delItem); return false; } - if (m_playList.filter(rec->MakeUniqueKey()).size()) - togglePlayListItem(rec); + if (m_playList.filter(delItem->MakeUniqueKey()).size()) + togglePlayListItem(delItem); if (!forceMetadataDelete) - rec->UpdateLastDelete(true); + delItem->UpdateLastDelete(true); - bool result = RemoteDeleteRecording(rec, forgetHistory, forceMetadataDelete); + bool result = RemoteDeleteRecording(delItem, forgetHistory, + forceMetadataDelete); if (result) { - rec->availableStatus = asPendingDelete; - m_recordingList->RemoveItem(m_recordingList->GetItemCurrent()); + delItem->availableStatus = asPendingDelete; + m_recordingList->RemoveItem( + m_recordingList->GetItemByData(qVariantFromValue(delItem))); + + if (m_delItem) + { + delete m_delItem; + m_delItem = NULL; + } } else if (!forceMetadataDelete) - showDeletePopup(rec, ForceDeleteRecording); + showDeletePopup(ForceDeleteRecording); return result; } @@ -1836,7 +1848,7 @@ } } -void PlaybackBox::showDeletePopup(ProgramInfo *program, deletePopupType types) +void PlaybackBox::showDeletePopup(deletePopupType types) { if (m_popupMenu) return; @@ -1854,7 +1866,8 @@ label = tr("Are you sure you want to stop:"); break; } - m_delItem = CurrentItem(); + if (!m_delItem) + m_delItem = new ProgramInfo(*(CurrentItem())); popupString(m_delItem, label); @@ -1878,8 +1891,7 @@ const char *tmpslot = NULL; if ((types == DeleteRecording) && - (program->IsSameProgram(*program)) && - (program->recgroup != "LiveTV")) + (m_delItem->recgroup != "LiveTV")) { tmpmessage = tr("Yes, and allow re-record"); tmpslot = SLOT(doDeleteForgetHistory()); @@ -1905,7 +1917,7 @@ bool defaultIsYes = true; if ((types == DeleteRecording) || (types == ForceDeleteRecording) || - (!program->GetAutoExpireFromRecorded())) + (!m_delItem->GetAutoExpireFromRecorded())) defaultIsYes = false; m_popupMenu->AddButton(tmpmessage, tmpslot, false, defaultIsYes); @@ -2584,7 +2596,16 @@ void PlaybackBox::askStop(void) { ProgramInfo *pginfo = CurrentItem(); - showDeletePopup(pginfo, StopRecording); + + if (m_delItem) + { + delete m_delItem; + m_delItem = NULL; + } + + m_delItem = new ProgramInfo(*pginfo); + + showDeletePopup(StopRecording); } void PlaybackBox::doStop(void) @@ -2731,11 +2752,17 @@ } } -void PlaybackBox::askDelete(ProgramInfo *pginfo) +void PlaybackBox::askDelete() { - if (!pginfo) - pginfo = CurrentItem(); - showDeletePopup(pginfo, DeleteRecording); + if (m_delItem) + { + delete m_delItem; + m_delItem = NULL; + } + + m_delItem = new ProgramInfo(*(CurrentItem())); + + showDeletePopup(DeleteRecording); } void PlaybackBox::doPlaylistDelete(void) Index: mythtv/programs/mythfrontend/playbackbox.h =================================================================== --- mythtv/programs/mythfrontend/playbackbox.h (revision 20130) +++ mythtv/programs/mythfrontend/playbackbox.h (working copy) @@ -177,7 +177,7 @@ void doEditScheduled(); void doAllowRerecord(); - void askDelete(ProgramInfo *pginfo = NULL); + void askDelete(); void doUndelete(); void doDelete(); void doDeleteForgetHistory(); @@ -281,7 +281,7 @@ const QString &recstartts); bool doRemove(ProgramInfo *, bool forgetHistory, bool forceMetadataDelete); - void showDeletePopup(ProgramInfo *, deletePopupType); + void showDeletePopup(deletePopupType); void showActionPopup(ProgramInfo *program); void showFileNotFoundActionPopup(ProgramInfo *program); void popupString(ProgramInfo *program, QString &message);