gui: PatternPassword: allow any N*N grid

Rather than only supporting a 3x3 grid, allow for multiple grid sizes
(using the CyanogenMod method of generating passphrases for non-3x3
grids). Also fix the detection of touches, as the old code was far too
sensitive for larger grids (and also didn't make much sense).

Change-Id: I343ef654e6d29ce0cb790a28281be7c7c9b171d9
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
diff --git a/gui/devices/320x320/res/ui.xml b/gui/devices/320x320/res/ui.xml
index afe2509..345a81c 100644
--- a/gui/devices/320x320/res/ui.xml
+++ b/gui/devices/320x320/res/ui.xml
@@ -211,6 +211,7 @@
 		<variable name="pattern_dot_radius" value="7" />
 		<variable name="pattern_line_color" value="#33B5E5" />
 		<variable name="pattern_line_width" value="4" />
+		<variable name="pattern_button_y" value="33" />
 	</variables>
 
 	<templates>
@@ -323,6 +324,40 @@
 			</object>
 		</template>
 
+		<template name="pattern_options">
+			<object type="button">
+				<placement x="%col1_medium_x%" y="%pattern_button_y%" />
+				<font resource="font" color="%button_text_color%" />
+				<text>3x3</text>
+				<image resource="sort_button" />
+				<action function="set">tw_gui_pattern_grid_size=3</action>
+			</object>
+
+			<object type="button">
+				<placement x="%col2_medium_x%" y="%pattern_button_y%" />
+				<font resource="font" color="%button_text_color%" />
+				<text>4x4</text>
+				<image resource="sort_button" />
+				<action function="set">tw_gui_pattern_grid_size=4</action>
+			</object>
+
+			<object type="button">
+				<placement x="%col3_medium_x%" y="%pattern_button_y%" />
+				<font resource="font" color="%button_text_color%" />
+				<text>5x5</text>
+				<image resource="sort_button" />
+				<action function="set">tw_gui_pattern_grid_size=5</action>
+			</object>
+
+			<object type="button">
+				<placement x="%col4_medium_x%" y="%pattern_button_y%" />
+				<font resource="font" color="%button_text_color%" />
+				<text>6x6</text>
+				<image resource="sort_button" />
+				<action function="set">tw_gui_pattern_grid_size=6</action>
+			</object>
+		</template>
+
 		<template name="sort_options">
 			<object type="text" color="%text_color%">
 				<font resource="mediumfont" />