Merge branch 'master' into pu/msgbox

Conflicts:
	src/gui/timerlist.cpp
This commit is contained in:
2016-11-09 00:30:44 +01:00
3 changed files with 265 additions and 212 deletions

View File

@@ -2340,7 +2340,7 @@ void CChannelList::paint_events()
int current_index = paint_events_index; int current_index = paint_events_index;
CChannelEventList evtlist; CChannelEventList evtlist;
readEvents((*chanlist)[current_index]->getChannelID(), evtlist); readEvents((*chanlist)[current_index]->getEpgID(), evtlist);
if (current_index == paint_events_index) { if (current_index == paint_events_index) {
pthread_mutex_lock(&paint_events_mutex); pthread_mutex_lock(&paint_events_mutex);
if (current_index == paint_events_index) if (current_index == paint_events_index)

View File

@@ -1390,7 +1390,7 @@ int COsdSetup::showContextChanlistMenu(CChannelList *parent_channellist)
CMenuWidget * menu_chanlist = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width); CMenuWidget * menu_chanlist = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width);
//using native callback to ensure stop header clock in parent channellist before paint this menu window //using native callback to ensure stop header clock in parent channellist before paint this menu window
if (parent_channellist) if (parent_channellist && parent_channellist->getHeaderObject()->getClockObject())
menu_chanlist->OnBeforePaint.connect(sigc::mem_fun(parent_channellist->getHeaderObject()->getClockObject(), &CComponentsFrmClock::block)); menu_chanlist->OnBeforePaint.connect(sigc::mem_fun(parent_channellist->getHeaderObject()->getClockObject(), &CComponentsFrmClock::block));
menu_chanlist->enableSaveScreen(true); menu_chanlist->enableSaveScreen(true);

View File

