From patchwork Tue Jan 3 12:49:17 2006 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Klaus Schmidinger X-Patchwork-Id: 12131 Received: from tiger.cadsoft.de ([217.7.101.210]) by www.linuxtv.org with esmtp (Exim 4.50) id 1EtlbO-00016A-0W for vdr@linuxtv.org; Tue, 03 Jan 2006 13:49:22 +0100 Received: from raven.cadsoft.de (raven.cadsoft.de [217.7.101.211]) by tiger.cadsoft.de (8.13.4/8.13.4) with ESMTP id k03CnLx8001847 for ; Tue, 3 Jan 2006 13:49:21 +0100 Received: from [192.168.100.10] (hawk.cadsoft.de [192.168.100.10]) by raven.cadsoft.de (8.13.3/8.13.3) with ESMTP id k03CnJNP012985 for ; Tue, 3 Jan 2006 13:49:20 +0100 Message-ID: <43BA72CD.5010607@cadsoft.de> Date: Tue, 03 Jan 2006 13:49:17 +0100 From: Klaus Schmidinger Organization: CadSoft Computer GmbH User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050716) X-Accept-Language: en MIME-Version: 1.0 To: vdr@linuxtv.org Subject: Re: [vdr] API extension?: bool cMenuEditStrItem::InEditMode() References: <43B8E48F.1060906@gmx.de> In-Reply-To: <43B8E48F.1060906@gmx.de> X-Greylist: Sender DNS name whitelisted, not delayed by milter-greylist-2.0.2 (tiger.cadsoft.de [217.7.101.210]); Tue, 03 Jan 2006 13:49:21 +0100 (CET) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-2.0 (raven.cadsoft.de [192.168.1.1]); Tue, 03 Jan 2006 13:49:20 +0100 (CET) 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: Tue, 03 Jan 2006 12:49:22 -0000 Status: O X-Status: X-Keywords: X-UID: 6880 Christian Wieninger wrote: > Hi, > > is there a chance to get a new member function like > > bool cMenuEditStrItem::InEditMode() > { > return pos > -1; > } > > that returns the edit state on an item? Ok, VDR 1.3.38 will be changed according to the attached patch. Klaus --- menuitems.h 2005/11/11 13:26:51 1.12 +++ menuitems.h 2006/01/03 12:45:38 @@ -85,6 +85,8 @@ void SetHelpKeys(void); virtual void Set(void); char Inc(char c, bool Up); +protected: + bool InEditMode(void) { return pos >= 0; } public: cMenuEditStrItem(const char *Name, char *Value, int Length, const char *Allowed); ~cMenuEditStrItem(); --- menuitems.c 2005/11/12 12:22:10 1.24 +++ menuitems.c 2006/01/03 12:47:39 @@ -253,7 +253,7 @@ void cMenuEditStrItem::SetHelpKeys(void) { - if (pos >= 0) + if (InEditMode()) cSkinDisplay::Current()->SetButtons(tr("ABC/abc"), tr(insert ? "Overwrite" : "Insert"), tr("Delete")); else cSkinDisplay::Current()->SetButtons(NULL); @@ -264,7 +264,7 @@ char buf[1000]; const char *fmt = insert && newchar ? "[]%c%s" : "[%c]%s"; - if (pos >= 0) { + if (InEditMode()) { const cFont *font = cFont::GetFont(fontOsd); strncpy(buf, value, pos); snprintf(buf + pos, sizeof(buf) - pos - 2, fmt, *(value + pos), value + pos + 1); @@ -322,7 +322,7 @@ { switch (Key) { case kRed: // Switch between upper- and lowercase characters - if (pos >= 0) { + if (InEditMode()) { if (!insert || !newchar) { uppercase = !uppercase; value[pos] = uppercase ? toupper(value[pos]) : tolower(value[pos]); @@ -332,7 +332,7 @@ return osUnknown; break; case kGreen: // Toggle insert/overwrite modes - if (pos >= 0) { + if (InEditMode()) { insert = !insert; newchar = true; SetHelpKeys(); @@ -342,7 +342,7 @@ break; case kYellow|k_Repeat: case kYellow: // Remove the character at current position; in insert mode it is the character to the right of cursor - if (pos >= 0) { + if (InEditMode()) { if (strlen(value) > 1) { if (!insert || pos < int(strlen(value)) - 1) memmove(value + pos, value + pos + 1, strlen(value) - pos); @@ -361,7 +361,7 @@ break; case kBlue|k_Repeat: case kBlue: // consume the key only if in edit-mode - if (pos >= 0) + if (InEditMode()) ; else return osUnknown; @@ -395,7 +395,7 @@ case kUp|k_Repeat: case kUp: case kDown|k_Repeat: - case kDown: if (pos >= 0) { + case kDown: if (InEditMode()) { if (insert && newchar) { // create a new character in insert mode if (int(strlen(value)) < length - 1) { @@ -412,7 +412,7 @@ else return cMenuEditItem::ProcessKey(Key); break; - case kOk: if (pos >= 0) { + case kOk: if (InEditMode()) { pos = -1; newchar = true; stripspace(value); @@ -420,7 +420,7 @@ break; } // run into default - default: if (pos >= 0 && BASICKEY(Key) == kKbd) { + default: if (InEditMode() && BASICKEY(Key) == kKbd) { int c = KEYKBD(Key); if (c <= 0xFF) { const char *p = strchr(allowed, tolower(c));