From 36485b88308aef886c2b99f07d574e4962d1969b Mon Sep 17 00:00:00 2001 From: Rolf Ahrenberg Date: Thu, 10 Feb 2011 13:14:57 +0200 Subject: Added support for sorting recordings by name and date in both ascending and descending orders. --- pages/recordings.ecpp | 62 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 53 insertions(+), 9 deletions(-) (limited to 'pages') diff --git a/pages/recordings.ecpp b/pages/recordings.ecpp index b6630d1..d213b54 100644 --- a/pages/recordings.ecpp +++ b/pages/recordings.ecpp @@ -22,6 +22,7 @@ using namespace std; <%args> + string sort; string todel; string diskinfo; string deletions[]; @@ -30,12 +31,22 @@ using namespace std; bool logged_in(false); <%request scope="page"> + string currentSort; string deleteResult; <%include>page_init.eh <%cpp> if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html"); +currentSort = LiveSetup().GetLastSortingMode(); +if (!sort.empty()) { + if (sort == "date") + currentSort = (currentSort == "dateasc") ? "datedesc" : "dateasc"; + else if (sort == "name") + currentSort = (currentSort == "nameasc") ? "namedesc" : "nameasc"; + LiveSetup().SetLastSortingMode(currentSort); +} + pageTitle = tr("Recordings"); deleteResult = ""; @@ -70,13 +81,13 @@ diskinfo = cString::sprintf("%s %d%% - %2d:%02d %s", trVDR("Disk"), Percent, H <& pageelems.logo &> <%cpp> -if (! deleteResult.empty()) { +if (!deleteResult.empty()) { <& menu active=("recordings") component=("recordings.delete_error") &> <%cpp> } else { - <& menu active=("recordings") &> + <& menu active=("recordings") component=("recordings.sort_options") &> <%cpp> } @@ -116,12 +127,21 @@ if (! deleteResult.empty()) { RecordingsTreePtr recordingsTree(LiveRecordingsManager()->GetRecordingsTree()); RecordingsMap::iterator iter; RecordingsMap::iterator end = recordingsTree->end(path); +list recItems; +list::iterator recIter; for (iter = recordingsTree->begin(path); iter != end; ++iter) { RecordingsItemPtr recItem = iter->second; - string folderimg("folder_closed.png"); - string collapseimg("plus.png"); if (recItem->IsDir()) { + recItems.push_back(recItem); + } +} +if (currentSort == "namedesc") + recItems.sort(RecordingsItemPtrCompare::ByDescendingName); +else + recItems.sort(RecordingsItemPtrCompare::ByAscendingName); +for (recIter = recItems.begin(); recIter != recItems.end(); ++recIter) { + RecordingsItemPtr recItem = *recIter;
  • <& rec_item_dir name=(recItem->Name()) level=(level) &> @@ -141,14 +161,27 @@ for (iter = recordingsTree->begin(path); iter != end; ++iter) { <%cpp> callComp("recordings.recordings_item", request, reply, recItemParams); - +
  • <%cpp> - } } +recItems.clear(); for (iter = recordingsTree->begin(path); iter != end; ++iter) { RecordingsItemPtr recItem = iter->second; - if (!recItem->IsDir()) { + if (!recItem->IsDir()) { + recItems.push_back(recItem); + } +} +if (currentSort == "dateasc") + recItems.sort(RecordingsItemPtrCompare::ByAscendingDate); +else if (currentSort == "datedesc") + recItems.sort(RecordingsItemPtrCompare::ByDescendingDate); +else if (currentSort == "namedesc") + recItems.sort(RecordingsItemPtrCompare::ByDescendingName); +else + recItems.sort(RecordingsItemPtrCompare::ByAscendingName); +for (recIter = recItems.begin(); recIter != recItems.end(); ++recIter) { + RecordingsItemPtr recItem = *recIter; string day(FormatDateTime("%a,", recItem->StartTime())); string dayLen(lexical_cast(day.length() - 1) + ".25em;"); string duration(LiveSetup().GetShowRecDuration() ? "(" + lexical_cast(recItem->Duration()) + "')" : ""); @@ -157,15 +190,25 @@ for (iter = recordingsTree->begin(path); iter != end; ++iter) {
  • <& rec_item_file name=(recItem->Name()) level=(level) id=(recItem->Id()) day=(day) dayLen=(dayLen) startTime=(recItem->StartTime()) duration=(duration) hint=(hint) shortDescr=(shortDescr) archived=(RecordingsManager::GetArchiveDescr(recItem->Recording())) &> -
  • + <%cpp> - } } <# ---------------------------------------------------------------------- #> +<%def sort_options> +<%cpp> { +<$ tr("Sort by name") $> +| +<$ tr("Sort by date") $> +
    +<%cpp> } + + +<# ---------------------------------------------------------------------- #> + <%def del_rec> <%args> string id; @@ -281,5 +324,6 @@ for (iter = recordingsTree->begin(path); iter != end; ++iter) { <# ---------------------------------------------------------------------- #> <%def delete_error> +<& recordings.sort_options &> <%cpp> { reply.out() << deleteResult; } -- cgit v1.2.3