diff options
| author | Klaus Schmidinger <vdr@tvdr.de> | 2006-01-06 16:57:41 +0100 | 
|---|---|---|
| committer | Klaus Schmidinger <vdr@tvdr.de> | 2006-01-06 16:57:41 +0100 | 
| commit | 9bbd68f357f3cab1be0031bd6f72e52143b2a918 (patch) | |
| tree | 7168f61b0add306b3e07b5c63deacebd694c3ed6 | |
| parent | 72e93b614bac42cd4a142b10d47e5b1673f19800 (diff) | |
| download | vdr-9bbd68f357f3cab1be0031bd6f72e52143b2a918.tar.gz vdr-9bbd68f357f3cab1be0031bd6f72e52143b2a918.tar.bz2 | |
Implemented letter input via numeric keys (Easy
| -rw-r--r-- | CONTRIBUTORS | 3 | ||||
| -rw-r--r-- | HISTORY | 3 | ||||
| -rw-r--r-- | MANUAL | 4 | ||||
| -rw-r--r-- | i18n.c | 64 | ||||
| -rw-r--r-- | menuitems.c | 42 | ||||
| -rw-r--r-- | menuitems.h | 5 | 
6 files changed, 97 insertions, 24 deletions
| diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 4dcc7be9..31a0222c 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1616,3 +1616,6 @@ Gavin Hamill <gdh@acentral.co.uk>  Petri Hintukainen <Petri.Hintukainen@hut.fi>   for suggesting to disable the use of "fadvise" in cUnbufferedFile because there   have been several reports that it causes more problems than it solves + +Marcel Schaeben <mts280@gmx.de> + for his "Easy Input" patch @@ -4118,3 +4118,6 @@ Video Disk Recorder Revision History    Fischer).  - The "flags" of a timer are now handled as an unsigned integer value. In order    to do this, the interface of cMenuEditBitItem also had to be changed. +- In string entry fields (like, e.g., the file name of a recording) the characters +  can now be entered by pressing the numeric keys, the same way as on a +  telephone keypad (based on the "Easy Input" patch from Marcel Schaeben). @@ -30,6 +30,10 @@ Version 1.2    are used to enter the data, and the Left key can be used to delete the last    entered digit. +  In a text input field (like, e.g., the file name of a recording) the characters +  can be entered by pressing the numeric keys, the same way as on a telephone +  keypad. +    If your remote control provides additional keys, they can be used for the    following functions: @@ -4,7 +4,7 @@   * See the main source file 'vdr.c' for copyright information and   * how to reach the author.   * - * $Id: i18n.c 1.226 2006/01/05 15:39:56 kls Exp $ + * $Id: i18n.c 1.227 2006/01/06 16:03:41 kls Exp $   *   * Translations provided by:   * @@ -4083,26 +4083,48 @@ const tI18nPhrase Phrases[] = {      "ManTirOnsTorFreLørSøn",    },    // The allowed characters in strings: -  { " abcdefghijklmnopqrstuvwxyz0123456789-.#~", -    " aäbcdefghijklmnoöpqrstuüvwxyz0123456789-.#~", -    " abcèdefghijklmnopqrs¹tuvwxyz¾0123456789-.#~", -    " aàbcdeéèfghiîjklmnopqrstuùvwxyz0123456789-.#~", -    " abcdefghijklmnopqrstuvwxyz0123456789-.#~áäàïóöòúüù", -    "",// TODO -    " aàbcçdeéèêfghiîjklmnoôpqrstuùûvwxyz0123456789-.#~", -    "",// TODO -    " abcdefghijklmnopqrstuvwxyzåäö0123456789-.#~", -    " abcdefghijklmnopqrstuvwxyz0123456789-.#~", -    " aábcdeéfghiíjklmnñoópqrstuúvwxyz0123456789-.#~", -    " áÜâãäåÝæçÞèéßêëìíîïüðñóòôõýö÷øùþ0123456789-.#~abcdefghijklmnopqrstuvwxyz", -    " abcdefghijklmnopqrstuvwxyzåäö0123456789-.#~", -    " aãâbcdefghiîjklmnopqrsºtþuvwxyz0123456789-.#~", -    " aábcdeéfghiíjklmnoóöpqrstuúüvwxyz0123456789-.,#~", -    " aàbcçdeéèfghiíjklmnoòpqrstuúvwxyz0123456789-.,#~_·", -    " abcdefghijklmnopqrstuvwxyzÐÑÒÓÔÕñÖרÙÚÛÜÝÞßàáâãäåæçèéêëìîï0123456789-.#~", -    " abcèædðefghijklmnopqrs¹tuvwxyz¾0123456789-.#~", // hrv -    " abcdefghijklmnopqrsðzþtuvwõäöüxyå0123456789-.#~", -    " abcdefghijklmnopqrstuvwxyzæøå0123456789-.#~", +  { " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@", +    " aäbcdefghijklmnoöpqrstuüvwxyz0123456789-.#~,/_@", +    " abcèdefghijklmnopqrs¹tuvwxyz¾0123456789-.#~,/_@", +    " aàbcdeéèfghiîjklmnopqrstuùvwxyz0123456789-.#~,/_@", +    " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@áäàïóöòúüù", +    "",// TODO +    " aàbcçdeéèêfghiîjklmnoôpqrstuùûvwxyz0123456789-.#~,/_@", +    "",// TODO +    " abcdefghijklmnopqrstuvwxyzåäö0123456789-.#~,/_@", +    " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@", +    " aábcdeéfghiíjklmnñoópqrstuúvwxyz0123456789-.#~,/_@", +    " áÜâãäåÝæçÞèéßêëìíîïüðñóòôõýö÷øùþ0123456789-.#~,/_@abcdefghijklmnopqrstuvwxyz", +    " abcdefghijklmnopqrstuvwxyzåäö0123456789-.#~,/_@", +    " aãâbcdefghiîjklmnopqrsºtþuvwxyz0123456789-.#~,/_@", +    " aábcdeéfghiíjklmnoóöpqrstuúüvwxyz0123456789-.,#~,/_@", +    " aàbcçdeéèfghiíjklmnoòpqrstuúvwxyz0123456789-.,#~,/_@·", +    " abcdefghijklmnopqrstuvwxyzÐÑÒÓÔÕñÖרÙÚÛÜÝÞßàáâãäåæçèéêëìîï0123456789-.#~,/_@", +    " abcèædðefghijklmnopqrs¹tuvwxyz¾0123456789-.#~,/_@", // hrv +    " abcdefghijklmnopqrsðzþtuvwõäöüxyå0123456789-.#~,/_@", +    " abcdefghijklmnopqrstuvwxyzæøå0123456789-.#~,/_@", +  }, +  // The character maps for entering letters via the numeric keys: +  { " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9", +    " 0\t-.#~,/_@1\tabcä2\tdef3\tghi4\tjkl5\tmnoö6\tpqrs7\ttuvü8\twxyz9", +    "",//TODO +    "",//TODO +    "",//TODO +    "",//TODO +    "",//TODO +    "",//TODO +    "",//TODO +    "",//TODO +    "",//TODO +    "",//TODO +    "",//TODO +    "",//TODO +    "",//TODO +    "",//TODO +    "",//TODO +    "",//TODO +    "",//TODO +    "",//TODO    },    // Learning keys:    { "Learning Remote Control Keys", diff --git a/menuitems.c b/menuitems.c index 04b25d58..c19ae6f2 100644 --- a/menuitems.c +++ b/menuitems.c @@ -4,7 +4,7 @@   * See the main source file 'vdr.c' for copyright information and   * how to reach the author.   * - * $Id: menuitems.c 1.26 2006/01/06 14:19:06 kls Exp $ + * $Id: menuitems.c 1.27 2006/01/06 16:26:05 kls Exp $   */  #include "menuitems.h" @@ -15,7 +15,7 @@  #include "skins.h"  #include "status.h" -const char *FileNameChars = " abcdefghijklmnopqrstuvwxyz0123456789-.#~"; +const char *FileNameChars = " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@";  // --- cMenuEditItem --------------------------------------------------------- @@ -243,6 +243,9 @@ cMenuEditStrItem::cMenuEditStrItem(const char *Name, char *Value, int Length, co    pos = -1;    insert = uppercase = false;    newchar = true; +  charMap = tr(" 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"); +  currentChar = NULL; +  lastKey = kNone;    Set();  } @@ -320,6 +323,9 @@ char cMenuEditStrItem::Inc(char c, bool Up)  eOSState cMenuEditStrItem::ProcessKey(eKeys Key)  { +  bool SameKey = Key == lastKey; +  if (Key != kNone) +     lastKey = Key;    switch (Key) {      case kRed:   // Switch between upper- and lowercase characters                   if (InEditMode()) { @@ -412,6 +418,38 @@ eOSState cMenuEditStrItem::ProcessKey(eKeys Key)                   else                      return cMenuEditItem::ProcessKey(Key);                   break; +    case k0 ... k9: { +                 if (!SameKey) +                    currentChar = NULL; +                 if (InEditMode()) { +                    if (insert && newchar) { +                       // create a new character in insert mode +                       if (int(strlen(value)) < length - 1) { +                          memmove(value + pos + 1, value + pos, strlen(value) - pos + 1); +                          value[pos] = ' '; +                          } +                       } +                    if (!currentChar || !*currentChar || *currentChar == '\t') { +                       // find the beginning of the character map entry for Key +                       int n = Key - k0; +                       currentChar = charMap; +                       while (n > 0 && *currentChar) { +                             if (*currentChar++ == '\t') +                                n--; +                             } +                       } +                    if (*currentChar && *currentChar != '\t') { +                       value[pos] = *currentChar; +                       if (uppercase) +                          value[pos] = toupper(value[pos]); +                       currentChar++; +                       } +                    newchar = false; +                    } +                 else +                    return cMenuEditItem::ProcessKey(Key); +                 } +                 break;      case kOk:    if (InEditMode()) {                      pos = -1;                      newchar = true; diff --git a/menuitems.h b/menuitems.h index ce252b1e..bfaf4362 100644 --- a/menuitems.h +++ b/menuitems.h @@ -4,7 +4,7 @@   * See the main source file 'vdr.c' for copyright information and   * how to reach the author.   * - * $Id: menuitems.h 1.14 2006/01/06 14:19:12 kls Exp $ + * $Id: menuitems.h 1.15 2006/01/06 15:16:25 kls Exp $   */  #ifndef __MENUITEMS_H @@ -82,6 +82,9 @@ private:    char *allowed;    int pos;    bool insert, newchar, uppercase; +  const char *charMap; +  const char *currentChar; +  eKeys lastKey;    void SetHelpKeys(void);    virtual void Set(void);    char Inc(char c, bool Up); | 
