Send commitlog mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.openmoko.org/mailman/listinfo/commitlog
or, via email, send a message with subject or body 'help' to
        [EMAIL PROTECTED]

You can reach the person managing the list at
        [EMAIL PROTECTED]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of commitlog digest..."
Today's Topics:

   1. r3323 - in
      trunk/src/target/OM-2007.2/applications/openmoko-dialer2: .
      src/phone-kit ([EMAIL PROTECTED])
   2. r3324 - in
      trunk/src/target/OM-2007.2/applications/openmoko-today2: .        src
      ([EMAIL PROTECTED])
   3. r3325 - in
      trunk/src/target/OM-2007.2/applications/openmoko-dialer2: .
      src/dialer ([EMAIL PROTECTED])
   4. r3326 - in
      trunk/src/target/OM-2007.2/applications/openmoko-worldclock2: .
      data src ([EMAIL PROTECTED])
--- Begin Message ---
Author: thomas
Date: 2007-11-01 17:48:28 +0100 (Thu, 01 Nov 2007)
New Revision: 3323

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
   
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer.c
Log:
* src/phone-kit/moko-dialer.c: (moko_dialer_class_init),
(dialer_display_error), (moko_dialer_init): Reimplement dial out function


Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog  
2007-11-01 16:45:13 UTC (rev 3322)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog  
2007-11-01 16:48:28 UTC (rev 3323)
@@ -1,5 +1,10 @@
 2007-11-01  Thomas Wood  <[EMAIL PROTECTED]>
 
+       * src/phone-kit/moko-dialer.c: (moko_dialer_class_init),
+       (dialer_display_error), (moko_dialer_init): Reimplement dial out 
function
+
+2007-11-01  Thomas Wood  <[EMAIL PROTECTED]>
+
        * data/org.openmoko.Dialer.service.in: Update binary name
 
 2007-11-01  Thomas Wood  <[EMAIL PROTECTED]>

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer.c
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer.c
        2007-11-01 16:45:13 UTC (rev 3322)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer.c
        2007-11-01 16:48:28 UTC (rev 3323)
@@ -96,14 +96,78 @@
 gboolean
 moko_dialer_dial (MokoDialer *dialer, const gchar *number, GError *error)
 {
+  GtkWidget *dlg;
   MokoDialerPrivate *priv;
+  MokoContactEntry *entry = NULL;
 
   g_return_val_if_fail (MOKO_IS_DIALER (dialer), FALSE);
   g_return_val_if_fail (number != NULL, FALSE);
   priv = dialer->priv;
 
-  /* FIXME: Dial the number! */
+  g_debug ("Received dial request: %s", number);
 
+  /* check current dialer state */
+  if (0 || priv->status != DIALER_STATUS_NORMAL)
+  {
+    gchar *strings[] = {
+      "Normal",
+      "Incoming Call",
+      "Dialing",
+      "Outgoing Call"
+    };
+    dlg = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
+        "Cannot dial when dialer is busy.\nCurrent status = %s", 
strings[priv->status]);
+    gtk_dialog_run (GTK_DIALOG (dlg));
+    gtk_widget_destroy (dlg);
+
+    g_warning ("Cannot dial when dialer is busy: %d\n", priv->status);
+
+    return;
+  }
+  priv->status = DIALER_STATUS_DIALING;
+
+  /* check for network connection */
+  if (priv->registered != MOKO_GSMD_CONNECTION_NETREG_HOME
+      && priv->registered != MOKO_GSMD_CONNECTION_NETREG_ROAMING
+      && priv->registered != MOKO_GSMD_CONNECTION_NETREG_DENIED)
+  {
+    gchar *strings[] = {
+      "None",
+      "Home network registered",
+      "Waiting for network registration",
+      "Network registration denied",
+      "",
+      "Roaming network registered"
+    };
+
+    dlg = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
+        "Not connected to network.\nCurrent status = %s ", 
strings[priv->registered]);
+    gtk_dialog_run (GTK_DIALOG (dlg));
+    gtk_widget_destroy (dlg);
+
+    /* no point continuing if we're not connected to a network! */
+    priv->status = DIALER_STATUS_NORMAL;
+    return;
+  }
+
+  entry = moko_contacts_lookup (moko_contacts_get_default (), number);
+
+  /* Prepare a voice journal entry */
+  if (priv->journal)
+  {
+    priv->entry = moko_journal_entry_new (VOICE_JOURNAL_ENTRY);
+    priv->time = moko_time_new_today ();
+    moko_journal_entry_set_direction (priv->entry, DIRECTION_IN);
+    moko_journal_entry_set_dtstart (priv->entry, priv->time);
+    moko_journal_entry_set_source (priv->entry, "Openmoko Dialer");
+    moko_journal_voice_info_set_distant_number (priv->entry, number);
+    if (entry && entry->contact->uid)
+      moko_journal_entry_set_contact_uid (priv->entry, entry->contact->uid);
+  }
+  moko_talking_outgoing_call (MOKO_TALKING (priv->talking), number, entry);
+
+
+
   return TRUE;
 }
 