@@ -181,11 +181,13 @@ public:
bool changeNotify(const neutrino_locale_t /*OptionName*/, void *) bool changeNotify(const neutrino_locale_t /*OptionName*/, void *)
{ {
if (*iRepeat >= (int)CTimerd::TIMERREPEAT_WEEKDAYS) { if (*iRepeat >= (int)CTimerd::TIMERREPEAT_WEEKDAYS)
{
m1->setActive (true); m1->setActive (true);
*weekdays = "XXXXX--"; *weekdays = "XXXXX--";
} }
else { else
{
m1->setActive (false); m1->setActive (false);
*weekdays = "-------"; *weekdays = "-------";
} }
@@ -294,18 +296,19 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey)
{ {
const char * key = actionKey.c_str(); const char * key = actionKey.c_str();
if(actionKey == "add_ip") { if (actionKey == "add_ip")
{
std::string rbname,rbaddress,user,pass = ""; std::string rbname,rbaddress,user,pass = "";
std::string port = "80"; std::string port = "80";
CKeyboardInput remotebox_name(LOCALE_REMOTEBOX_RBNAME , &rbname, 25); CKeyboardInput remotebox_name(LOCALE_REMOTEBOX_RBNAME, &rbname, 25);
remotebox_name.forceSaveScreen(true); remotebox_name.forceSaveScreen(true);
CKeyboardInput remotebox_address(LOCALE_REMOTEBOX_RBADDR , &rbaddress, 50); CKeyboardInput remotebox_address(LOCALE_REMOTEBOX_RBADDR, &rbaddress, 50);
remotebox_address.forceSaveScreen(true); remotebox_address.forceSaveScreen(true);
CStringInput remotebox_port(LOCALE_REMOTEBOX_PORT , &port, 5); CStringInput remotebox_port(LOCALE_REMOTEBOX_PORT, &port, 5);
remotebox_port.forceSaveScreen(true); remotebox_port.forceSaveScreen(true);
CKeyboardInput remotebox_user(LOCALE_REMOTEBOX_USER , &user, 15); CKeyboardInput remotebox_user(LOCALE_REMOTEBOX_USER, &user, 15);
remotebox_user.forceSaveScreen(true); remotebox_user.forceSaveScreen(true);
CKeyboardInput remotebox_pass(LOCALE_REMOTEBOX_PASS , &pass, 15); CKeyboardInput remotebox_pass(LOCALE_REMOTEBOX_PASS, &pass, 15);
remotebox_pass.forceSaveScreen(true); remotebox_pass.forceSaveScreen(true);
CMenuWidget * rbsetup = new CMenuWidget(LOCALE_REMOTEBOX_HEAD, NEUTRINO_ICON_TIMER); CMenuWidget * rbsetup = new CMenuWidget(LOCALE_REMOTEBOX_HEAD, NEUTRINO_ICON_TIMER);
rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_RBNAME, true, rbname, &remotebox_name)); rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_RBNAME, true, rbname, &remotebox_name));
@@ -314,30 +317,34 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey)
rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_USER, true, user, &remotebox_user)); rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_USER, true, user, &remotebox_user));
rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_PASS, true, pass, &remotebox_pass)); rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_PASS, true, pass, &remotebox_pass));
rbsetup->enableSaveScreen(true); rbsetup->enableSaveScreen(true);
if ((rbsetup->exec(NULL,"") == true) && (!rbaddress.empty())) { if ((rbsetup->exec(NULL,"") == true) && (!rbaddress.empty()))
{
remboxmenu->addItem(new CMenuForwarder(rbname, true, NULL, this, "cha_ip")); remboxmenu->addItem(new CMenuForwarder(rbname, true, NULL, this, "cha_ip"));
rbsetup->hide(); rbsetup->hide();
remboxmenu->enableSaveScreen(false); remboxmenu->enableSaveScreen(false);
remboxmenu->hide(); remboxmenu->hide();
timer_remotebox_item timer_rb; timer_remotebox_item timer_rb;
timer_rb.rbaddress = rbaddress; timer_rb.rbaddress = rbaddress;
if (!timer_rb.rbaddress.empty()) { if (!timer_rb.rbaddress.empty())
timer_rb.port = atoi(port); {
timer_rb.user = user; timer_rb.port = atoi(port);
timer_rb.pass = pass; timer_rb.user = user;
timer_rb.rbname = rbname; timer_rb.pass = pass;
if (timer_rb.rbname.empty()) timer_rb.rbname = rbname;
timer_rb.rbname = timer_rb.rbaddress; if (timer_rb.rbname.empty())
g_settings.timer_remotebox_ip.push_back(timer_rb); timer_rb.rbname = timer_rb.rbaddress;
g_settings.timer_remotebox_ip.push_back(timer_rb);
} }
changed = true; changed = true;
} }
return menu_return::RETURN_REPAINT; return menu_return::RETURN_REPAINT;
} }
if(actionKey == "del_ip") { if (actionKey == "del_ip")
{
bselected = remboxmenu->getSelected(); bselected = remboxmenu->getSelected();
if (bselected >= item_offset) { if (bselected >= item_offset)
{
remboxmenu->removeItem(bselected); remboxmenu->removeItem(bselected);
remboxmenu->enableSaveScreen(false); remboxmenu->enableSaveScreen(false);
remboxmenu->hide(); remboxmenu->hide();
@@ -347,22 +354,23 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey)
return menu_return::RETURN_REPAINT; return menu_return::RETURN_REPAINT;
} }
if(actionKey == "cha_ip") { if (actionKey == "cha_ip")
{
bselected = remboxmenu->getSelected(); bselected = remboxmenu->getSelected();
CMenuItem* item = remboxmenu->getItem(bselected); CMenuItem* item = remboxmenu->getItem(bselected);
CMenuForwarder *f = static_cast<CMenuForwarder*>(item); CMenuForwarder *f = static_cast<CMenuForwarder*>(item);
std::vector<timer_remotebox_item>::iterator it = g_settings.timer_remotebox_ip.begin(); std::vector<timer_remotebox_item>::iterator it = g_settings.timer_remotebox_ip.begin();
std::advance(it,bselected-item_offset); std::advance(it,bselected-item_offset);
std::string port = to_string(it->port); std::string port = to_string(it->port);
CKeyboardInput remotebox_name(LOCALE_REMOTEBOX_RBNAME , &it->rbname, 25); CKeyboardInput remotebox_name(LOCALE_REMOTEBOX_RBNAME, &it->rbname, 25);
remotebox_name.forceSaveScreen(true); remotebox_name.forceSaveScreen(true);
CKeyboardInput remotebox_address(LOCALE_REMOTEBOX_RBADDR , &it->rbaddress, 50); CKeyboardInput remotebox_address(LOCALE_REMOTEBOX_RBADDR, &it->rbaddress, 50);
remotebox_address.forceSaveScreen(true); remotebox_address.forceSaveScreen(true);
CStringInput remotebox_port(LOCALE_REMOTEBOX_PORT , &port, 5); CStringInput remotebox_port(LOCALE_REMOTEBOX_PORT, &port, 5);
remotebox_port.forceSaveScreen(true); remotebox_port.forceSaveScreen(true);
CKeyboardInput remotebox_user(LOCALE_REMOTEBOX_USER , &it->user, 15); CKeyboardInput remotebox_user(LOCALE_REMOTEBOX_USER, &it->user, 15);
remotebox_user.forceSaveScreen(true); remotebox_user.forceSaveScreen(true);
CKeyboardInput remotebox_pass(LOCALE_REMOTEBOX_PASS , &it->pass, 15); CKeyboardInput remotebox_pass(LOCALE_REMOTEBOX_PASS, &it->pass, 15);
remotebox_pass.forceSaveScreen(true); remotebox_pass.forceSaveScreen(true);
CMenuWidget * rbsetup = new CMenuWidget(LOCALE_REMOTEBOX_HEAD, NEUTRINO_ICON_TIMER); CMenuWidget * rbsetup = new CMenuWidget(LOCALE_REMOTEBOX_HEAD, NEUTRINO_ICON_TIMER);
rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_RBNAME, true, it->rbname, &remotebox_name)); rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_RBNAME, true, it->rbname, &remotebox_name));
@@ -371,7 +379,8 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey)
rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_USER, true, it->user, &remotebox_user)); rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_USER, true, it->user, &remotebox_user));
rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_PASS, true, it->pass, &remotebox_pass)); rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_PASS, true, it->pass, &remotebox_pass));
rbsetup->enableSaveScreen(true); rbsetup->enableSaveScreen(true);
if ((rbsetup->exec(NULL,"") == true) && (!it->rbaddress.empty())) { if ((rbsetup->exec(NULL,"") == true) && (!it->rbaddress.empty()))
{
it->port = atoi(port); it->port = atoi(port);
f->setName(it->rbname); f->setName(it->rbname);
rbsetup->hide(); rbsetup->hide();
@@ -393,18 +402,18 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey)
if (timer_apids_dflt) if (timer_apids_dflt)
timerlist[selected].apids = TIMERD_APIDS_CONF; timerlist[selected].apids = TIMERD_APIDS_CONF;
else else
timerlist[selected].apids = (unsigned char)((timer_apids_std * TIMERD_APIDS_STD) | (timer_apids_ac3 * TIMERD_APIDS_AC3) | timerlist[selected].apids = (unsigned char)((timer_apids_std * TIMERD_APIDS_STD) | (timer_apids_ac3 * TIMERD_APIDS_AC3) | (timer_apids_alt * TIMERD_APIDS_ALT));
(timer_apids_alt * TIMERD_APIDS_ALT));
Timer->modifyTimerAPid(timerlist[selected].eventID,timerlist[selected].apids); Timer->modifyTimerAPid(timerlist[selected].eventID,timerlist[selected].apids);
Timer->modifyRecordTimerEvent(timerlist[selected].eventID, timerlist[selected].announceTime, Timer->modifyRecordTimerEvent(timerlist[selected].eventID, timerlist[selected].announceTime,
timerlist[selected].alarmTime, timerlist[selected].alarmTime,
timerlist[selected].stopTime, timerlist[selected].eventRepeat, timerlist[selected].stopTime, timerlist[selected].eventRepeat,
timerlist[selected].repeatCount,timerlist[selected].recordingDir); timerlist[selected].repeatCount,timerlist[selected].recordingDir);
} else if (timerlist[selected].eventType == CTimerd::TIMER_REMOTEBOX) }
else if (timerlist[selected].eventType == CTimerd::TIMER_REMOTEBOX)
{ {
CHTTPTool httpTool; CHTTPTool httpTool;
std::string r_url; std::string r_url;
r_url = "http://"; r_url = "http://";
r_url += RemoteBoxConnectUrl(timerlist[selected].remotebox_name); r_url += RemoteBoxConnectUrl(timerlist[selected].remotebox_name);
r_url += "/control/timer?action=new&update=1"; r_url += "/control/timer?action=new&update=1";
r_url += "&alarm=" + to_string((int)timerlist[selected].alarmTime); r_url += "&alarm=" + to_string((int)timerlist[selected].alarmTime);
@@ -417,7 +426,8 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey)
//printf("[remotetimer] url:%s\n",r_url.c_str()); //printf("[remotetimer] url:%s\n",r_url.c_str());
r_url = httpTool.downloadString(r_url, -1, httpConnectTimeout); r_url = httpTool.downloadString(r_url, -1, httpConnectTimeout);
//printf("[remotetimer] status:%s\n",r_url.c_str()); //printf("[remotetimer] status:%s\n",r_url.c_str());
} else }
else
{ {
Timer->modifyTimerEvent(timerlist[selected].eventID, timerlist[selected].announceTime, Timer->modifyTimerEvent(timerlist[selected].eventID, timerlist[selected].announceTime,
timerlist[selected].alarmTime, timerlist[selected].alarmTime,
@@ -430,7 +440,7 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey)
{ {
CHTTPTool httpTool; CHTTPTool httpTool;
std::string r_url; std::string r_url;
r_url = "http://"; r_url = "http://";
r_url += RemoteBoxConnectUrl(timerlist[selected].remotebox_name); r_url += RemoteBoxConnectUrl(timerlist[selected].remotebox_name);
r_url += "/control/timer?action=new"; r_url += "/control/timer?action=new";
r_url += "&alarm=" + to_string((int)timerlist[selected].alarmTime + timerlist[selected].rem_pre); r_url += "&alarm=" + to_string((int)timerlist[selected].alarmTime + timerlist[selected].rem_pre);
@@ -470,7 +480,7 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey)
CHTTPTool httpTool; CHTTPTool httpTool;
std::string r_url; std::string r_url;
r_url = "http://"; r_url = "http://";
r_url += RemoteBoxConnectUrl(remotebox_name); r_url += RemoteBoxConnectUrl(remotebox_name);
r_url += "/control/timer?action=remove"; r_url += "/control/timer?action=remove";
r_url += "&id=" + eventID; r_url += "&id=" + eventID;
@@ -483,7 +493,7 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey)
{ {
CHTTPTool httpTool; CHTTPTool httpTool;
std::string r_url; std::string r_url;
r_url = "http://"; r_url = "http://";
r_url += RemoteBoxConnectUrl(timerlist[selected].remotebox_name); r_url += RemoteBoxConnectUrl(timerlist[selected].remotebox_name);
r_url += "/control/timer?action=remove"; r_url += "/control/timer?action=remove";
r_url += "&id=" + to_string((int)timerlist[selected].eventID); r_url += "&id=" + to_string((int)timerlist[selected].eventID);
@@ -495,7 +505,7 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey)
{ {
CHTTPTool httpTool; CHTTPTool httpTool;
std::string r_url; std::string r_url;
r_url = "http://"; r_url = "http://";
r_url += RemoteBoxConnectUrl(timerlist[selected].remotebox_name); r_url += RemoteBoxConnectUrl(timerlist[selected].remotebox_name);
r_url += "/control/timer?action=new&update=1"; r_url += "/control/timer?action=new&update=1";
r_url += "&alarm=" + to_string((int)timerlist[selected].alarmTime); r_url += "&alarm=" + to_string((int)timerlist[selected].alarmTime);
@@ -541,7 +551,8 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey)
timerNew.announceTime-= 120; // 2 more mins for rec timer timerNew.announceTime-= 120; // 2 more mins for rec timer
strncpy(recinfo.recordingDir,timerNew.recordingDir,sizeof(recinfo.recordingDir)-1); strncpy(recinfo.recordingDir,timerNew.recordingDir,sizeof(recinfo.recordingDir)-1);
data = &recinfo; data = &recinfo;
} else }
else
data= &eventinfo; data= &eventinfo;
} }
else if (timerNew.eventType==CTimerd::TIMER_REMIND) else if (timerNew.eventType==CTimerd::TIMER_REMIND)
@@ -576,30 +587,34 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey)
{ {
int delta; int delta;
sscanf(&(key[3]), sscanf(&(key[3]),
SCANF_CHANNEL_ID_TYPE SCANF_CHANNEL_ID_TYPE
"%n", "%n",
&timerNew.channel_id, &timerNew.channel_id,
&delta); &delta);
timerNew_channel_name = std::string(key + 3 + delta + 1); timerNew_channel_name = std::string(key + 3 + delta + 1);
g_RCInput->postMsg(CRCInput::RC_timeout, 0); // leave underlying menu also g_RCInput->postMsg(CRCInput::RC_timeout, 0); // leave underlying menu also
g_RCInput->postMsg(CRCInput::RC_timeout, 0); // leave underlying menu also g_RCInput->postMsg(CRCInput::RC_timeout, 0); // leave underlying menu also
return menu_return::RETURN_EXIT; return menu_return::RETURN_EXIT;
} }
else if(actionKey == "rec_dir1") { else if (actionKey == "rec_dir1")
{
if (parent) if (parent)
parent->hide(); parent->hide();
const char *action_str = "RecDir1"; const char *action_str = "RecDir1";
if(chooserDir(timerlist[selected].recordingDir, true, action_str, sizeof(timerlist[selected].recordingDir)-1)) { if (chooserDir(timerlist[selected].recordingDir, true, action_str, sizeof(timerlist[selected].recordingDir)-1))
{
printf("[timerlist] new %s dir %s\n", action_str, timerlist[selected].recordingDir); printf("[timerlist] new %s dir %s\n", action_str, timerlist[selected].recordingDir);
} }
timer_recordingDir = timerlist[selected].recordingDir; timer_recordingDir = timerlist[selected].recordingDir;
return menu_return::RETURN_REPAINT; return menu_return::RETURN_REPAINT;
} }
else if(actionKey == "rec_dir2") { else if (actionKey == "rec_dir2")
{
if (parent) if (parent)
parent->hide(); parent->hide();
const char *action_str = "RecDir2"; const char *action_str = "RecDir2";
if(chooserDir(timerNew.recordingDir, true, action_str, sizeof(timerNew.recordingDir)-1)) { if (chooserDir(timerNew.recordingDir, true, action_str, sizeof(timerNew.recordingDir)-1))
{
printf("[timerlist] new %s dir %s\n", action_str, timerNew.recordingDir); printf("[timerlist] new %s dir %s\n", action_str, timerNew.recordingDir);
} }
timerNew_recordingDir = timerNew.recordingDir; timerNew_recordingDir = timerNew.recordingDir;
@@ -615,11 +630,11 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey)
return ret; return ret;
/* /*
if( ret > -1) if (ret > -1)
{ {
return menu_return::RETURN_REPAINT; return menu_return::RETURN_REPAINT;
} }
else if( ret == -1) else if (ret == -1)
{ {
// -1 bedeutet nur REPAINT // -1 bedeutet nur REPAINT
return menu_return::RETURN_REPAINT; return menu_return::RETURN_REPAINT;
@@ -703,8 +718,8 @@ void CTimerList::RemoteBoxSelect()
std::advance(it,select); std::advance(it,select);
if (askUserOnRemoteTimerConflict(timerlist[selected].announceTime, timerlist[selected].stopTime, (char*) it->rbname.c_str())) if (askUserOnRemoteTimerConflict(timerlist[selected].announceTime, timerlist[selected].stopTime, (char*) it->rbname.c_str()))
{ {
strncpy(timerlist[selected].remotebox_name,it->rbname.c_str(),sizeof(timerlist[selected].remotebox_name)); strncpy(timerlist[selected].remotebox_name,it->rbname.c_str(),sizeof(timerlist[selected].remotebox_name));
timerlist[selected].remotebox_name[sizeof(timerlist[selected].remotebox_name) - 1] = 0; timerlist[selected].remotebox_name[sizeof(timerlist[selected].remotebox_name) - 1] = 0;
} }
} }
@@ -715,7 +730,7 @@ bool CTimerList::RemoteBoxChanExists(t_channel_id channel_id)
CHTTPTool httpTool; CHTTPTool httpTool;
std::string r_url; std::string r_url;
r_url = "http://"; r_url = "http://";
r_url += RemoteBoxConnectUrl(timerlist[selected].remotebox_name); r_url += RemoteBoxConnectUrl(timerlist[selected].remotebox_name);
r_url += "/control/getchannel?format=json&id="; r_url += "/control/getchannel?format=json&id=";
r_url += string_printf_helper(PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS, channel_id); r_url += string_printf_helper(PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS, channel_id);
@@ -750,9 +765,10 @@ bool CTimerList::LocalBoxChanExists(t_channel_id channel_id)
std::string CTimerList::RemoteBoxConnectUrl(std::string _rbname) std::string CTimerList::RemoteBoxConnectUrl(std::string _rbname)
{ {
std::string c_url = ""; std::string c_url = "";
for (std::vector<timer_remotebox_item>::iterator it = g_settings.timer_remotebox_ip.begin(); for (std::vector<timer_remotebox_item>::iterator it = g_settings.timer_remotebox_ip.begin(); it != g_settings.timer_remotebox_ip.end(); ++it)
it != g_settings.timer_remotebox_ip.end(); ++it) { {
if (it->rbname == _rbname) { if (it->rbname == _rbname)
{
if (!it->user.empty() && !it->pass.empty()) if (!it->user.empty() && !it->pass.empty())
c_url += it->user + ":" + it->pass +"@"; c_url += it->user + ":" + it->pass +"@";
c_url += it->rbaddress; c_url += it->rbaddress;
@@ -770,37 +786,40 @@ void CTimerList::RemoteBoxTimerList(CTimerd::TimerList &rtimerlist)
CHTTPTool httpTool; CHTTPTool httpTool;
std::string r_url; std::string r_url;
for (std::vector<timer_remotebox_item>::iterator it = g_settings.timer_remotebox_ip.begin(); for (std::vector<timer_remotebox_item>::iterator it = g_settings.timer_remotebox_ip.begin(); it != g_settings.timer_remotebox_ip.end(); ++it)
it != g_settings.timer_remotebox_ip.end(); ++it) { {
r_url = "http://"; r_url = "http://";
r_url += RemoteBoxConnectUrl(it->rbname); r_url += RemoteBoxConnectUrl(it->rbname);
r_url += "/control/timer?format=json"; r_url += "/control/timer?format=json";
r_url = httpTool.downloadString(r_url, -1, httpConnectTimeout); r_url = httpTool.downloadString(r_url, -1, httpConnectTimeout);
//printf("[remotetimer] timers:%s\n",r_url.c_str()); //printf("[remotetimer] timers:%s\n",r_url.c_str());
Json::Value root; Json::Value root;
Json::Reader reader; Json::Reader reader;
bool parsedSuccess = reader.parse(r_url, root, false); bool parsedSuccess = reader.parse(r_url, root, false);
if (!parsedSuccess) { if (!parsedSuccess)
printf("Failed to parse JSON\n"); {
printf("%s\n", reader.getFormattedErrorMessages().c_str()); printf("Failed to parse JSON\n");
} printf("%s\n", reader.getFormattedErrorMessages().c_str());
Json::Value delays = root["data"]["timer"][0]; }
Json::Value delays = root["data"]["timer"][0];
rem_pre = atoi(delays["config"].get("pre_delay","0").asString()); rem_pre = atoi(delays["config"].get("pre_delay","0").asString());
rem_post = atoi(delays["config"].get("post_delay","0").asString()); rem_post = atoi(delays["config"].get("post_delay","0").asString());
//printf("[remotetimer] pre:%d - post:%d\n", rem_pre, rem_post); //printf("[remotetimer] pre:%d - post:%d\n", rem_pre, rem_post);
Json::Value remotetimers = root["data"]["timer"][0]["timer_list"]; Json::Value remotetimers = root["data"]["timer"][0]["timer_list"];
for (unsigned int i= 0; i<remotetimers.size();i++) { for (unsigned int i= 0; i<remotetimers.size();i++)
{
CTimerd::responseGetTimer rtimer; CTimerd::responseGetTimer rtimer;
if ( atoi(remotetimers[i].get("type_number","").asString()) == 5) { if ( atoi(remotetimers[i].get("type_number","").asString()) == 5)
strncpy(rtimer.remotebox_name,it->rbname.c_str(),sizeof(rtimer.remotebox_name)); {
rtimer.remotebox_name[sizeof(rtimer.remotebox_name) - 1] = 0; strncpy(rtimer.remotebox_name,it->rbname.c_str(),sizeof(rtimer.remotebox_name));
rtimer.rem_pre = rem_pre; rtimer.remotebox_name[sizeof(rtimer.remotebox_name) - 1] = 0;
rtimer.rem_post = rem_post; rtimer.rem_pre = rem_pre;
rtimer.rem_post = rem_post;
rtimer.eventID = atoi(remotetimers[i].get("id","").asString()); rtimer.eventID = atoi(remotetimers[i].get("id","").asString());
rtimer.eventType = CTimerd::TIMER_REMOTEBOX; rtimer.eventType = CTimerd::TIMER_REMOTEBOX;
rtimer.eventState = (CTimerd::CTimerEventStates) atoi(remotetimers[i].get("state","").asString()); rtimer.eventState = (CTimerd::CTimerEventStates) atoi(remotetimers[i].get("state","").asString());
@@ -822,13 +841,13 @@ void CTimerList::RemoteBoxTimerList(CTimerd::TimerList &rtimerlist)
//printf("[remotetimer] r-timer:%s - %s\n", remotetimers[i].get("channel_id","").asString().c_str(), remotetimers[i].get("title","").asString().c_str()); //printf("[remotetimer] r-timer:%s - %s\n", remotetimers[i].get("channel_id","").asString().c_str(), remotetimers[i].get("title","").asString().c_str());
rtimerlist.push_back(rtimer); rtimerlist.push_back(rtimer);
} }
} }
} }
} }
int CTimerList::show() int CTimerList::show()
{ {
neutrino_msg_t msg; neutrino_msg_t msg;
neutrino_msg_data_t data; neutrino_msg_data_t data;
int res = menu_return::RETURN_REPAINT; int res = menu_return::RETURN_REPAINT;
@@ -853,32 +872,42 @@ int CTimerList::show()
g_RCInput->getMsgAbsoluteTimeout( &msg, &data, &timeoutEnd ); g_RCInput->getMsgAbsoluteTimeout( &msg, &data, &timeoutEnd );
//ignore numeric keys //ignore numeric keys
if (g_RCInput->isNumeric(msg)){ if (g_RCInput->isNumeric(msg))
{
msg = CRCInput::RC_nokey; msg = CRCInput::RC_nokey;
} }
if ( msg <= CRCInput::RC_MaxRC ) if ( msg <= CRCInput::RC_MaxRC )
timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]);
::TIMING_MENU]);
if((msg == NeutrinoMessages::EVT_TIMER) && (data == fader.GetFadeTimer())) { if ((msg == NeutrinoMessages::EVT_TIMER) && (data == fader.GetFadeTimer()))
if(fader.FadeDone()) {
if (fader.FadeDone())
loop = false; loop = false;
} }
else if ( ( msg == CRCInput::RC_timeout ) || else if (
( msg == CRCInput::RC_home) || (msg == CRCInput::RC_left) || (msg == CRCInput::RC_timeout)
(( msg == CRCInput::RC_ok) && (timerlist.empty())) ) || (msg == CRCInput::RC_home)
|| (msg == CRCInput::RC_left)
|| (msg == CRCInput::RC_ok && timerlist.empty())
)
{ //Exit after timeout or cancel key { //Exit after timeout or cancel key
if(fader.StartFadeOut()) { if (fader.StartFadeOut())
{
timeoutEnd = CRCInput::calcTimeoutEnd( 1 ); timeoutEnd = CRCInput::calcTimeoutEnd( 1 );
msg = 0; msg = 0;
} else }
else
loop=false; loop=false;
} }
else if (!timerlist.empty() && else if (!timerlist.empty() && (
(msg == CRCInput::RC_up || (int)msg == g_settings.key_pageup || msg == CRCInput::RC_up
msg == CRCInput::RC_down || (int)msg == g_settings.key_pagedown)) || msg == CRCInput::RC_down
|| (int)msg == g_settings.key_pageup
|| (int)msg == g_settings.key_pagedown
)
)
{ {
int prev_selected = selected; int prev_selected = selected;
int oldliststart = liststart; int oldliststart = liststart;
@@ -888,13 +917,19 @@ int CTimerList::show()
liststart = (selected / listmaxshow) * listmaxshow; liststart = (selected / listmaxshow) * listmaxshow;
if (oldliststart != liststart) if (oldliststart != liststart)
paint(); paint();
else { else
{
paintItem(prev_selected - liststart); paintItem(prev_selected - liststart);
paintItem(selected - liststart); paintItem(selected - liststart);
} }
paintFoot(); paintFoot();
} }
else if ((msg == CRCInput::RC_right || msg == CRCInput::RC_ok || msg==CRCInput::RC_blue) && !(timerlist.empty())) else if (!timerlist.empty() && (
msg == CRCInput::RC_ok
|| msg == CRCInput::RC_right
|| msg == CRCInput::RC_blue
)
)
{ {
if (modifyTimer()==menu_return::RETURN_EXIT_ALL) if (modifyTimer()==menu_return::RETURN_EXIT_ALL)
{ {
@@ -904,84 +939,92 @@ int CTimerList::show()
else else
update=true; update=true;
} }
else if ((msg == CRCInput::RC_play) && !(timerlist.empty()) && (g_settings.timer_remotebox_ip.size() > 0)) else if (!timerlist.empty() && (msg == CRCInput::RC_play && g_settings.timer_remotebox_ip.size() > 0))
{ {
if (timerlist[selected].eventType == CTimerd::TIMER_RECORD ) { if (timerlist[selected].eventType == CTimerd::TIMER_RECORD )
{
RemoteBoxSelect(); RemoteBoxSelect();
if (exec(this,"send_remotetimer")) if (exec(this,"send_remotetimer"))
{ {
res=menu_return::RETURN_EXIT_ALL; res = menu_return::RETURN_EXIT_ALL;
loop=false; loop = false;
} }
else else
update=true; update=true;
} else if (timerlist[selected].eventType == CTimerd::TIMER_REMOTEBOX ) { }
else if (timerlist[selected].eventType == CTimerd::TIMER_REMOTEBOX )
{
if (exec(this,"fetch_remotetimer")) if (exec(this,"fetch_remotetimer"))
{ {
res=menu_return::RETURN_EXIT_ALL; res = menu_return::RETURN_EXIT_ALL;
loop=false; loop = false;
} }
else else
update=true; update = true;
} }
} }
else if ((msg == CRCInput::RC_red) && !(timerlist.empty())) else if (!timerlist.empty() && msg == CRCInput::RC_red)
{ {
if ((timerlist[selected].eventType == CTimerd::TIMER_REMOTEBOX) && (timerlist[selected].eventState < CTimerd::TIMERSTATE_ISRUNNING)) { if ((timerlist[selected].eventType == CTimerd::TIMER_REMOTEBOX) && (timerlist[selected].eventState < CTimerd::TIMERSTATE_ISRUNNING))
if (exec(this,"del_remotetimer")) {
{ if (exec(this,"del_remotetimer"))
res=menu_return::RETURN_EXIT_ALL; {
loop=false; res = menu_return::RETURN_EXIT_ALL;
} loop = false;
} else {
bool killTimer = true;
if (CRecordManager::getInstance()->RecordingStatus(timerlist[selected].channel_id)) {
CTimerd::RecordingStopInfo recinfo;
recinfo.channel_id = timerlist[selected].channel_id;
recinfo.eventID = timerlist[selected].eventID;
if (CRecordManager::getInstance()->IsRecording(&recinfo)) {
std::string title = "";
char buf1[1024];
CEPGData epgdata;
CEitManager::getInstance()->getEPGid(timerlist[selected].epgID, timerlist[selected].epg_starttime, &epgdata);
memset(buf1, '\0', sizeof(buf1));
if (!epgdata.title.empty())
title = "(" + epgdata.title + ")\n";
snprintf(buf1, sizeof(buf1)-1, g_Locale->getText(LOCALE_TIMERLIST_ASK_TO_DELETE), title.c_str());
if(ShowMsg(LOCALE_RECORDINGMENU_RECORD_IS_RUNNING, buf1,
CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbNo, NULL, 450, 30) == CMsgBox::mbrNo) {
killTimer = false;
update = false;
}
} }
} }
if (killTimer) { else
{
bool killTimer = true;
if (CRecordManager::getInstance()->RecordingStatus(timerlist[selected].channel_id))
{
CTimerd::RecordingStopInfo recinfo;
recinfo.channel_id = timerlist[selected].channel_id;
recinfo.eventID = timerlist[selected].eventID;
if (CRecordManager::getInstance()->IsRecording(&recinfo))
{
std::string title = "";
char buf1[1024];
CEPGData epgdata;
CEitManager::getInstance()->getEPGid(timerlist[selected].epgID, timerlist[selected].epg_starttime, &epgdata);
memset(buf1, '\0', sizeof(buf1));
if (!epgdata.title.empty())
title = "(" + epgdata.title + ")\n";
snprintf(buf1, sizeof(buf1)-1, g_Locale->getText(LOCALE_TIMERLIST_ASK_TO_DELETE), title.c_str());
if (ShowMsg(LOCALE_RECORDINGMENU_RECORD_IS_RUNNING, buf1, CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbNo, NULL, 450, 30, false) == CMsgBox::mbrNo)
{
killTimer = false;
update = false;
}
}
}
if (killTimer)
{
Timer->removeTimerEvent(timerlist[selected].eventID); Timer->removeTimerEvent(timerlist[selected].eventID);
update = true; update = true;
}
} }
} }
} else if (msg == CRCInput::RC_green)
else if (msg==CRCInput::RC_green)
{ {
if (newTimer()==menu_return::RETURN_EXIT_ALL) if (newTimer() == menu_return::RETURN_EXIT_ALL)
{ {
res=menu_return::RETURN_EXIT_ALL; res = menu_return::RETURN_EXIT_ALL;
loop=false; loop = false;
} }
else else
update=true; update = true;
} }
else if (msg==CRCInput::RC_setup) else if (msg == CRCInput::RC_setup)
{ {
update = RemoteBoxSetup(); update = RemoteBoxSetup();
} }
else if (msg==CRCInput::RC_yellow) else if (msg == CRCInput::RC_yellow)
{ {
update=true; update = true;
} }
#if 0 #if 0
else if ((msg==CRCInput::RC_blue)|| else if (msg==CRCInput::RC_blue || CRCInput::isNumeric(msg))
(CRCInput::isNumeric(msg)) )
{ {
//pushback key if... //pushback key if...
g_RCInput->postMsg( msg, data ); g_RCInput->postMsg( msg, data );
@@ -996,26 +1039,29 @@ int CTimerList::show()
if (timer->eventType == CTimerd::TIMER_RECORD || timer->eventType == CTimerd::TIMER_REMOTEBOX || timer->eventType == CTimerd::TIMER_ZAPTO) if (timer->eventType == CTimerd::TIMER_RECORD || timer->eventType == CTimerd::TIMER_REMOTEBOX || timer->eventType == CTimerd::TIMER_ZAPTO)
{ {
hide(); hide();
if (timer->epgID != 0){ if (timer->epgID != 0)
{
res = g_EpgData->show(timer->channel_id, timer->epgID, &timer->epg_starttime); res = g_EpgData->show(timer->channel_id, timer->epgID, &timer->epg_starttime);
update=true; update = true;
}else }
else
ShowHint(LOCALE_MESSAGEBOX_INFO, LOCALE_EPGVIEWER_NOTFOUND); ShowHint(LOCALE_MESSAGEBOX_INFO, LOCALE_EPGVIEWER_NOTFOUND);
if (res==menu_return::RETURN_EXIT_ALL) if (res == menu_return::RETURN_EXIT_ALL)
loop=false; loop = false;
else else
paint(); paint();
} }
} }
} }
else if (CNeutrinoApp::getInstance()->listModeKey(msg)) { else if (CNeutrinoApp::getInstance()->listModeKey(msg))
g_RCInput->postMsg (msg, 0); {
g_RCInput->postMsg(msg, 0);
loop = false; loop = false;
res = menu_return::RETURN_EXIT_ALL; res = menu_return::RETURN_EXIT_ALL;
} }
else else
{ {
if ( CNeutrinoApp::getInstance()->handleMsg( msg, data ) & messages_return::cancel_all ) if (CNeutrinoApp::getInstance()->handleMsg(msg, data) & messages_return::cancel_all)
{ {
loop = false; loop = false;
res = menu_return::RETURN_EXIT_ALL; res = menu_return::RETURN_EXIT_ALL;
@@ -1047,27 +1093,29 @@ bool CTimerList::RemoteBoxSetup()
remboxmenu->addIntroItems(); remboxmenu->addIntroItems();
item_offset = remboxmenu->getItemsCount(); item_offset = remboxmenu->getItemsCount();
for (std::vector<timer_remotebox_item>::iterator it = g_settings.timer_remotebox_ip.begin(); for (std::vector<timer_remotebox_item>::iterator it = g_settings.timer_remotebox_ip.begin(); it != g_settings.timer_remotebox_ip.end(); ++it)
it != g_settings.timer_remotebox_ip.end(); ++it)
remboxmenu->addItem(new CMenuForwarder(it->rbname, true, NULL, this, "cha_ip")); remboxmenu->addItem(new CMenuForwarder(it->rbname, true, NULL, this, "cha_ip"));
remboxmenu->setFooter(RemoteBoxFooterButtons, RemoteBoxFooterButtonCount); remboxmenu->setFooter(RemoteBoxFooterButtons, RemoteBoxFooterButtonCount);
remboxmenu->enableSaveScreen(true); remboxmenu->enableSaveScreen(true);
remboxmenu->exec(NULL, ""); remboxmenu->exec(NULL, "");
if (changed) { if (changed)
std::vector<timer_remotebox_item> old_timer_remotebox_ip = g_settings.timer_remotebox_ip; {
g_settings.timer_remotebox_ip.clear(); std::vector<timer_remotebox_item> old_timer_remotebox_ip = g_settings.timer_remotebox_ip;
for (int i = item_offset; i < remboxmenu->getItemsCount(); i++) { g_settings.timer_remotebox_ip.clear();
CMenuItem *item = remboxmenu->getItem(i); for (int i = item_offset; i < remboxmenu->getItemsCount(); i++)
CMenuForwarder *f = static_cast<CMenuForwarder*>(item); {
for (std::vector<timer_remotebox_item>::iterator it = old_timer_remotebox_ip.begin(); CMenuItem *item = remboxmenu->getItem(i);
it != old_timer_remotebox_ip.end(); ++it) CMenuForwarder *f = static_cast<CMenuForwarder*>(item);
if (it->rbname == f->getName()) { for (std::vector<timer_remotebox_item>::iterator it = old_timer_remotebox_ip.begin(); it != old_timer_remotebox_ip.end(); ++it)
g_settings.timer_remotebox_ip.push_back(*it);} if (it->rbname == f->getName())
} {
changed = false; g_settings.timer_remotebox_ip.push_back(*it);
ret = true; }
}
changed = false;
ret = true;
} }
delete remboxmenu; delete remboxmenu;
return ret; return ret;
@@ -1125,9 +1173,11 @@ void CTimerList::paintItem(int pos)
{ {
char srepeatcount[25] = {0}; char srepeatcount[25] = {0};
if (timer.repeatCount == 0) if (timer.repeatCount == 0)
// Unicode 8734 (hex: 221E) not available in all fonts {
// sprintf(srepeatcount,"∞"); // Unicode 8734 (hex: 221E) not available in all fonts
//sprintf(srepeatcount,"∞");
sprintf(srepeatcount,"00"); sprintf(srepeatcount,"00");
}
else else
sprintf(srepeatcount,"%ux",timer.repeatCount); sprintf(srepeatcount,"%ux",timer.repeatCount);
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x+fw*13+(real_width-fw*23)/2,ypos+fheight, (real_width-fw*13)/2-5, srepeatcount, color, fheight); g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x+fw*13+(real_width-fw*23)/2,ypos+fheight, (real_width-fw*13)/2-5, srepeatcount, color, fheight);
@@ -1136,23 +1186,28 @@ void CTimerList::paintItem(int pos)
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x+fw*13+(real_width-fw*13)/2,ypos+fheight, (real_width-fw*13)/2-5, t_type, color, fheight); g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x+fw*13+(real_width-fw*13)/2,ypos+fheight, (real_width-fw*13)/2-5, t_type, color, fheight);
// paint rec icon when recording in progress // paint rec icon when recording in progress
if ((timer.eventType == CTimerd::TIMER_RECORD) && (CRecordManager::getInstance()->RecordingStatus(timer.channel_id))) { if ((timer.eventType == CTimerd::TIMER_RECORD) && (CRecordManager::getInstance()->RecordingStatus(timer.channel_id)))
{
CTimerd::RecordingStopInfo recinfo; CTimerd::RecordingStopInfo recinfo;
recinfo.channel_id = timer.channel_id; recinfo.channel_id = timer.channel_id;
recinfo.eventID = timer.eventID; recinfo.eventID = timer.eventID;
if (CRecordManager::getInstance()->IsRecording(&recinfo)) { if (CRecordManager::getInstance()->IsRecording(&recinfo))
{
int icol_w, icol_h; int icol_w, icol_h;
frameBuffer->getIconSize(NEUTRINO_ICON_REC, &icol_w, &icol_h); frameBuffer->getIconSize(NEUTRINO_ICON_REC, &icol_w, &icol_h);
if ((icol_w > 0) && (icol_h > 0)) { if ((icol_w > 0) && (icol_h > 0))
{
frameBuffer->paintIcon(NEUTRINO_ICON_REC, (x + real_width) - (icol_w + 8), ypos, 2*fheight); frameBuffer->paintIcon(NEUTRINO_ICON_REC, (x + real_width) - (icol_w + 8), ypos, 2*fheight);
} }
} }
} }
if ((timer.eventType == CTimerd::TIMER_REMOTEBOX) && timer.eventState == CTimerd::TIMERSTATE_ISRUNNING) { if ((timer.eventType == CTimerd::TIMER_REMOTEBOX) && timer.eventState == CTimerd::TIMERSTATE_ISRUNNING)
{
int icol_w, icol_h; int icol_w, icol_h;
frameBuffer->getIconSize(NEUTRINO_ICON_REC, &icol_w, &icol_h); frameBuffer->getIconSize(NEUTRINO_ICON_REC, &icol_w, &icol_h);
if ((icol_w > 0) && (icol_h > 0)) { if ((icol_w > 0) && (icol_h > 0))
{
frameBuffer->paintIcon(NEUTRINO_ICON_REC, (x + real_width) - (icol_w + 8), ypos, 2*fheight); frameBuffer->paintIcon(NEUTRINO_ICON_REC, (x + real_width) - (icol_w + 8), ypos, 2*fheight);
} }
} }
@@ -1213,7 +1268,7 @@ void CTimerList::paintItem(int pos)
{ {
CHTTPTool httpTool; CHTTPTool httpTool;
std::string r_url; std::string r_url;
r_url = "http://"; r_url = "http://";
r_url += RemoteBoxConnectUrl(timer.remotebox_name); r_url += RemoteBoxConnectUrl(timer.remotebox_name);
r_url += "/control/getchannel?format=json&id="; r_url += "/control/getchannel?format=json&id=";
r_url += string_printf_helper(PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS, timer.channel_id); r_url += string_printf_helper(PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS, timer.channel_id);
@@ -1222,7 +1277,8 @@ void CTimerList::paintItem(int pos)
Json::Value root; Json::Value root;
Json::Reader reader; Json::Reader reader;
bool parsedSuccess = reader.parse(r_url, root, false); bool parsedSuccess = reader.parse(r_url, root, false);
if (!parsedSuccess) { if (!parsedSuccess)
{
printf("Failed to parse JSON\n"); printf("Failed to parse JSON\n");
printf("%s\n", reader.getFormattedErrorMessages().c_str()); printf("%s\n", reader.getFormattedErrorMessages().c_str());
} }
@@ -1364,10 +1420,10 @@ void CTimerList::paint()
int ypos = y+ theight; int ypos = y+ theight;
int sb = 2*fheight* listmaxshow; int sb = 2*fheight* listmaxshow;
frameBuffer->paintBoxRel(x+ width- 15,ypos, 15, sb, COL_SCROLLBAR_PASSIVE_PLUS_0); frameBuffer->paintBoxRel(x+ width- 15,ypos, 15, sb, COL_SCROLLBAR_PASSIVE_PLUS_0);
unsigned int tmp_max = listmaxshow; unsigned int tmp_max = listmaxshow;
if(!tmp_max) if (!tmp_max)
tmp_max = 1; tmp_max = 1;
int sbc= ((timerlist.size()- 1)/ tmp_max)+ 1; int sbc = ((timerlist.size()- 1)/ tmp_max)+ 1;
frameBuffer->paintBoxRel(x+ width- 13, ypos+ 2+ page_nr * (sb-4)/sbc, 11, (sb-4)/sbc, COL_SCROLLBAR_ACTIVE_PLUS_0, RADIUS_SMALL); frameBuffer->paintBoxRel(x+ width- 13, ypos+ 2+ page_nr * (sb-4)/sbc, 11, (sb-4)/sbc, COL_SCROLLBAR_ACTIVE_PLUS_0, RADIUS_SMALL);
} }
@@ -1396,8 +1452,8 @@ const char * CTimerList::convertTimerType2String(const CTimerd::CTimerEventTypes
return g_Locale->getText(LOCALE_TIMERLIST_TYPE_SLEEPTIMER ); return g_Locale->getText(LOCALE_TIMERLIST_TYPE_SLEEPTIMER );
case CTimerd::TIMER_EXEC_PLUGIN : case CTimerd::TIMER_EXEC_PLUGIN :
return g_Locale->getText(LOCALE_TIMERLIST_TYPE_EXECPLUGIN ); return g_Locale->getText(LOCALE_TIMERLIST_TYPE_EXECPLUGIN );
case CTimerd::TIMER_REMOTEBOX : case CTimerd::TIMER_REMOTEBOX :
return g_Locale->getText(LOCALE_TIMERLIST_TYPE_REMOTEBOX ); return g_Locale->getText(LOCALE_TIMERLIST_TYPE_REMOTEBOX );
default : default :
return g_Locale->getText(LOCALE_TIMERLIST_TYPE_UNKNOWN ); return g_Locale->getText(LOCALE_TIMERLIST_TYPE_UNKNOWN );
} }
@@ -1520,13 +1576,13 @@ int CTimerList::modifyTimer()
timerSettings.addItem( m0); timerSettings.addItem( m0);
CDateInput timerSettings_alarmTime(LOCALE_TIMERLIST_ALARMTIME, &timer->alarmTime , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2); CDateInput timerSettings_alarmTime(LOCALE_TIMERLIST_ALARMTIME, &timer->alarmTime , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2);
CMenuForwarder *m1 = new CMenuForwarder(LOCALE_TIMERLIST_ALARMTIME, true, timerSettings_alarmTime.getValue (), &timerSettings_alarmTime ); CMenuForwarder *m1 = new CMenuForwarder(LOCALE_TIMERLIST_ALARMTIME, true, timerSettings_alarmTime.getValue(), &timerSettings_alarmTime );
timerSettings.addItem( m1); timerSettings.addItem( m1);
CDateInput timerSettings_stopTime(LOCALE_TIMERLIST_STOPTIME, &timer->stopTime , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2); CDateInput timerSettings_stopTime(LOCALE_TIMERLIST_STOPTIME, &timer->stopTime , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2);
if (timer->stopTime != 0) if (timer->stopTime != 0)
{ {
CMenuForwarder *m2 = new CMenuForwarder(LOCALE_TIMERLIST_STOPTIME, true, timerSettings_stopTime.getValue (), &timerSettings_stopTime ); CMenuForwarder *m2 = new CMenuForwarder(LOCALE_TIMERLIST_STOPTIME, true, timerSettings_stopTime.getValue(), &timerSettings_stopTime );
timerSettings.addItem( m2); timerSettings.addItem( m2);
} }
@@ -1579,7 +1635,7 @@ int CTimerList::modifyTimer()
CMenuOptionChooser* ma4 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_APIDS_AC3, &timer_apids_ac3, MESSAGEBOX_NO_YES_OPTIONS, MESSAGEBOX_NO_YES_OPTION_COUNT, !timer_apids_dflt, &apid_notifier); CMenuOptionChooser* ma4 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_APIDS_AC3, &timer_apids_ac3, MESSAGEBOX_NO_YES_OPTIONS, MESSAGEBOX_NO_YES_OPTION_COUNT, !timer_apids_dflt, &apid_notifier);
timerSettings_apids.addItem(ma4); timerSettings_apids.addItem(ma4);
apid_notifier.setItems(ma1,ma2,ma3,ma4); apid_notifier.setItems(ma1,ma2,ma3,ma4);
if (timer->eventType == CTimerd::TIMER_RECORD) if (timer->eventType == CTimerd::TIMER_RECORD)
{ {
timerSettings.addItem( new CMenuForwarder(LOCALE_TIMERLIST_APIDS, true, NULL, &timerSettings_apids )); timerSettings.addItem( new CMenuForwarder(LOCALE_TIMERLIST_APIDS, true, NULL, &timerSettings_apids ));
} }
@@ -1630,20 +1686,19 @@ int CTimerList::newTimer()
timerNew_standby_on =false; timerNew_standby_on =false;
strncpy(timerNew.recordingDir,g_settings.network_nfs_recordingdir.c_str(),sizeof(timerNew.recordingDir)-1); strncpy(timerNew.recordingDir,g_settings.network_nfs_recordingdir.c_str(),sizeof(timerNew.recordingDir)-1);
CMenuWidget timerSettings(LOCALE_TIMERLIST_MENUNEW, NEUTRINO_ICON_SETTINGS); CMenuWidget timerSettings(LOCALE_TIMERLIST_MENUNEW, NEUTRINO_ICON_SETTINGS);
timerSettings.addIntroItems(); timerSettings.addIntroItems();
timerSettings.addItem(new CMenuForwarder(LOCALE_TIMERLIST_SAVE, true, NULL, this, "newtimer", CRCInput::RC_red)); timerSettings.addItem(new CMenuForwarder(LOCALE_TIMERLIST_SAVE, true, NULL, this, "newtimer", CRCInput::RC_red));
timerSettings.addItem(GenericMenuSeparatorLine); timerSettings.addItem(GenericMenuSeparatorLine);
CDateInput timerSettings_alarmTime(LOCALE_TIMERLIST_ALARMTIME, &(timerNew.alarmTime) , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2); CDateInput timerSettings_alarmTime(LOCALE_TIMERLIST_ALARMTIME, &(timerNew.alarmTime) , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2);
CMenuForwarder *m1 = new CMenuForwarder(LOCALE_TIMERLIST_ALARMTIME, true, timerSettings_alarmTime.getValue (), &timerSettings_alarmTime ); CMenuForwarder *m1 = new CMenuForwarder(LOCALE_TIMERLIST_ALARMTIME, true, timerSettings_alarmTime.getValue(), &timerSettings_alarmTime );
CDateInput timerSettings_stopTime(LOCALE_TIMERLIST_STOPTIME, &(timerNew.stopTime) , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2); CDateInput timerSettings_stopTime(LOCALE_TIMERLIST_STOPTIME, &(timerNew.stopTime) , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2);
CMenuForwarder *m2 = new CMenuForwarder(LOCALE_TIMERLIST_STOPTIME, true, timerSettings_stopTime.getValue (), &timerSettings_stopTime ); CMenuForwarder *m2 = new CMenuForwarder(LOCALE_TIMERLIST_STOPTIME, true, timerSettings_stopTime.getValue(), &timerSettings_stopTime );
CStringInput timerSettings_weekdays(LOCALE_TIMERLIST_WEEKDAYS, &m_weekdaysStr, 7, LOCALE_TIMERLIST_WEEKDAYS_HINT_1, LOCALE_TIMERLIST_WEEKDAYS_HINT_2, "-X"); CStringInput timerSettings_weekdays(LOCALE_TIMERLIST_WEEKDAYS, &m_weekdaysStr, 7, LOCALE_TIMERLIST_WEEKDAYS_HINT_1, LOCALE_TIMERLIST_WEEKDAYS_HINT_2, "-X");
CMenuForwarder *m4 = new CMenuForwarder(LOCALE_TIMERLIST_WEEKDAYS, false, m_weekdaysStr, &timerSettings_weekdays); CMenuForwarder *m4 = new CMenuForwarder(LOCALE_TIMERLIST_WEEKDAYS, false, m_weekdaysStr, &timerSettings_weekdays);
CIntInput timerSettings_repeatCount(LOCALE_TIMERLIST_REPEATCOUNT, (int*)&timerNew.repeatCount,3, LOCALE_TIMERLIST_REPEATCOUNT_HELP1, LOCALE_TIMERLIST_REPEATCOUNT_HELP2); CIntInput timerSettings_repeatCount(LOCALE_TIMERLIST_REPEATCOUNT, (int*)&timerNew.repeatCount,3, LOCALE_TIMERLIST_REPEATCOUNT_HELP1, LOCALE_TIMERLIST_REPEATCOUNT_HELP2);
CMenuForwarder *m5 = new CMenuForwarder(LOCALE_TIMERLIST_REPEATCOUNT, false,timerSettings_repeatCount.getValue() , &timerSettings_repeatCount); CMenuForwarder *m5 = new CMenuForwarder(LOCALE_TIMERLIST_REPEATCOUNT, false,timerSettings_repeatCount.getValue() , &timerSettings_repeatCount);
@@ -1652,12 +1707,13 @@ int CTimerList::newTimer()
m_weekdaysStr = "XXXXX--"; m_weekdaysStr = "XXXXX--";
CMenuOptionChooser* m3 = new CMenuOptionChooser(LOCALE_TIMERLIST_REPEAT, (int *)&timerNew.eventRepeat, TIMERLIST_REPEAT_OPTIONS, TIMERLIST_REPEAT_OPTION_COUNT, true, &notifier); CMenuOptionChooser* m3 = new CMenuOptionChooser(LOCALE_TIMERLIST_REPEAT, (int *)&timerNew.eventRepeat, TIMERLIST_REPEAT_OPTIONS, TIMERLIST_REPEAT_OPTION_COUNT, true, &notifier);
CMenuWidget mctv(LOCALE_TIMERLIST_BOUQUETSELECT, NEUTRINO_ICON_SETTINGS); CMenuWidget mctv(LOCALE_TIMERLIST_BOUQUETSELECT, NEUTRINO_ICON_SETTINGS);
CMenuWidget mcradio(LOCALE_TIMERLIST_BOUQUETSELECT, NEUTRINO_ICON_SETTINGS); CMenuWidget mcradio(LOCALE_TIMERLIST_BOUQUETSELECT, NEUTRINO_ICON_SETTINGS);
for (int i = 0; i < (int) g_bouquetManager->Bouquets.size(); i++) { for (int i = 0; i < (int) g_bouquetManager->Bouquets.size(); i++)
if (!g_bouquetManager->Bouquets[i]->bHidden) { {
if (!g_bouquetManager->Bouquets[i]->bHidden)
{
CMenuWidget* mwtv = new CMenuWidget(LOCALE_TIMERLIST_CHANNELSELECT, NEUTRINO_ICON_SETTINGS); CMenuWidget* mwtv = new CMenuWidget(LOCALE_TIMERLIST_CHANNELSELECT, NEUTRINO_ICON_SETTINGS);
toDelete.push_back(mwtv); toDelete.push_back(mwtv);
CMenuWidget* mwradio = new CMenuWidget(LOCALE_TIMERLIST_CHANNELSELECT, NEUTRINO_ICON_SETTINGS); CMenuWidget* mwradio = new CMenuWidget(LOCALE_TIMERLIST_CHANNELSELECT, NEUTRINO_ICON_SETTINGS);
@@ -1665,18 +1721,19 @@ int CTimerList::newTimer()
ZapitChannelList channels; ZapitChannelList channels;
g_bouquetManager->Bouquets[i]->getTvChannels(channels); g_bouquetManager->Bouquets[i]->getTvChannels(channels);
for (int j = 0; j < (int) channels.size(); j++) { for (int j = 0; j < (int) channels.size(); j++)
{
char cChannelId[3+16+1+1]; char cChannelId[3+16+1+1];
sprintf(cChannelId, "SC:" PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS ",", channels[j]->getChannelID()); sprintf(cChannelId, "SC:" PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS ",", channels[j]->getChannelID());
mwtv->addItem(new CMenuForwarder(channels[j]->getName(), true, NULL, this, (std::string(cChannelId) + channels[j]->getName()).c_str(), CRCInput::RC_nokey, NULL, channels[j]->scrambled ? NEUTRINO_ICON_SCRAMBLED : (channels[j]->getUrl().empty() ? NULL : NEUTRINO_ICON_STREAMING))); mwtv->addItem(new CMenuForwarder(channels[j]->getName(), true, NULL, this, (std::string(cChannelId) + channels[j]->getName()).c_str(), CRCInput::RC_nokey, NULL, channels[j]->scrambled ? NEUTRINO_ICON_SCRAMBLED : (channels[j]->getUrl().empty() ? NULL : NEUTRINO_ICON_STREAMING)));
} }
if (!channels.empty()) if (!channels.empty())
mctv.addItem(new CMenuForwarder(g_bouquetManager->Bouquets[i]->bFav ? g_Locale->getText(LOCALE_FAVORITES_BOUQUETNAME) : g_bouquetManager->Bouquets[i]->Name.c_str() /*g_bouquetManager->Bouquets[i]->Name.c_str()*/, true, NULL, mwtv)); mctv.addItem(new CMenuForwarder(g_bouquetManager->Bouquets[i]->bFav ? g_Locale->getText(LOCALE_FAVORITES_BOUQUETNAME) : g_bouquetManager->Bouquets[i]->Name.c_str() /*g_bouquetManager->Bouquets[i]->Name.c_str()*/, true, NULL, mwtv));
g_bouquetManager->Bouquets[i]->getRadioChannels(channels); g_bouquetManager->Bouquets[i]->getRadioChannels(channels);
for (int j = 0; j < (int) channels.size(); j++) { for (int j = 0; j < (int) channels.size(); j++)
{
char cChannelId[3+16+1+1]; char cChannelId[3+16+1+1];
sprintf(cChannelId, "SC:" PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS ",", channels[j]->getChannelID()); sprintf(cChannelId, "SC:" PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS ",", channels[j]->getChannelID());
mwradio->addItem(new CMenuForwarder(channels[j]->getName(), true, NULL, this, (std::string(cChannelId) + channels[j]->getName()).c_str(), CRCInput::RC_nokey, NULL, channels[j]->scrambled ? NEUTRINO_ICON_SCRAMBLED : (channels[j]->getUrl().empty() ? NULL : NEUTRINO_ICON_STREAMING))); mwradio->addItem(new CMenuForwarder(channels[j]->getName(), true, NULL, this, (std::string(cChannelId) + channels[j]->getName()).c_str(), CRCInput::RC_nokey, NULL, channels[j]->scrambled ? NEUTRINO_ICON_SCRAMBLED : (channels[j]->getUrl().empty() ? NULL : NEUTRINO_ICON_STREAMING)));
@@ -1752,34 +1809,31 @@ bool CTimerList::askUserOnRemoteTimerConflict(time_t announceTime, time_t stopTi
int pre,post; int pre,post;
Timer->getRecordingSafety(pre,post); Timer->getRecordingSafety(pre,post);
for (CTimerd::TimerList::iterator it = timerlist.begin(); for (CTimerd::TimerList::iterator it = timerlist.begin(); it != timerlist.end();++it)
it != timerlist.end();++it)
{ {
if (strcmp(it->remotebox_name,remotebox_name) == 0)
if (strcmp(it->remotebox_name,remotebox_name) == 0) {
if(it->stopTime != 0 && stopTime != 0)
{ {
// Check if both timers have start and end. In this case do not show conflict, if endtime is the same than the starttime of the following timer if (it->stopTime != 0 && stopTime != 0)
if ((stopTime+post > it->alarmTime) && (announceTime-pre < it->stopTime))
{ {
overlappingTimers.push_back(*it); // Check if both timers have start and end. In this case do not show conflict, if endtime is the same than the starttime of the following timer
if ((stopTime+post > it->alarmTime) && (announceTime-pre < it->stopTime))
{
overlappingTimers.push_back(*it);
}
} }
} else
else
{
if (!((stopTime < it->announceTime) || (announceTime > it->stopTime)))
{ {
overlappingTimers.push_back(*it); if (!((stopTime < it->announceTime) || (announceTime > it->stopTime)))
{
overlappingTimers.push_back(*it);
}
} }
} }
}
} }
std::string timerbuf = g_Locale->getText(LOCALE_TIMERLIST_OVERLAPPING_TIMER); std::string timerbuf = g_Locale->getText(LOCALE_TIMERLIST_OVERLAPPING_TIMER);
timerbuf += "\n"; timerbuf += "\n";
for (CTimerd::TimerList::iterator it = overlappingTimers.begin(); for (CTimerd::TimerList::iterator it = overlappingTimers.begin(); it != overlappingTimers.end(); ++it)
it != overlappingTimers.end(); ++it)
{ {
timerbuf += CTimerList::convertTimerType2String(it->eventType); timerbuf += CTimerList::convertTimerType2String(it->eventType);
timerbuf += " ("; timerbuf += " (";
@@ -1806,7 +1860,7 @@ bool CTimerList::askUserOnRemoteTimerConflict(time_t announceTime, time_t stopTi
struct tm *sTime = localtime(&(it->stopTime)); struct tm *sTime = localtime(&(it->stopTime));
timerbuf += strftime("%d.%m. %H:%M\n",sTime); timerbuf += strftime("%d.%m. %H:%M\n",sTime);
} }
if (!overlappingTimers.empty()) if (overlappingTimers.size() > 0)
return (ShowMsg(LOCALE_MESSAGEBOX_INFO,timerbuf,CMsgBox::mbrNo,CMsgBox::mbNo|CMsgBox::mbYes) == CMsgBox::mbrYes); return (ShowMsg(LOCALE_MESSAGEBOX_INFO,timerbuf,CMsgBox::mbrNo,CMsgBox::mbNo|CMsgBox::mbYes) == CMsgBox::mbrYes);
else else
return true; return true;
@@ -1831,8 +1885,7 @@ bool askUserOnTimerConflict(time_t announceTime, time_t stopTime, t_channel_id c
std::string timerbuf = g_Locale->getText(LOCALE_TIMERLIST_OVERLAPPING_TIMER); std::string timerbuf = g_Locale->getText(LOCALE_TIMERLIST_OVERLAPPING_TIMER);
timerbuf += "\n"; timerbuf += "\n";
for (CTimerd::TimerList::iterator it = overlappingTimers.begin(); for (CTimerd::TimerList::iterator it = overlappingTimers.begin(); it != overlappingTimers.end(); ++it)
it != overlappingTimers.end(); ++it)
{ {
timerbuf += CTimerList::convertTimerType2String(it->eventType); timerbuf += CTimerList::convertTimerType2String(it->eventType);
timerbuf += " ("; timerbuf += " (";