summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/ChangeLog4
-rw-r--r--epgsearch.cpp59
-rw-r--r--epgsearch.h53
-rw-r--r--epgsearch/services.h2
-rw-r--r--live/img/timerconflict.gifbin0 -> 2962 bytes
-rw-r--r--livefeatures.h2
-rw-r--r--pages/Makefile2
-rw-r--r--pages/menu.ecpp1
-rw-r--r--pages/timerconflicts.ecpp127
-rw-r--r--po/ca_ES.po14
-rw-r--r--po/cs_CZ.po14
-rw-r--r--po/da_DK.po14
-rw-r--r--po/de_DE.po17
-rw-r--r--po/el_GR.po14
-rw-r--r--po/es_ES.po14
-rw-r--r--po/et_EE.po14
-rw-r--r--po/fi_FI.po22
-rw-r--r--po/fr_FR.po22
-rw-r--r--po/hr_HR.po14
-rw-r--r--po/hu_HU.po14
-rw-r--r--po/it_IT.po22
-rw-r--r--po/nl_NL.po16
-rw-r--r--po/nn_NO.po14
-rw-r--r--po/pl_PL.po14
-rw-r--r--po/pt_PT.po14
-rw-r--r--po/ro_RO.po14
-rw-r--r--po/ru_RU.po14
-rw-r--r--po/sl_SI.po14
-rw-r--r--po/sv_SE.po14
-rw-r--r--po/tr_TR.po14
30 files changed, 483 insertions, 90 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 9fe02c2..aefb395 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,7 @@
+2008-02-07 Christian Wieninger <cwieninger at gmx dot de>
+
+ * new menu with timer conflicts
+
2008-02-07 Dieter Hametner <dh+vdr at gekrumbel dot de>
* buildutil/version-util: Further posix-ified the script.
diff --git a/epgsearch.cpp b/epgsearch.cpp
index d22c636..5a91c28 100644
--- a/epgsearch.cpp
+++ b/epgsearch.cpp
@@ -641,4 +641,63 @@ bool EPGSearchSetupValues::WriteValue(const std::string& entry, const std::strin
return service.handler->WriteSetupValue(entry, value);
}
+bool operator<( TimerConflict const& left, TimerConflict const& right )
+{
+ return left.conflictTime < right.conflictTime;
+}
+
+TimerConflict::TimerConflict()
+{
+ Init();
+}
+
+void TimerConflict::Init()
+{
+ conflictTime = 0;
+}
+
+TimerConflict::TimerConflict( string const& data )
+{
+ Init();
+ vector< string > parts = StringSplit( data, ':' );
+ try {
+ vector< string >::const_iterator part = parts.begin();
+ if (parts.size() > 0) {
+ conflictTime = lexical_cast< time_t >( *part++ );
+ for ( int i = 1; part != parts.end(); ++i, ++part ) {
+ vector< string > timerparts = StringSplit( *part, '|' );
+ vector< string >::const_iterator timerpart = timerparts.begin();
+ TimerInConflict timer;
+ for ( int j = 0; timerpart != timerparts.end(); ++j, ++timerpart )
+ switch(j) {
+ case 0: timer.timerIndex = lexical_cast< int >( *timerpart ); break;
+ case 1: timer.percentage = lexical_cast< int >( *timerpart ); break;
+ case 2:
+ {
+ vector< string > conctimerparts = StringSplit( *timerpart, '#' );
+ vector< string >::const_iterator conctimerpart = conctimerparts.begin();
+ for ( int k = 0; conctimerpart != conctimerparts.end(); ++k, ++conctimerpart )
+ timer.concurrentTimerIndices.push_back(lexical_cast< int >( *conctimerpart ));
+ break;
+ }
+ }
+ conflictingTimers.push_back(timer);
+ }
+ }
+ }
+ catch ( bad_lexical_cast const& ex ) {
+ }
+}
+
+TimerConflicts::TimerConflicts()
+{
+ Epgsearch_services_v1_0 service;
+ if ( !CheckEpgsearchVersion() || cPluginManager::CallFirstService(ServiceInterface, &service) == 0 )
+ throw HtmlError( tr("EPGSearch version outdated! Please update.") );
+
+ list< string > conflicts = service.handler->TimerConflictList();
+ m_conflicts.assign( conflicts.begin(), conflicts.end() );
+ m_conflicts.sort();
+}
+
} // namespace vdrlive
diff --git a/epgsearch.h b/epgsearch.h
index b63f109..39d3837 100644
--- a/epgsearch.h
+++ b/epgsearch.h
@@ -7,6 +7,7 @@
#include <string>
#include <vdr/channels.h>
#include <vdr/epg.h>
+#include "tools.h"
namespace vdrlive {
@@ -410,6 +411,58 @@ public:
static bool WriteValue(const std::string& entry, const std::string& value);
};
+// classes for timer conflict interface
+
+// conflicting timer
+class TimerInConflict
+{
+public:
+ int timerIndex; // it's index in VDR
+ int percentage; // percentage of recording
+ std::list<int> concurrentTimerIndices; // concurrent timer indices
+
+ TimerInConflict(int TimerIndex=-1, int Percentage=0) : timerIndex(TimerIndex), percentage(Percentage) {}
+};
+
+class TimerConflict;
+
+bool operator<( TimerConflict const& left, TimerConflict const& right );
+
+// one timer conflict time
+class TimerConflict
+{
+ time_t conflictTime; // time of conflict
+ std::list< TimerInConflict > conflictingTimers; // conflicting timers at this time
+public:
+ friend bool operator<( TimerConflict const& left, TimerConflict const& right );
+
+ TimerConflict( std::string const& data );
+ TimerConflict();
+ void Init();
+
+ time_t ConflictTime() { return conflictTime; }
+ const std::list< TimerInConflict >& ConflictingTimers() { return conflictingTimers; }
+};
+
+class TimerConflicts
+{
+public:
+ typedef std::list< TimerConflict > ConflictList;
+ typedef ConflictList::size_type size_type;
+ typedef ConflictList::iterator iterator;
+ typedef ConflictList::const_iterator const_iterator;
+
+ TimerConflicts();
+
+ size_type size() const { return m_conflicts.size(); }
+ iterator begin() { return m_conflicts.begin(); }
+ const_iterator begin() const { return m_conflicts.begin(); }
+ iterator end() { return m_conflicts.end(); }
+ const_iterator end() const { return m_conflicts.end(); }
+private:
+ ConflictList m_conflicts;
+};
+
}
// namespace vdrlive
diff --git a/epgsearch/services.h b/epgsearch/services.h
index c6a973e..f64b094 100644
--- a/epgsearch/services.h
+++ b/epgsearch/services.h
@@ -129,6 +129,8 @@ class cServiceHandler
virtual std::string ReadSetupValue(const std::string& entry) = 0;
// Write a setup value
virtual bool WriteSetupValue(const std::string& entry, const std::string& value) = 0;
+ // Get timer conflicts
+ virtual std::list<std::string> TimerConflictList(bool relOnly=false) = 0;
};
struct Epgsearch_services_v1_0
diff --git a/live/img/timerconflict.gif b/live/img/timerconflict.gif
new file mode 100644
index 0000000..115520e
--- /dev/null
+++ b/live/img/timerconflict.gif
Binary files differ
diff --git a/livefeatures.h b/livefeatures.h
index c7251d6..93bd514 100644
--- a/livefeatures.h
+++ b/livefeatures.h
@@ -60,7 +60,7 @@ namespace features
struct epgsearch
{
static const char* Plugin() { return "epgsearch"; }
- static const char* MinVersion() { return "0.9.23.beta10"; }
+ static const char* MinVersion() { return "0.9.24.beta19"; }
};
struct streamdev_server
diff --git a/pages/Makefile b/pages/Makefile
index 8f718fe..2a8b8be 100644
--- a/pages/Makefile
+++ b/pages/Makefile
@@ -21,7 +21,7 @@ OBJS = menu.o recordings.o schedule.o screenshot.o timers.o \
vlc.o searchtimers.o edit_searchtimer.o searchresults.o \
searchepg.o login.o ibox.o xmlresponse.o play_recording.o \
pause_recording.o stop_recording.o ffw_recording.o \
- rwd_recording.o setup.o content.o epginfo.o
+ rwd_recording.o setup.o content.o epginfo.o timerconflicts.o
### Default rules:
diff --git a/pages/menu.ecpp b/pages/menu.ecpp
index e9b5faf..a8eba86 100644
--- a/pages/menu.ecpp
+++ b/pages/menu.ecpp
@@ -39,6 +39,7 @@ if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html");
% if ( LiveFeatures< features::epgsearch >().Recent() ) {
| <a href="searchepg.html" <& menu.setactive current=("searchepg") &>><$ tr("Search") $></a>
| <a href="searchtimers.html" <& menu.setactive current=("searchtimers") &>><$ tr("Searchtimers") $></a>
+ | <a href="timerconflicts.html" <& menu.setactive current=("timerconflicts") &>><$ tr("Timer conflicts") $></a>
% }
| <a href="recordings.html" <& menu.setactive current=("recordings") &>><$ tr("Recordings") $></a>
| <a href="remote.html" <& menu.setactive current=("remote") &>><$ tr("Remote Control") $></a>
diff --git a/pages/timerconflicts.ecpp b/pages/timerconflicts.ecpp
new file mode 100644
index 0000000..c69394f
--- /dev/null
+++ b/pages/timerconflicts.ecpp
@@ -0,0 +1,127 @@
+<%pre>
+#include <vdr/channels.h>
+#include <vdr/i18n.h>
+#include "epgsearch.h"
+#include "tools.h"
+#include "setup.h"
+#include "epg_events.h"
+#include "timers.h"
+
+using namespace vdrlive;
+using namespace std;
+
+static const size_t maximumDescriptionLength = 300;
+
+</%pre>
+<%args>
+ // input parameters
+</%args>
+<%session scope="global">
+bool logged_in(false);
+</%session>
+<%include>page_init.eh</%include>
+<%cpp>
+if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html");
+</%cpp>
+<%cpp>
+ pageTitle = tr("Timer conflicts");
+ TimerConflicts timerConflicts;
+ cMutexLock timersLock( &LiveTimerManager() );
+ SortedTimers& timers = LiveTimerManager().GetTimers();
+</%cpp>
+<& pageelems.doc_type &>
+<html>
+ <head>
+ <title>VDR-Live - <$ pageTitle $></title>
+ <& pageelems.stylesheets &>
+ <& pageelems.ajax_js &>
+ </head>
+ <body>
+ <& pageelems.logo &>
+ <& menu active=("timersconflicts")>
+ <div class="inhalt">
+ <table class="listing" cellspacing="0" cellpadding="0">
+<%cpp>
+ for (TimerConflicts::iterator conflict = timerConflicts.begin(); conflict != timerConflicts.end(); ++conflict) {
+ const std::list< TimerInConflict >& conflTimers = conflict->ConflictingTimers();
+ for (std::list< TimerInConflict >::const_iterator confltimer = conflTimers.begin(); confltimer != conflTimers.end(); ++confltimer) {
+</%cpp>
+ <tr class="head">
+ <td colspan="9">
+ <div class="boxheader"><div><div><$ FormatDateTime(tr("%A, %x"), conflict->ConflictTime()) + " " + FormatDateTime(tr("%I:%M %p"), conflict->ConflictTime()) + " - " + lexical_cast<string, int>(confltimer->percentage) + "%" $></div></div></div>
+ </td>
+ </tr>
+ <tr class="description">
+ <td class="leftcol"><img src="/img/transparent.png" alt="" width="16px" height="16px" /></td>
+ <td><div class="withmargin"><$ trVDR("Channel") $></div></td>
+ <td><div class="withmargin"><$ trVDR("Start") $></div></td>
+ <td><div class="withmargin"><$ trVDR("Stop") $></div></td>
+ <td><div class="withmargin"><$ trVDR("File") $></div></td>
+ <td class="action"><img src="/img/transparent.png" alt="" width="16px" height="16px" /></td>
+ <td class="action"><img src="/img/transparent.png" alt="" width="16px" height="16px" /></td>
+ <td class="action"><img src="/img/transparent.png" alt="" width="16px" height="16px" /></td>
+ <td class="action rightcol"><img src="/img/transparent.png" alt="" width="16px" height="16px" /></td>
+ </tr>
+<%cpp>
+ for (std::list<int>::const_iterator timerIndex = confltimer->concurrentTimerIndices.begin(); timerIndex != confltimer->concurrentTimerIndices.end(); ++timerIndex) {
+ cTimer* timer = Timers.Get(*timerIndex-1);
+ if (!timer) continue;
+
+ std::list< int >::const_iterator nexttimerIndex = timerIndex;
+ ++nexttimerIndex;
+ bool bottom = (nexttimerIndex == confltimer->concurrentTimerIndices.end());
+
+ std::string timerStateImg = "transparent.png";
+ std::string timerStateHint;
+ if (timer->Index() == confltimer->timerIndex-1) {
+ timerStateImg = "timerconflict.gif";
+ timerStateHint = tr("Timer has a conflict.");
+ }
+ else if (timer->Flags() & tfActive) {
+ timerStateImg = "arrow.png";
+ timerStateHint = tr("Timer is active.");
+ }
+
+ EpgInfoPtr epgEvent;
+ string longDescription;
+ string title;
+ if (!timer->Event()) timer->SetEventFromSchedule();
+ if (timer->Event()) {
+ epgEvent = EpgEvents::CreateEpgInfo(timer->Channel(), timer->Event());
+ longDescription = StringEscapeAndBreak(SortedTimers::GetTimerInfo(*timer)) + "<hr>"
+ + StringEscapeAndBreak(StringWordTruncate(epgEvent->LongDescr(), maximumDescriptionLength))
+ + "<br/><br/>" + tr("Click to view details.");
+ title = epgEvent->Title();
+ }
+</%cpp>
+ <tr>
+ <td class="leftcol <? bottom ? "bottomrow" ?>"><img src="<$ LiveSetup().GetThemedLink("img", timerStateImg) $>" alt="" <%cpp> if (!timerStateHint.empty()) { </%cpp><& tooltip.hint text=(timerStateHint) &><%cpp> } </%cpp>></img></td>
+ <td class="<? bottom ? "bottomrow" ?>"><div class="withmargin"><a href="schedule.html?channel=<$ timer->Channel()->Number()$>"><$ timer->Channel()->Name() $></a></div></td>
+ <td class="<? bottom ? "bottomrow" ?>"><div class="withmargin"><$ FormatDateTime(tr("%I:%M %p"), timer->StartTime()) $></div></td>
+ <td class="<? bottom ? "bottomrow" ?>"><div class="withmargin"><$ FormatDateTime(tr("%I:%M %p"), timer->StopTime()) $></div></td>
+ <td class="<? bottom ? "bottomrow" ?>"><div class="withmargin"><a
+% if (!longDescription.empty()) {
+ <& tooltip.hint text=(longDescription) &><& tooltip.display domId=(epgEvent->Id()) &>
+% }
+ ><$ timer->File() $></a></div></td>
+ <td class="action <? bottom ? "bottomrow" ?>"><a href="searchresults.html?searchplain=<$ StringEscapeAndBreak(title) $>"><img src="<$ LiveSetup().GetThemedLink("img", "search.png") $>" alt="" <& tooltip.hint text=(tr("Search for repeats.")) &>></img></a></td>
+ <td class="action <? bottom ? "bottomrow" ?>"><a href="timers.html?timerid=<$ timers.GetTimerId(*timer) $>&action=toggle"><img src="<$ LiveSetup().GetThemedLink("img", (timer->Flags() & tfActive) ? "active.png" : "inactive.png") $>" alt="" <& tooltip.hint text=(tr("Toggle timer active/inactive")) &>></img></a></td>
+ <td class="action <? bottom ? "bottomrow" ?>"><a href="edit_timer.html?timerid=<$ timers.GetTimerId(*timer) $>"><img src="<$ LiveSetup().GetThemedLink("img", "edit.png") $>" alt="" <& tooltip.hint text=(tr("Edit timer")) &>></img></a></td>
+ <td class="action rightcol <? bottom ? "bottomrow" ?>"><a href="timers.html?timerid=<$ timers.GetTimerId(*timer) $>&action=delete"><img src="<$ LiveSetup().GetThemedLink("img", "del.png") $>" alt="" <& tooltip.hint text=(tr("Delete timer")) &>></img></a></td>
+ </tr>
+% }
+</%cpp>
+ <tr class="spacer">
+ <td colspan="9"/>
+ </tr>
+<%cpp>
+ }
+ }
+</%cpp>
+ </table>
+ </div>
+ </body>
+</html>
+<%include>page_exit.eh</%include>
+
+
diff --git a/po/ca_ES.po b/po/ca_ES.po
index 3fb8738..656f8f6 100644
--- a/po/ca_ES.po
+++ b/po/ca_ES.po
@@ -416,6 +416,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -686,10 +689,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -701,6 +701,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/cs_CZ.po b/po/cs_CZ.po
index d241bce..970af1b 100644
--- a/po/cs_CZ.po
+++ b/po/cs_CZ.po
@@ -414,6 +414,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -684,10 +687,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -699,6 +699,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/da_DK.po b/po/da_DK.po
index 1c6b18c..f8198a5 100644
--- a/po/da_DK.po
+++ b/po/da_DK.po
@@ -414,6 +414,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -684,10 +687,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -699,6 +699,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/de_DE.po b/po/de_DE.po
index 10373d3..8023dda 100644
--- a/po/de_DE.po
+++ b/po/de_DE.po
@@ -416,6 +416,9 @@ msgstr "Suchen"
msgid "Searchtimers"
msgstr "Suchtimer"
+msgid "Timer conflicts"
+msgstr "Timer-Konflikte"
+
msgid "Recordings"
msgstr "Aufnahmen"
@@ -686,11 +689,8 @@ msgstr "Startseite"
msgid "Theme"
msgstr "Thema"
-msgid "No timer defined"
-msgstr "Keine Timer vorhanden"
-
-msgid "Timer is recording."
-msgstr "Timer zeichnet auf."
+msgid "Timer has a conflict."
+msgstr "Timer hat einen Konflikt."
msgid "Timer is active."
msgstr "Timer ist aktiv."
@@ -701,6 +701,12 @@ msgstr "Timer aktiv/inaktiv schalten"
msgid "Delete timer"
msgstr "Timer löschen"
+msgid "No timer defined"
+msgstr "Keine Timer vorhanden"
+
+msgid "Timer is recording."
+msgstr "Timer zeichnet auf."
+
msgid "VLC: live video stream"
msgstr "VLC: Video Stream"
@@ -760,3 +766,4 @@ msgstr "Ausführliche Ansicht"
msgid "List view"
msgstr "Listenansicht"
+
diff --git a/po/el_GR.po b/po/el_GR.po
index e554e28..52fdc0e 100644
--- a/po/el_GR.po
+++ b/po/el_GR.po
@@ -414,6 +414,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -684,10 +687,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -699,6 +699,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/es_ES.po b/po/es_ES.po
index 89d6e51..eb97533 100644
--- a/po/es_ES.po
+++ b/po/es_ES.po
@@ -414,6 +414,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -684,10 +687,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -699,6 +699,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/et_EE.po b/po/et_EE.po
index d228a6c..f722a6e 100644
--- a/po/et_EE.po
+++ b/po/et_EE.po
@@ -414,6 +414,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -684,10 +687,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -699,6 +699,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/fi_FI.po b/po/fi_FI.po
index 4368f34..091b1ad 100644
--- a/po/fi_FI.po
+++ b/po/fi_FI.po
@@ -414,6 +414,10 @@ msgstr "Etsi"
msgid "Searchtimers"
msgstr "Hakuajastimet"
+#, fuzzy
+msgid "Timer conflicts"
+msgstr "Aktiivinen ajastin"
+
msgid "Recordings"
msgstr "Tallenteet"
@@ -686,11 +690,9 @@ msgstr "Aloitussivu"
msgid "Theme"
msgstr "Ulkoasu"
-msgid "No timer defined"
-msgstr "Ajastinta ei ole määritelty"
-
-msgid "Timer is recording."
-msgstr "Ajastinta tallennetaan"
+#, fuzzy
+msgid "Timer has a conflict."
+msgstr "Aktiivinen ajastin"
msgid "Timer is active."
msgstr "Aktiivinen ajastin"
@@ -701,6 +703,12 @@ msgstr "Aseta ajastin päälle/pois"
msgid "Delete timer"
msgstr "Poista ajastin"
+msgid "No timer defined"
+msgstr "Ajastinta ei ole määritelty"
+
+msgid "Timer is recording."
+msgstr "Ajastinta tallennetaan"
+
msgid "VLC: live video stream"
msgstr "VLC: live-lähetyksen suoratoisto"
@@ -761,5 +769,9 @@ msgstr "Ruudukkonäkymä"
msgid "List view"
msgstr "Listanäkymä"
+#, fuzzy
+#~ msgid "%A, %B %d %Y"
+#~ msgstr "%A, %d.%m.%Y"
+
#~ msgid "channels"
#~ msgstr "kanavat"
diff --git a/po/fr_FR.po b/po/fr_FR.po
index 73b2992..80520cc 100644
--- a/po/fr_FR.po
+++ b/po/fr_FR.po
@@ -417,6 +417,10 @@ msgstr "Recherche"
msgid "Searchtimers"
msgstr "Recherche de programmation"
+#, fuzzy
+msgid "Timer conflicts"
+msgstr "Programmation est active."
+
msgid "Recordings"
msgstr "Enregistrements"
@@ -687,11 +691,9 @@ msgstr "Page de départ"
msgid "Theme"
msgstr "Thème"
-msgid "No timer defined"
-msgstr "Aucune programmation définie"
-
-msgid "Timer is recording."
-msgstr "Enregistrement de série"
+#, fuzzy
+msgid "Timer has a conflict."
+msgstr "Programmation est active."
msgid "Timer is active."
msgstr "Programmation est active."
@@ -702,6 +704,12 @@ msgstr "Programmation basculer actif/inactif"
msgid "Delete timer"
msgstr "Effacer la programmation"
+msgid "No timer defined"
+msgstr "Aucune programmation définie"
+
+msgid "Timer is recording."
+msgstr "Enregistrement de série"
+
msgid "VLC: live video stream"
msgstr "VLC: live vidéo stream"
@@ -761,3 +769,7 @@ msgstr "Vue détailée"
msgid "List view"
msgstr "Vue en liste"
+
+#, fuzzy
+#~ msgid "%A, %B %d %Y"
+#~ msgstr "%A, %d.%m.%Y"
diff --git a/po/hr_HR.po b/po/hr_HR.po
index 952adab..b872c5a 100644
--- a/po/hr_HR.po
+++ b/po/hr_HR.po
@@ -415,6 +415,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -685,10 +688,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -700,6 +700,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/hu_HU.po b/po/hu_HU.po
index 4395b9a..23c320c 100644
--- a/po/hu_HU.po
+++ b/po/hu_HU.po
@@ -415,6 +415,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -685,10 +688,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -700,6 +700,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/it_IT.po b/po/it_IT.po
index a1f6328..e621ff4 100644
--- a/po/it_IT.po
+++ b/po/it_IT.po
@@ -416,6 +416,10 @@ msgstr "Cerca"
msgid "Searchtimers"
msgstr "Cerca timer"
+#, fuzzy
+msgid "Timer conflicts"
+msgstr "Timer attivo."
+
msgid "Recordings"
msgstr "Registrazioni"
@@ -688,11 +692,9 @@ msgstr "Pagina iniziale"
msgid "Theme"
msgstr "Tema"
-msgid "No timer defined"
-msgstr "Nessun timer definito"
-
-msgid "Timer is recording."
-msgstr "Timer in registrazione."
+#, fuzzy
+msgid "Timer has a conflict."
+msgstr "Timer attivo."
msgid "Timer is active."
msgstr "Timer attivo."
@@ -703,6 +705,12 @@ msgstr "Attiva/disattiva timer"
msgid "Delete timer"
msgstr "Cancella timer"
+msgid "No timer defined"
+msgstr "Nessun timer definito"
+
+msgid "Timer is recording."
+msgstr "Timer in registrazione."
+
msgid "VLC: live video stream"
msgstr "VLC: trasmissione video Live"
@@ -762,3 +770,7 @@ msgstr "Vedi come dettagli"
msgid "List view"
msgstr "Vedi come elenco"
+
+#, fuzzy
+#~ msgid "%A, %B %d %Y"
+#~ msgstr "%A, %b %d %Y"
diff --git a/po/nl_NL.po b/po/nl_NL.po
index f8ffd58..c2baccc 100644
--- a/po/nl_NL.po
+++ b/po/nl_NL.po
@@ -417,6 +417,10 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+#, fuzzy
+msgid "Timer conflicts"
+msgstr "Serie's opnemen"
+
msgid "Recordings"
msgstr ""
@@ -688,11 +692,8 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
#, fuzzy
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr "Serie's opnemen"
msgid "Timer is active."
@@ -704,6 +705,13 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+#, fuzzy
+msgid "Timer is recording."
+msgstr "Serie's opnemen"
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/nn_NO.po b/po/nn_NO.po
index 399bf83..35f301e 100644
--- a/po/nn_NO.po
+++ b/po/nn_NO.po
@@ -415,6 +415,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -685,10 +688,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -700,6 +700,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/pl_PL.po b/po/pl_PL.po
index 1e65b2d..591dc8b 100644
--- a/po/pl_PL.po
+++ b/po/pl_PL.po
@@ -414,6 +414,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -684,10 +687,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -699,6 +699,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/pt_PT.po b/po/pt_PT.po
index 21f07c0..afea87e 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -414,6 +414,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -684,10 +687,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -699,6 +699,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/ro_RO.po b/po/ro_RO.po
index 8201ce1..93f8edc 100644
--- a/po/ro_RO.po
+++ b/po/ro_RO.po
@@ -415,6 +415,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -685,10 +688,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -700,6 +700,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/ru_RU.po b/po/ru_RU.po
index 1936684..88c2715 100644
--- a/po/ru_RU.po
+++ b/po/ru_RU.po
@@ -414,6 +414,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -684,10 +687,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -699,6 +699,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/sl_SI.po b/po/sl_SI.po
index 1ed3282..639d6f5 100644
--- a/po/sl_SI.po
+++ b/po/sl_SI.po
@@ -415,6 +415,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -685,10 +688,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -700,6 +700,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/sv_SE.po b/po/sv_SE.po
index 95b7e80..ce37c91 100644
--- a/po/sv_SE.po
+++ b/po/sv_SE.po
@@ -415,6 +415,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -685,10 +688,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -700,6 +700,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""
diff --git a/po/tr_TR.po b/po/tr_TR.po
index de0c029..9435747 100644
--- a/po/tr_TR.po
+++ b/po/tr_TR.po
@@ -415,6 +415,9 @@ msgstr ""
msgid "Searchtimers"
msgstr ""
+msgid "Timer conflicts"
+msgstr ""
+
msgid "Recordings"
msgstr ""
@@ -685,10 +688,7 @@ msgstr ""
msgid "Theme"
msgstr ""
-msgid "No timer defined"
-msgstr ""
-
-msgid "Timer is recording."
+msgid "Timer has a conflict."
msgstr ""
msgid "Timer is active."
@@ -700,6 +700,12 @@ msgstr ""
msgid "Delete timer"
msgstr ""
+msgid "No timer defined"
+msgstr ""
+
+msgid "Timer is recording."
+msgstr ""
+
msgid "VLC: live video stream"
msgstr ""