#include <sys/time.h>
#include <gtk/gtk.h>
#include <libosso.h>
+#include <hildon/hildon.h>
+#include <dbus/dbus.h>
+#include <mce/mode-names.h>
+#include <mce/dbus-names.h>
+#define MCE_SIGNAL_MATCH "type='signal'," \
+ "interface='" MCE_SIGNAL_IF "'," \
+ "member='" MCE_DEVICE_ORIENTATION_SIG "'"
#include "stopish.h"
-static GtkWidget *timerLabel = NULL;
+// Application data struct
+typedef struct _AppData AppData;
+struct _AppData {
+ GtkWindow *main_window;
+ osso_context_t *osso_context;
+ DBusConnection *system_bus;
+};
+
+typedef struct timerData {
+ GtkWidget *vBox;
+ GtkWidget *label;
+ GtkWidget *labelHour;
+ GtkWidget *labelMinute;
+ GtkWidget *labelSecond;
+};
+
+static AppData appdata;
+static struct timerData timerdata;
static GtkWidget *timerHistoryLabel1 = NULL;
static GtkWidget *timerHistoryLabel2 = NULL;
static GtkWidget *timerHistoryLabel3 = NULL;
static GtkWidget *timerHistoryLabel4 = NULL;
static GSList *historyList = NULL;
static int stopishMode = STOPISH_MODE_START;
+static int stopishOrientation = STOPISH_LANDSCAPE;
static int timerHandle = -1;
+
//Prototypes
gint dbus_callback( const gchar *interface, const gchar *method,
GArray *arguments, gpointer data, osso_rpc_t *retval );
static GtkWindow *stopish_new( void );
+static void main_menu( GtkWindow *window );
+static void label_timer_landscape( void );
+static void label_timer_portrait( void );
+static gint timeout_cb( gpointer data );
static void start_cb( GtkButton* button, gpointer data );
static void reset_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 preference_timer_hour( GtkRadioButton* radio, GtkLabel *label );
+static void preference_timer_minute( GtkRadioButton* radio, GtkLabel *label );
+static void accelerometer_enable( void );
+static void accelerometer_disable( void );
+static DBusHandlerResult mce_filter_func( DBusConnection * connection,
+ DBusMessage * message,
+ void *data );
int main( int argc, char *argv[] )
{
- osso_context_t *ctxt;
osso_return_t ret;
- GtkWindow *window;
-
- //printf( "stopish: starting up\n" );
+ HildonProgram *program;
- ctxt = osso_initialize( "com.nokia.stopish", PACKAGE_VERSION, TRUE, NULL );
- if ( ctxt == NULL ) {
+ appdata.osso_context = osso_initialize( "com.nokia.stopish",
+ PACKAGE_VERSION, TRUE, NULL );
+ if ( appdata.osso_context == NULL ) {
fprintf( stderr, "osso_initialize failed.\n" );
exit( 1 );
}
- gtk_init( &argc, &argv );
-
- window = stopish_new( );
+ // initialize Hildonized GTK libraries
+ hildon_gtk_init( &argc, &argv );
+ program = hildon_program_get_instance( );
+
+ // create main window
+ appdata.main_window = stopish_new( );
+ hildon_program_add_window( program, HILDON_WINDOW( appdata.main_window ) );
+
+ // Connect to session bus, add a match rule, install filter callback
+ appdata.system_bus = osso_get_sys_dbus_connection( appdata.osso_context );
+ if ( appdata.system_bus ) {
+ dbus_bus_add_match( appdata.system_bus, MCE_SIGNAL_MATCH, NULL );
+ dbus_connection_add_filter( appdata.system_bus,
+ mce_filter_func,
+ NULL, NULL );
+ }
+ else
+ g_printerr( "ERROR: Cannot connect to system dbus.\n" );
- ret = osso_rpc_set_default_cb_f( ctxt, dbus_callback, window );
+ ret = osso_rpc_set_default_cb_f( appdata.osso_context,
+ dbus_callback, appdata.main_window );
if ( ret != OSSO_OK ) {
fprintf( stderr, "osso_rpc_set_default_cb_f failed: %d.\n", ret );
exit( 1 );
static GtkWindow *stopish_new( void )
{
- GtkWidget *window, *hBox, *label, *button, *button0;
- GtkWidget *vBox, *vBox0, *vBox1;
+ GtkWidget *window, *button, *button0, *label;
+ GtkWidget *vBoxMain, *vBox0, *hBox0;
- window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
+ window = hildon_stackable_window_new( );
gtk_container_set_border_width( GTK_CONTAINER( window ), 20 );
gtk_window_set_title( GTK_WINDOW( window ), "Stopish" );
+ // attach signals to main window
g_signal_connect( G_OBJECT( window ), "destroy",
G_CALLBACK( close_cb ), window );
+ g_signal_connect( G_OBJECT( window ), "focus-in-event",
+ G_CALLBACK( focus_in_cb ), NULL );
+ g_signal_connect( G_OBJECT( window ), "focus-out-event",
+ G_CALLBACK( focus_out_cb ), NULL );
- vBox = gtk_vbox_new( FALSE, 20 );
+ // setup main menu
+ main_menu( window );
- label = gtk_label_new( "Stopish - The Stopwatch" );
- gtk_box_pack_start( GTK_BOX( vBox ), label, FALSE, FALSE, 0 );
+ vBoxMain = gtk_vbox_new( FALSE, 10 );
- hBox = gtk_hbox_new( FALSE, 10 );
+ // separator
+ label = gtk_label_new( NULL );
+ gtk_container_add( GTK_CONTAINER( vBoxMain ), label );
- // stop watch area
vBox0 = gtk_vbox_new( FALSE, 5 );
- gtk_widget_set_size_request( vBox0, 250, -1 );
- // main timer
- timerLabel = gtk_label_new( NULL );
- gtk_widget_set_size_request( timerLabel, -1, 150 );
- gtk_label_set_markup( GTK_LABEL( timerLabel ),
- "<span font_family=\"monospace\" size=\"xx-large\">00:00:00.0</span>" );
- gtk_box_pack_start( GTK_BOX( vBox0 ), timerLabel, FALSE, FALSE, 0 );
+ // stop watch area
+ timerdata.vBox = gtk_vbox_new( FALSE, 0 );
+ gtk_container_add( GTK_CONTAINER( vBox0 ), timerdata.vBox );
+ label_timer_landscape( );
// history area
timerHistoryLabel1 = gtk_label_new( NULL );
+ gtk_label_set_markup( GTK_LABEL( timerHistoryLabel1 ),
+ "<span size=\"large\"> </span>" );
gtk_box_pack_start( GTK_BOX( vBox0 ), timerHistoryLabel1, FALSE, FALSE, 0 );
timerHistoryLabel2 = gtk_label_new( NULL );
gtk_box_pack_start( GTK_BOX( vBox0 ), timerHistoryLabel2, FALSE, FALSE, 0 );
timerHistoryLabel3 = gtk_label_new( NULL );
+ gtk_label_set_markup( GTK_LABEL( timerHistoryLabel3 ),
+ "<span size=\"small\"> </span>" );
gtk_box_pack_start( GTK_BOX( vBox0 ), timerHistoryLabel3, FALSE, FALSE, 0 );
timerHistoryLabel4 = gtk_label_new( NULL );
+ gtk_label_set_markup( GTK_LABEL( timerHistoryLabel4 ),
+ "<span size=\"x-small\"> </span>" );
gtk_box_pack_start( GTK_BOX( vBox0 ), timerHistoryLabel4, FALSE, FALSE, 0 );
- label = gtk_label_new( NULL );
- gtk_container_add( GTK_CONTAINER( vBox0 ), label );
- gtk_container_add( GTK_CONTAINER( hBox ), vBox0 );
+ gtk_container_add( GTK_CONTAINER( vBoxMain ), vBox0 );
+
+ // separator
+ label = gtk_label_new( NULL );
+ gtk_container_add( GTK_CONTAINER( vBoxMain ), label );
// button area
- vBox1 = gtk_vbox_new( FALSE, 15 );
- gtk_widget_set_size_request( vBox1, 200, -1 );
+ hBox0 = gtk_hbox_new( FALSE, 15 );
+ gtk_widget_set_size_request( hBox0, -1, 80 );
// start/pause stopwatch button
- button = gtk_button_new_with_label( "Start" );
- button0 = gtk_button_new_with_label( "Reset" );
- gtk_widget_set_size_request( button, -1, 60 );
+ button = hildon_button_new_with_text( HILDON_SIZE_HALFSCREEN_WIDTH,
+ HILDON_BUTTON_ARRANGEMENT_HORIZONTAL,
+ "Start", NULL );
+ button0 = hildon_button_new_with_text( HILDON_SIZE_HALFSCREEN_WIDTH,
+ HILDON_BUTTON_ARRANGEMENT_HORIZONTAL,
+ "Reset", NULL );
g_signal_connect( G_OBJECT( button ), "clicked",
G_CALLBACK( start_cb ), button0 );
- gtk_box_pack_start( GTK_BOX( vBox1 ), button, FALSE, FALSE, 0 );
+ gtk_container_add( GTK_CONTAINER( hBox0 ), button );
// reset button
gtk_widget_set_sensitive( button0, FALSE );
- gtk_widget_set_size_request( button0, -1, 60 );
g_signal_connect( G_OBJECT( button0 ), "clicked",
G_CALLBACK( reset_cb ), button );
- gtk_box_pack_start( GTK_BOX( vBox1 ), button0, FALSE, FALSE, 0 );
+ gtk_container_add( GTK_CONTAINER( hBox0 ), button0 );
- gtk_container_add( GTK_CONTAINER( hBox ), vBox1 );
+ gtk_box_pack_start( GTK_BOX( vBoxMain ), hBox0, FALSE, FALSE, 0 );
- gtk_container_add( GTK_CONTAINER( vBox ), hBox );
-
- gtk_container_add( GTK_CONTAINER( window ), vBox );
+ gtk_container_add( GTK_CONTAINER( window ), vBoxMain );
gtk_widget_show_all( window );
}
+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;
+}
+
+
static void start_cb( GtkButton* button, gpointer data )
{
if ( stopishMode == STOPISH_MODE_START ) {
gtk_button_set_label( button, "Pause" );
stopishMode = STOPISH_MODE_PAUSE;
stopish_set_time_start( stopish_current_time( ) );
- timerHandle = g_timeout_add( 100, stopish_timeout_cb, timerLabel );
+ timerHandle = g_timeout_add( 100, timeout_cb, NULL );
}
else if ( stopishMode == STOPISH_MODE_RESUME ) {
// resume timer
gtk_button_set_label( button, "Pause" );
stopishMode = STOPISH_MODE_PAUSE;
stopish_timer_resume( );
- timerHandle = g_timeout_add( 100, stopish_timeout_cb, timerLabel );
+ timerHandle = g_timeout_add( 100, timeout_cb, NULL );
}
else {
// pause timer, remove timeout
{
GSList *tempList;
char *tempString;
- char formatString[64];
+ char formatString[128];
if ( stopishMode == STOPISH_MODE_RESUME )
stopish_timer_resume( );
// set label text and remove timer handle
gtk_button_set_label( GTK_BUTTON( data ), "Start" );
stopishMode = STOPISH_MODE_START;
- gtk_label_set_markup( GTK_LABEL( timerLabel ),
- "<span font_family=\"monospace\" size=\"xx-large\">00:00:00.0</span>" );
+ 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>" );
g_source_remove( timerHandle );
// add current time to history
historyList = g_slist_prepend( historyList,
( gpointer ) stopish_get_time_string( ) );
- gtk_label_set_text( GTK_LABEL( timerHistoryLabel1 ),
- ( char * ) historyList->data );
+ sprintf( formatString, "<span size=\"large\">%s</span>",
+ ( char * ) historyList->data );
+ gtk_label_set_markup( GTK_LABEL( timerHistoryLabel1 ),
+ formatString );
tempList = historyList;
tempList = g_slist_next( tempList );
if ( tempList ) {
- sprintf( formatString, "<span size=\"small\">%s</span>",
- ( char * ) tempList->data );
- gtk_label_set_markup( GTK_LABEL( timerHistoryLabel2 ),
- formatString );
+ gtk_label_set_text( GTK_LABEL( timerHistoryLabel2 ),
+ ( char * ) tempList->data );
}
tempList = g_slist_next( tempList );
if ( tempList ) {
- sprintf( formatString, "<span size=\"x-small\">%s</span>",
+ sprintf( formatString, "<span size=\"small\">%s</span>",
( char * ) tempList->data );
gtk_label_set_markup( GTK_LABEL( timerHistoryLabel3 ),
formatString );
}
tempList = g_slist_next( tempList );
if ( tempList ) {
- sprintf( formatString, "<span size=\"xx-small\">%s</span>",
+ sprintf( formatString, "<span size=\"x-small\">%s</span>",
( char * ) tempList->data );
gtk_label_set_markup( GTK_LABEL( timerHistoryLabel4 ),
formatString );
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 )
+{
+ // enable accelerometer hardware for portrait mode support
+ accelerometer_enable( );
+
+ return FALSE;
+}
+
+
+static gboolean focus_out_cb( GtkWidget *widget, GdkEventFocus *event,
+ gpointer data )
+{
+ // disable accelerometer for battery savings
+ accelerometer_disable( );
+
+ return FALSE;
+}
+
+
+static void preference_timer_hour( GtkRadioButton* radio, GtkLabel *label )
+{
+ stopish_timer_set_precision( TIMER_PRECISION_HOUR );
+ if ( stopishOrientation == STOPISH_LANDSCAPE )
+ label_timer_landscape( );
+ else
+ label_timer_portrait( );
+}
+
+
+static void preference_timer_minute( GtkRadioButton* radio, GtkLabel *label )
+{
+ stopish_timer_set_precision( TIMER_PRECISION_MINUTE );
+ if ( stopishOrientation == STOPISH_LANDSCAPE )
+ label_timer_landscape( );
+ else
+ label_timer_portrait( );
+}
+
+
+static void accelerometer_enable( void )
+{
+ if ( osso_rpc_run_system( appdata.osso_context, MCE_SERVICE,
+ MCE_REQUEST_PATH, MCE_REQUEST_IF,
+ "req_accelerometer_enable", NULL,
+ DBUS_TYPE_INVALID ) != OSSO_OK ) {
+ g_printerr("WARN: Cannot enable accelerometers\n");
+ }
+}
+
+
+static void accelerometer_disable( void )
+{
+ if ( osso_rpc_run_system( appdata.osso_context, MCE_SERVICE,
+ MCE_REQUEST_PATH, MCE_REQUEST_IF,
+ "req_accelerometer_disable", NULL,
+ DBUS_TYPE_INVALID ) != OSSO_OK ) {
+ g_printerr("WARN: Cannot disable accelerometers\n");
+ }
+}
+
+
+static DBusHandlerResult mce_filter_func( DBusConnection * connection,
+ DBusMessage * message,
+ void *data )
+{
+ DBusMessageIter iter;
+ char *rotation = NULL;
+
+ if ( dbus_message_is_signal( message, MCE_SIGNAL_IF,
+ MCE_DEVICE_ORIENTATION_SIG ) ) {
+ // here if we received an orientation dbus signal
+ if ( dbus_message_iter_init( message, &iter ) ) {
+ dbus_message_iter_get_basic( &iter, &rotation );
+
+ // Rotate main window
+ if ( !strcmp( rotation, MCE_ORIENTATION_PORTRAIT ) ) {
+ hildon_gtk_window_set_portrait_flags( GTK_WINDOW( appdata.main_window ),
+ HILDON_PORTRAIT_MODE_REQUEST );
+ label_timer_portrait( );
+ stopishOrientation = STOPISH_PORTRAIT;
+ }
+ else {
+ hildon_gtk_window_set_portrait_flags( GTK_WINDOW( appdata.main_window ),
+ ~HILDON_PORTRAIT_MODE_REQUEST );
+ label_timer_landscape( );
+ stopishOrientation = STOPISH_LANDSCAPE;
+ }
+ }
+ else
+ g_printerr( "ERROR: dbus_message_iter_init() failed.\n" );
+ }
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}