[drwright] Store break interval and work interval in seconds
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [drwright] Store break interval and work interval in seconds
- Date: Mon, 7 Feb 2011 20:14:47 +0000 (UTC)
commit 644d6776678e294f01b3d910f0b75a3329439d75
Author: Christian Persch <chpe gnome org>
Date: Mon Feb 7 21:10:17 2011 +0100
Store break interval and work interval in seconds
Unfortunately, that means that migration from gconf doesn't work,
so don't install the conversion file.
Bug #627194.
src/Makefile.am | 4 +-
src/drw-break-window.c | 2 +-
src/drw-cc-panel.c | 79 +++++++++++++++++++-
src/drwright-panel.glade | 62 +---------------
src/drwright.c | 4 +-
...ings-daemon.plugins.typing-break.gschema.xml.in | 10 +-
6 files changed, 90 insertions(+), 71 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 496cec7..d3deb59 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -136,8 +136,8 @@ desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
gsettings_schemas_in_files = org.gnome.settings-daemon.plugins.typing-break.gschema.xml.in
gsettings_SCHEMAS = $(gsettings_schemas_in_files:.gschema.xml.in=.gschema.xml)
-gsettings_convertdir = $(datadir)/GConf/gsettings
-dist_gsettings_convert_DATA = drwright.convert
+# gsettings_convertdir = $(datadir)/GConf/gsettings
+# dist_gsettings_convert_DATA = drwright.convert
@GSETTINGS_RULES@
@INTLTOOL_XML_NOMERGE_RULE@
diff --git a/src/drw-break-window.c b/src/drw-break-window.c
index b0a89a6..97aae70 100644
--- a/src/drw-break-window.c
+++ b/src/drw-break-window.c
@@ -131,7 +131,7 @@ drw_break_window_init (DrwBreakWindow *window)
priv->settings = g_settings_new (DRW_SETTINGS_SCHEMA_ID);
- priv->break_time = 60 * g_settings_get_int (priv->settings, "break-time");
+ priv->break_time = g_settings_get_int (priv->settings, "break-time");
allow_postpone = g_settings_get_boolean (priv->settings, "allow-postpone");
diff --git a/src/drw-cc-panel.c b/src/drw-cc-panel.c
index 7c63f50..9e20575 100644
--- a/src/drw-cc-panel.c
+++ b/src/drw-cc-panel.c
@@ -22,6 +22,9 @@
#include <config.h>
+#include <errno.h>
+#include <string.h>
+
#include "drw-cc-panel.h"
#define DRW_SETTINGS_SCHEMA_ID "org.gnome.settings-daemon.plugins.typing-break"
@@ -37,6 +40,64 @@ struct _DrwCcPanelPrivate
};
#endif
+static int
+spinbutton_input_cb (GtkWidget *button,
+ gpointer *ret,
+ gpointer user_data)
+{
+ const char *text;
+ char *end;
+ gint64 value, v;
+
+ text = gtk_entry_get_text (GTK_ENTRY (button));
+
+ value = 0;
+ do {
+ value *= 60;
+
+ errno = 0;
+ end = NULL;
+ v = strtoll (text, &end, 10);
+ if (errno ||
+ !end || (*end != '\0' && *end != ':') ||
+ v < 0 || v >= 60) {
+ return GTK_INPUT_ERROR;
+ }
+
+ value += v;
+ text = strchr (text, ':');
+ if (text)
+ text++;
+ } while (text);
+
+ * (gdouble *) ret = value;
+ return TRUE;
+}
+
+static gboolean
+spinbutton_output_cb (GtkSpinButton *button,
+ gpointer user_data)
+{
+ char buf[64];
+ int value;
+ int h, m, s;
+
+ value = (int) (gtk_spin_button_get_value (button) + .5);
+
+ h = value / 3600;
+ value %= 3600;
+ m = value / 60;
+ s = value % 60;
+
+ if (h > 0)
+ g_snprintf (buf, sizeof (buf), "%u:%02u:%02u", h, m, s);
+ else
+ g_snprintf (buf, sizeof (buf), "%u:%02u", m, s);
+
+ gtk_entry_set_text (GTK_ENTRY (button), buf);
+ return TRUE;
+}
+
static void
drw_cc_panel_get_property (GObject *object,
guint property_id,
@@ -126,12 +187,26 @@ drw_cc_panel_init (DrwCcPanel *self)
gtk_builder_get_object (builder, "inner-box"),
"sensitive",
G_SETTINGS_BIND_GET);
+ widget = (GtkWidget *) gtk_builder_get_object (builder, "work-interval-spinbutton");
+ gtk_entry_set_width_chars (GTK_ENTRY (widget), 8);
+ gtk_entry_set_alignment (GTK_ENTRY (widget), 1.0);
+ g_signal_connect (widget, "input",
+ G_CALLBACK (spinbutton_input_cb), NULL);
+ g_signal_connect (widget, "output",
+ G_CALLBACK (spinbutton_output_cb), NULL);
g_settings_bind (settings, "type-time",
- gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "work-interval-spinbutton"))),
+ gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget)),
"value",
G_SETTINGS_BIND_DEFAULT);
+ widget = (GtkWidget *) gtk_builder_get_object (builder, "break-interval-spinbutton");
+ gtk_entry_set_width_chars (GTK_ENTRY (widget), 8);
+ gtk_entry_set_alignment (GTK_ENTRY (widget), 1.0);
+ g_signal_connect (widget, "input",
+ G_CALLBACK (spinbutton_input_cb), NULL);
+ g_signal_connect (widget, "output",
+ G_CALLBACK (spinbutton_output_cb), NULL);
g_settings_bind (settings, "break-time",
- gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "break-interval-spinbutton"))),
+ gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget)),
"value",
G_SETTINGS_BIND_DEFAULT);
g_settings_bind (settings, "allow-postpone",
diff --git a/src/drwright-panel.glade b/src/drwright-panel.glade
index 108452f..0758544 100644
--- a/src/drwright-panel.glade
+++ b/src/drwright-panel.glade
@@ -66,7 +66,7 @@
<widget class="GtkTable" id="table33">
<property name="visible">True</property>
<property name="n_rows">2</property>
- <property name="n_columns">3</property>
+ <property name="n_columns">2</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
@@ -101,62 +101,6 @@
</child>
<child>
- <widget class="GtkLabel" id="work-minutes-label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">minutes</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="break-minutes-label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">minutes</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
-
- <child>
<widget class="GtkLabel" id="work-interval-label">
<property name="visible">True</property>
<property name="label" translatable="yes">_Work interval lasts:</property>
@@ -195,7 +139,7 @@
<property name="update_policy">GTK_UPDATE_ALWAYS</property>
<property name="snap_to_ticks">False</property>
<property name="wrap">False</property>
- <property name="adjustment">60 5 120 1 5 5</property>
+ <property name="adjustment">3600 300 7200 60 300 0</property>
</widget>
<packing>
<property name="left_attach">1</property>
@@ -217,7 +161,7 @@
<property name="update_policy">GTK_UPDATE_ALWAYS</property>
<property name="snap_to_ticks">False</property>
<property name="wrap">False</property>
- <property name="adjustment">3 1 60 1 2 2</property>
+ <property name="adjustment">60 30 3600 10 30 0</property>
</widget>
<packing>
<property name="left_attach">1</property>
diff --git a/src/drwright.c b/src/drwright.c
index 89854d6..9074797 100644
--- a/src/drwright.c
+++ b/src/drwright.c
@@ -561,11 +561,11 @@ settings_change_cb (GSettings *settings,
dr->state = STATE_START;
if (!key || key == I_("type-time")) {
- dr->type_time = 60 * g_settings_get_int (settings, "type-time");
+ dr->type_time = g_settings_get_int (settings, "type-time");
dr->warn_time = MIN (dr->type_time / 10, WARN_TIME_MAX);
}
if (!key || key == I_("break-time")) {
- dr->break_time = 60 * g_settings_get_int (settings, "break-time");
+ dr->break_time = g_settings_get_int (settings, "break-time");
}
if (!key || key == I_("enabled")) {
GtkAction *action;
diff --git a/src/org.gnome.settings-daemon.plugins.typing-break.gschema.xml.in b/src/org.gnome.settings-daemon.plugins.typing-break.gschema.xml.in
index fac3a92..372d8d8 100644
--- a/src/org.gnome.settings-daemon.plugins.typing-break.gschema.xml.in
+++ b/src/org.gnome.settings-daemon.plugins.typing-break.gschema.xml.in
@@ -33,14 +33,14 @@
<_summary>Whether the typing break can be postponed</_summary>
</key>
<key name="type-time" type="i">
- <range min="5" max="120" />
- <default>60</default>
+ <range min="300" max="7200" />
+ <default>3600</default>
<_summary>Number of minutes of typing time before break mode starts</_summary>
</key>
<key name="break-time" type="i">
- <range min="1" max="60" />
- <default>3</default>
- <_summary>Number of minutes that the typing break should last</_summary>
+ <range min="30" max="3600" />
+ <default>180</default>
+ <_summary>Number of seconds that the typing break should last</_summary>
</key>
<key name="unlock-phrase" type="s">
<default>''</default>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]