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