Absender: Timo Sandmann
Datum: Di, 21.03.2006 21:22:22
In-reply-to:
<BCF016D5ED5AC34FBB655D109519ABCF083DC7@xxxxxxxxxxxxxxxxxxxx>
Hallo, > Ich habe einen Patch eingereicht, mit dem man die > Zifferntasten mehrfach nutzen kann. > > Herr Benz bat nun darum das bevor er aufgenommen wird, dieses > hier zu diskutieren. > > Meine Idee, ist abhängig vom Screen den Tsten > unterschiedliche Funktionen geben zu können. die Idee gefällt mir sehr gut, nur finde ich den Code mit den verschachtelten switches etwas unübersichtlich. Was vielleicht auch eine (IMHO übersichtlichere) Möglichkeit wäre: - Es gibt für jeden Screen eine Funktion void actual_display_action(uint8 key), in der steht, was bei den Tasten 0-9 zu tun ist. - Es gibt einen Zeiger auf diesen Funktionstyp, der immer auf die Funktion zeigt, "deren" Display gerade angezeigt wird. - Es gibt eine weitere Konstante wie DISPLAY_SCREEN_TOGGLE, z.B. DISPLAY_ACTION, die benutzt wird, um der Funktion rc5_screen_set() mitzuteilen, dass eine Zifferntaste, die displayspezifisch verwendet werden soll, gedrückt wurde. - RC5_CODE_X wird jeweils rc5_screen_set, {DISPLAY_ACTION, X } zugewiesen. - Der zweite Parameter (bei rc5_screen_set() bisher ungenutzt) ist die gedrückte Taste. - In rc5_screen_set() setze ich im Fall von !DISPLAY_ACTION den o.a. Zeiger auf die Funktion für's "neue" Display. - Im Fall von DISPLAY_ACTION rufe ich actual_display_action(par->value2) auf. So das wäre mein erster Einfall dazu. Das ganze ist vielleicht ein bisschen mehr Code, aber ich fände es strukturierter / übersichtlicher. Mit freundlichen Grüßen Timo Sandmann