From patchwork Sun May 20 20:06:06 2007 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Frei X-Patchwork-Id: 12466 Received: from mo-p07-ob.rzone.de ([81.169.146.189]) by www.linuxtv.org with esmtp (Exim 4.50) id 1Hprdo-00021f-RR for vdr@linuxtv.org; Sun, 20 May 2007 22:04:32 +0200 Received: from nop.qdt (dslb-084-057-240-232.pools.arcor-ip.net [84.57.240.232]) by post.webmailer.de (fruni mo37) (RZmta 6.5) with ESMTP id G025e0j4KIAjyA for ; Sun, 20 May 2007 22:04:31 +0200 (MEST) From: Sebastian Frei To: vdr@linuxtv.org Subject: [vdr] Re: How to customize lcdproc for vdr ? User-Agent: KMail/1.9.7 References: <20070520193740.5C6FE1C000A0@mwinf2401.orange.fr> In-Reply-To: <20070520193740.5C6FE1C000A0@mwinf2401.orange.fr> MIME-Version: 1.0 Date: Sun, 20 May 2007 22:06:06 +0200 Message-Id: <200705202206.06486.sebastian@schnapsleichen.de> X-RZG-AUTH: lUESeo99iNzPL9eKRrimADA38LltHUiFKh/XpiGaC/7Max5mirP2Uiy/S+jYEjUchNQG X-RZG-CLASS-ID: mo07 X-BeenThere: vdr@linuxtv.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: VDR Mailing List List-Id: VDR Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 May 2007 20:04:32 -0000 Status: O X-Status: X-Keywords: X-UID: 12983 Am Sonntag, 20. Mai 2007 schrieb kafifi: > Hello, > > I am using vdr-1.4.7, and vdr-lcdproc-0.0.10-jw2, to drive a 16x2 > characters imon VFD module. > > The display is really nice, but 16x2 isn't enough to display all datas. I > would customize lcdproc to > remove all EPG informations, and display only time, channel number and > channel name. > > Could someone help me to do this customization ? > > Thanks a lot. Hi, I have a 2x20 LC display and once made this patch. It introduces a new option "show time" whice you can disable to have more useful information on your display. S. diff -ur lcdproc-0.0.10-jw2.org/i18n.c lcdproc-0.0.10-jw2/i18n.c --- lcdproc-0.0.10-jw2.org/i18n.c 2006-11-12 22:12:11.000000000 +0100 +++ lcdproc-0.0.10-jw2/i18n.c 2007-03-07 13:18:53.000000000 +0100 @@ -368,5 +368,23 @@ "BackLightWait", "BackLightWait", }, + { + "Show time", + "Zeit anzeigen", + "Show time", + "Show time", + "Show time", + "Show time", + "Show time", + "Show time", + "Show time", + "Show time", + "Show time", + "Show time", + "Show time", + "Show time", + "Show time", + "Show time", + }, { NULL } }; diff -ur lcdproc-0.0.10-jw2.org/lcd.c lcdproc-0.0.10-jw2/lcd.c --- lcdproc-0.0.10-jw2.org/lcd.c 2006-11-12 19:38:44.000000000 +0100 +++ lcdproc-0.0.10-jw2/lcd.c 2007-03-08 13:19:23.000000000 +0100 @@ -646,10 +646,10 @@ lastPrioN=LcdSetup.ClientPrioN; syslog(LOG_INFO, "LCD output thread started (pid=%d), display size: %dx%d", getpid(),hgt,wid); - cLcd::Write(1," Welcome to V D R\0"); - cLcd::Write(2,"--------------------\0"); - cLcd::Write(3,"Video Disk Recorder\0"); - cLcd::Write(4,"Version: "VDRVERSION"\0"); + cLcd::Write(LcdSetup.ShowTime?1:4," Welcome to V D R\0"); + cLcd::Write(LcdSetup.ShowTime?2:3,"--------------------\0"); + cLcd::Write(LcdSetup.ShowTime?3:1,"Video Disk Recorder\0"); + cLcd::Write(LcdSetup.ShowTime?4:2,"Version: "VDRVERSION"\0"); // Output init if (LcdSetup.OutputNumber > 0){ @@ -828,19 +828,22 @@ ScrollState=LCDMENU; ScrollLine=1; break; case Title: + ScrollState=LCDTITLE; if (!ToggleMode) { - ScrollState=LCDTITLE; ScrollLine=2; + ScrollLine=2; } else { - ScrollState=LCDTITLE; ScrollLine=1; - char tmpbuffer[1024]; - strcpy(tmpbuffer,OutStateData.lcdbuffer[LCDTITLE][1]); - strcat(tmpbuffer," * "); - strcat(tmpbuffer, OutStateData.lcdfullbuffer[ScrollState]); - strcpy(OutStateData.lcdfullbuffer[ScrollState],tmpbuffer); - strncpy(OutStateData.lcdbuffer[LCDTITLE][1],OutStateData.lcdfullbuffer[ScrollState],wid); + ScrollLine=1; + if (LcdSetup.ShowTime) { + char tmpbuffer[1024]; + strcpy(tmpbuffer,OutStateData.lcdbuffer[LCDTITLE][1]); + strcat(tmpbuffer," * "); + strcat(tmpbuffer, OutStateData.lcdfullbuffer[LCDTITLE]); + strcpy(OutStateData.lcdfullbuffer[LCDTITLE],tmpbuffer); + } + strncpy(OutStateData.lcdbuffer[LCDTITLE][1],OutStateData.lcdfullbuffer[LCDTITLE],wid); } - if ( strlen(OutStateData.lcdfullbuffer[ScrollState]) != lasttitlelen ) { - lasttitlelen=strlen(OutStateData.lcdfullbuffer[ScrollState]); + if ( strlen(OutStateData.lcdfullbuffer[LCDTITLE]) != lasttitlelen ) { + lasttitlelen=strlen(OutStateData.lcdfullbuffer[LCDTITLE]); scrollpos=0; scrollwaitcnt=LcdSetup.Scrollwait; ThreadStateData.newscroll=false; } break; @@ -865,7 +868,7 @@ OutStateData.lcdbuffer[ScrollState][ScrollLine+1][wid]='\0'; Lcddirty[ScrollState][ScrollLine]=Lcddirty[ScrollState][ScrollLine+1]=true; } - } + } else if (!LcdSetup.ShowTime) Lcddirty[LCDTITLE][1]=true; } // volume @@ -902,12 +905,12 @@ case Title: // Display 'titlescsreen' = 1 LineMode=0; - if ( (now.tv_usec < WakeUpCycle) || (PrevState != Title) ) { + if ( (LcdSetup.ShowTime) && ( (now.tv_usec < WakeUpCycle) || (PrevState != Title) ) ) { cLcd::GetTimeDateStat(workstring,OutStateData.CardStat); cLcd::Write(1,workstring); - } - if (PrevState != Title) for (i=1;i<4;i++) Lcddirty[LCDTITLE][i]=true; - for (i=1;i<4;i++) if (Lcddirty[LCDTITLE][i]) { + } + if (PrevState != Title) for (i=LcdSetup.ShowTime?1:0;i<4;i++) Lcddirty[LCDTITLE][i]=true; + for (i=LcdSetup.ShowTime?1:0;i<4;i++) if (Lcddirty[LCDTITLE][i]) { cLcd::Write(i+1,OutStateData.lcdbuffer[LCDTITLE][i]); Lcddirty[LCDTITLE][i]=false; } diff -ur lcdproc-0.0.10-jw2.org/lcdproc.c lcdproc-0.0.10-jw2/lcdproc.c --- lcdproc-0.0.10-jw2.org/lcdproc.c 2006-11-15 14:39:28.000000000 +0100 +++ lcdproc-0.0.10-jw2/lcdproc.c 2007-03-07 13:33:03.000000000 +0100 @@ -97,7 +97,7 @@ } else { LCDproc->SetReplayDevice(NULL); LCDproc->SetProgress(NULL); - LCDproc->SetLineC(1,1,tempstringbuffer); + LCDproc->SetLineC(1,LcdSetup.ShowTime?1:0,tempstringbuffer); LCDproc->SetThreadState( (cLcd::ThreadStates) 1); // Title } menumode=false; @@ -118,7 +118,7 @@ else LCDproc->SetThreadState( (cLcd::ThreadStates) 1); // Title menumode=false; - if (group) {LCDproc->SetLineC(1,1,tempstringbuffer); group=false; } + if (group) {LCDproc->SetLineC(1,LcdSetup.ShowTime?1:0,tempstringbuffer); group=false; } } void cLcdFeed::OsdTitle(const char *Title) @@ -170,7 +170,7 @@ void cLcdFeed::OsdChannel(const char *Text) { //syslog(LOG_INFO, "lcdproc: cLcdFeed::OsdChannel %s", Text); - LCDproc->SetLineC(1,1,Text); + LCDproc->SetLineC(1,LcdSetup.ShowTime?1:0,Text); bool switching = group = !isdigit(Text[0]); if (!group) strcpy(tempstringbuffer,Text); @@ -365,6 +365,7 @@ Add(new cMenuEditStraTrItem( str2, &newLcdSetup.OutputFunction[i],14, OutputFunctionText)); } Add(new cMenuEditStraItem( tr("Recording status"), &newLcdSetup.RecordingStatus, 2, RecordingStatusText)); + Add(new cMenuEditBoolItem( tr("Show time"), &newLcdSetup.ShowTime)); } void cMenuSetupLcd::Store(void) @@ -388,6 +389,7 @@ SetupStore(str2, LcdSetup.OutputFunction[i] = newLcdSetup.OutputFunction[i]); } SetupStore("RecordingStatus", LcdSetup.RecordingStatus = newLcdSetup.RecordingStatus); + SetupStore("ShowTime", LcdSetup.ShowTime = newLcdSetup.ShowTime); } @@ -424,6 +426,7 @@ else if (!strcasecmp(Name, "OutputNumber 8")) LcdSetup.OutputFunction[8] = atoi(Value); else if (!strcasecmp(Name, "OutputNumber 9")) LcdSetup.OutputFunction[9] = atoi(Value); else if (!strcasecmp(Name, "RecordingStatus")) LcdSetup.RecordingStatus = atoi(Value); + else if (!strcasecmp(Name, "ShowTime")) LcdSetup.ShowTime = atoi(Value); else return false; return true; diff -ur lcdproc-0.0.10-jw2.org/README lcdproc-0.0.10-jw2/README --- lcdproc-0.0.10-jw2.org/README 2006-11-12 19:59:31.000000000 +0100 +++ lcdproc-0.0.10-jw2/README 2007-03-08 13:15:54.000000000 +0100 @@ -78,6 +78,10 @@ configures whether the recording status is displayed "detailed" (for every dvb card) or only "simple". +ShowTime + implemented by Sebastian Frei + disable this if you have a small display and don't want to have + the time displayed in the top line LCDproc is available at http://lcdproc.omnipotent.net/ or here http://sourceforge.net/projects/lcdproc/ diff -ur lcdproc-0.0.10-jw2.org/setup.c lcdproc-0.0.10-jw2/setup.c --- lcdproc-0.0.10-jw2.org/setup.c 2006-11-12 20:25:11.000000000 +0100 +++ lcdproc-0.0.10-jw2/setup.c 2007-03-07 13:13:45.000000000 +0100 @@ -20,5 +20,6 @@ for (int i = 0; i < LCDMAXOUTPUTS; i++) OutputFunction[i] = 0; RecordingStatus = 0; + ShowTime = 1; } diff -ur lcdproc-0.0.10-jw2.org/setup.h lcdproc-0.0.10-jw2/setup.h --- lcdproc-0.0.10-jw2.org/setup.h 2006-11-12 20:26:25.000000000 +0100 +++ lcdproc-0.0.10-jw2/setup.h 2007-03-07 13:34:52.000000000 +0100 @@ -20,6 +20,7 @@ int OutputNumber; int OutputFunction[LCDMAXOUTPUTS]; int RecordingStatus; + int ShowTime; public: cLcdSetup(void); };