static void sync_tuple_changed_callback(const uint32_t key, const Tuple* new_tuple, const Tuple* old_tuple, void* context) { switch (key) { case BLINK_KEY: blink = new_tuple->value->uint8; tick_timer_service_unsubscribe(); if(blink) { tick_timer_service_subscribe(SECOND_UNIT, handle_tick); } else { tick_timer_service_subscribe(MINUTE_UNIT, handle_tick); } break; case INVERT_KEY: invert = new_tuple->value->uint8; change_background(invert); break; case BLUETOOTHVIBE_KEY: bluetoothvibe = new_tuple->value->uint8; break; case HOURLYVIBE_KEY: hourlyvibe = new_tuple->value->uint8; break; } }
int main (int argc, char *argv[]) { //argument of the function //1st: length //2nd: width //3rd: the path of vdi client starter //4th: the path of backgournd picture //gint length=1280; //gint width=1024; gchar vdi_client_path[]="/home/linaro/thinclient/script/./vdi_client_starter.sh"; gchar back_ground_path[]="/home/linaro/thinclient/background/back_ground.jpg"; char* window_name="Reception"; gint length=atoi(argv[1]); gint width=atoi(argv[2]); //gchar vdi_client_path=argv[3]; //gchar back_ground_path=argv[4]; //printf("%s %s %s %s %s\n",argv[0],argv[1],argv[2],argv[3],argv[4],argv[5]); GtkWidget *window; gtk_init(&argc, &argv); window= gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window),window_name); gtk_window_set_default_size(GTK_WINDOW(window), length, width); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_widget_show(window); change_background(window, length, width, back_ground_path); //g_signal_connect(window, "key_press_event", G_CALLBACK(key_control), NULL); g_signal_connect(window, "key_press_event", G_CALLBACK(key_control), NULL); gtk_main(); return 0; }
/* Handle update in settings */ static void tuple_changed_callback( const uint32_t key, const Tuple* tuple_new, const Tuple* tuple_old, void* context ) { int value = tuple_new->value->uint8; switch ( key ) { case SETTING_STATUS_KEY: persist_write_int( SETTING_STATUS_KEY, value ); current_status = value; // Reposition status layers layer_set_frame( bitmap_layer_get_layer( battery_layer ), ( current_status == STATUS_ON ) ? BATT_RECT : EMPTY_RECT ); layer_set_frame( bitmap_layer_get_layer( bluetooth_layer ), ( current_status == STATUS_ON ) ? BT_RECT : EMPTY_RECT ); // Reposition date and week layers layer_set_frame( text_layer_get_layer( text_date_layer ), ( current_status == STATUS_ON ) ? DATE_RECT : OFF_DATE_RECT ); layer_set_frame( text_layer_get_layer( text_week_layer ), ( current_status == STATUS_ON ) ? WEEK_RECT : OFF_WEEK_RECT ); break; case SETTING_LANGUAGE_KEY: persist_write_int( SETTING_LANGUAGE_KEY, value ); current_language = value; text_layer_set_text( text_days_layer, day_lines[current_language] ); break; case SETTING_FORMAT_KEY: persist_write_int( SETTING_FORMAT_KEY, value ); current_format = value; break; case SETTING_INVERT_KEY: persist_write_int( SETTING_INVERT_KEY, value ); invert_format = value; change_background(invert_format); break; case SETTING_ICON_KEY: if (icon_bitmap) { gbitmap_destroy(icon_bitmap); } icon_bitmap = gbitmap_create_with_resource( WEATHER_ICONS[tuple_new->value->uint8]); bitmap_layer_set_bitmap(icon_layer, icon_bitmap); break; case SETTING_TEMPERATURE_KEY: text_layer_set_text(temp_layer, tuple_new->value->cstring); break; case SETTING_WEATHERSTATUS_KEY: persist_write_int( SETTING_WEATHERSTATUS_KEY, value ); weather_status = value; layer_set_frame( text_layer_get_layer( temp_layer ), ( weather_status == WEATHER_ON ) ? TEMP_RECT : EMPTY_RECT ); layer_set_frame( bitmap_layer_get_layer( icon_layer ), ( weather_status == WEATHER_ON ) ? ICON_RECT : EMPTY_RECT ); break; case BLUETOOTHVIBE_KEY: persist_write_int( BLUETOOTHVIBE_KEY, value ); bluetoothvibe_status = value; break; case HOURLYVIBE_KEY: persist_write_int( HOURLYVIBE_KEY, value ); hourlyvibe = value; break; case SECS_KEY: persist_write_int( SECS_KEY, value ); secs_status = value; if(secs_status) { layer_set_hidden(text_layer_get_layer(text_secs_layer), false); layer_set_hidden(text_layer_get_layer(text_ampm_layer), true); tick_timer_service_subscribe(SECOND_UNIT, handle_tick); } else { layer_set_hidden(text_layer_get_layer(text_secs_layer), true); layer_set_hidden(text_layer_get_layer(text_ampm_layer), false); tick_timer_service_subscribe(MINUTE_UNIT, handle_tick); } break; } // Refresh display update_time(); }
/* Handle tick events */ void handle_tick( struct tm *tick_time, TimeUnits units_changed ) { if (units_changed & HOUR_UNIT) { hourvibe(tick_time); } // Update text layer for current day int today = tick_time->tm_wday - 1; if ( today < 0 ) { today = 6; } layer_set_frame( inverter_layer_get_layer( currentDayLayer ), highlight_rect[current_language][today] ); #ifdef LANGUAGE_TESTING layer_set_frame( inverter_layer_get_layer( currentDayLayer ), hightlight_rect[current_language][ct] ); if ( tick_time->tm_sec % speed == 0 ) { ct++; } if ( ct == 7 ) { ct = 0; } #endif strftime( date_text, sizeof( date_text ), date_formats[current_language], tick_time ); if ( current_language == LANG_EN ) { strcat( date_text, ordinal_numbers[tick_time->tm_mday - 1] ); } else { strcat( date_text, month_names_arr[current_language][tick_time->tm_mon] ); } text_layer_set_text( text_date_layer, date_text ); // Update week or day of the year (i.e. Week 15 or 2013-118) if ( current_format == FORMAT_WEEK ) { strftime( week_text, sizeof( week_text ), week_formats[current_language], tick_time ); text_layer_set_text( text_week_layer, week_text ); } else { strftime( alt_text, sizeof( alt_text ), alt_formats[current_format], tick_time ); text_layer_set_text( text_week_layer, alt_text ); } // Display hours (i.e. 18 or 06) strftime( time_text, sizeof( time_text ), clock_is_24h_style() ? "%H:%M" : "%I:%M", tick_time ); // Remove leading zero (only in 12h-mode) if ( !clock_is_24h_style() && (time_text[0] == '0') ) { memmove( time_text, &time_text[1], sizeof( time_text ) - 1 ); } text_layer_set_text( text_time_layer, time_text ); // Update AM/PM indicator (i.e. AM or PM or nothing when using 24-hour style) strftime( ampm_text, sizeof( ampm_text ), clock_is_24h_style() ? "24H" : "%p", tick_time ); text_layer_set_text( text_ampm_layer, ampm_text ); // Display seconds strftime( secs_text, sizeof( secs_text ), "%S", tick_time ); text_layer_set_text( text_secs_layer, secs_text ); // Update status and invert information if ( current_status == STATUS_ON ) { update_status(); } if ( weather_status == WEATHER_ON ) { update_status(); } if ( secs_status == SECS_ON ) { update_status(); } if ( invert_format == INVERT_ON ) { change_background(invert_format); } }
static void update_image_layer(Layer *layer, GContext* ctx) { change_background(); }