X-Git-Url: http://vcs.maemo.org/git/?p=stopish;a=blobdiff_plain;f=stopish.c;fp=stopish.c;h=0000000000000000000000000000000000000000;hp=c1fd22960fa97500281449b4b6c63847e1fdf23b;hb=33b937bc88719b46e83874ffe3d748033721ebb8;hpb=3bb16a033558cb0f642f206597f4af8fd6a71a94 diff --git a/stopish.c b/stopish.c deleted file mode 100644 index c1fd229..0000000 --- a/stopish.c +++ /dev/null @@ -1,208 +0,0 @@ -// stopish.c -// -// Copyright 2009 Michael Cronenworth -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -// MA 02110-1301, USA. - - -#include -#include -#include - -#include -#include - -static GtkWidget *timerLabel = NULL; -static int stopishMode = 0; // 0 = Start, 1 = Stop -static int timerHandle = -1; -static int timerStartTime = 0; -static int timeTicks = 0; - -//Prototypes -gint dbus_callback( const gchar *interface, const gchar *method, - GArray *arguments, gpointer data, osso_rpc_t *retval ); -GtkWindow *stopish_new( void ); -static void start_cb( GtkButton* button, gpointer data ); -static void close_cb( GtkButton* button, gpointer data ); -static gint timeout_cb( gpointer data ); -static int current_time( void ); - - -int main( int argc, char *argv[] ) -{ - osso_context_t *ctxt; - osso_return_t ret; - GtkWindow *window; - - //printf( "stopish: starting up\n" ); - - ctxt = osso_initialize( "com.nokia.stopish", PACKAGE_VERSION, TRUE, NULL ); - if ( ctxt == NULL ) { - fprintf( stderr, "osso_initialize failed.\n" ); - exit( 1 ); - } - - gtk_init( &argc, &argv ); - - window = stopish_new( ); - - ret = osso_rpc_set_default_cb_f( ctxt, dbus_callback, window ); - if ( ret != OSSO_OK ) { - fprintf( stderr, "osso_rpc_set_default_cb_f failed: %d.\n", ret ); - exit( 1 ); - } - - gtk_main( ); - - return 0; -} - - -gint dbus_callback( const gchar *interface, const gchar *method, - GArray *arguments, gpointer data, osso_rpc_t *retval ) -{ - //printf( "stopish dbus: %s, %s\n", interface, method ); - - if ( !strcmp( method, "top_application" ) ) - gtk_window_present( GTK_WINDOW( data ) ); - - retval->type = DBUS_TYPE_INVALID; - - return OSSO_OK; -} - - -GtkWindow *stopish_new( void ) -{ - GtkWidget *window, *hBox, *label, *button; - GtkWidget *vBox, *vBox0; - - window = gtk_window_new( GTK_WINDOW_TOPLEVEL ); - - gtk_container_set_border_width( GTK_CONTAINER( window ), 20 ); - - gtk_window_set_title( GTK_WINDOW( window ), "Stopish" ); - - g_signal_connect( G_OBJECT( window ), "destroy", - G_CALLBACK( close_cb ), window ); - - vBox = gtk_vbox_new( FALSE, 10 ); - - label = gtk_label_new( "Stopish - The Stopwatch" ); - gtk_box_pack_start( GTK_BOX( vBox ), label, FALSE, FALSE, 0 ); - - hBox = gtk_hbox_new( FALSE, 10 ); - - // stop watch area - timerLabel = gtk_label_new( NULL ); - gtk_label_set_markup( GTK_LABEL( timerLabel ), "00:00:00.0" ); - gtk_container_add( GTK_CONTAINER( hBox ), timerLabel ); - - // button area - vBox0 = gtk_vbox_new( FALSE, 10 ); - - // close button - button = gtk_button_new( ); - label = gtk_label_new( "Start" ); - gtk_container_add( GTK_CONTAINER( button ), label ); - g_signal_connect( G_OBJECT( button ), "clicked", - G_CALLBACK( start_cb ), label ); - gtk_box_pack_start( GTK_BOX( vBox0 ), button, FALSE, FALSE, 0 ); - - // start stopwatch button - button = gtk_button_new_with_label( "Close" ); - g_signal_connect( G_OBJECT( button ), "clicked", - G_CALLBACK( close_cb ), window ); - gtk_box_pack_start( GTK_BOX( vBox0 ), button, FALSE, FALSE, 0 ); - - gtk_container_add( GTK_CONTAINER( hBox ), vBox0 ); - - gtk_container_add( GTK_CONTAINER( vBox ), hBox ); - - gtk_container_add( GTK_CONTAINER( window ), vBox ); - - gtk_widget_show_all( window ); - - return GTK_WINDOW( window ); -} - - -static void start_cb( GtkButton* button, gpointer data ) -{ - if ( stopishMode == 0 ) { - // set label text and add timer handle - gtk_label_set_text( GTK_LABEL( data ), "Stop" ); - stopishMode = 1; - timerHandle = g_timeout_add( 100, timeout_cb, NULL ); - timerStartTime = current_time( ) - timeTicks; - } - else { - // set label text and remove timer handle - gtk_label_set_text( GTK_LABEL( data ), "Start" ); - stopishMode = 0; - timerStartTime = 0; - timeTicks = 0; - gtk_label_set_markup( GTK_LABEL( timerLabel ), - "00:00:00.0" ); - g_source_remove( timerHandle ); - } -} - - -static void close_cb( GtkButton* button, gpointer data ) -{ - // destroy main window and exit gtk main loop - gtk_widget_destroy( GTK_WIDGET( data ) ); - gtk_main_quit( ); -} - - -static gint timeout_cb( gpointer data ) -{ - static char timeBuffer[64]; - int h, m, s, ss, currentTime; - - // get current time - currentTime = current_time( ); - - // calculate time format - timeTicks = ( currentTime - timerStartTime ); - ss = timeTicks % 10; - s = timeTicks / 10; - m = s / 60; - s = s % 60; - h = m / 60; - m = m % 60; - - // print to screen - sprintf( timeBuffer, "%.02d:%.02d:%.02d.%.1d", h, m, s, ss); - gtk_label_set_markup( GTK_LABEL( timerLabel ), timeBuffer ); - - return TRUE; -} - - -static int current_time( void ) -{ - struct timeval tv; - int s, us; - - gettimeofday( &tv, NULL ); - s = tv.tv_sec % 100000; - us = tv.tv_usec / 100000; - - return ( s * 10 + us ); -}