gui: keyboard: introduce struct Layout and simplify caps handling

Also minor cleanups:
- move array limits from #defines to a protected enum
- zero fill layouts in ctor

Change-Id: I8fe0f8465ebc646ad3bf3cc3f8490dbdd384f43d
This commit is contained in:
that
2015-03-15 00:56:57 +01:00
parent e79878b7b6
commit d86f49d3f7
2 changed files with 71 additions and 78 deletions
+13 -10
View File
@@ -815,9 +815,6 @@ protected:
int sUpdate;
};
#define MAX_KEYBOARD_LAYOUTS 5
#define MAX_KEYBOARD_ROWS 9
#define MAX_KEYBOARD_KEYS 20
#define KEYBOARD_ACTION 253
#define KEYBOARD_LAYOUT 254
#define KEYBOARD_SWIPE_LEFT 252
@@ -852,23 +849,29 @@ protected:
int layout;
};
int ParseKey(const char* keyinfo, Key& key, int& Xindex, int keyWidth, bool longpress);
struct capslock_tracking_struct
enum {
MAX_KEYBOARD_LAYOUTS = 5,
MAX_KEYBOARD_ROWS = 9,
MAX_KEYBOARD_KEYS = 20
};
struct Layout
{
int capslock;
int set_capslock;
ImageResource* keyboardImg;
struct Key keys[MAX_KEYBOARD_ROWS][MAX_KEYBOARD_KEYS];
int row_end_y[MAX_KEYBOARD_ROWS];
bool is_caps;
int revert_layout;
};
Layout layouts[MAX_KEYBOARD_LAYOUTS];
// Find key at screen coordinates
Key* HitTestKey(int x, int y);
ImageResource* keyboardImg[MAX_KEYBOARD_LAYOUTS];
struct Key keyboard_keys[MAX_KEYBOARD_LAYOUTS][MAX_KEYBOARD_ROWS][MAX_KEYBOARD_KEYS];
struct capslock_tracking_struct caps_tracking[MAX_KEYBOARD_LAYOUTS];
bool mRendered;
std::string mVariable;
int currentLayout;
int row_heights[MAX_KEYBOARD_LAYOUTS][MAX_KEYBOARD_ROWS];
bool CapsLockOn;
unsigned int KeyboardWidth, KeyboardHeight;
int rowY, colX, highlightRenderCount;
bool hasHighlight, hasCapsHighlight;