mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
The status markers in the "Schedule" menu are now only updated if a submenu is closed in which a timer has been modified
This commit is contained in:
parent
197b8c27fa
commit
cad1a88a7b
2
HISTORY
2
HISTORY
@ -4181,3 +4181,5 @@ Video Disk Recorder Revision History
|
|||||||
This can be used to find reruns of a given show, or the episodes of a series.
|
This can be used to find reruns of a given show, or the episodes of a series.
|
||||||
Note that if there are many channels in your channels.conf, displaying the
|
Note that if there are many channels in your channels.conf, displaying the
|
||||||
"All events on all channels" page may take a while.
|
"All events on all channels" page may take a while.
|
||||||
|
- The status markers in the "Schedule" menu are now only updated if a submenu is
|
||||||
|
closed in which a timer has been modified, which speeds up closing submenus.
|
||||||
|
28
menu.c
28
menu.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: menu.c 1.394 2006/01/15 12:46:07 kls Exp $
|
* $Id: menu.c 1.395 2006/01/15 13:35:05 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -1030,6 +1030,7 @@ class cMenuWhatsOn : public cOsdMenu {
|
|||||||
private:
|
private:
|
||||||
bool now;
|
bool now;
|
||||||
int helpKeys;
|
int helpKeys;
|
||||||
|
int timerState;
|
||||||
eOSState Record(void);
|
eOSState Record(void);
|
||||||
eOSState Switch(void);
|
eOSState Switch(void);
|
||||||
static int currentChannel;
|
static int currentChannel;
|
||||||
@ -1052,6 +1053,8 @@ cMenuWhatsOn::cMenuWhatsOn(const cSchedules *Schedules, bool Now, int CurrentCha
|
|||||||
{
|
{
|
||||||
now = Now;
|
now = Now;
|
||||||
helpKeys = -1;
|
helpKeys = -1;
|
||||||
|
timerState = 0;
|
||||||
|
Timers.Modified(timerState);
|
||||||
for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) {
|
for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) {
|
||||||
if (!Channel->GroupSep()) {
|
if (!Channel->GroupSep()) {
|
||||||
const cSchedule *Schedule = Schedules->GetSchedule(Channel);
|
const cSchedule *Schedule = Schedules->GetSchedule(Channel);
|
||||||
@ -1069,10 +1072,12 @@ cMenuWhatsOn::cMenuWhatsOn(const cSchedules *Schedules, bool Now, int CurrentCha
|
|||||||
bool cMenuWhatsOn::Update(void)
|
bool cMenuWhatsOn::Update(void)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
for (cOsdItem *item = First(); item; item = Next(item)) {
|
if (Timers.Modified(timerState)) {
|
||||||
if (((cMenuScheduleItem *)item)->Update())
|
for (cOsdItem *item = First(); item; item = Next(item)) {
|
||||||
result = true;
|
if (((cMenuScheduleItem *)item)->Update())
|
||||||
}
|
result = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1188,6 +1193,7 @@ private:
|
|||||||
bool now, next;
|
bool now, next;
|
||||||
int otherChannel;
|
int otherChannel;
|
||||||
int helpKeys;
|
int helpKeys;
|
||||||
|
int timerState;
|
||||||
eOSState Number(void);
|
eOSState Number(void);
|
||||||
eOSState Record(void);
|
eOSState Record(void);
|
||||||
eOSState Switch(void);
|
eOSState Switch(void);
|
||||||
@ -1209,6 +1215,8 @@ cMenuSchedule::cMenuSchedule(void)
|
|||||||
now = next = false;
|
now = next = false;
|
||||||
otherChannel = 0;
|
otherChannel = 0;
|
||||||
helpKeys = -1;
|
helpKeys = -1;
|
||||||
|
timerState = 0;
|
||||||
|
Timers.Modified(timerState);
|
||||||
cMenuScheduleItem::SetSortMode(cMenuScheduleItem::ssmAllThis);
|
cMenuScheduleItem::SetSortMode(cMenuScheduleItem::ssmAllThis);
|
||||||
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
|
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
|
||||||
if (channel) {
|
if (channel) {
|
||||||
@ -1306,10 +1314,12 @@ void cMenuSchedule::PrepareScheduleAllAll(const cEvent *Event, const cChannel *C
|
|||||||
bool cMenuSchedule::Update(void)
|
bool cMenuSchedule::Update(void)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
for (cOsdItem *item = First(); item; item = Next(item)) {
|
if (Timers.Modified(timerState)) {
|
||||||
if (((cMenuScheduleItem *)item)->Update())
|
for (cOsdItem *item = First(); item; item = Next(item)) {
|
||||||
result = true;
|
if (((cMenuScheduleItem *)item)->Update())
|
||||||
}
|
result = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
12
timers.c
12
timers.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: timers.c 1.42 2006/01/14 14:56:11 kls Exp $
|
* $Id: timers.c 1.43 2006/01/15 13:31:11 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "timers.h"
|
#include "timers.h"
|
||||||
@ -515,7 +515,7 @@ cTimers Timers;
|
|||||||
|
|
||||||
cTimers::cTimers(void)
|
cTimers::cTimers(void)
|
||||||
{
|
{
|
||||||
modified = false;
|
state = 0;
|
||||||
beingEdited = 0;;
|
beingEdited = 0;;
|
||||||
lastSetEvents = 0;
|
lastSetEvents = 0;
|
||||||
}
|
}
|
||||||
@ -574,13 +574,13 @@ cTimer *cTimers::GetNextActiveTimer(void)
|
|||||||
|
|
||||||
void cTimers::SetModified(void)
|
void cTimers::SetModified(void)
|
||||||
{
|
{
|
||||||
modified = true;
|
state++;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cTimers::Modified(void)
|
bool cTimers::Modified(int &State)
|
||||||
{
|
{
|
||||||
bool Result = modified;
|
bool Result = state != State;
|
||||||
modified = false;
|
State = state;
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
11
timers.h
11
timers.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: timers.h 1.23 2006/01/06 14:13:17 kls Exp $
|
* $Id: timers.h 1.24 2006/01/15 13:29:44 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __TIMERS_H
|
#ifndef __TIMERS_H
|
||||||
@ -96,7 +96,7 @@ public:
|
|||||||
|
|
||||||
class cTimers : public cConfig<cTimer> {
|
class cTimers : public cConfig<cTimer> {
|
||||||
private:
|
private:
|
||||||
bool modified;
|
int state;
|
||||||
int beingEdited;
|
int beingEdited;
|
||||||
time_t lastSetEvents;
|
time_t lastSetEvents;
|
||||||
public:
|
public:
|
||||||
@ -109,9 +109,10 @@ public:
|
|||||||
void IncBeingEdited(void) { beingEdited++; }
|
void IncBeingEdited(void) { beingEdited++; }
|
||||||
void DecBeingEdited(void) { if (!--beingEdited) lastSetEvents = 0; }
|
void DecBeingEdited(void) { if (!--beingEdited) lastSetEvents = 0; }
|
||||||
void SetModified(void);
|
void SetModified(void);
|
||||||
bool Modified(void);
|
bool Modified(int &State);
|
||||||
///< Returns true if any of the timers have been modified.
|
///< Returns true if any of the timers have been modified, which
|
||||||
///< Calling this function resets the 'modified' flag to false.
|
///< is detected by State being different than the internal state.
|
||||||
|
///< Upon return the internal state will be stored in State.
|
||||||
void SetEvents(void);
|
void SetEvents(void);
|
||||||
void DeleteExpired(void);
|
void DeleteExpired(void);
|
||||||
};
|
};
|
||||||
|
5
vdr.c
5
vdr.c
@ -22,7 +22,7 @@
|
|||||||
*
|
*
|
||||||
* The project's page is at http://www.cadsoft.de/vdr
|
* The project's page is at http://www.cadsoft.de/vdr
|
||||||
*
|
*
|
||||||
* $Id: vdr.c 1.237 2006/01/14 10:20:50 kls Exp $
|
* $Id: vdr.c 1.238 2006/01/15 13:31:57 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@ -690,9 +690,10 @@ int main(int argc, char *argv[])
|
|||||||
if (!Channels.BeingEdited() && !Timers.BeingEdited()) {
|
if (!Channels.BeingEdited() && !Timers.BeingEdited()) {
|
||||||
int modified = Channels.Modified();
|
int modified = Channels.Modified();
|
||||||
static time_t ChannelSaveTimeout = 0;
|
static time_t ChannelSaveTimeout = 0;
|
||||||
|
static int TimerState = 0;
|
||||||
// Channels and timers need to be stored in a consistent manner,
|
// Channels and timers need to be stored in a consistent manner,
|
||||||
// therefore if one of them is changed, we save both.
|
// therefore if one of them is changed, we save both.
|
||||||
if (modified == CHANNELSMOD_USER || Timers.Modified())
|
if (modified == CHANNELSMOD_USER || Timers.Modified(TimerState))
|
||||||
ChannelSaveTimeout = 1; // triggers an immediate save
|
ChannelSaveTimeout = 1; // triggers an immediate save
|
||||||
else if (modified && !ChannelSaveTimeout)
|
else if (modified && !ChannelSaveTimeout)
|
||||||
ChannelSaveTimeout = time(NULL) + CHANNELSAVEDELTA;
|
ChannelSaveTimeout = time(NULL) + CHANNELSAVEDELTA;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user