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/480x800/res/ui.xml b/gui/devices/480x800/res/ui.xml
index c406e66..ec9df7e 100644
--- a/gui/devices/480x800/res/ui.xml
+++ b/gui/devices/480x800/res/ui.xml
@@ -195,14 +195,19 @@
 		<variable name="slidervalue_padding" value="13" />
 		<variable name="slidervalue_sliderw" value="7" />
 		<variable name="slidervalue_sliderh" value="40" />
-		<variable name="pattern_x" value="90" />
+		<variable name="pattern_button3_x" value="117" />
+		<variable name="pattern_button4_x" value="180" />
+		<variable name="pattern_button5_x" value="243" />
+		<variable name="pattern_button6_x" value="306" />
+		<variable name="pattern_x" value="41" />
 		<variable name="pattern_y" value="250" />
-		<variable name="pattern_width" value="300" />
+		<variable name="pattern_width" value="398" />
 		<variable name="pattern_dot_color" value="#33B5E5" />
 		<variable name="pattern_dot_color_active" value="#FFFFFF" />
 		<variable name="pattern_dot_radius" value="12" />
 		<variable name="pattern_line_color" value="#33B5E5" />
 		<variable name="pattern_line_width" value="9" />
+		<variable name="pattern_cancel_y" value="672" />
 	</variables>
 
 	<mousecursor>
@@ -319,6 +324,40 @@
 			</object>
 		</template>
 
+		<template name="pattern_options">
+			<object type="button">
+				<placement x="%pattern_button3_x%" y="%row2_text_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="%pattern_button4_x%" y="%row2_text_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="%pattern_button5_x%" y="%row2_text_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="%pattern_button6_x%" y="%row2_text_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="font" />