#include <glib.h>
#include <gdk/gdk.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <liberdm/display.h>
#include <liberdm/erdm.h>
#include <libergtk/ergtk.h>
#include <liberipc/eripctoolbar.h>
#include <libermanifest/ermanifest.h>
#include "contentListerLog.h"
#include "system.h"
#include "pincodeIdleTime.h"
#include "gtkPincodeScreen.h"
#include "displayUpdate.h"
#include "erConnect.h"
#include "control.h"
#include "erbusy.h"
#include "languages.h"
Go to the source code of this file.
Defines | |
#define | PINCODE_UI_MIN_LENGTH 4 |
#define | PINCODE_UI_MAX_LENGTH 4 |
Functions | |
static void | gtk_pincode_screen_class_init (GtkPincodeScreenClass *klass) |
static void | gtk_pincode_screen_init (GtkPincodeScreen *screen) |
static GtkWidget * | create_pincode_input_widget (GtkPincodeScreen *screen) |
static GtkWidget * | create_pincode_message_widget (GtkPincodeScreen *screen) |
static void | gtk_pincode_screen_set_text (GtkPincodeScreen *screen) |
static void | pincode_message_widget_set_text (GtkPincodeScreen *screen, gchar *text) |
static void | gtk_pincode_screen_show_input_widget (GtkPincodeScreen *screen) |
static void | gtk_pincode_screen_show_message_widget (GtkPincodeScreen *screen) |
static GtkWidget * | create_pincode_stars (GtkPincodeScreen *screen) |
static void | destroy_pincode_stars (GtkPincodeScreen *screen) |
static void | pincode_stars_append_number (pincodeStars *stars, gint number) |
static void | pincode_stars_backspace (pincodeStars *stars) |
static gchar * | pincode_stars_get_text (pincodeStars *stars) |
static gboolean | pincode_stars_check_text (pincodeStars *stars) |
static void | pincode_stars_reset (pincodeStars *stars) |
static gboolean | delayed_on_changed (gpointer user_data) |
static gboolean | on_gtk_pincode_screen_expose_event (GtkPincodeScreen *screen, GdkEventExpose *event, gpointer user_data) |
static gboolean | on_gtk_pincode_screen_hide (GtkPincodeScreen *screen, gpointer user_data) |
static gboolean | on_gtk_pincode_screen_button_press (GtkPincodeScreen *screen, GdkEventButton *event, gpointer user_data) |
static gboolean | on_gtk_pincode_motion_notify_event (GtkPincodeScreen *screen, GdkEventMotion *event, gpointer user_data) |
static gboolean | on_gtk_pincode_screen_button_release (GtkPincodeScreen *screen, GdkEventButton *event, gpointer user_data) |
static gboolean | on_gtk_pincode_screen_key_press (GtkPincodeScreen *screen, GdkEventKey *event, gpointer user_data) |
static gboolean | on_gtk_pincode_screen_key_release (GtkPincodeScreen *screen, GdkEventKey *event, gpointer user_data) |
static gboolean | on_gtk_pincode_screen_destroy (GtkPincodeScreen *screen, GdkEvent *event, gpointer user_data) |
static gboolean | on_gtk_pincode_keyboard_button_press (GtkWidget *keyboard, GdkEventButton *event, gpointer user_data) |
static gint | get_clicked_number (gint x, gint y) |
static void | on_confirm_button_toggled (GtkToggleButton *button, gpointer screen) |
static gboolean | delayed_on_confirm_button_clicked (gpointer user_data) |
static gboolean | pincode_shutdown (gpointer user_data) |
static gboolean | pincode_passed (gpointer user_data) |
static gboolean | pincode_decrease_display_level (gpointer data) |
static gboolean | on_message_widget_clicked_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) |
GtkWidget * | gtk_pincode_screen_new () |
GType | gtk_pincode_screen_get_type (void) |
static void | gtk_pincode_show_message_info_label (GtkPincodeScreen *screen, gboolean show) |
void | gtk_pincode_screen_layout_reset (GtkWidget *screen) |
void | gtk_pincode_screen_data_reset (GtkWidget *screen) |
void | gtk_pincode_screen_set_pincode_settings (GtkWidget *screen, gboolean on, const gchar *pincode) |
void | gtk_pincode_screen_get_pincode_settings (GtkWidget *screen, gboolean *on, gchar *pincode) |
void | gtk_pincode_screen_set_reason (GtkWidget *screen, showPincodeReason_t reason) |
showPincodeReason_t | gtk_pincode_screen_get_reason (GtkWidget *screen) |
void | gtk_pincode_screen_set_on_cancel_callback (GtkWidget *screen, on_cancel_callback_t *func) |
void | gtk_pincode_screen_on_cancel_callback (GtkWidget *screen) |
void | gtk_pincode_screen_set_on_passed_callback (GtkWidget *screen, on_passed_callback_t *func) |
Variables | |
static gint | g_timeout_handler_id = 0 |
(1)when user boot system, if PINCODE is set ON, first show this pincode screen at here, user can input PINCODE. if PINCODE passed, on_passed_callback is invoked(boot device normally) if PINCODE not passed after users try 3 times, power down the device in some other case, no user activities happened, after some time e.g 5mins, power down the device too
(2)when user click 'lock screen' icon on toolbar to lock screen, show pincode screen if PINCODE passed, on_passed_callback is invoked(go back to the previous state) otherwise deal with the same as PINCODE at startup
(3)when signing a document(only pincode is on, CB can allow signing), show pincode screen if PINCODE passed, on_passed_callback is invoked(signed the document) otherwise deal with the same as PINCODE at startup
(4)before user enter the settings, show pincode screen if PINCODE passed, on_passed_callback is invoked(let user enter the settings application) otherwise deal with the same as PINCODE at startup
as above, (1)(2)for locking purpose, CB locks all keys except 'CONNECT LONG' which is for RESET pinocde (3)(4)for authorizing purpose, CB locks all keys except 'OVERVIEW' which is for cancel(leaving) the pincode
Copyright (C) 2006-2008 iRex Technologies BV. All rights reserved.
Definition in file gtkPincodeScreen.c.
#define PINCODE_UI_MAX_LENGTH 4 |
Definition at line 76 of file gtkPincodeScreen.c.
#define PINCODE_UI_MIN_LENGTH 4 |
Definition at line 75 of file gtkPincodeScreen.c.
static GtkWidget * create_pincode_input_widget | ( | GtkPincodeScreen * | screen | ) | [static] |
Definition at line 246 of file gtkPincodeScreen.c.
00247 { 00248 GtkWidget *box; 00249 GtkWidget *fixed; 00250 GtkWidget *inputLabel; 00251 GtkWidget *starsWidget; 00252 GtkWidget *keyboard; 00253 GtkWidget *confirmButton; 00254 GtkWidget *inputInfoLabel; 00255 // box 00256 box = gtk_event_box_new(); 00257 gtk_widget_set_name(box, "pincode_input_background"); 00258 gtk_widget_set_size_request(box, PINCODE_BACKGROUND_WIDTH, PINCODE_BACKGROUND_HEIGHT); 00259 // fixed 00260 fixed = gtk_fixed_new(); 00261 gtk_container_add(GTK_CONTAINER(box), fixed); 00262 // inputLabel 00263 inputLabel = gtk_label_new(""); 00264 gtk_fixed_put(GTK_FIXED(fixed), inputLabel, PINCODE_INPUT_LABEL_XPOS, PINCODE_INPUT_LABEL_YPOS); 00265 gtk_widget_set_name(inputLabel, "pincode_input_title_text"); 00266 gtk_widget_set_size_request(inputLabel, PINCODE_INPUT_LABEL_WIDTH, PINCODE_INPUT_LABEL_HEIGHT); 00267 gtk_label_set_justify(GTK_LABEL(inputLabel), GTK_JUSTIFY_CENTER); 00268 // starsWidget 00269 starsWidget = create_pincode_stars(screen); 00270 gtk_fixed_put(GTK_FIXED(fixed), starsWidget, PINCODE_STARS_XPOS, PINCODE_STARS_YPOS); 00271 // keyboard 00272 keyboard = gtk_event_box_new(); 00273 gtk_fixed_put(GTK_FIXED(fixed), keyboard, PINCODE_KEYBOARD_XPOS, PINCODE_KEYBOARD_YPOS); 00274 gtk_widget_set_name(keyboard, "pincode_keyboard_background"); 00275 gtk_widget_set_size_request(GTK_WIDGET(keyboard), PINCODE_KEYBOARD_WIDTH, PINCODE_KEYBOARD_HEIGHT); 00276 // confirmButton 00277 confirmButton = ergtk_toggle_button_new(); 00278 gtk_widget_set_name(confirmButton, "pincode_confirm"); 00279 gtk_fixed_put(GTK_FIXED(fixed), confirmButton, PINCODE_BUTTON_XPOS, PINCODE_BUTTON_YPOS); 00280 gtk_widget_set_size_request(confirmButton, PINCODE_BUTTON_WIDTH, PINCODE_BUTTON_HEIGHT); 00281 // inputInfoLabel 00282 inputInfoLabel = gtk_label_new(""); 00283 gtk_fixed_put(GTK_FIXED(fixed), inputInfoLabel, PINCODE_INFO_LABEL_XPOS, PINCODE_INFO_LABEL_YPOS); 00284 gtk_widget_set_name(inputInfoLabel, "pincode_screen_info_text"); 00285 gtk_widget_set_size_request(GTK_WIDGET(inputInfoLabel), PINCODE_INFO_LABEL_WIDTH, PINCODE_INFO_LABEL_HEIGHT); 00286 gtk_label_set_justify(GTK_LABEL(inputInfoLabel), GTK_JUSTIFY_CENTER); 00287 // set screen values 00288 screen->inputLabel = inputLabel; 00289 screen->keyboard = keyboard; 00290 screen->confirmButton = confirmButton; 00291 screen->inputInfoLabel = inputInfoLabel; 00292 // keyboard signals 00293 g_signal_connect(G_OBJECT(keyboard), "button-press-event", 00294 G_CALLBACK(on_gtk_pincode_keyboard_button_press), screen); 00295 // confirmButton signals 00296 g_signal_connect(G_OBJECT(confirmButton), "toggled", G_CALLBACK(on_confirm_button_toggled), screen); 00297 // show widgets 00298 gtk_widget_show(fixed); 00299 gtk_widget_show(inputLabel); 00300 gtk_widget_show(starsWidget); 00301 gtk_widget_show(keyboard); 00302 gtk_widget_show(confirmButton); 00303 gtk_widget_show(inputInfoLabel); 00304 00305 return box; 00306 }
static GtkWidget * create_pincode_message_widget | ( | GtkPincodeScreen * | screen | ) | [static] |
Definition at line 315 of file gtkPincodeScreen.c.
00316 { 00317 GtkWidget *box; 00318 GtkWidget *vbox; 00319 GtkWidget *messageLabel; 00320 GtkWidget *messageInfoLabel; 00321 // box 00322 box = gtk_event_box_new(); 00323 gtk_widget_set_name(box, "pincode_message_background"); 00324 gtk_widget_set_size_request(box, PINCODE_BACKGROUND_WIDTH, PINCODE_BACKGROUND_HEIGHT); 00325 // vbox 00326 vbox = gtk_vbox_new(FALSE, 0); 00327 gtk_container_add(GTK_CONTAINER(box), vbox); 00328 // messageLabel 00329 messageLabel = gtk_label_new(""); 00330 gtk_box_pack_start(GTK_BOX(vbox), messageLabel, FALSE, FALSE, 0); 00331 gtk_widget_set_name(messageLabel, "pincode_message_title_text"); 00332 gtk_label_set_line_wrap(GTK_LABEL(messageLabel), TRUE); 00333 gtk_widget_set_size_request(messageLabel, PINCODE_MESSAGE_LABEL_WIDTH, PINCODE_MESSAGE_LABEL_HEIGHT); 00334 gtk_label_set_justify(GTK_LABEL(messageLabel), GTK_JUSTIFY_CENTER); 00335 // messageInfoLabel 00336 messageInfoLabel = gtk_label_new(""); 00337 gtk_box_pack_start(GTK_BOX(vbox), messageInfoLabel, FALSE, FALSE, 0); 00338 gtk_widget_set_name(messageInfoLabel, "pincode_screen_info_text"); 00339 gtk_widget_set_size_request(GTK_WIDGET(messageInfoLabel), PINCODE_INFO_LABEL_WIDTH, PINCODE_INFO_LABEL_HEIGHT); 00340 gtk_label_set_justify(GTK_LABEL(messageInfoLabel), GTK_JUSTIFY_CENTER); 00341 // signals 00342 g_signal_connect(G_OBJECT(box), "button-press-event", G_CALLBACK(on_message_widget_clicked_event), screen); 00343 // set screen values 00344 screen->messageLabel = messageLabel; 00345 screen->messageInfoLabel = messageInfoLabel; 00346 // show widgets 00347 gtk_widget_show_all(vbox); 00348 00349 return box; 00350 }
static GtkWidget * create_pincode_stars | ( | GtkPincodeScreen * | screen | ) | [static] |
Definition at line 935 of file gtkPincodeScreen.c.
00936 { 00937 pincodeStars *stars = NULL; 00938 00939 GtkWidget *hbox; 00940 GtkWidget *vbox; 00941 GtkWidget *grayStar; 00942 GtkWidget *whiteStar; 00943 00944 if (NULL == screen) 00945 return NULL; 00946 if (!IS_GTK_PINCODE_SCREEN(screen)) 00947 return NULL; 00948 stars = g_new0(pincodeStars, 1); 00949 if (NULL == stars) 00950 return NULL; 00951 00952 hbox = gtk_hbox_new(FALSE, PINCODE_STAR_SPACING); 00953 stars->hbox = hbox; 00954 // vbox1 00955 vbox = gtk_vbox_new(FALSE, 0); 00956 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); 00957 stars->vbox1 = vbox; 00958 grayStar = gtk_event_box_new(); 00959 gtk_box_pack_start(GTK_BOX(vbox), grayStar, FALSE, FALSE, 0); 00960 stars->grayStar1 = grayStar; 00961 gtk_widget_set_name(grayStar, "pincode_gray_star"); 00962 gtk_widget_set_size_request(grayStar, PINCODE_STAR_WIDTH, PINCODE_STAR_HEIGHT); 00963 whiteStar = gtk_event_box_new(); 00964 gtk_box_pack_start(GTK_BOX(vbox), whiteStar, FALSE, FALSE, 0); 00965 stars->whiteStar1 = whiteStar; 00966 gtk_widget_set_name(whiteStar, "pincode_white_star"); 00967 gtk_widget_set_size_request(whiteStar, PINCODE_STAR_WIDTH, PINCODE_STAR_HEIGHT); 00968 // vbox2 00969 vbox = gtk_vbox_new(FALSE, 0); 00970 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); 00971 stars->vbox2 = vbox; 00972 grayStar = gtk_event_box_new(); 00973 gtk_box_pack_start(GTK_BOX(vbox), grayStar, FALSE, FALSE, 0); 00974 stars->grayStar2 = grayStar; 00975 gtk_widget_set_name(grayStar, "pincode_gray_star"); 00976 gtk_widget_set_size_request(grayStar, PINCODE_STAR_WIDTH, PINCODE_STAR_HEIGHT); 00977 whiteStar = gtk_event_box_new(); 00978 gtk_box_pack_start(GTK_BOX(vbox), whiteStar, FALSE, FALSE, 0); 00979 stars->whiteStar2 = whiteStar; 00980 gtk_widget_set_name(whiteStar, "pincode_white_star"); 00981 gtk_widget_set_size_request(whiteStar, PINCODE_STAR_WIDTH, PINCODE_STAR_HEIGHT); 00982 // vbox3 00983 vbox = gtk_vbox_new(FALSE, 0); 00984 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); 00985 stars->vbox3 = vbox; 00986 grayStar = gtk_event_box_new(); 00987 gtk_box_pack_start(GTK_BOX(vbox), grayStar, FALSE, FALSE, 0); 00988 stars->grayStar3 = grayStar; 00989 gtk_widget_set_name(grayStar, "pincode_gray_star"); 00990 gtk_widget_set_size_request(grayStar, PINCODE_STAR_WIDTH, PINCODE_STAR_HEIGHT); 00991 whiteStar = gtk_event_box_new(); 00992 gtk_box_pack_start(GTK_BOX(vbox), whiteStar, FALSE, FALSE, 0); 00993 stars->whiteStar3 = whiteStar; 00994 gtk_widget_set_name(whiteStar, "pincode_white_star"); 00995 gtk_widget_set_size_request(whiteStar, PINCODE_STAR_WIDTH, PINCODE_STAR_HEIGHT); 00996 // vbox4 00997 vbox = gtk_vbox_new(FALSE, 0); 00998 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); 00999 stars->vbox4 = vbox; 01000 grayStar = gtk_event_box_new(); 01001 gtk_box_pack_start(GTK_BOX(vbox), grayStar, FALSE, FALSE, 0); 01002 stars->grayStar4 = grayStar; 01003 gtk_widget_set_name(grayStar, "pincode_gray_star"); 01004 gtk_widget_set_size_request(grayStar, PINCODE_STAR_WIDTH, PINCODE_STAR_HEIGHT); 01005 whiteStar = gtk_event_box_new(); 01006 gtk_box_pack_start(GTK_BOX(vbox), whiteStar, FALSE, FALSE, 0); 01007 stars->whiteStar4 = whiteStar; 01008 gtk_widget_set_name(whiteStar, "pincode_white_star"); 01009 gtk_widget_set_size_request(whiteStar, PINCODE_STAR_WIDTH, PINCODE_STAR_HEIGHT); 01010 // 01011 memset(stars->pincode, 0, sizeof(stars->pincode)); 01012 // show widgets 01013 gtk_widget_show(stars->hbox); 01014 gtk_widget_show(stars->vbox1); 01015 gtk_widget_show(stars->grayStar1); 01016 gtk_widget_show(stars->vbox2); 01017 gtk_widget_show(stars->grayStar2); 01018 gtk_widget_show(stars->vbox3); 01019 gtk_widget_show(stars->grayStar3); 01020 gtk_widget_show(stars->vbox4); 01021 gtk_widget_show(stars->grayStar4); 01022 01023 screen->stars = stars; 01024 stars->on_change_occurred = FALSE; 01025 stars->display_update_pending = FALSE; 01026 01027 return hbox; 01028 }
static gboolean delayed_on_changed | ( | gpointer | user_data | ) | [static] |
Definition at line 1178 of file gtkPincodeScreen.c.
01179 { 01180 pincodeStars *stars = user_data; 01181 01182 if (NULL == stars) 01183 return FALSE; 01184 01185 if (stars->on_change_occurred) 01186 { 01187 // item text has been changed: check again later 01188 stars->on_change_occurred = FALSE; 01189 } 01190 else 01191 { 01192 // for back to pincode after downloadMgr 01193 int level = display_update_get_level(); 01194 if (level > TEXTENTRY_CHANGED_LEVEL) 01195 { 01196 display_update_decrease_level(TEXTENTRY_CHANGED_LEVEL); 01197 } 01198 // item text is stable: update screen 01199 display_update_request_screen_refresh(TEXTENTRY_CHANGED_LEVEL); 01200 stars->display_update_pending = FALSE; 01201 } 01202 01203 return stars->display_update_pending; // TRUE = call me again, FALSE = don't call 01204 }
static gboolean delayed_on_confirm_button_clicked | ( | gpointer | user_data | ) | [static] |
Definition at line 735 of file gtkPincodeScreen.c.
00736 { 00737 GtkPincodeScreen *screen = user_data; 00738 GtkWidget *button = screen->confirmButton; 00739 const gchar *text = NULL; 00740 gboolean check = FALSE; 00741 00742 erbusy_blink(); 00743 00744 // check pincode 00745 if (screen->stars) 00746 { 00747 screen->tryTimes++; 00748 // for signing document, we don't check pincode onoff flag 00749 if ( (signDocument_t != screen->reason && FALSE == screen->pincodeOn) 00750 || (0 == strlen(screen->pincode)) ) 00751 { 00752 check = TRUE; 00753 } 00754 else 00755 { 00756 check = pincode_stars_check_text(screen->stars); 00757 } 00758 if (FALSE == check) 00759 { 00760 screen->passed = FALSE; 00761 if (screen->tryTimes >= MAX_TRY_PINCODE_TIMES) 00762 { 00763 // pincode_message_widget_set_text(screen,_("Tried too many times! System is going to power off now.")); 00764 // gtk_pincode_screen_show_message_widget(screen); 00765 // display_update_request_screen_refresh(TEXTENTRY_CHANGED_LEVEL, NULL); 00766 00767 // g_timeout_handler_id = g_timeout_add(500, pincode_shutdown, NULL); 00768 pincode_shutdown(NULL); 00769 } 00770 else 00771 { 00772 pincode_message_widget_set_text(screen, _("PIN code is incorrect. Please try again.")); 00773 gtk_pincode_screen_show_message_widget(screen); 00774 display_update_request_screen_refresh(TEXTENTRY_CHANGED_LEVEL); 00775 00776 g_timeout_handler_id = g_timeout_add(3000, pincode_passed, (gpointer)screen); 00777 } 00778 } 00779 else 00780 { 00781 text = pincode_stars_get_text(screen->stars); 00782 if ( (signDocument_t != screen->reason && FALSE == screen->pincodeOn) 00783 || (0 == strlen(screen->pincode)) 00784 || (0 == strcmp(screen->pincode, text)) ) 00785 { 00786 screen->passed = TRUE; 00787 screen->tryTimes = 0; 00788 } 00789 else 00790 { 00791 screen->passed = FALSE; 00792 } 00793 if (FALSE == screen->passed) 00794 { 00795 if (screen->tryTimes >= MAX_TRY_PINCODE_TIMES) 00796 { 00797 // pincode_message_widget_set_text(screen, _("Tried too many times! System is going to power off now.")); 00798 // gtk_pincode_screen_show_message_widget(screen); 00799 // display_update_request_screen_refresh(TEXTENTRY_CHANGED_LEVEL, NULL); 00800 00801 // g_timeout_handler_id = g_timeout_add(500, pincode_shutdown, NULL); 00802 pincode_shutdown(NULL); 00803 } 00804 else 00805 { 00806 pincode_message_widget_set_text(screen, _("PIN code is incorrect. Please try again.")); 00807 gtk_pincode_screen_show_message_widget(screen); 00808 display_update_request_screen_refresh(TEXTENTRY_CHANGED_LEVEL); 00809 00810 g_timeout_handler_id = g_timeout_add(3000, pincode_passed, (gpointer)screen); 00811 } 00812 } 00813 else 00814 { 00815 // pincode_message_widget_set_text(screen, _("Your code is accepted.")); 00816 // gtk_pincode_screen_show_message_widget(screen); 00817 // gtk_pincode_show_message_info_label(screen, FALSE); 00818 // display_update_request_screen_refresh(TEXTENTRY_CHANGED_LEVEL, NULL); 00819 00820 // g_timeout_handler_id = g_timeout_add(500, pincode_passed, (gpointer) screen); 00821 pincode_passed(screen); 00822 } 00823 } 00824 } 00825 00826 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE); 00827 return FALSE; // don't call me anymore 00828 }
static void destroy_pincode_stars | ( | GtkPincodeScreen * | screen | ) | [static] |
Definition at line 1030 of file gtkPincodeScreen.c.
01031 { 01032 pincodeStars *stars; 01033 g_return_if_fail(NULL != screen); 01034 g_return_if_fail(IS_GTK_PINCODE_SCREEN(screen)); 01035 stars = (pincodeStars *) screen->stars; 01036 g_return_if_fail(NULL != stars); 01037 g_free(stars); 01038 screen->stars = NULL; 01039 }
gint get_clicked_number | ( | gint | x, | |
gint | y | |||
) | [static] |
Definition at line 664 of file gtkPincodeScreen.c.
00665 { 00666 int i, numbers, w, h; 00667 int spacing, leftPadding, rightPadding, topPadding, bottomPadding; 00668 int rcL, rcR, rcT, rcB; 00669 int returnVal = -2; 00670 00671 numbers = 11; 00672 w = 35; 00673 h = 35; 00674 spacing = 4; 00675 leftPadding = 9; 00676 rightPadding = 9; 00677 topPadding = 7; 00678 bottomPadding = 7; 00679 00680 if (x >= 0 && x <= PINCODE_KEYBOARD_WIDTH && y >= 0 && y <= PINCODE_KEYBOARD_HEIGHT) 00681 { 00682 rcT = topPadding; 00683 rcB = rcT + h; 00684 i = 0; 00685 for (i = 0; i <= numbers; i++) 00686 { 00687 if (0 == i) // zero 00688 { 00689 rcL = leftPadding; 00690 rcR = rcL + w; 00691 } 00692 else if (10 == i) // backspace 00693 { 00694 rcR = PINCODE_KEYBOARD_WIDTH - rightPadding; 00695 rcL = rcR - w; 00696 } 00697 else 00698 { 00699 rcL = leftPadding + i * (w + spacing); 00700 rcR = rcL + w; 00701 } 00702 if (x >= rcL && x <= rcR && y >= rcT && y <= rcB) 00703 { 00704 returnVal = i + 1; 00705 if (10 == returnVal) 00706 returnVal = 0; 00707 else if (11 == returnVal) 00708 returnVal = -1; 00709 break; 00710 } 00711 } // for 00712 } 00713 return returnVal; 00714 }
static void gtk_pincode_screen_class_init | ( | GtkPincodeScreenClass * | klass | ) | [static] |
void gtk_pincode_screen_data_reset | ( | GtkWidget * | screen | ) |
reset screen->passed to be FALSE
screen | the GtkPincodeScreen widget | |
Definition at line 493 of file gtkPincodeScreen.c.
00494 { 00495 g_return_if_fail(NULL != screen); 00496 g_return_if_fail(IS_GTK_PINCODE_SCREEN(screen)); 00497 00498 // GTK_PINCODE_SCREEN(screen)->tryTimes = 0;// remove to- only pincode passed, reset tryTimes 00499 GTK_PINCODE_SCREEN(screen)->passed = 0; 00500 }
void gtk_pincode_screen_get_pincode_settings | ( | GtkWidget * | screen, | |
gboolean * | on, | |||
gchar * | pincode | |||
) |
get screen->pincodeOn, get screen->pincode
screen | the GtkPincodeScreen widget | |
on | ||
pincode |
Definition at line 511 of file gtkPincodeScreen.c.
00512 { 00513 g_return_if_fail(NULL != screen && NULL != on && NULL != pincode); 00514 g_return_if_fail(IS_GTK_PINCODE_SCREEN(screen)); 00515 00516 *on = GTK_PINCODE_SCREEN(screen)->pincodeOn; 00517 strcpy(pincode, GTK_PINCODE_SCREEN(screen)->pincode); 00518 }
showPincodeReason_t gtk_pincode_screen_get_reason | ( | GtkWidget * | screen | ) |
get screen->reason
screen | the GtkPincodeScreen widget |
Definition at line 528 of file gtkPincodeScreen.c.
00529 { 00530 showPincodeReason_t reason = undefinedReason_t; 00531 if (NULL == screen) 00532 return reason; 00533 if (!IS_GTK_PINCODE_SCREEN(screen)) 00534 return reason; 00535 00536 return GTK_PINCODE_SCREEN(screen)->reason; 00537 }
GType gtk_pincode_screen_get_type | ( | void | ) |
returns type of GtkPincodeScreen widget
Definition at line 137 of file gtkPincodeScreen.c.
00138 { 00139 static GType pincode_screen_type = 0; 00140 00141 if (!pincode_screen_type) 00142 { 00143 static const GTypeInfo pincode_screen_info = { 00144 sizeof(GtkPincodeScreenClass), 00145 NULL, /* base_init */ 00146 NULL, /* base_finalize */ 00147 (GClassInitFunc) gtk_pincode_screen_class_init, 00148 NULL, /* class_finalize */ 00149 NULL, /* class_data */ 00150 sizeof(GtkPincodeScreen), 00151 0, /* n_preallocs */ 00152 (GInstanceInitFunc) gtk_pincode_screen_init, 00153 }; 00154 pincode_screen_type = g_type_register_static(GTK_TYPE_EVENT_BOX, "PincodeScreen", &pincode_screen_info, 0); 00155 } 00156 return pincode_screen_type; 00157 }
static void gtk_pincode_screen_init | ( | GtkPincodeScreen * | screen | ) | [static] |
Definition at line 169 of file gtkPincodeScreen.c.
00170 { 00171 GtkWidget *alignment; 00172 GtkWidget *clientArea; // GtkVBox 00173 GtkWidget *inputWidget; // input widget 00174 GtkWidget *messageWidget; // message widget 00175 gboolean enable = FALSE; 00176 gchar pincode[PINCODE_MAX_LENGTH + 1] = ""; 00177 00178 if (NULL == screen) 00179 return; 00180 gtk_widget_set_name(GTK_WIDGET(screen), "pincode_screen_background"); 00181 gtk_widget_set_size_request(GTK_WIDGET(screen), PINCODE_SCREEN_WIDTH, PINCODE_SCREEN_HEIGHT); 00182 // alignment 00183 alignment = gtk_alignment_new(0.0, 0.0, 0.0, 0.0); 00184 gtk_container_add(GTK_CONTAINER(screen), GTK_WIDGET(alignment)); 00185 gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 00186 PINCODE_SCREEN_PADDING_TOP, 00187 PINCODE_SCREEN_PADDING_BOTTOM, PINCODE_SCREEN_PADDING_LEFT, PINCODE_SCREEN_PADDING_RIGHT); 00188 // clientArea 00189 clientArea = gtk_vbox_new(FALSE, 0); 00190 gtk_container_add(GTK_CONTAINER(alignment), clientArea); 00191 // inputWidget 00192 inputWidget = create_pincode_input_widget(screen); 00193 gtk_box_pack_start(GTK_BOX(clientArea), GTK_WIDGET(inputWidget), FALSE, FALSE, 0); 00194 // messageWidget 00195 messageWidget = create_pincode_message_widget(screen); 00196 gtk_box_pack_start(GTK_BOX(clientArea), GTK_WIDGET(messageWidget), FALSE, FALSE, 0); 00197 // signals 00198 g_signal_connect(G_OBJECT(screen), "expose_event", G_CALLBACK(on_gtk_pincode_screen_expose_event), NULL); 00199 g_signal_connect(G_OBJECT(screen), "hide", G_CALLBACK(on_gtk_pincode_screen_hide), NULL); 00200 g_signal_connect(G_OBJECT(screen), "button-press-event", G_CALLBACK(on_gtk_pincode_screen_button_press), NULL); 00201 g_signal_connect(G_OBJECT(screen), "motion_notify_event", G_CALLBACK(on_gtk_pincode_motion_notify_event), NULL); 00202 g_signal_connect(G_OBJECT(screen), "button-release-event", G_CALLBACK(on_gtk_pincode_screen_button_release), NULL); 00203 g_signal_connect(G_OBJECT(screen), "key_press_event", G_CALLBACK(on_gtk_pincode_screen_key_press), NULL); 00204 g_signal_connect(G_OBJECT(screen), "key_release_event", G_CALLBACK(on_gtk_pincode_screen_key_release), NULL); 00205 g_signal_connect(G_OBJECT(screen), "destroy", G_CALLBACK(on_gtk_pincode_screen_destroy), NULL); 00206 // set gtkPincodeScreen default values 00207 screen->clientArea = clientArea; 00208 screen->inputWidget = inputWidget; 00209 screen->messageWidget = messageWidget; 00210 screen->tryTimes = 0; 00211 screen->passed = FALSE; 00212 screen->isVisible = FALSE; 00213 // store 'enable' and 'pincode' to gtkPincodeScreen 00214 screen->pincodeOn = enable; 00215 strcpy(screen->pincode, pincode); 00216 // 00217 gtk_pincode_screen_set_text(screen); 00218 // show widget 00219 gtk_widget_show(GTK_WIDGET(clientArea)); 00220 gtk_widget_show(GTK_WIDGET(alignment)); 00221 gtk_pincode_screen_show_input_widget(screen); 00222 // add timeout in order to compute user idle time later 00223 // accumulate_idle_time_begin(); 00224 }
void gtk_pincode_screen_layout_reset | ( | GtkWidget * | screen | ) |
reset screen layout, such as, reset all stars to be grey, set text
screen | the GtkPincodeScreen widget | |
Definition at line 482 of file gtkPincodeScreen.c.
00483 { 00484 g_return_if_fail(NULL != screen); 00485 g_return_if_fail(IS_GTK_PINCODE_SCREEN(screen)); 00486 00487 gtk_pincode_screen_set_text(GTK_PINCODE_SCREEN(screen)); 00488 pincode_stars_reset(GTK_PINCODE_SCREEN(screen)->stars); 00489 gtk_pincode_screen_show_input_widget(GTK_PINCODE_SCREEN(screen)); 00490 gtk_pincode_show_message_info_label(GTK_PINCODE_SCREEN(screen), TRUE); 00491 }
GtkWidget* gtk_pincode_screen_new | ( | ) |
creates a new GtkPincodeScreen widget
- |
Definition at line 130 of file gtkPincodeScreen.c.
00131 { 00132 GtkPincodeScreen *screen; 00133 screen = (GtkPincodeScreen *) g_object_new(GTK_PINCODE_SCREEN_TYPE, NULL); 00134 return GTK_WIDGET(screen); 00135 }
void gtk_pincode_screen_on_cancel_callback | ( | GtkWidget * | screen | ) |
run screen->on_passed_callback
screen | the GtkPincodeScreen widget |
Definition at line 547 of file gtkPincodeScreen.c.
00548 { 00549 g_return_if_fail(NULL != screen); 00550 g_return_if_fail(IS_GTK_PINCODE_SCREEN(screen)); 00551 if (GTK_PINCODE_SCREEN(screen)->on_cancel_callback) 00552 { 00553 GTK_PINCODE_SCREEN(screen)->on_cancel_callback(); 00554 } 00555 }
void gtk_pincode_screen_set_on_cancel_callback | ( | GtkWidget * | screen, | |
on_cancel_callback_t * | func | |||
) |
set screen->on_cancel_callback
screen | the GtkPincodeScreen widget | |
func |
Definition at line 539 of file gtkPincodeScreen.c.
00540 { 00541 g_return_if_fail(NULL != screen); 00542 g_return_if_fail(IS_GTK_PINCODE_SCREEN(screen)); 00543 00544 GTK_PINCODE_SCREEN(screen)->on_cancel_callback = func; 00545 }
void gtk_pincode_screen_set_on_passed_callback | ( | GtkWidget * | screen, | |
on_passed_callback_t * | func | |||
) |
set screen->on_passed_callback
screen | the GtkPincodeScreen widget | |
func |
Definition at line 557 of file gtkPincodeScreen.c.
00558 { 00559 g_return_if_fail(NULL != screen); 00560 g_return_if_fail(IS_GTK_PINCODE_SCREEN(screen)); 00561 00562 GTK_PINCODE_SCREEN(screen)->on_passed_callback = func; 00563 }
void gtk_pincode_screen_set_pincode_settings | ( | GtkWidget * | screen, | |
gboolean | on, | |||
const gchar * | pincode | |||
) |
set screen->pincodeOn, set screen->pincode
screen | the GtkPincodeScreen widget | |
on | ||
pincode |
Definition at line 502 of file gtkPincodeScreen.c.
00503 { 00504 g_return_if_fail(NULL != screen && NULL != pincode); 00505 g_return_if_fail(IS_GTK_PINCODE_SCREEN(screen)); 00506 00507 GTK_PINCODE_SCREEN(screen)->pincodeOn = on; 00508 strcpy(GTK_PINCODE_SCREEN(screen)->pincode, pincode); 00509 }
void gtk_pincode_screen_set_reason | ( | GtkWidget * | screen, | |
showPincodeReason_t | reason | |||
) |
set screen->reason
screen | the GtkPincodeScreen widget | |
reason |
Definition at line 520 of file gtkPincodeScreen.c.
00521 { 00522 g_return_if_fail(NULL != screen); 00523 g_return_if_fail(IS_GTK_PINCODE_SCREEN(screen)); 00524 00525 GTK_PINCODE_SCREEN(screen)->reason = reason; 00526 }
static void gtk_pincode_screen_set_text | ( | GtkPincodeScreen * | screen | ) | [static] |
Definition at line 355 of file gtkPincodeScreen.c.
00356 { 00357 CL_LOGPRINTF("entry"); 00358 g_return_if_fail(NULL != screen); 00359 g_return_if_fail(IS_GTK_PINCODE_SCREEN(screen)); 00360 if (screen->inputLabel) 00361 { 00362 gtk_label_set_text(GTK_LABEL(screen->inputLabel), _("Enter your PIN code")); 00363 } 00364 if (screen->confirmButton) 00365 { 00366 gtk_button_set_label(GTK_BUTTON(screen->confirmButton), _("Confirm")); 00367 } 00368 if (screen->inputInfoLabel) 00369 { 00370 gtk_label_set_text(GTK_LABEL(screen->inputInfoLabel), 00371 _("Forgot your PIN code? Please visit your MyiRex account.")); 00372 } 00373 if (screen->messageInfoLabel) 00374 { 00375 gtk_label_set_text(GTK_LABEL(screen->messageInfoLabel), 00376 _("Forgot your PIN code? Please visit your MyiRex account.")); 00377 } 00378 }
static void gtk_pincode_screen_show_input_widget | ( | GtkPincodeScreen * | screen | ) | [static] |
Definition at line 392 of file gtkPincodeScreen.c.
00393 { 00394 GtkWidget *clientArea = NULL; 00395 GtkWidget *inputWidget = NULL; 00396 GtkWidget *messageWidget = NULL; 00397 00398 gboolean show = FALSE; 00399 00400 g_return_if_fail(NULL != screen); 00401 g_return_if_fail(IS_GTK_PINCODE_SCREEN(screen)); 00402 00403 clientArea = GTK_PINCODE_SCREEN(screen)->clientArea; 00404 messageWidget = GTK_PINCODE_SCREEN(screen)->messageWidget; 00405 inputWidget = GTK_PINCODE_SCREEN(screen)->inputWidget; 00406 00407 g_return_if_fail(NULL != clientArea); 00408 g_return_if_fail(NULL != inputWidget); 00409 g_return_if_fail(NULL != messageWidget); 00410 00411 show = GTK_WIDGET_VISIBLE(inputWidget); 00412 if (TRUE == show) 00413 { 00414 return; 00415 } 00416 00417 gtk_widget_hide(messageWidget); 00418 gtk_widget_show(inputWidget); 00419 00420 gtk_widget_grab_focus(GTK_WIDGET(inputWidget)); 00421 }
static void gtk_pincode_screen_show_message_widget | ( | GtkPincodeScreen * | screen | ) | [static] |
Definition at line 426 of file gtkPincodeScreen.c.
00427 { 00428 GtkWidget *clientArea = NULL; 00429 GtkWidget *inputWidget = NULL; 00430 GtkWidget *messageWidget = NULL; 00431 gboolean show = FALSE; 00432 00433 g_return_if_fail(NULL != screen); 00434 g_return_if_fail(IS_GTK_PINCODE_SCREEN(screen)); 00435 00436 clientArea = GTK_PINCODE_SCREEN(screen)->clientArea; 00437 messageWidget = GTK_PINCODE_SCREEN(screen)->messageWidget; 00438 inputWidget = GTK_PINCODE_SCREEN(screen)->inputWidget; 00439 00440 g_return_if_fail(NULL != clientArea); 00441 g_return_if_fail(NULL != inputWidget); 00442 g_return_if_fail(NULL != messageWidget); 00443 00444 show = GTK_WIDGET_VISIBLE(messageWidget); 00445 if (TRUE == show) 00446 { 00447 return; 00448 } 00449 00450 gtk_widget_hide(inputWidget); 00451 gtk_widget_show(messageWidget); 00452 00453 gtk_widget_grab_focus(GTK_WIDGET(GTK_PINCODE_SCREEN(screen)->messageWidget)); 00454 }
static void gtk_pincode_show_message_info_label | ( | GtkPincodeScreen * | screen, | |
gboolean | show | |||
) | [static] |
Definition at line 456 of file gtkPincodeScreen.c.
00457 { 00458 GtkWidget *messageInfoLabel = NULL; 00459 gboolean visible = FALSE; 00460 00461 g_return_if_fail(NULL != screen); 00462 g_return_if_fail(IS_GTK_PINCODE_SCREEN(screen)); 00463 00464 messageInfoLabel = GTK_PINCODE_SCREEN(screen)->messageInfoLabel; 00465 g_return_if_fail(NULL != messageInfoLabel); 00466 00467 visible = GTK_WIDGET_VISIBLE(messageInfoLabel); 00468 if (show == visible) 00469 { 00470 return; 00471 } 00472 if (TRUE == show) 00473 { 00474 gtk_widget_show(messageInfoLabel); 00475 } 00476 else 00477 { 00478 gtk_widget_hide(messageInfoLabel); 00479 } 00480 }
static void on_confirm_button_toggled | ( | GtkToggleButton * | button, | |
gpointer | screen | |||
) | [static] |
Definition at line 721 of file gtkPincodeScreen.c.
00722 { 00723 g_return_if_fail(NULL != screen); 00724 g_return_if_fail(IS_GTK_PINCODE_SCREEN(screen)); 00725 pincodeStars *stars = (pincodeStars *) (GTK_PINCODE_SCREEN(screen)->stars); 00726 g_return_if_fail(NULL != stars); 00727 00728 gboolean active = gtk_toggle_button_get_active(button); 00729 if (active) 00730 { 00731 g_timeout_add(1000, delayed_on_confirm_button_clicked, screen); 00732 } 00733 }
static gboolean on_gtk_pincode_keyboard_button_press | ( | GtkWidget * | keyboard, | |
GdkEventButton * | event, | |||
gpointer | user_data | |||
) | [static] |
Definition at line 629 of file gtkPincodeScreen.c.
00630 { 00631 GtkPincodeScreen *screen = user_data; 00632 gint xPos = 0; 00633 gint yPos = 0; 00634 gint number; 00635 00636 if (NULL == screen) 00637 return FALSE; 00638 if (!IS_GTK_PINCODE_SCREEN(screen)) 00639 return FALSE; 00640 if (event->type != GDK_BUTTON_PRESS) 00641 { 00642 CL_ERRORPRINTF("event->type(%d)",event->type); 00643 return FALSE; 00644 } 00645 xPos = event->x; 00646 yPos = event->y; 00647 number = get_clicked_number(xPos, yPos); 00648 if (number >= 0 && number <= 9) 00649 { 00650 pincode_stars_append_number(screen->stars, number); 00651 } 00652 else if (-1 == number) 00653 { 00654 pincode_stars_backspace(screen->stars); 00655 } 00656 return FALSE; 00657 }
static gboolean on_gtk_pincode_motion_notify_event | ( | GtkPincodeScreen * | screen, | |
GdkEventMotion * | event, | |||
gpointer | user_data | |||
) | [static] |
Definition at line 594 of file gtkPincodeScreen.c.
00595 { 00596 accumulate_idle_time_reset(); 00597 return FALSE; 00598 }
static gboolean on_gtk_pincode_screen_button_press | ( | GtkPincodeScreen * | screen, | |
GdkEventButton * | event, | |||
gpointer | user_data | |||
) | [static] |
Definition at line 587 of file gtkPincodeScreen.c.
00588 { 00589 accumulate_idle_time_reset(); 00590 return FALSE; 00591 }
static gboolean on_gtk_pincode_screen_button_release | ( | GtkPincodeScreen * | screen, | |
GdkEventButton * | event, | |||
gpointer | user_data | |||
) | [static] |
Definition at line 601 of file gtkPincodeScreen.c.
00602 { 00603 accumulate_idle_time_reset(); 00604 return FALSE; 00605 }
static gboolean on_gtk_pincode_screen_destroy | ( | GtkPincodeScreen * | screen, | |
GdkEvent * | event, | |||
gpointer | user_data | |||
) | [static] |
Definition at line 619 of file gtkPincodeScreen.c.
00620 { 00621 accumulate_idle_time_end(); 00622 destroy_pincode_stars(screen); 00623 return FALSE; 00624 }
static gboolean on_gtk_pincode_screen_expose_event | ( | GtkPincodeScreen * | screen, | |
GdkEventExpose * | event, | |||
gpointer | user_data | |||
) | [static] |
Definition at line 568 of file gtkPincodeScreen.c.
00569 { 00570 // ignore partial exposure events 00571 if ( !screen->isVisible ) 00572 { 00573 screen->isVisible = TRUE; 00574 display_update_request_screen_refresh(MAIN_WINDOW_EXPOSE_LEVEL); 00575 } 00576 return FALSE; 00577 }
static gboolean on_gtk_pincode_screen_hide | ( | GtkPincodeScreen * | screen, | |
gpointer | user_data | |||
) | [static] |
Definition at line 580 of file gtkPincodeScreen.c.
00581 { 00582 screen->isVisible = FALSE; 00583 return FALSE; 00584 }
static gboolean on_gtk_pincode_screen_key_press | ( | GtkPincodeScreen * | screen, | |
GdkEventKey * | event, | |||
gpointer | user_data | |||
) | [static] |
Definition at line 607 of file gtkPincodeScreen.c.
00608 { 00609 accumulate_idle_time_reset(); 00610 return FALSE; 00611 }
static gboolean on_gtk_pincode_screen_key_release | ( | GtkPincodeScreen * | screen, | |
GdkEventKey * | event, | |||
gpointer | user_data | |||
) | [static] |
Definition at line 613 of file gtkPincodeScreen.c.
00614 { 00615 accumulate_idle_time_reset(); 00616 return FALSE; 00617 }
static gboolean on_message_widget_clicked_event | ( | GtkWidget * | widget, | |
GdkEventButton * | event, | |||
gpointer | user_data | |||
) | [static] |
Definition at line 899 of file gtkPincodeScreen.c.
00900 { 00901 GtkPincodeScreen *screen = user_data; 00902 00903 if (!IS_GTK_PINCODE_SCREEN(screen)) 00904 return FALSE; 00905 if (screen->tryTimes >= MAX_TRY_PINCODE_TIMES) 00906 { 00907 pincode_shutdown(NULL); 00908 } 00909 else 00910 { 00911 // when error message appears, click to return back input pincode again 00912 // when passed message appears, click to (boot normally...) 00913 pincode_passed((gpointer) screen); 00914 } 00915 return FALSE; 00916 }
static gboolean pincode_decrease_display_level | ( | gpointer | data | ) | [static] |
Definition at line 888 of file gtkPincodeScreen.c.
00889 { 00890 // allow display updates again 00891 display_update_decrease_level((gint)data/*LOWEST_LEVEL*/); 00892 00893 return FALSE; // don't call me again 00894 }
static void pincode_message_widget_set_text | ( | GtkPincodeScreen * | screen, | |
gchar * | text | |||
) | [static] |
Definition at line 380 of file gtkPincodeScreen.c.
00381 { 00382 g_return_if_fail(NULL != screen); 00383 g_return_if_fail(IS_GTK_PINCODE_SCREEN(screen)); 00384 g_return_if_fail(NULL != screen->messageLabel); 00385 g_return_if_fail(NULL != text); 00386 gtk_label_set_text(GTK_LABEL(screen->messageLabel), text); 00387 }
static gboolean pincode_passed | ( | gpointer | user_data | ) | [static] |
Definition at line 842 of file gtkPincodeScreen.c.
00843 { 00844 GtkPincodeScreen* screen = user_data; 00845 gboolean passed = screen->passed; 00846 00847 if (g_timeout_handler_id) 00848 { 00849 gtk_timeout_remove(g_timeout_handler_id); 00850 g_timeout_handler_id = 0; 00851 } 00852 00853 if (!passed) 00854 { 00855 // show input messaget to let user try again 00856 pincode_stars_reset(screen->stars); 00857 gtk_pincode_screen_show_input_widget(screen); 00858 display_update_request_screen_refresh( TEXTENTRY_CHANGED_LEVEL); 00859 } 00860 else 00861 { 00862 int level = display_update_get_level(); 00863 00864 // hide pincode 00865 if (screen->reason == enterSettings_t) 00866 { 00867 display_update_increase_level(NO_DISPLAY_UPDATE_LEVEL); 00868 } 00869 else 00870 { 00871 display_update_increase_level(MAIN_WINDOW_EXPOSE_LEVEL); 00872 } 00873 ctrl_hide_pincode_screen(); 00874 if (screen->reason != startup_t) 00875 { 00876 g_idle_add(pincode_decrease_display_level, (gpointer)level); 00877 } 00878 00879 // trigger on_passed_callback 00880 if (screen->on_passed_callback) 00881 { 00882 screen->on_passed_callback(); 00883 } 00884 } 00885 return FALSE; // not call again 00886 }
static gboolean pincode_shutdown | ( | gpointer | user_data | ) | [static] |
Definition at line 830 of file gtkPincodeScreen.c.
00831 { 00832 if (g_timeout_handler_id) 00833 { 00834 gtk_timeout_remove(g_timeout_handler_id); 00835 g_timeout_handler_id = 0; 00836 } 00837 ctrl_hide_pincode_screen(); 00838 ctrl_shutdown(); 00839 return FALSE; 00840 }
static void pincode_stars_append_number | ( | pincodeStars * | stars, | |
gint | number | |||
) | [static] |
Definition at line 1041 of file gtkPincodeScreen.c.
01042 { 01043 GtkWidget *vbox = NULL; 01044 GtkWidget *grayStar = NULL; 01045 GtkWidget *whiteStar = NULL; 01046 01047 gchar string[2]; 01048 int len; 01049 01050 if (NULL == stars) 01051 return; 01052 len = strlen(stars->pincode); 01053 if (len >= PINCODE_UI_MAX_LENGTH) 01054 { 01055 CL_ERRORPRINTF("input pincode length reaches pincode_max_length"); 01056 return; 01057 } 01058 sprintf(string, "%d", number); 01059 if (0 == len) 01060 strcpy(stars->pincode, string); 01061 else 01062 strcat(stars->pincode, string); 01063 len = strlen(stars->pincode); 01064 if (1 == len) 01065 { 01066 vbox = stars->vbox1; 01067 grayStar = stars->grayStar1; 01068 whiteStar = stars->whiteStar1; 01069 } 01070 else if (2 == len) 01071 { 01072 vbox = stars->vbox2; 01073 grayStar = stars->grayStar2; 01074 whiteStar = stars->whiteStar2; 01075 } 01076 else if (3 == len) 01077 { 01078 vbox = stars->vbox3; 01079 grayStar = stars->grayStar3; 01080 whiteStar = stars->whiteStar3; 01081 } 01082 else if (4 == len) 01083 { 01084 vbox = stars->vbox4; 01085 grayStar = stars->grayStar4; 01086 whiteStar = stars->whiteStar4; 01087 } 01088 else 01089 { 01090 CL_ERRORPRINTF("error"); 01091 } 01092 if (vbox && grayStar && whiteStar) 01093 { 01094 gtk_widget_hide(vbox); 01095 gtk_widget_hide(grayStar); 01096 gtk_widget_show(whiteStar); 01097 gtk_widget_show(vbox); 01098 } 01099 01100 if (stars->display_update_pending) 01101 { 01102 // timer already running: tell it that another change has occurred 01103 stars->on_change_occurred = TRUE; 01104 } 01105 else 01106 { 01107 // timer not running: start it now 01108 g_timeout_add(500, delayed_on_changed, stars); 01109 stars->display_update_pending = TRUE; 01110 } 01111 }
static void pincode_stars_backspace | ( | pincodeStars * | stars | ) | [static] |
Definition at line 1113 of file gtkPincodeScreen.c.
01114 { 01115 GtkWidget *vbox = NULL; 01116 GtkWidget *grayStar = NULL; 01117 GtkWidget *whiteStar = NULL; 01118 int len; 01119 01120 if (NULL == stars) 01121 return; 01122 len = strlen(stars->pincode); 01123 if (len <= 0) 01124 { 01125 CL_ERRORPRINTF("input pincode length equals zero, neen't backspace"); 01126 return; 01127 } 01128 stars->pincode[len - 1] = '\0'; 01129 if (1 == len) 01130 { 01131 vbox = stars->vbox1; 01132 grayStar = stars->grayStar1; 01133 whiteStar = stars->whiteStar1; 01134 } 01135 else if (2 == len) 01136 { 01137 vbox = stars->vbox2; 01138 grayStar = stars->grayStar2; 01139 whiteStar = stars->whiteStar2; 01140 } 01141 else if (3 == len) 01142 { 01143 vbox = stars->vbox3; 01144 grayStar = stars->grayStar3; 01145 whiteStar = stars->whiteStar3; 01146 } 01147 else if (4 == len) 01148 { 01149 vbox = stars->vbox4; 01150 grayStar = stars->grayStar4; 01151 whiteStar = stars->whiteStar4; 01152 } 01153 else 01154 { 01155 CL_ERRORPRINTF("error"); 01156 } 01157 if (vbox && grayStar && whiteStar) 01158 { 01159 gtk_widget_hide(vbox); 01160 gtk_widget_hide(whiteStar); 01161 gtk_widget_show(grayStar); 01162 gtk_widget_show(vbox); 01163 } 01164 01165 if (stars->display_update_pending) 01166 { 01167 // timer already running: tell it that another change has occurred 01168 stars->on_change_occurred = TRUE; 01169 } 01170 else 01171 { 01172 // timer not running: start it now 01173 g_timeout_add(500, delayed_on_changed, stars); 01174 stars->display_update_pending = TRUE; 01175 } 01176 }
static gboolean pincode_stars_check_text | ( | pincodeStars * | stars | ) | [static] |
Definition at line 1213 of file gtkPincodeScreen.c.
01214 { 01215 gchar *text; 01216 int len; 01217 01218 if (NULL == stars) 01219 return FALSE; 01220 text = pincode_stars_get_text(stars); 01221 if (NULL == text) 01222 return FALSE; 01223 len = strlen(text); 01224 if (len >= PINCODE_UI_MIN_LENGTH && len <= PINCODE_UI_MAX_LENGTH) 01225 return TRUE; 01226 else 01227 return FALSE; 01228 }
static gchar * pincode_stars_get_text | ( | pincodeStars * | stars | ) | [static] |
Definition at line 1206 of file gtkPincodeScreen.c.
01207 { 01208 if (NULL == stars) 01209 return NULL; 01210 return stars->pincode; 01211 }
static void pincode_stars_reset | ( | pincodeStars * | stars | ) | [static] |
Definition at line 1230 of file gtkPincodeScreen.c.
01231 { 01232 if (NULL == stars) 01233 return; 01234 memset(stars->pincode, 0, sizeof(stars->pincode)); 01235 01236 gtk_widget_hide(stars->vbox1); 01237 gtk_widget_hide(stars->vbox2); 01238 gtk_widget_hide(stars->vbox3); 01239 gtk_widget_hide(stars->vbox4); 01240 01241 gtk_widget_hide(stars->whiteStar1); 01242 gtk_widget_hide(stars->whiteStar2); 01243 gtk_widget_hide(stars->whiteStar3); 01244 gtk_widget_hide(stars->whiteStar4); 01245 01246 gtk_widget_show(stars->grayStar1); 01247 gtk_widget_show(stars->grayStar2); 01248 gtk_widget_show(stars->grayStar3); 01249 gtk_widget_show(stars->grayStar4); 01250 01251 gtk_widget_show(stars->vbox1); 01252 gtk_widget_show(stars->vbox2); 01253 gtk_widget_show(stars->vbox3); 01254 gtk_widget_show(stars->vbox4); 01255 01256 display_update_request_screen_refresh(TEXTENTRY_CHANGED_LEVEL); 01257 }
gint g_timeout_handler_id = 0 [static] |
Definition at line 78 of file gtkPincodeScreen.c.