Merge lp:~veselkovsd/homebank/ignore_week-end into lp:homebank/trunk

Proposed by Sergey Veselkov
Status: Needs review
Proposed branch: lp:~veselkovsd/homebank/ignore_week-end
Merge into: lp:homebank/trunk
Diff against target: 148 lines (+51/-19)
4 files modified
src/hb-archive.c (+22/-15)
src/ui-archive.c (+27/-3)
src/ui-archive.h (+1/-1)
src/ui-widgets-data.c (+1/-0)
To merge this branch: bzr merge lp:~veselkovsd/homebank/ignore_week-end
Reviewer Review Type Date Requested Status
Maxime DOYEN Pending
Review via email: mp+394919@code.launchpad.net

Commit message

add "ignore" week-end behavior

Description of the change

Add the ability to ignore weekends in scheduled transactions.

To post a comment you must log in.
69. By Sergey Veselkov

setting weekend behavior for week unit is not allowed

Unmerged revisions

69. By Sergey Veselkov

setting weekend behavior for week unit is not allowed

68. By Sergey Veselkov

add "ignore" week-end behavior

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/hb-archive.c'
2--- src/hb-archive.c 2020-09-06 09:50:00 +0000
3+++ src/hb-archive.c 2020-12-06 12:27:16 +0000
4@@ -348,6 +348,7 @@
5 static guint32 _sched_date_get_next_post(GDate *tmpdate, Archive *arc, guint32 nextdate)
6 {
7 guint32 nextpostdate = nextdate;
8+GDateWeekday wday;
9
10 //DB( g_print("\n[scheduled] date_get_next_post\n") );
11
12@@ -355,21 +356,27 @@
13
14 //DB( g_print("in : %2d-%2d-%4d\n", g_date_get_day(tmpdate), g_date_get_month (tmpdate), g_date_get_year(tmpdate) ) );
15
16- switch(arc->unit)
17- {
18- case AUTO_UNIT_DAY:
19- g_date_add_days(tmpdate, arc->every);
20- break;
21- case AUTO_UNIT_WEEK:
22- g_date_add_days(tmpdate, 7 * arc->every);
23- break;
24- case AUTO_UNIT_MONTH:
25- g_date_add_months(tmpdate, arc->every);
26- break;
27- case AUTO_UNIT_YEAR:
28- g_date_add_years(tmpdate, arc->every);
29- break;
30- }
31+ do {
32+ switch(arc->unit)
33+ {
34+ case AUTO_UNIT_DAY:
35+ g_date_add_days(tmpdate, arc->every);
36+ break;
37+ case AUTO_UNIT_WEEK:
38+ g_date_add_days(tmpdate, 7 * arc->every);
39+ break;
40+ case AUTO_UNIT_MONTH:
41+ g_date_add_months(tmpdate, arc->every);
42+ break;
43+ case AUTO_UNIT_YEAR:
44+ g_date_add_years(tmpdate, arc->every);
45+ break;
46+ }
47+
48+ wday = g_date_get_weekday(tmpdate);
49+ /* ignore weekend */
50+ } while ( arc->weekend == 3 && wday >= G_DATE_SATURDAY );
51+
52
53 //DB( g_print("out: %2d-%2d-%4d\n", g_date_get_day(tmpdate), g_date_get_month (tmpdate), g_date_get_year(tmpdate) ) );
54
55
56=== modified file 'src/ui-archive.c'
57--- src/ui-archive.c 2020-05-21 19:33:21 +0000
58+++ src/ui-archive.c 2020-12-06 12:27:16 +0000
59@@ -455,6 +455,7 @@
60 GtkTreeModel *model;
61 GtkTreeIter iter;
62 Archive *arc;
63+gushort active_unit;
64 gboolean selected, sensitive;
65
66 DB( g_print("\n[ui_scheduled] update\n") );
67@@ -475,7 +476,10 @@
68 gtk_tree_model_get(model, &iter, LST_DEFARC_DATAS, &arc, -1);
69
70 if( arc->flags & OF_AUTO )
71+ {
72 sensitive = TRUE;
73+ active_unit = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_unit));
74+ }
75 }
76
77 gtk_widget_set_sensitive(data->LB_next, sensitive);
78@@ -484,8 +488,9 @@
79 gtk_widget_set_sensitive(data->LB_every, sensitive);
80 gtk_widget_set_sensitive(data->NB_every, sensitive);
81
82- gtk_widget_set_sensitive(data->LB_weekend, sensitive);
83- gtk_widget_set_sensitive(data->CY_weekend, sensitive);
84+ /* setting weekend behavior for week unit is not allowed */
85+ gtk_widget_set_sensitive(data->LB_weekend, (sensitive == TRUE) ? active_unit != AUTO_UNIT_WEEK : FALSE);
86+ gtk_widget_set_sensitive(data->CY_weekend, (sensitive == TRUE) ? active_unit != AUTO_UNIT_WEEK : FALSE);
87
88 gtk_widget_set_sensitive(data->EX_options, sensitive);
89
90@@ -913,6 +918,23 @@
91 //g_print(" toggle type=%d\n", gtk_toggle_button_get_active(button));
92 }
93
94+static void ui_arc_manage_cb_unit_changed (GtkComboBox *combo_box, gpointer user_data)
95+{
96+struct ui_arc_manage_data *data;
97+GtkWidget *widget;
98+gushort active_unit;
99+
100+ widget = GTK_WIDGET(combo_box);
101+ active_unit = gtk_combo_box_get_active(combo_box);
102+
103+ if ( active_unit == AUTO_UNIT_WEEK )
104+ {
105+ data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
106+ gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_weekend), 0);
107+ }
108+
109+ ui_arc_manage_update(widget, user_data);
110+}
111
112 static gboolean
113 ui_arc_manage_cleanup(struct ui_arc_manage_data *data, gint result)
114@@ -1204,7 +1226,9 @@
115
116 g_signal_connect (data->CM_auto, "notify::active", G_CALLBACK (ui_arc_manage_cd_schedule_changed), NULL);
117 g_signal_connect (data->CM_limit, "toggled", G_CALLBACK (ui_arc_manage_cd_schedule_changed), NULL);
118-
119+
120+ g_signal_connect (data->CY_unit, "changed", G_CALLBACK(ui_arc_manage_cb_unit_changed), NULL);
121+
122 //setup, init and show dialog
123 ui_arc_manage_setup(data);
124 ui_arc_manage_update(data->LV_arc, NULL);
125
126=== modified file 'src/ui-archive.h'
127--- src/ui-archive.h 2020-05-21 19:33:21 +0000
128+++ src/ui-archive.h 2020-12-06 12:27:16 +0000
129@@ -53,7 +53,7 @@
130 GtkWidget *CM_auto;
131 GtkWidget *LB_next, *PO_next;
132 GtkWidget *LB_every, *NB_every;
133- GtkWidget *LB_weekend, *CY_weekend;
134+ GtkWidget *LB_weekend, *CY_weekend;
135 GtkWidget *CY_unit;
136
137 GtkWidget *EX_options;
138
139=== modified file 'src/ui-widgets-data.c'
140--- src/ui-widgets-data.c 2020-05-21 19:33:21 +0000
141+++ src/ui-widgets-data.c 2020-12-06 12:27:16 +0000
142@@ -139,6 +139,7 @@
143 N_("Possible"),
144 N_("Before"),
145 N_("After"),
146+ N_("Ignore"),
147 NULL
148 };
149

Subscribers

People subscribed via source and target branches

to status/vote changes: