From 63f113b776d5c8152813aace78859e61ae14a587 Mon Sep 17 00:00:00 2001 From: si Date: Fri, 13 Apr 2018 18:51:34 +1000 Subject: Add alt-days to remote preferences Closes #67 --- configure.ac | 14 ++++++++++ src/trg-remote-prefs-dialog.c | 61 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/configure.ac b/configure.ac index ce88266..8dda21d 100644 --- a/configure.ac +++ b/configure.ac @@ -139,6 +139,19 @@ AS_IF([test x$with_libappindicator != xno], [ ]) ]) +AC_ARG_ENABLE([nl_langinfo], + AC_HELP_STRING([--disable-nl_langinfo], [disable nl_langinfo (for day names)]), + [enable_nl_langinfo=no], + [enable_nl_langinfo=yes]) +AS_IF([test x$enable_nl_langinfo != xno], [ + AC_CHECK_FUNC(nl_langinfo,[ + enable_nl_langinfo=yes + AC_DEFINE(ENABLE_NL_LANGINFO, 1, [Define if nl_langinfo is available]) + AC_SUBST(ENABLE_NL_LANGINFO) + ], [ + AC_MSG_WARN([nl_langinfo not available]) + ]) +]) dnl ---- build flags ---- AX_APPEND_COMPILE_FLAGS([ \ @@ -201,4 +214,5 @@ echo " libmrss .......: $have_libmrss libproxy ......: $have_libproxy libappindicator: $have_libappindicator + nl_langinfo....: $enable_nl_langinfo " diff --git a/src/trg-remote-prefs-dialog.c b/src/trg-remote-prefs-dialog.c index 8149753..e524f53 100644 --- a/src/trg-remote-prefs-dialog.c +++ b/src/trg-remote-prefs-dialog.c @@ -26,6 +26,9 @@ #include #include #include +#ifdef ENABLE_NL_LANGINFO +#include +#endif #include "trg-main-window.h" #include "trg-remote-prefs-dialog.h" @@ -296,6 +299,60 @@ static GtkWidget *trg_rprefs_alt_speed_spin_new(GList ** wl, return w; } +static void +trg_rprefs_alt_days_savefunc(GtkWidget * grid, JsonObject * obj, + gchar * key) +{ + guint64 days = 0; + + for(gint i = 0, x = 1; i < 7; i++, x<<=1) { + GtkWidget *w = gtk_grid_get_child_at (GTK_GRID(grid), i, 0); + if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) + days += x; + } + + json_object_set_int_member(obj, key, days); +} + +static GtkWidget *trg_rprefs_alt_days(GList ** wl, + JsonObject * Obj, + const gchar * key, + GtkWidget *alt_time_check) +{ +#ifdef ENABLE_NL_LANGINFO + nl_item abdays[] = {ABDAY_1, ABDAY_2, ABDAY_3, ABDAY_4, ABDAY_5, ABDAY_6, ABDAY_7}; +#else + gchar *abdays[] = {_("Sun"), _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat")}; +#endif + GtkWidget *grid = gtk_grid_new(); + gtk_grid_set_column_homogeneous (GTK_GRID(grid), TRUE); + g_signal_connect(G_OBJECT(alt_time_check), "toggled", + G_CALLBACK(toggle_active_arg_is_sensitive), grid); + + guint64 days = json_object_get_int_member(Obj, key); + + for(gint i = 0, x = 1; i < 7; i++, x<<=1) { +#ifdef ENABLE_NL_LANGINFO + GtkWidget *w = gtk_check_button_new_with_label (nl_langinfo(abdays[i])); +#else + GtkWidget *w = gtk_check_button_new_with_label (abdays[i]); +#endif + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), (days & x) == x); + gtk_grid_attach(GTK_GRID(grid), w, i, 0, 1, 1); + } + + gtk_widget_set_sensitive(grid, + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(alt_time_check))); + + trg_json_widget_desc *wd = g_new0(trg_json_widget_desc, 1); + wd->key = g_strdup(key); + wd->widget = grid; + wd->saveFunc = trg_rprefs_alt_days_savefunc; + *wl = g_list_append(*wl, wd); + + return grid; +} + static GtkWidget *trg_rprefs_bandwidthPage(TrgRemotePrefsDialog * win, JsonObject * json) { @@ -338,6 +395,10 @@ static GtkWidget *trg_rprefs_bandwidthPage(TrgRemotePrefsDialog * win, w = trg_rprefs_time_begin_end_new(&priv->widgets, json, tb); hig_workarea_add_row_w(t, &row, tb, w, NULL); + w = trg_rprefs_alt_days(&priv->widgets, json, + SGET_ALT_SPEED_TIME_DAY, priv->alt_time_check); + hig_workarea_add_row(t, &row, _("Alternate days"), w, NULL); + w = trg_rprefs_alt_speed_spin_new(&priv->widgets, json, SGET_ALT_SPEED_DOWN, priv->alt_check, tb); -- cgit v1.2.3