summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pages/recordings.ecpp62
-rw-r--r--po/ca_ES.po6
-rw-r--r--po/cs_CZ.po6
-rw-r--r--po/da_DK.po6
-rw-r--r--po/de_DE.po6
-rw-r--r--po/el_GR.po6
-rw-r--r--po/es_ES.po6
-rw-r--r--po/et_EE.po6
-rw-r--r--po/fi_FI.po6
-rw-r--r--po/fr_FR.po6
-rw-r--r--po/hr_HR.po6
-rw-r--r--po/hu_HU.po6
-rw-r--r--po/it_IT.po6
-rw-r--r--po/lt_LT.po6
-rw-r--r--po/nl_NL.po6
-rw-r--r--po/nn_NO.po6
-rw-r--r--po/pl_PL.po6
-rw-r--r--po/pt_PT.po6
-rw-r--r--po/ro_RO.po6
-rw-r--r--po/ru_RU.po6
-rw-r--r--po/sl_SI.po6
-rw-r--r--po/sv_SE.po6
-rw-r--r--po/tr_TR.po6
-rw-r--r--recman.cpp48
-rw-r--r--recman.h11
-rw-r--r--setup.cpp3
-rw-r--r--setup.h3
27 files changed, 250 insertions, 9 deletions
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;
</%pre>
<%args>
+ string sort;
string todel;
string diskinfo;
string deletions[];
@@ -30,12 +31,22 @@ using namespace std;
bool logged_in(false);
</%session>
<%request scope="page">
+ string currentSort;
string deleteResult;
</%request>
<%include>page_init.eh</%include>
<%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
<body>
<& pageelems.logo &>
<%cpp>
-if (! deleteResult.empty()) {
+if (!deleteResult.empty()) {
</%cpp>
<& menu active=("recordings") component=("recordings.delete_error") &>
<%cpp>
} else {
</%cpp>
- <& menu active=("recordings") &>
+ <& menu active=("recordings") component=("recordings.sort_options") &>
<%cpp>
}
</%cpp>
@@ -116,12 +127,21 @@ if (! deleteResult.empty()) {
RecordingsTreePtr recordingsTree(LiveRecordingsManager()->GetRecordingsTree());
RecordingsMap::iterator iter;
RecordingsMap::iterator end = recordingsTree->end(path);
+list<RecordingsItemPtr> recItems;
+list<RecordingsItemPtr>::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;
</%cpp>
<li class="recording">
<& 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>
- </ul>
+ </ul>
</li>
<%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<string, int>(day.length() - 1) + ".25em;");
string duration(LiveSetup().GetShowRecDuration() ? "(" + lexical_cast<string, int>(recItem->Duration()) + "')" : "");
@@ -157,15 +190,25 @@ for (iter = recordingsTree->begin(path); iter != end; ++iter) {
</%cpp>
<li class="recording">
<& 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())) &>
- </li>
+ </li>
<%cpp>
- }
}
</%cpp>
</%def>
<# ---------------------------------------------------------------------- #>
+<%def sort_options>
+<%cpp> { </%cpp>
+<a href="recordings.html?sort=name" alt="" /><$ tr("Sort by name") $></a>
+<span class="sep">|</span>
+<a href="recordings.html?sort=date" alt="" /><$ tr("Sort by date") $></a>
+<br/>
+<%cpp> } </%cpp>
+</%def>
+
+<# ---------------------------------------------------------------------- #>
+
<%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; } </%cpp>
</%def>
diff --git a/po/ca_ES.po b/po/ca_ES.po
index 40d3f67..41a06bf 100644
--- a/po/ca_ES.po
+++ b/po/ca_ES.po
@@ -700,6 +700,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/cs_CZ.po b/po/cs_CZ.po
index c4d7d07..fce915b 100644
--- a/po/cs_CZ.po
+++ b/po/cs_CZ.po
@@ -698,6 +698,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/da_DK.po b/po/da_DK.po
index 12476c5..5b9cec4 100644
--- a/po/da_DK.po
+++ b/po/da_DK.po
@@ -698,6 +698,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/de_DE.po b/po/de_DE.po
index 22f91be..786d18b 100644
--- a/po/de_DE.po
+++ b/po/de_DE.po
@@ -700,6 +700,12 @@ msgstr "Keine Aufnahmen vorhanden"
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr "Diese Aufnahme von der Festplatte löschen!"
diff --git a/po/el_GR.po b/po/el_GR.po
index 73f2bbf..5a307b2 100644
--- a/po/el_GR.po
+++ b/po/el_GR.po
@@ -698,6 +698,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/es_ES.po b/po/es_ES.po
index ca5e239..5b84d12 100644
--- a/po/es_ES.po
+++ b/po/es_ES.po
@@ -698,6 +698,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/et_EE.po b/po/et_EE.po
index 2d72264..098b55e 100644
--- a/po/et_EE.po
+++ b/po/et_EE.po
@@ -698,6 +698,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/fi_FI.po b/po/fi_FI.po
index 8da804a..2b72a66 100644
--- a/po/fi_FI.po
+++ b/po/fi_FI.po
@@ -698,6 +698,12 @@ msgstr "Tallenteita ei löydy"
msgid "Delete selected"
msgstr "Poista valitut"
+msgid "Sort by name"
+msgstr "Järjestä nimen mukaan"
+
+msgid "Sort by date"
+msgstr "Järjestä päivämäärän mukaan"
+
msgid "Delete this recording from hard disc!"
msgstr "Poista tallenne kovalevyltä!"
diff --git a/po/fr_FR.po b/po/fr_FR.po
index 82f3e08..342d6ac 100644
--- a/po/fr_FR.po
+++ b/po/fr_FR.po
@@ -719,6 +719,12 @@ msgstr "Pas d'enregistrement"
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/hr_HR.po b/po/hr_HR.po
index c3446b9..827da04 100644
--- a/po/hr_HR.po
+++ b/po/hr_HR.po
@@ -699,6 +699,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/hu_HU.po b/po/hu_HU.po
index a04971c..4d15ae3 100644
--- a/po/hu_HU.po
+++ b/po/hu_HU.po
@@ -699,6 +699,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/it_IT.po b/po/it_IT.po
index f9b098c..32295e4 100644
--- a/po/it_IT.po
+++ b/po/it_IT.po
@@ -704,6 +704,12 @@ msgstr "Nessuna registrazione trovata"
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr "Elimina questa registrazione dal disco fisso!"
diff --git a/po/lt_LT.po b/po/lt_LT.po
index 377e0ee..f5fecd9 100644
--- a/po/lt_LT.po
+++ b/po/lt_LT.po
@@ -699,6 +699,12 @@ msgstr "Įrašų nėra"
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr "Ištrinti šį įrašą iš disko!"
diff --git a/po/nl_NL.po b/po/nl_NL.po
index 9257518..6ea7947 100644
--- a/po/nl_NL.po
+++ b/po/nl_NL.po
@@ -715,6 +715,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/nn_NO.po b/po/nn_NO.po
index be3fe5e..51278a1 100644
--- a/po/nn_NO.po
+++ b/po/nn_NO.po
@@ -699,6 +699,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/pl_PL.po b/po/pl_PL.po
index aae24b7..a61bd9b 100644
--- a/po/pl_PL.po
+++ b/po/pl_PL.po
@@ -698,6 +698,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/pt_PT.po b/po/pt_PT.po
index 4d23aca..135d479 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -698,6 +698,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/ro_RO.po b/po/ro_RO.po
index be02c5c..c0021ef 100644
--- a/po/ro_RO.po
+++ b/po/ro_RO.po
@@ -699,6 +699,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/ru_RU.po b/po/ru_RU.po
index a32c64a..52e8e3c 100644
--- a/po/ru_RU.po
+++ b/po/ru_RU.po
@@ -698,6 +698,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/sl_SI.po b/po/sl_SI.po
index 01f8687..08a3a2c 100644
--- a/po/sl_SI.po
+++ b/po/sl_SI.po
@@ -699,6 +699,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/sv_SE.po b/po/sv_SE.po
index 14d3ac1..669d58f 100644
--- a/po/sv_SE.po
+++ b/po/sv_SE.po
@@ -699,6 +699,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/po/tr_TR.po b/po/tr_TR.po
index a13eef9..cc63bfc 100644
--- a/po/tr_TR.po
+++ b/po/tr_TR.po
@@ -699,6 +699,12 @@ msgstr ""
msgid "Delete selected"
msgstr ""
+msgid "Sort by name"
+msgstr ""
+
+msgid "Sort by date"
+msgstr ""
+
msgid "Delete this recording from hard disc!"
msgstr ""
diff --git a/recman.cpp b/recman.cpp
index db2d5fc..e9150b6 100644
--- a/recman.cpp
+++ b/recman.cpp
@@ -282,6 +282,54 @@ namespace vdrlive {
/**
+ * Implemetation of class RecordingsItemPtrCompare
+ */
+ bool RecordingsItemPtrCompare::ByAscendingDate(RecordingsItemPtr & first, RecordingsItemPtr & second)
+ {
+ if (first->StartTime() < second->StartTime())
+ return true;
+ return false;
+ }
+
+ bool RecordingsItemPtrCompare::ByDescendingDate(RecordingsItemPtr & first, RecordingsItemPtr & second)
+ {
+ if (first->StartTime() < second->StartTime())
+ return false;
+ return true;
+ }
+
+ bool RecordingsItemPtrCompare::ByAscendingName(RecordingsItemPtr & first, RecordingsItemPtr & second)
+ {
+ unsigned int i = 0;
+ while (i < first->Name().length() && i < second->Name().length()) {
+ if (tolower((first->Name())[i]) < tolower((second->Name())[i]))
+ return true;
+ else if (tolower((first->Name())[i]) > tolower((second->Name())[i]))
+ return false;
+ ++i;
+ }
+ if (first->Name().length() < second->Name().length())
+ return true;
+ return false;
+ }
+
+ bool RecordingsItemPtrCompare::ByDescendingName(RecordingsItemPtr & first, RecordingsItemPtr & second)
+ {
+ unsigned int i = 0;
+ while (i < first->Name().length() && i < second->Name().length()) {
+ if (tolower((second->Name())[i]) < tolower((first->Name())[i]))
+ return true;
+ else if (tolower((second->Name())[i]) > tolower((first->Name())[i]))
+ return false;
+ ++i;
+ }
+ if (second->Name().length() < first->Name().length())
+ return true;
+ return false;
+ }
+
+
+ /**
* Implementation of class RecordingsItem:
*/
RecordingsItem::RecordingsItem(string const & name, RecordingsItemPtr parent) :
diff --git a/recman.h b/recman.h
index dc766ed..a23e958 100644
--- a/recman.h
+++ b/recman.h
@@ -130,6 +130,17 @@ namespace vdrlive {
cThreadLock m_recordingsLock;
};
+ /**
+ * Class containing possible recordings compare functions
+ */
+ class RecordingsItemPtrCompare
+ {
+ public:
+ static bool ByAscendingDate(RecordingsItemPtr & first, RecordingsItemPtr & second);
+ static bool ByDescendingDate(RecordingsItemPtr & first, RecordingsItemPtr & second);
+ static bool ByAscendingName(RecordingsItemPtr & first, RecordingsItemPtr & second);
+ static bool ByDescendingName(RecordingsItemPtr & first, RecordingsItemPtr & second);
+ };
/**
* Base class for entries in recordings tree and recordings list.
diff --git a/setup.cpp b/setup.cpp
index be61b1e..a8dfccd 100644
--- a/setup.cpp
+++ b/setup.cpp
@@ -40,6 +40,7 @@ Setup::Setup():
m_scheduleDuration( "8" ),
m_theme("marine"),
m_lastwhatsonlistmode("detail"),
+ m_lastsortingmode("nameasc"),
m_tntnetloglevel("WARN"),
m_showRecDuration(1),
m_showLogo(1),
@@ -129,6 +130,7 @@ bool Setup::ParseSetupEntry( char const* name, char const* value )
else if ( strcmp( name, "Theme" ) == 0 ) m_theme = value;
else if ( strcmp( name, "LocalNetMask" ) == 0 ) { m_localnetmask = value; }
else if ( strcmp( name, "LastWhatsOnListMode" ) == 0 ) { m_lastwhatsonlistmode = value; }
+ else if ( strcmp( name, "LastSortingMode" ) == 0 ) { m_lastsortingmode = value; }
else if ( strcmp( name, "ShowRecDuration" ) == 0 ) { m_showRecDuration = atoi(value); }
else if ( strcmp( name, "ShowLogo" ) == 0 ) { m_showLogo = atoi(value); }
else if ( strcmp( name, "UseAjax" ) == 0 ) { m_useAjax = atoi(value); }
@@ -297,6 +299,7 @@ bool Setup::SaveSetup()
liveplugin->SetupStore("StartPage", m_startscreen.c_str());
liveplugin->SetupStore("Theme", m_theme.c_str());
liveplugin->SetupStore("LastWhatsOnListMode", m_lastwhatsonlistmode.c_str());
+ liveplugin->SetupStore("LastSortingMode", m_lastsortingmode.c_str());
liveplugin->SetupStore("ShowRecDuration", m_showRecDuration);
liveplugin->SetupStore("ShowLogo", m_showLogo);
liveplugin->SetupStore("UseAjax", m_useAjax);
diff --git a/setup.h b/setup.h
index 0fcbd17..e6841d4 100644
--- a/setup.h
+++ b/setup.h
@@ -53,6 +53,7 @@ class Setup
std::string const GetLocalNetMask() const { return m_localnetmask; };
bool GetIsLocalNet() const { return m_islocalnet; };
std::string const GetLastWhatsOnListMode() const { return m_lastwhatsonlistmode; }
+ std::string const GetLastSortingMode() const { return m_lastsortingmode; }
std::string const GetTntnetLogLevel() const { return m_tntnetloglevel; }
bool GetShowRecDuration() const { return m_showRecDuration != 0; }
bool GetShowLogo() const { return m_showLogo != 0; }
@@ -78,6 +79,7 @@ class Setup
void SetLocalNetMask(std::string const & localnetmask) { m_localnetmask = localnetmask; }
void SetIsLocalNet(bool islocalnet) { m_islocalnet = islocalnet; }
void SetLastWhatsOnListMode(std::string const & mode) { m_lastwhatsonlistmode = mode; SaveSetup(); }
+ void SetLastSortingMode(std::string const & mode) { m_lastsortingmode = mode; SaveSetup(); }
void SetShowRecDuration(bool show) { m_showRecDuration = show ? 1 : 0; }
void SetShowLogo(bool show) { m_showLogo = show ? 1 : 0; }
void SetUseAjax(bool use) { m_useAjax = use ? 1 : 0; }
@@ -132,6 +134,7 @@ class Setup
std::string m_localnetmask;
bool m_islocalnet;
std::string m_lastwhatsonlistmode;
+ std::string m_lastsortingmode;
std::string m_tntnetloglevel;
int m_showRecDuration;
int m_showLogo;