@@ -593,14 +657,16 @@
 static void
 dialer_display_error (GError *err)
 {
-  GtkWidget *dlg;
+  /* GtkWidget *dlg; */
 
   if (!err)
     return;
-
+  /*
   dlg = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, 
"Dialer: %s", err->message);
   gtk_dialog_run (GTK_DIALOG (dlg));
   gtk_widget_destroy (dlg);
+  */
+  g_warning (err->message);
 }
 
 static void




--- End Message ---
--- Begin Message ---
Author: ross
Date: 2007-11-01 18:09:18 +0100 (Thu, 01 Nov 2007)
New Revision: 3324

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-today2/
   trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-today2/configure.ac
   trunk/src/target/OM-2007.2/applications/openmoko-today2/src/
   trunk/src/target/OM-2007.2/applications/openmoko-today2/src/Makefile.am
   trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-launcher.c
Log:
2007-11-01  Ross Burton  <[EMAIL PROTECTED]>

        * .:
        Update lock down svn:externals to revisions.

        * src/:
        Remove inotify externals, its in libtaku now.
        
        * configure.ac:
        * src/Makefile.am:
        * src/today-launcher.c:
        Update for those changes.



Property changes on: trunk/src/target/OM-2007.2/applications/openmoko-today2
___________________________________________________________________
Name: svn:externals
   - libkoto http://svn.o-hand.com/repos/tasks/trunk/libkoto
libtaku http://svn.o-hand.com/repos/matchbox/trunk/matchbox-desktop-2/libtaku

   + libkoto -r346 http://svn.o-hand.com/repos/tasks/trunk/libkoto
libtaku -r1765 
http://svn.o-hand.com/repos/matchbox/trunk/matchbox-desktop-2/libtaku


Modified: trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog   
2007-11-01 16:48:28 UTC (rev 3323)
+++ trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog   
2007-11-01 17:09:18 UTC (rev 3324)
@@ -1,3 +1,16 @@
+2007-11-01  Ross Burton  <[EMAIL PROTECTED]>
+
+       * .:
+       Update lock down svn:externals to revisions.
+
+       * src/:
+       Remove inotify externals, its in libtaku now.
+       
+       * configure.ac:
+       * src/Makefile.am:
+       * src/today-launcher.c:
+       Update for those changes.
+
 2007-10-26  Chris Lord  <[EMAIL PROTECTED]>
 
        * src/today-task-manager.c: (today_task_manager_raise_clicked_cb):

Modified: trunk/src/target/OM-2007.2/applications/openmoko-today2/configure.ac
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-today2/configure.ac        
2007-11-01 16:48:28 UTC (rev 3323)
+++ trunk/src/target/OM-2007.2/applications/openmoko-today2/configure.ac        
2007-11-01 17:09:18 UTC (rev 3324)
@@ -26,6 +26,9 @@
 
 AC_CHECK_HEADERS([sys/inotify.h], inotify_support=yes, inotify_support=no)
 AM_CONDITIONAL(HAVE_INOTIFY, [test "$inotify_support" = "yes"])
+if test x$inotify_support = xyes; then
+        AC_DEFINE(WITH_INOTIFY, [1], [If inotify is enabled])
+fi
 
 PKG_CHECK_MODULES(SEXY, libsexy,
                   [enable_sexy=yes


Property changes on: trunk/src/target/OM-2007.2/applications/openmoko-today2/src
___________________________________________________________________
Name: svn:externals
   - inotify 
http://svn.o-hand.com/repos/matchbox/trunk/matchbox-desktop-2/src/inotify


Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-today2/src/Makefile.am
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-today2/src/Makefile.am     
2007-11-01 16:48:28 UTC (rev 3323)
+++ trunk/src/target/OM-2007.2/applications/openmoko-today2/src/Makefile.am     
2007-11-01 17:09:18 UTC (rev 3324)
@@ -34,17 +34,7 @@
 
 # Optional inotify support
 if HAVE_INOTIFY
-AM_CPPFLAGS += -DWITH_INOTIFY
-openmoko_today_LDADD += libinotify.a
-
-noinst_LIBRARIES = libinotify.a
-libinotify_a_SOURCES = \
-       inotify/inotify-kernel.c inotify/inotify-kernel.h \
-       inotify/inotify-sub.c   inotify/inotify-sub.h \
-       inotify/inotify-path.c inotify/inotify-path.h \
-       inotify/inotify-missing.c inotify/inotify-missing.h \
-       inotify/inotify-diag.c inotify/inotify-diag.h \
-       inotify/local_inotify.h inotify/local_inotify_syscalls.h
+openmoko_today_LDADD += $(top_builddir)/libtaku/libinotify.a
 endif
 
 MAINTAINERCLEANFILES  = config.h.in Makefile.in

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-launcher.c
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-launcher.c    
    2007-11-01 16:48:28 UTC (rev 3323)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-launcher.c    
    2007-11-01 17:09:18 UTC (rev 3324)
@@ -16,8 +16,8 @@
 
 /* inotify support derived/copied from code in matchbox-desktop-2 */
 #if WITH_INOTIFY
-#include "inotify/inotify-path.h"
-#include "inotify/local_inotify.h"
+#include "libtaku/inotify/inotify-path.h"
+#include "libtaku/inotify/local_inotify.h"
 
 static gboolean with_inotify;
 G_LOCK_DEFINE(inotify_lock);




--- End Message ---
--- Begin Message ---
Author: thomas
Date: 2007-11-01 18:09:23 +0100 (Thu, 01 Nov 2007)
New Revision: 3325

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
   
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/dialer-main.c
Log:
* src/dialer/dialer-main.c: (dial_clicked_cb), (main):
 - Notify user if there was a problem connecting to dbus
 - Switch to history page if dial activated with no number entered
 - Clean up code


Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog  
2007-11-01 17:09:18 UTC (rev 3324)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog  
2007-11-01 17:09:23 UTC (rev 3325)
@@ -1,5 +1,12 @@
 2007-11-01  Thomas Wood  <[EMAIL PROTECTED]>
 
+       * src/dialer/dialer-main.c: (dial_clicked_cb), (main):
+        - Notify user if there was a problem connecting to dbus
+        - Switch to history page if dial activated with no number entered
+        - Clean up code
+
+2007-11-01  Thomas Wood  <[EMAIL PROTECTED]>
+
        * src/phone-kit/moko-dialer.c: (moko_dialer_class_init),
        (dialer_display_error), (moko_dialer_init): Reimplement dial out 
function
 

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/dialer-main.c
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/dialer-main.c
   2007-11-01 17:09:18 UTC (rev 3324)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/dialer-main.c
   2007-11-01 17:09:23 UTC (rev 3325)
@@ -22,41 +22,42 @@
 
 #include <moko-stock.h>
 
-// #include "moko-dialer.h"
 #include "moko-keypad.h"
 #include "moko-history.h"
 
+typedef struct
+{
+  GtkWidget *notebook;
+  GtkWidget *history;
+
+  DBusGProxy *dialer_proxy;
+} DialerData;
+
 static gboolean show_missed;
 
 static GOptionEntry entries[] = {
-
   {"show-missed", 'm', 0, G_OPTION_ARG_NONE, &show_missed,
    "Show the history window filtered by the missed, none.", "N"},
-
   {NULL}
 };
 
 /* Callbacks from widgets */
 
 static void
-on_keypad_dial_clicked (MokoKeypad  *keypad,
-                        const gchar *number,
-                        DBusGProxy  *proxy)
+dial_clicked_cb (GtkWidget *widget, const gchar *number, DialerData *data)
 {
   GError *error = NULL;
 
   if (!number)
   {
-    /*
-    gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook), 1);
-    moko_history_set_filter (MOKO_HISTORY (priv->history), 
HISTORY_FILTER_DIALED);
-    */
+    gtk_notebook_set_current_page (GTK_NOTEBOOK (data->notebook), 1);
+    moko_history_set_filter (MOKO_HISTORY (data->history), 
HISTORY_FILTER_DIALED);
     return;
   }
 
   g_debug ("Dial %s", number);
 
-  dbus_g_proxy_call (proxy, "Dial", &error, G_TYPE_STRING, number, 
G_TYPE_INVALID, G_TYPE_INVALID);
+  dbus_g_proxy_call (data->dialer_proxy, "Dial", &error, G_TYPE_STRING, 
number, G_TYPE_INVALID, G_TYPE_INVALID);
 
   if (error)
   {
@@ -69,19 +70,17 @@
   }
 }
 
-static void
-on_history_dial_number (MokoHistory *history,
-                        const gchar *number,
-                        DBusGProxy  *proxy)
-{
-  on_keypad_dial_clicked (NULL, number, proxy);
-}
-
 int main (int argc, char **argv)
 {
-  GtkWidget *window, *notebook, *keypad, *history;
+  GtkWidget *window, *keypad;
   MokoJournal *journal;
+  DBusGConnection *connection;
+  GError *error = NULL;
+  DBusGProxy *proxy;
+  DialerData *data;
 
+  data = g_new0 (DialerData, 1);
+
   if (argc != 1)
   {
     /* Add init code. */
@@ -95,31 +94,28 @@
     g_option_context_free (context);
   }
 
-
   /* Initialize Threading & GTK+ */
   gtk_init (&argc, &argv);
   moko_stock_register ();
 
-
-  DBusGConnection *connection;
-  GError *error;
-  DBusGProxy *proxy;
-
-  g_type_init ();
-
-  error = NULL;
   connection = dbus_g_bus_get (DBUS_BUS_SESSION,
                                &error);
   if (connection == NULL)
-    {
-      g_printerr ("Failed to open connection to bus: %s\n",
-                  error->message);
-      g_error_free (error);
-      exit (1);
-    }
+  {
+    GtkWidget *dlg;
 
-  proxy = dbus_g_proxy_new_for_name (connection, "org.openmoko.Dialer", 
"/org/openmoko/Dialer", "org.openmoko.Dialer");
+    dlg = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
+        "Failed to open connection to bus: %s", error->message);
+    gtk_dialog_run (GTK_DIALOG (dlg));
+    gtk_widget_destroy (dlg);
 
+    g_error_free (error);
+    exit (1);
+  }
+
+  data->dialer_proxy = dbus_g_proxy_new_for_name (connection, 
"org.openmoko.Dialer",
+      "/org/openmoko/Dialer", "org.openmoko.Dialer");
+
    /* application object */
   g_set_application_name ("OpenMoko Dialer");
 
@@ -131,42 +127,42 @@
     journal = NULL;
   }
 
-
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  g_signal_connect (G_OBJECT (window), "delete-event",
-                    (GCallback) gtk_widget_hide_on_delete, NULL);
+  g_signal_connect (window, "delete-event", G_CALLBACK (gtk_main_quit), NULL);
   gtk_window_set_title (GTK_WINDOW (window), "Dialer");
 
   /* Notebook */
-  notebook = gtk_notebook_new ();
-  gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_BOTTOM);
-  gtk_container_add (GTK_CONTAINER (window), notebook);
+  data->notebook = gtk_notebook_new ();
+  gtk_notebook_set_tab_pos (GTK_NOTEBOOK (data->notebook), GTK_POS_BOTTOM);
+  gtk_container_add (GTK_CONTAINER (window), data->notebook);
 
 
   /* Keypad */
   keypad = moko_keypad_new ();
