+static void main_menu( GtkWindow *window )
+{
+ GtkWidget *menu, *radio;
+
+ menu = hildon_app_menu_new( );
+
+ // Hour preference
+ radio = gtk_radio_button_new_with_label( NULL, "Hour" );
+ gtk_toggle_button_set_mode( GTK_TOGGLE_BUTTON( radio ), FALSE );
+ g_signal_connect_after( radio, "clicked",
+ G_CALLBACK( preference_timer_hour ), NULL );
+ hildon_app_menu_add_filter( menu, GTK_BUTTON( radio ) );
+
+ // Minute preference
+ radio = gtk_radio_button_new_with_label_from_widget( GTK_RADIO_BUTTON( radio ), "Minute" );
+ gtk_toggle_button_set_mode( GTK_TOGGLE_BUTTON ( radio ), FALSE );
+ g_signal_connect_after( radio, "clicked",
+ G_CALLBACK( preference_timer_minute ), NULL );
+ hildon_app_menu_add_filter( menu, GTK_BUTTON( radio ) );
+
+ // default to minute
+ gtk_toggle_button_set_active( radio, TRUE );
+
+ gtk_widget_show_all( menu );
+
+ hildon_window_set_app_menu( HILDON_WINDOW( window ), menu );
+}
+
+
+static void label_timer_landscape( void )
+{
+ gtk_widget_set_size_request( timerdata.vBox, 800, -1 );
+
+ gtk_widget_destroy( timerdata.label );
+ timerdata.label = gtk_label_new( NULL );
+ if ( stopish_timer_get_precision( ) == TIMER_PRECISION_MINUTE )
+ gtk_label_set_markup( GTK_LABEL( timerdata.label ),
+ "<span font_family=\"monospace\" "
+ "size=\"70000\" weight=\"ultrabold\">"
+ "00:00.0</span>" );
+ else
+ gtk_label_set_markup( GTK_LABEL( timerdata.label ),
+ "<span font_family=\"monospace\" "
+ "size=\"70000\" weight=\"ultrabold\">"
+ "00:00:00.0</span>" );
+ gtk_misc_set_alignment( GTK_MISC( timerdata.label ), 0.5f, 0.5f );
+ gtk_container_add( GTK_CONTAINER( timerdata.vBox ), timerdata.label );
+ gtk_widget_show( timerdata.label );
+}
+
+
+static void label_timer_portrait( void )
+{
+ GtkWidget *vBox, *hBox, *label;
+
+ gtk_widget_set_size_request( timerdata.vBox, 480, -1 );
+
+ gtk_widget_destroy( timerdata.label );
+ vBox = gtk_vbox_new( FALSE, 10 );
+
+ if ( stopish_timer_get_precision( ) == TIMER_PRECISION_HOUR ) {
+ hBox = gtk_hbox_new( FALSE, 10 );
+ label = gtk_label_new( "Hours" );
+ gtk_widget_set_size_request( label, 100, -1 );
+ gtk_misc_set_alignment( GTK_MISC( label ), 1.0f, 0.5f );
+ gtk_container_add( GTK_CONTAINER( hBox ), label );
+ timerdata.labelHour = gtk_label_new( NULL );
+ gtk_widget_set_size_request( timerdata.labelHour, 350, -1 );
+ gtk_misc_set_alignment( GTK_MISC( timerdata.labelHour ), 0.0f, 0.5f );
+ gtk_label_set_markup( GTK_LABEL( timerdata.labelHour ),
+ "<span font_family=\"monospace\" "
+ "size=\"80000\" weight=\"ultrabold\">"
+ "00</span>" );
+ gtk_container_add( GTK_CONTAINER( hBox ), timerdata.labelHour );
+ gtk_container_add( GTK_CONTAINER( vBox ), hBox );
+ }
+
+ hBox = gtk_hbox_new( FALSE, 10 );
+ label = gtk_label_new( "Minutes" );
+ gtk_widget_set_size_request( label, 100, -1 );
+ gtk_misc_set_alignment( GTK_MISC( label ), 1.0f, 0.5f );
+ gtk_container_add( GTK_CONTAINER( hBox ), label );
+ timerdata.labelMinute = gtk_label_new( NULL );
+ gtk_widget_set_size_request( timerdata.labelMinute, 350, -1 );
+ gtk_misc_set_alignment( GTK_MISC( timerdata.labelMinute ), 0.0f, 0.5f );
+ gtk_label_set_markup( GTK_LABEL( timerdata.labelMinute ),
+ "<span font_family=\"monospace\" "
+ "size=\"80000\" weight=\"ultrabold\">"
+ "00</span>" );
+ gtk_container_add( GTK_CONTAINER( hBox ), timerdata.labelMinute );
+ gtk_container_add( GTK_CONTAINER( vBox ), hBox );
+
+ hBox = gtk_hbox_new( FALSE, 10 );
+ label = gtk_label_new( "Seconds" );
+ gtk_widget_set_size_request( label, 100, -1 );
+ gtk_misc_set_alignment( GTK_MISC( label ), 1.0f, 0.5f );
+ gtk_container_add( GTK_CONTAINER( hBox ), label );
+ timerdata.labelSecond = gtk_label_new( NULL );
+ gtk_widget_set_size_request( timerdata.labelSecond, 350, -1 );
+ gtk_misc_set_alignment( GTK_MISC( timerdata.labelSecond ), 0.0f, 0.5f );
+ gtk_label_set_markup( GTK_LABEL( timerdata.labelSecond ),
+ "<span font_family=\"monospace\" "
+ "size=\"80000\" weight=\"ultrabold\">"
+ "00.0</span>" );
+ gtk_container_add( GTK_CONTAINER( hBox ), timerdata.labelSecond );
+ gtk_container_add( GTK_CONTAINER( vBox ), hBox );
+
+ timerdata.label = vBox;
+ gtk_container_add( GTK_CONTAINER( timerdata.vBox ), vBox );
+ gtk_widget_show_all( vBox );
+}
+
+
+//
+// Timer callback
+//
+static gint timeout_cb( gpointer data )
+{
+ char formatBuffer[128], tempBuffer[8];
+ char *tempString;
+
+ // print to screen
+ tempString = stopish_get_time_string( );
+ if ( stopishOrientation == STOPISH_LANDSCAPE ) {
+ sprintf( formatBuffer, "<span font_family=\"monospace\" "
+ "size=\"70000\" weight=\"ultrabold\">"
+ "%s</span>", tempString );
+ gtk_label_set_markup( GTK_LABEL( timerdata.label ), formatBuffer );
+ }
+ else {
+ if ( stopish_timer_get_precision( ) == TIMER_PRECISION_HOUR ) {
+ sprintf( tempBuffer, "%.2s", tempString );
+ sprintf( formatBuffer, "<span font_family=\"monospace\" "
+ "size=\"80000\" weight=\"ultrabold\">"
+ "%s</span>", tempBuffer );
+ gtk_label_set_markup( GTK_LABEL( timerdata.labelHour ),
+ formatBuffer );
+ }
+ if ( stopish_timer_get_precision( ) == TIMER_PRECISION_HOUR )
+ sprintf( tempBuffer, "%.2s", tempString + 3 );
+ else
+ sprintf( tempBuffer, "%.2s", tempString );
+ sprintf( formatBuffer, "<span font_family=\"monospace\" "
+ "size=\"80000\" weight=\"ultrabold\">"
+ "%s</span>", tempBuffer );
+ gtk_label_set_markup( GTK_LABEL( timerdata.labelMinute ),
+ formatBuffer );
+ if ( stopish_timer_get_precision( ) == TIMER_PRECISION_HOUR )
+ sprintf( tempBuffer, "%.4s", tempString + 6 );
+ else
+ sprintf( tempBuffer, "%.4s", tempString + 3 );
+ sprintf( formatBuffer, "<span font_family=\"monospace\" "
+ "size=\"80000\" weight=\"ultrabold\">"
+ "%s</span>", tempBuffer );
+ gtk_label_set_markup( GTK_LABEL( timerdata.labelSecond ),
+ formatBuffer );
+ }
+ free( tempString );
+
+ return TRUE;
+}
+
+