summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar si <snaunton@gmail.com>2018-04-13 18:51:34 +1000
committerGravatar Patrick Griffis <tingping@tingping.se>2018-04-13 05:10:30 -0400
commit63f113b776d5c8152813aace78859e61ae14a587 (patch)
tree11c76bd6334628262a713354c62c29134c4c7255
parent8364ef2abc4715bf320d431554811d153be3e053 (diff)
Add alt-days to remote preferences
Closes #67
-rw-r--r--configure.ac14
-rw-r--r--src/trg-remote-prefs-dialog.c61
2 files changed, 75 insertions, 0 deletions
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 <glib/gi18n.h>
#include <gtk/gtk.h>
#include <json-glib/json-glib.h>
+#ifdef ENABLE_NL_LANGINFO
+#include <langinfo.h>
+#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);