Onscreen QWERTY keypad for RA8857 based display. Uses the resistive touch panel.

Dependents:   RA8875_KeyPadDemo PUB_RA8875_Keypad IAC_Final_Monil_copy

Files at this revision

API Documentation at this revision

Comitter:
WiredHome
Date:
Sun Nov 13 02:05:41 2016 +0000
Parent:
5:7ccb8f7386fa
Commit message:
Add ability to pre-initialize the data entry buffer

Changed in this revision

Keypad.cpp Show annotated file Show diff for this revision Revisions of this file
Keypad.h Show annotated file Show diff for this revision Revisions of this file
--- a/Keypad.cpp	Sat Nov 12 20:09:21 2016 +0000
+++ b/Keypad.cpp	Sun Nov 13 02:05:41 2016 +0000
@@ -138,12 +138,12 @@
 }
 
 void Keypad::DrawKeypad(void) {
-    dim_t fW;
+    //dim_t fW;
     dim_t fH;
     dim_t kW;       // key width
     dim_t kH;       // key Height
     
-    fW = ra.fontwidth();
+    //fW = ra.fontwidth();
     fH = ra.fontheight();
     kH = fH + 4;
     
@@ -214,13 +214,20 @@
     ra.SetTextCursorControl(RA8875::UNDER);
 }
 
-bool Keypad::GetString(char * buffer, size_t size, const char * prompt, char mask, bool auto_close) {
+
+bool Keypad::GetString(char * buffer, size_t size, const char * prompt, bool initFromBuffer, char mask, bool auto_close) {
     point_t point = {0, 0};
     bool success = false;
     
     pStart = pNext = buffer;
     bufSize = size;
     DrawInputPanel(prompt);
+    if (initFromBuffer && strlen(buffer) < size) {
+        ra.SetTextCursor(userText);
+        ra.puts(buffer);
+        userText = ra.GetTextCursor();
+        pNext += strlen(buffer);
+    }
     ShowBufferMetrics();
     while (1) {
         if (touch == ra.TouchPanelReadable(&point)) {
@@ -234,7 +241,6 @@
                 do {
                     is = ra.TouchPanelReadable(NULL);
                     //printf("is: %d\r\n", is);
-                    
                 } while (is != no_touch);
                 DrawKey(touchRect, key);
             }
--- a/Keypad.h	Sat Nov 12 20:09:21 2016 +0000
+++ b/Keypad.h	Sun Nov 13 02:05:41 2016 +0000
@@ -124,7 +124,9 @@
     /// @param[in,out] buffer is the provided buffer into which the string is written.
     /// @param[in] size is the size of the buffer.
     /// @param[in] prompt is the optional text to prompt the user. It defaults
-    ///             to no prompp.
+    ///             to no prompt.
+    /// @param[in] initFromBuffer causes initial text from buffer to seed the data entry. 
+    ///             If this is true and if the strlen(buffer) < size, it will be shown.
     /// @param[in] mask is the optional character, if non-zero, that is used to obscure
     ///             the text entry - for password purposes. It defaults to not hidden.
     /// @param[in] autoclose is an optional parameter to erase the keyboard when done.
@@ -133,7 +135,8 @@
     /// @returns true if text was entered.
     /// @returns false if text was not entered (e.g. <esc> pressed).
     ///
-    bool GetString(char * buffer, size_t size, const char * prompt = NULL, char mask = 0, bool autoclose = true);
+    bool GetString(char * buffer, size_t size, const char * prompt = NULL, 
+        bool initFromBuffer = false, char mask = 0, bool autoclose = true);
 
     /// Erase the area where the keypad panel was drawn
     ///