typedef struct _AppData AppData;
struct _AppData {
GtkWindow *main_window;
+ GtkWindow *countdown_window;
osso_context_t *osso_context;
DBusConnection *system_bus;
};
static AppData appdata;
static int stopishMode = STOPISH_MODE_START;
static int stopishOrientation = STOPISH_LANDSCAPE;
+static int stopishType = STOPISH_TYPE_STOPWATCH;
//Prototypes
gint dbus_callback( const gchar *interface, const gchar *method,
GArray *arguments, gpointer data, osso_rpc_t *retval );
static void main_menu( GtkWindow *window );
+static void change_type_cb( GtkButton* button, gpointer data );
static void close_cb( GtkButton* button, gpointer data );
-static gboolean focus_in_cb( GtkWidget *widget, GdkEventFocus *event,
- gpointer data );
-static gboolean focus_out_cb( GtkWidget *widget, GdkEventFocus *event,
- gpointer data );
static void accelerometer_enable( void );
static void accelerometer_disable( void );
static DBusHandlerResult mce_filter_func( DBusConnection * connection,
g_signal_connect( G_OBJECT( appdata.main_window ), "destroy",
G_CALLBACK( close_cb ), appdata.main_window );
g_signal_connect( G_OBJECT( appdata.main_window ), "focus-in-event",
- G_CALLBACK( focus_in_cb ), NULL );
+ G_CALLBACK( stopish_focus_in_cb ), NULL );
g_signal_connect( G_OBJECT( appdata.main_window ), "focus-out-event",
- G_CALLBACK( focus_out_cb ), NULL );
+ G_CALLBACK( stopish_focus_out_cb ), NULL );
// setup main menu
main_menu( appdata.main_window );
}
+void stopish_about_cb( GtkButton* button, gpointer data )
+{
+ GdkPixbuf *logo;
+ GError *error;
+ GtkWidget *dialog;
+ char *authors[2];
+
+ authors[0] = strdup( "Michael Cronenworth" );
+ authors[1] = NULL;
+
+ dialog = gtk_about_dialog_new( );
+
+ gtk_about_dialog_set_program_name( GTK_ABOUT_DIALOG( dialog ),
+ "Stopish" );
+ gtk_about_dialog_set_version( GTK_ABOUT_DIALOG( dialog ),
+ STOPISH_VERSION_STR );
+ gtk_about_dialog_set_authors( GTK_ABOUT_DIALOG( dialog ),
+ ( const char ** ) authors );
+ logo = gdk_pixbuf_new_from_file( "/usr/share/icons/hicolor/40x40/hildon/stopish.png",
+ &error );
+ gtk_about_dialog_set_logo( GTK_ABOUT_DIALOG( dialog ),
+ logo );
+
+ gtk_dialog_run( GTK_DIALOG( dialog ) );
+
+ gtk_widget_destroy( dialog );
+ free( authors[0] );
+}
+
+
int stopish_get_mode( void )
{
return stopishMode;
}
+int stopish_get_type( void )
+{
+ return stopishType;
+}
+
+
+void stopish_set_type( int newType )
+{
+ stopishType = newType;
+}
+
+
int stopish_get_orientation( void )
{
return stopishOrientation;
}
+gboolean stopish_focus_in_cb( GtkWidget *widget, GdkEventFocus *event,
+ gpointer data )
+{
+ // enable accelerometer hardware for portrait mode support
+ accelerometer_enable( );
+
+ return FALSE;
+}
+
+
+gboolean stopish_focus_out_cb( GtkWidget *widget, GdkEventFocus *event,
+ gpointer data )
+{
+ // disable accelerometer for battery savings
+ accelerometer_disable( );
+
+ return FALSE;
+}
+
+
static void main_menu( GtkWindow *window )
{
- GtkWidget *menu, *radio;
+ HildonAppMenu *menu;
+ GtkWidget *button, *radio;
+
+ menu = ( HildonAppMenu * ) hildon_app_menu_new( );
- menu = hildon_app_menu_new( );
+ button = gtk_button_new_with_label( "Countdown" );
+ g_signal_connect_after( G_OBJECT( button ), "clicked",
+ G_CALLBACK( change_type_cb ), NULL );
+ hildon_app_menu_append( menu, GTK_BUTTON( button ) );
+
+ button = gtk_button_new_with_label( "About" );
+ g_signal_connect_after( G_OBJECT( button ), "clicked",
+ G_CALLBACK( stopish_about_cb ), NULL );
+ hildon_app_menu_append( menu, GTK_BUTTON( button ) );
// Hour preference
radio = gtk_radio_button_new_with_label( NULL, "Hour" );
hildon_app_menu_add_filter( menu, GTK_BUTTON( radio ) );
// default to minute
- gtk_toggle_button_set_active( radio, TRUE );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( radio ), TRUE );
- gtk_widget_show_all( menu );
+ gtk_widget_show_all( GTK_WIDGET( menu ) );
hildon_window_set_app_menu( HILDON_WINDOW( window ), menu );
}
-static void close_cb( GtkButton* button, gpointer data )
-{
- // disable accelerometer for battery savings
- accelerometer_disable( );
-
- // destroy main window and exit gtk main loop
- gtk_widget_destroy( GTK_WIDGET( data ) );
- gtk_main_quit( );
-}
-
-
-static gboolean focus_in_cb( GtkWidget *widget, GdkEventFocus *event,
- gpointer data )
+static void change_type_cb( GtkButton* button, gpointer data )
{
- // enable accelerometer hardware for portrait mode support
- accelerometer_enable( );
-
- return FALSE;
+ stopish_stopwatch_reset( );
+ stopishType = STOPISH_TYPE_COUNTDOWN;
+ stopish_countdown_new( );
}
-static gboolean focus_out_cb( GtkWidget *widget, GdkEventFocus *event,
- gpointer data )
+static void close_cb( GtkButton* button, gpointer data )
{
// disable accelerometer for battery savings
accelerometer_disable( );
- return FALSE;
+ // destroy main window and exit gtk main loop
+ gtk_widget_destroy( GTK_WIDGET( data ) );
+ gtk_main_quit( );
}
if ( !strcmp( rotation, MCE_ORIENTATION_PORTRAIT ) ) {
hildon_gtk_window_set_portrait_flags( GTK_WINDOW( appdata.main_window ),
HILDON_PORTRAIT_MODE_REQUEST );
- stopish_stopwatch_label_timer_portrait( );
+ if ( stopishType == STOPISH_TYPE_STOPWATCH )
+ stopish_stopwatch_label_timer_portrait( );
+ else
+ stopish_countdown_label_timer_portrait( );
stopishOrientation = STOPISH_PORTRAIT;
}
else {
hildon_gtk_window_set_portrait_flags( GTK_WINDOW( appdata.main_window ),
~HILDON_PORTRAIT_MODE_REQUEST );
- stopish_stopwatch_label_timer_landscape( );
+ if ( stopishType == STOPISH_TYPE_STOPWATCH )
+ stopish_stopwatch_label_timer_landscape( );
+ else
+ stopish_countdown_label_timer_landscape( );
stopishOrientation = STOPISH_LANDSCAPE;
}
}