-  g_signal_connect (keypad, "dial_number", G_CALLBACK 
(on_keypad_dial_clicked), proxy);
+  g_signal_connect (keypad, "dial_number", G_CALLBACK (dial_clicked_cb), data);
 
-  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), keypad, 
gtk_image_new_from_file (PKGDATADIR"/dtmf.png"));
-  gtk_container_child_set (GTK_CONTAINER (notebook), keypad, "tab-expand", 
TRUE, NULL);
+  gtk_notebook_append_page (GTK_NOTEBOOK (data->notebook), keypad, 
gtk_image_new_from_file (PKGDATADIR"/dtmf.png"));
+  gtk_container_child_set (GTK_CONTAINER (data->notebook), keypad, 
"tab-expand", TRUE, NULL);
 
   /* History */
-  history = moko_history_new (journal);
-  g_signal_connect (history, "dial_number", G_CALLBACK 
(on_history_dial_number), proxy);
-  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), history,
+  data->history = moko_history_new (journal);
+  g_signal_connect (data->history, "dial_number", G_CALLBACK 
(dial_clicked_cb), data);
+  gtk_notebook_append_page (GTK_NOTEBOOK (data->notebook), data->history,
                             gtk_image_new_from_stock (MOKO_STOCK_CALL_HISTORY,
                                                       GTK_ICON_SIZE_BUTTON));
