*
* Copyright (C) 2005, 2006 Nokia Corporation, all rights reserved.
*
- * Contact: Michael Dominic Kostrzewa <michael.kostrzewa@nokia.com>
+ * Contact: Rodrigo Novo <rodrigo.novo@nokia.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* minutes and seconds, and pm/am indicator as well as a button which
* popups a #HildonTimePicker dialog.
*
+ * <note>
+ * <para>
+ * #HildonTimeEditor has been deprecated since Hildon 2.2 and should not
+ * be used in newly written code. Use #HildonTimeSelector instead.
+ * </para>
+ * </note>
+ *
* <example>
* <title>HildonTimePicker example</title>
* <programlisting>
*
*/
+#undef HILDON_DISABLE_DEPRECATED
+
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-#include "hildon-time-editor.h"
-#include <gtk/gtkhbox.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkframe.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtkenums.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include <langinfo.h>
#include <libintl.h>
+#include <gdk/gdkkeysyms.h>
+
+#include "hildon-time-editor.h"
#include "hildon-defines.h"
#include "hildon-time-picker.h"
#include "hildon-banner.h"
#define ICON_PRESSED 4
-#define ICON_NAME "qgn_widg_timedit"
+#define ICON_NAME "widgets_time_editor"
#define ICON_SIZE "timepicker-size"
GtkAllocation *allocation);
static gboolean
+hildon_time_editor_focus (GtkWidget *widget,
+ GtkDirectionType direction);
+
+static gboolean
hildon_time_editor_entry_keypress (GtkEntry *entry,
GdkEventKey* event,
gpointer user_data);
*
* Initializes and returns the type of a hildon time editor.
*
- * @Returns: GType of #HildonTimeEditor
+ * Returns: GType of #HildonTimeEditor
*/
GType G_GNUC_CONST
hildon_time_editor_get_type (void)
object_class->set_property = hildon_time_editor_set_property;
widget_class->size_request = hildon_time_editor_size_request;
widget_class->size_allocate = hildon_time_editor_size_allocate;
-#ifdef MAEMO_GTK
- widget_class->tap_and_hold_setup = hildon_time_editor_tap_and_hold_setup;
-#endif
- widget_class->focus = hildon_private_composite_focus;
+ widget_class->focus = hildon_time_editor_focus;
container_class->forall = hildon_time_editor_forall;
GTK_OBJECT_CLASS (editor_class)->destroy = hildon_time_editor_destroy;
hildon_time_editor_set_to_current_time (editor);
gtk_widget_pop_composite_child ();
+
+#ifdef MAEMO_GTK
+ g_signal_connect (editor, "tap-and-hold-setup",
+ G_CALLBACK (hildon_time_editor_tap_and_hold_setup),
+ NULL);
+#endif
+
}
static void
}
}
-/*
+/**
* hildon_time_editor_new:
*
* This function creates a new time editor.
g_date_set_dmy (&locale_test_date, 1, 2, 1970);
(void) g_date_strftime (buffer, sizeof (buffer), "%X", &locale_test_date);
+ /* Find h-m separator */
+ iter = buffer;
+ while (*iter && g_ascii_isdigit (*iter)) iter++;
+ /* Extract h-m separator*/
+ endp = iter;
+ while (*endp && ! g_ascii_isdigit (*endp)) endp++;
+
if (hm_sep_label != NULL)
{
- /* Find h-m separator */
- iter = buffer;
- while (*iter && g_ascii_isdigit (*iter)) iter++;
-
- /* Extract h-m separator*/
- endp = iter;
- while (*endp && ! g_ascii_isdigit (*endp)) endp++;
separator = g_strndup (iter, endp - iter);
gtk_label_set_label (hm_sep_label, separator);
g_free (separator);
guint *minutes,
guint *seconds)
{
- HildonTimeEditorPrivate *priv;
-
g_return_if_fail (HILDON_IS_TIME_EDITOR (editor));
- priv = HILDON_TIME_EDITOR_GET_PRIVATE (editor);
- g_assert (priv);
-
ticks_to_time (hildon_time_editor_get_ticks (editor), hours, minutes, seconds);
}
HildonTimeEditorPrivate *priv = HILDON_TIME_EDITOR_GET_PRIVATE (widget);
GtkAllocation alloc;
GtkRequisition req, max_req;
+ gboolean rtl;
g_assert (priv);
+ rtl = (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL);
widget->allocation = *allocation;
gtk_widget_get_child_requisition (widget, &max_req);
alloc.y = allocation->y + MAX (allocation->height - max_req.height, 0) / 2;
/* allocate frame */
- gtk_widget_get_child_requisition (priv->frame, &req);
+ if (rtl)
+ gtk_widget_get_child_requisition (priv->iconbutton, &req);
+ else
+ gtk_widget_get_child_requisition (priv->frame, &req);
alloc.width = req.width;
alloc.height = max_req.height;
- gtk_widget_size_allocate (priv->frame, &alloc);
+ if (rtl)
+ gtk_widget_size_allocate (priv->iconbutton, &alloc);
+ else
+ gtk_widget_size_allocate (priv->frame, &alloc);
/* allocate icon */
if (GTK_WIDGET_VISIBLE (priv->iconbutton)) {
- gtk_widget_get_child_requisition (priv->iconbutton, &req);
+ if (rtl)
+ gtk_widget_get_child_requisition (priv->frame, &req);
+ else
+ gtk_widget_get_child_requisition (priv->iconbutton, &req);
alloc.x += alloc.width + HILDON_MARGIN_DEFAULT;
alloc.width = req.width;
- gtk_widget_size_allocate (priv->iconbutton, &alloc);
+
+ if (rtl)
+ gtk_widget_size_allocate (priv->frame, &alloc);
+ else
+ gtk_widget_size_allocate (priv->iconbutton, &alloc);
}
/* FIXME: ugly way to move labels up. They just don't seem move up
}
static gboolean
+hildon_time_editor_focus (GtkWidget *widget,
+ GtkDirectionType direction)
+{
+ gboolean retval;
+ GtkDirectionType effective_direction;
+
+ g_assert (HILDON_IS_TIME_EDITOR (widget));
+
+ retval = hildon_private_composite_focus (widget, direction, &effective_direction);
+
+ if (retval == TRUE)
+ return GTK_WIDGET_CLASS (parent_class)->focus (widget, effective_direction);
+ else
+ return FALSE;
+}
+
+static gboolean
hildon_time_editor_entry_keypress (GtkEntry *entry,
GdkEventKey *event,
gpointer data)
{
case GDK_Return:
case GDK_ISO_Enter:
- hildon_time_editor_icon_clicked (entry, data);
+ hildon_time_editor_icon_clicked (GTK_WIDGET (entry), data);
return TRUE;
default:
return FALSE;