00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00049 #ifndef __GTK_PINCODE_SCREEN_H__
00050 #define __GTK_PINCODE_SCREEN_H__
00051 #ifdef __cplusplus
00052 extern "C"
00053 {
00054 #endif
00055
00056 #define MAX_TRY_PINCODE_TIMES 3
00057
00058 #define PINCODE_SCREEN_WIDTH 768// the value from png files
00059 #define PINCODE_SCREEN_HEIGHT 1024
00060
00061 #define PINCODE_BACKGROUND_WIDTH 707
00062 #define PINCODE_BACKGROUND_HEIGHT 347
00063
00064 #define PINCODE_SCREEN_PADDING_LEFT (PINCODE_SCREEN_WIDTH - PINCODE_BACKGROUND_WIDTH)/2
00065 #define PINCODE_SCREEN_PADDING_RIGHT PINCODE_SCREEN_PADDING_LEFT
00066 #define PINCODE_SCREEN_PADDING_BOTTOM 35
00067 #define PINCODE_SCREEN_PADDING_TOP (PINCODE_SCREEN_HEIGHT-PINCODE_BACKGROUND_HEIGHT-PINCODE_SCREEN_PADDING_BOTTOM)
00068
00069 #define PINCODE_INFO_LABEL_WIDTH PINCODE_BACKGROUND_WIDTH
00070 #define PINCODE_INFO_LABEL_HEIGHT 30
00071 #define PINCODE_MESSAGE_LABEL_WIDTH PINCODE_BACKGROUND_WIDTH
00072 #define PINCODE_MESSAGE_LABEL_HEIGHT (PINCODE_BACKGROUND_HEIGHT - PINCODE_INFO_LABEL_HEIGHT-15)
00073
00074 #define PINCODE_INPUT_LABEL_WIDTH PINCODE_BACKGROUND_WIDTH
00075 #define PINCODE_INPUT_LABEL_HEIGHT 99
00076 #define PINCODE_STAR_WIDTH 16
00077 #define PINCODE_STAR_HEIGHT 16
00078 #define PINCODE_STAR_SPACING 5
00079 #define PINCODE_KEYBOARD_WIDTH 447
00080 #define PINCODE_KEYBOARD_HEIGHT 49
00081 #define PINCODE_BUTTON_WIDTH 100
00082 #define PINCODE_BUTTON_HEIGHT 27
00083
00084 #define PINCODE_INPUT_LABEL_XPOS 0
00085 #define PINCODE_INPUT_LABEL_YPOS 0
00086 #define PINCODE_STARS_XPOS ((PINCODE_BACKGROUND_WIDTH-PINCODE_STAR_WIDTH*4-PINCODE_STAR_SPACING*3)/2)
00087 #define PINCODE_STARS_YPOS (115-PINCODE_STAR_HEIGHT)
00088 #define PINCODE_KEYBOARD_XPOS ((PINCODE_BACKGROUND_WIDTH-PINCODE_KEYBOARD_WIDTH)/2)
00089 #define PINCODE_KEYBOARD_YPOS (200-PINCODE_KEYBOARD_HEIGHT)
00090 #define PINCODE_BUTTON_XPOS ((PINCODE_BACKGROUND_WIDTH-PINCODE_BUTTON_WIDTH)/2)
00091 #define PINCODE_BUTTON_YPOS (260-PINCODE_BUTTON_HEIGHT)
00092 #define PINCODE_INFO_LABEL_XPOS 0
00093 #define PINCODE_INFO_LABEL_YPOS (PINCODE_BACKGROUND_HEIGHT-PINCODE_INFO_LABEL_HEIGHT-15)
00094
00095 #define GTK_PINCODE_SCREEN_TYPE (gtk_pincode_screen_get_type ())
00096 #define GTK_PINCODE_SCREEN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_PINCODE_SCREEN_TYPE, GtkPincodeScreen))
00097 #define GTK_PINCODE_SCREEN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_PINCODE_SCREEN_TYPE, GtkPincodeScreenClass))
00098 #define IS_GTK_PINCODE_SCREEN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_PINCODE_SCREEN_TYPE))
00099 #define IS_GTK_PINCODE_SCREEN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_PINCODE_SCREEN_TYPE))
00100
00101 typedef void on_passed_callback_t(void);
00102 typedef void on_cancel_callback_t(void);
00103
00104 typedef enum
00105 {
00106 startup_t=0,
00107 lockScreen_t,
00108 signDocument_t,
00109 enterSettings_t,
00110 importSettings_t,
00111 undefinedReason_t
00112 }showPincodeReason_t;
00113
00114 typedef struct _pincodeStars pincodeStars;
00115
00116 struct _pincodeStars
00117 {
00118 GtkWidget* hbox;
00119 GtkWidget* vbox1;
00120 GtkWidget* grayStar1;
00121 GtkWidget* whiteStar1;
00122 GtkWidget* vbox2;
00123 GtkWidget* grayStar2;
00124 GtkWidget* whiteStar2;
00125 GtkWidget* vbox3;
00126 GtkWidget* grayStar3;
00127 GtkWidget* whiteStar3;
00128 GtkWidget* vbox4;
00129 GtkWidget* grayStar4;
00130 GtkWidget* whiteStar4;
00131 gchar pincode[PINCODE_MAX_LENGTH+1];
00132 gboolean on_change_occurred;
00133 gboolean display_update_pending;
00134 };
00135
00136 typedef struct _GtkPincodeScreen GtkPincodeScreen;
00137 typedef struct _GtkPincodeScreenClass GtkPincodeScreenClass;
00138
00139 struct _GtkPincodeScreen
00140 {
00141 GtkEventBox box;
00142
00143
00144 GtkWidget *clientArea;
00145 GtkWidget *inputWidget;
00146 GtkWidget *messageWidget;
00147 GtkWidget *inputLabel;
00148 pincodeStars *stars;
00149 GtkWidget *keyboard;
00150 GtkWidget *confirmButton;
00151 GtkWidget *inputInfoLabel;
00152 GtkWidget *messageInfoLabel;
00153 GtkWidget *messageLabel;
00154 showPincodeReason_t reason;
00155 on_passed_callback_t* on_passed_callback;
00156 on_cancel_callback_t* on_cancel_callback;
00157 gboolean pincodeOn;
00158 gchar pincode[PINCODE_MAX_LENGTH+1];
00159 guint tryTimes;
00160 gboolean passed;
00161 gboolean isVisible;
00162 };
00163
00164 struct _GtkPincodeScreenClass
00165 {
00166 GtkEventBoxClass parent_class;
00167 };
00168
00176 GtkWidget *gtk_pincode_screen_new();
00177
00178
00184 GType gtk_pincode_screen_get_type(void);
00185
00195 void gtk_pincode_screen_layout_reset(GtkWidget *screen);
00204 void gtk_pincode_screen_data_reset(GtkWidget *screen);
00205
00206
00216 void gtk_pincode_screen_set_pincode_settings(GtkWidget *screen, gboolean on, const gchar*pincode);
00217
00227 void gtk_pincode_screen_get_pincode_settings(GtkWidget *screen, gboolean *on, gchar*pincode);
00228
00237 void gtk_pincode_screen_set_reason(GtkWidget *screen, showPincodeReason_t reason);
00238
00246 showPincodeReason_t gtk_pincode_screen_get_reason(GtkWidget* screen);
00247
00256 void gtk_pincode_screen_set_on_passed_callback(GtkWidget *screen, on_passed_callback_t *func);
00257
00266 void gtk_pincode_screen_set_on_cancel_callback(GtkWidget *screen, on_cancel_callback_t *func);
00267
00275 void gtk_pincode_screen_on_cancel_callback(GtkWidget *screen);
00276
00277 #ifdef __cplusplus
00278 }
00279 #endif
00280
00281 #endif