-  gtk_container_child_set (GTK_CONTAINER (notebook), history,
+  gtk_container_child_set (GTK_CONTAINER (data->notebook), data->history,
                            "tab-expand", TRUE,
                            NULL);
 
   gtk_widget_show_all (window);
+
   if (show_missed)
-    gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 1);
+    gtk_notebook_set_current_page (GTK_NOTEBOOK (data->notebook), 1);
   else
-    gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0);
+    gtk_notebook_set_current_page (GTK_NOTEBOOK (data->notebook), 0);
 
   gtk_main ();
 
+  g_free (data);
   return 0;
 }




--- End Message ---
--- Begin Message ---
Author: chris
Date: 2007-11-01 19:35:44 +0100 (Thu, 01 Nov 2007)
New Revision: 3326

Added:
   
trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/data/openmoko-worldclock.desktop
Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/data/Makefile.am
   
trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/src/worldclock-main.c
Log:
        * src/worldclock-main.c: (set_time), (close_clicked_cb),
        (tzset_clicked_cb), (clock_idle), (remove_clock_idle_notify),
        (map_enter_notify_cb), (map_leave_notify_cb),
        (map_button_release_event_cb), (main):
        Add setting of timezone, clicking on cities, showing sunrise/sunset
        info, showing of times in other cities, etc.

        Add .desktop file also


Modified: trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/ChangeLog      
2007-11-01 17:09:23 UTC (rev 3325)
+++ trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/ChangeLog      
2007-11-01 18:35:44 UTC (rev 3326)
@@ -1,5 +1,14 @@
 2007-11-01  Chris Lord  <[EMAIL PROTECTED]>
 
+       * src/worldclock-main.c: (set_time), (close_clicked_cb),
+       (tzset_clicked_cb), (clock_idle), (remove_clock_idle_notify),
+       (map_enter_notify_cb), (map_leave_notify_cb),
+       (map_button_release_event_cb), (main):
+       Add setting of timezone, clicking on cities, showing sunrise/sunset
+       info, showing of times in other cities, etc.
+
+2007-11-01  Chris Lord  <[EMAIL PROTECTED]>
+
        * src/worldclock-main.c: (map_button_press_event_cb), (main):
        Use a static map and add code to find the nearest timezone to where the
        user clicks

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/data/Makefile.am
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/data/Makefile.am   
    2007-11-01 17:09:23 UTC (rev 3325)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/data/Makefile.am   
    2007-11-01 18:35:44 UTC (rev 3326)
@@ -1,3 +1,7 @@
+
+desktopdir = $(datadir)/applications
+desktop_DATA = openmoko-worldclock.desktop
+
 resdir = $(pkgdatadir)
 res_DATA = 
 

Added: 
trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/data/openmoko-worldclock.desktop
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/data/openmoko-worldclock.desktop
       2007-11-01 17:09:23 UTC (rev 3325)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/data/openmoko-worldclock.desktop
       2007-11-01 18:35:44 UTC (rev 3326)
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=World Clock
+Comment=See the time across the world
+Exec=openmoko-worldclock
+Icon=openmoko-worldclock
+Terminal=false
+Type=Application
+Categories=GTK;Utility;
+SingleInstance=true
+StartupNotify=true

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/src/worldclock-main.c
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/src/worldclock-main.c
  2007-11-01 17:09:23 UTC (rev 3325)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/src/worldclock-main.c
  2007-11-01 18:35:44 UTC (rev 3326)
@@ -30,8 +30,6 @@
 #define GCONF_POKY_INTERFACE_PREFIX "/desktop/poky/interface"
 #define GCONF_POKY_DIGITAL "/digital_clock"
 
-static gchar *location;
-
 typedef struct {
        GtkWidget *window;
        GtkWidget *map;
@@ -44,6 +42,8 @@
        
        gchar *location;
        gdouble zoom_level;
+       
+       gboolean map_entered;
 } WorldClockData;
 
 static inline GtkToolItem *
@@ -191,11 +191,14 @@
 static gboolean
 set_time (GtkWidget *map)
 {
+       gchar *location;
        JanaTime *time;
 
+       location = jana_ecal_utils_guess_location ();
        time = jana_ecal_utils_time_now (location);
        jana_gtk_world_map_set_time (JANA_GTK_WORLD_MAP (map), time);
        g_object_unref (time);
+       g_free (location);
 
        return TRUE;
 }
@@ -265,14 +268,65 @@
        }
 }
 
+static void
+close_clicked_cb (GtkButton *button)
+{
+       GtkWidget *window = gtk_widget_get_toplevel (GTK_WIDGET (button));
+       gtk_widget_destroy (window);
+}
+
+static void
+tzset_clicked_cb (GtkButton *button, WorldClockZoneData *data)
+{
+       gconf_client_set_string (gconf_client_get_default (),
+               JANA_ECAL_LOCATION_KEY, data->tzname, NULL);
+       close_clicked_cb (button);
+}
+
 static gboolean
-map_button_press_event_cb (JanaGtkWorldMap *map, GdkEventButton *event,
+clock_idle (JanaGtkClock *clock)
+{
+       JanaTime *time = jana_gtk_clock_get_time (clock);
+       
+       jana_time_set_seconds (time, jana_time_get_seconds (time) + 1);
+       jana_gtk_clock_set_time (clock, time);
+       g_object_unref (time);
+       
+       return TRUE;
+}
+
+static void
+remove_clock_idle_notify (gpointer data, GObject *clock)
+{
+       g_source_remove_by_user_data (clock);
+}
+
+static gboolean
+map_enter_notify_cb (GtkWidget *widget, GdkEventCrossing *event,
+                    WorldClockData *data)
+{
+       data->map_entered = TRUE;
+       return FALSE;
+}
+
+static gboolean
+map_leave_notify_cb (GtkWidget *widget, GdkEventCrossing *event,
+                    WorldClockData *data)
+{
+       data->map_entered = FALSE;
+       return FALSE;
+}
+
+static gboolean
+map_button_release_event_cb (JanaGtkWorldMap *map, GdkEventButton *event,
                           WorldClockData *data)
 {
        GList *markers, *m;
        gdouble lat, lon, old_distance;
        JanaGtkWorldMapMarker *marker;
        
+       if (!data->map_entered) return FALSE;
+       
        jana_gtk_world_map_get_latlon (map, event->x, event->y, &lat, &lon);
        markers = jana_gtk_world_map_get_markers (map);
        
@@ -290,11 +344,152 @@
                        old_distance = distance;
                }
        }
-       
-       if (marker) {
+
+       /* FIXME: Seven is a completely arbitrary number.. */
+       if (marker && (old_distance < 7)) {
+               GtkWidget *window, *vbox, *hbox, *label, *clock, *button,
+                       *frame;
+               gchar *string, *image_name, *path;
+               gdouble daylight_hours;
+               JanaTime *time;
+               
                WorldClockZoneData *tzdata = (WorldClockZoneData *)
                        g_object_get_data (G_OBJECT (marker), "zone");
-               g_debug ("Nearest location: %s", tzdata->name);
+               
+               /* Create window, set parent and set undecorated */
+               window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+               gtk_window_set_transient_for (GTK_WINDOW (window),
+                       GTK_WINDOW (data->window));
+               gtk_window_set_decorated (GTK_WINDOW (window), FALSE);
+               gtk_window_set_modal (GTK_WINDOW (window), TRUE);
+               gtk_window_set_type_hint (GTK_WINDOW (window),
+                       GDK_WINDOW_TYPE_HINT_DIALOG);
+               gtk_window_set_position (GTK_WINDOW (window),
+                       GTK_WIN_POS_CENTER_ON_PARENT);
+               
+               /* Create border for undecorated window */
+               frame = gtk_frame_new (NULL);
+               gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
+
+               /* Create contents */
+               vbox = gtk_vbox_new (FALSE, 6);
+               gtk_container_set_border_width (GTK_CONTAINER (vbox), 12);
+               
+               /* Header label */
+               label = gtk_label_new (NULL);
+               gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
+               string = g_strconcat ("<big><b>", tzdata->name,
+                       "</b></big>", NULL);
+               gtk_label_set_markup (GTK_LABEL (label), string);
+               g_free (string);
+               gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
+               
+               /* Possible image */
+               image_name = g_strdelimit (g_utf8_strdown (
+                       tzdata->country, -1), " '", '_');
+               path = g_strconcat (PKGDATADIR G_DIR_SEPARATOR_S,
+                       image_name, ".svg", NULL);
+               g_free (image_name);
+               if (g_file_test (path, G_FILE_TEST_EXISTS)) {
+                       GtkWidget *image = gtk_image_new_from_file (path);
+                       gtk_box_pack_start (GTK_BOX (vbox),
+                               image, FALSE, TRUE, 0);
+               }
+               g_free (path);
+               
+               /* Clock */
+               clock = jana_gtk_clock_new ();
+               /* Note, we use this time below, so don't unref here */
+               time = jana_ecal_utils_time_now (tzdata->tzname);
+               jana_gtk_clock_set_time (JANA_GTK_CLOCK (clock), time);
+               jana_gtk_clock_set_digital (JANA_GTK_CLOCK (clock),
+                       gconf_client_get_bool (gconf_client_get_default (),
+                       GCONF_POKY_INTERFACE_PREFIX GCONF_POKY_DIGITAL, NULL));
+               jana_gtk_clock_set_show_seconds (JANA_GTK_CLOCK (clock), TRUE);
+#if GLIB_CHECK_VERSION(2,14,0)
+               g_timeout_add_seconds (1, (GSourceFunc)clock_idle, clock);
+#else
+               g_timeout_add (1000, (GSourceFunc)clock_idle, clock);
+#endif
+               g_object_weak_ref (G_OBJECT (clock), remove_clock_idle_notify,
+                       NULL);
+               gtk_widget_set_size_request (clock,
+                       (data->window->allocation.width * 2)/3,
+                       (data->window->allocation.width * 2)/6);
+               gtk_box_pack_start (GTK_BOX (vbox), clock, FALSE, TRUE, 0);
+               
+               /* Country label */
+               hbox = gtk_hbox_new (FALSE, 6);
+               label = gtk_label_new (NULL);
+               gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
+               gtk_label_set_markup (GTK_LABEL (label), "<b>Country:</b>");
+               gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);
+               label = gtk_label_new (tzdata->country);
+               gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+               gtk_box_pack_end (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+               gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);
+               
+               daylight_hours = jana_utils_time_daylight_hours (
+                       tzdata->lat, jana_utils_time_day_of_year (time));
+               
+               /* Sunrise label */
+               hbox = gtk_hbox_new (FALSE, 6);
+               label = gtk_label_new (NULL);
+               gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
+               gtk_label_set_markup (GTK_LABEL (label), "<b>Sunrise:</b>");
+               gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);
+               jana_time_set_hours (time, (gint)(12.0-daylight_hours/2.0));
+               jana_time_set_minutes (time, (gint)
+                       ((12.0-daylight_hours/2.0)*60.0)%60);
+               string = g_strdup_printf ("%d:%02d",
+                       jana_time_get_hours (time),
+                       jana_time_get_minutes (time));
+               label = gtk_label_new (string);
+               g_free (string);
+               gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+               gtk_box_pack_end (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+               gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);
+
+               /* Sunset label */
+               hbox = gtk_hbox_new (FALSE, 6);
+               label = gtk_label_new (NULL);
+               gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
+               gtk_label_set_markup (GTK_LABEL (label), "<b>Sunset:</b>");
+               gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);
+               jana_time_set_hours (time, (gint)(12.0+daylight_hours/2.0));
+               jana_time_set_minutes (time, (gint)
+                       ((12.0+daylight_hours/2.0)*60.0)%60);
+               string = g_strdup_printf ("%d:%02d",
+                       jana_time_get_hours (time),
+                       jana_time_get_minutes (time));
+               label = gtk_label_new (string);
+               g_free (string);
+               gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+               gtk_box_pack_end (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+               gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);
+               
+               /* Unref the time created earlier */
+               g_object_unref (time);
+               
+               /* Set/close buttons */
+               hbox = gtk_hbox_new (FALSE, 0);
+               button = gtk_button_new_from_stock (GTK_STOCK_HOME);
+               g_signal_connect (button, "clicked",
+                       G_CALLBACK (tzset_clicked_cb), tzdata);
+               gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
+               button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
+               g_signal_connect (button, "clicked",
+                       G_CALLBACK (close_clicked_cb), NULL);
+               gtk_box_pack_end (GTK_BOX (hbox), button, TRUE, TRUE, 0);
+               gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);
+               
+               /* Pack and show widgets */
+               gtk_container_add (GTK_CONTAINER (window), frame);
+               gtk_container_add (GTK_CONTAINER (frame), vbox);
+               gtk_widget_show_all (window);
+               
+               /* Display window */
+               gtk_widget_show (window);
        }
        
        g_list_free (markers);
@@ -350,9 +545,14 @@
        jana_gtk_world_map_set_height (JANA_GTK_WORLD_MAP (data.map), 1024);
        jana_gtk_world_map_set_static (JANA_GTK_WORLD_MAP (data.map), TRUE);
        add_marks (&data);
-       gtk_widget_add_events (GTK_WIDGET (data.map), GDK_BUTTON_PRESS_MASK);
-       g_signal_connect (data.map, "button-press-event",
-               G_CALLBACK (map_button_press_event_cb), NULL);
+       gtk_widget_add_events (GTK_WIDGET (data.map),
+               GDK_BUTTON_RELEASE_MASK);
+       g_signal_connect (data.map, "enter-notify-event",
+               G_CALLBACK (map_enter_notify_cb), &data);
+       g_signal_connect (data.map, "leave-notify-event",
+               G_CALLBACK (map_leave_notify_cb), &data);
+       g_signal_connect (data.map, "button-release-event",
+               G_CALLBACK (map_button_release_event_cb), &data);
        
        data.map_aspect = gtk_aspect_frame_new (NULL, 0.5, 0.5, 2.0, FALSE);
        gtk_frame_set_shadow_type (GTK_FRAME (
@@ -407,7 +607,6 @@
 #endif
        gtk_window_set_default_size (GTK_WINDOW (data.window), 480, 600);
 
-       location = jana_ecal_utils_guess_location ();
        id = g_timeout_add (1000 * 60 * 10, (GSourceFunc)set_time, data.map);
        set_time (data.map);
        
@@ -418,7 +617,6 @@
        gtk_main ();
        
        g_source_remove (id);
-       g_free (location);
 
        return 0;
 }




--- End Message ---
_______________________________________________
commitlog mailing list
[email protected]
http://lists.openmoko.org/mailman/listinfo/commitlog

Reply via email to