diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2013-04-18 13:18:09 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-04-18 13:18:09 -0700 |
commit | 75765be14cc90886d7f46ec02097b7efeb3d8234 (patch) | |
tree | 8029786e6399bc0a1298005263afc74c37452add | |
parent | 1a15462073d854674e4d745c6af0249a1d48452e (diff) | |
download | subsurface-75765be14cc90886d7f46ec02097b7efeb3d8234.tar.gz |
Move creation of dive and dive trip date string into helper functions
This allows this code to easily be shared by Gtk and Qt UI.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | divelist-gtk.c | 20 | ||||
-rw-r--r-- | divelist.c | 30 | ||||
-rw-r--r-- | divelist.h | 2 |
3 files changed, 36 insertions, 16 deletions
diff --git a/divelist-gtk.c b/divelist-gtk.c index 5420f9e1a..189b75ba1 100644 --- a/divelist-gtk.c +++ b/divelist-gtk.c @@ -261,31 +261,19 @@ static void date_data_func(GtkTreeViewColumn *col, struct tm tm; timestamp_t when; /* this should be enought for most languages. if not increase the value. */ - char buffer[256]; + char *buffer; gtk_tree_model_get(model, iter, DIVE_INDEX, &idx, DIVE_DATE, &when, -1); nr = gtk_tree_model_iter_n_children(model, iter); utc_mkdate(when, &tm); if (idx < 0) { - snprintf(buffer, sizeof(buffer), - /*++GETTEXT 60 char buffer weekday, monthname, day of month, year, nr dives */ - ngettext("Trip %1$s, %2$s %3$d, %4$d (%5$d dive)", - "Trip %1$s, %2$s %3$d, %4$d (%5$d dives)", nr), - weekday(tm.tm_wday), - monthname(tm.tm_mon), - tm.tm_mday, tm.tm_year + 1900, - nr); + buffer = get_trip_date_string(&tm, nr); } else { - snprintf(buffer, sizeof(buffer), - /*++GETTEXT 60 char buffer weekday, monthname, day of month, year, hour:min */ - _("%1$s, %2$s %3$d, %4$d %5$02d:%6$02d"), - weekday(tm.tm_wday), - monthname(tm.tm_mon), - tm.tm_mday, tm.tm_year + 1900, - tm.tm_hour, tm.tm_min); + buffer = get_dive_date_string(&tm); } g_object_set(renderer, "text", buffer, NULL); + free(buffer); } static void depth_data_func(GtkTreeViewColumn *col, diff --git a/divelist.c b/divelist.c index 088b0e626..42fb272b0 100644 --- a/divelist.c +++ b/divelist.c @@ -489,6 +489,36 @@ void get_suit(struct dive *dive, char **str) get_string(str, dive->suit); } +#define MAX_DATE_STRING 256 +/* caller needs to free the string */ +char *get_dive_date_string(struct tm *tm) { + char *buffer = malloc(MAX_DATE_STRING); + if (buffer) + snprintf(buffer, MAX_DATE_STRING, + /*++GETTEXT 60 char buffer weekday, monthname, day of month, year, hour:min */ + _("%1$s, %2$s %3$d, %4$d %5$02d:%6$02d"), + weekday(tm->tm_wday), + monthname(tm->tm_mon), + tm->tm_mday, tm->tm_year + 1900, + tm->tm_hour, tm->tm_min); + return buffer; +} + +/* caller needs to free the string */ +char *get_trip_date_string(struct tm *tm, int nr) { + char *buffer = malloc(MAX_DATE_STRING); + if (buffer) + snprintf(buffer, MAX_DATE_STRING, + /*++GETTEXT 60 char buffer weekday, monthname, day of month, year, nr dives */ + ngettext("Trip %1$s, %2$s %3$d, %4$d (%5$d dive)", + "Trip %1$s, %2$s %3$d, %4$d (%5$d dives)", nr), + weekday(tm->tm_wday), + monthname(tm->tm_mon), + tm->tm_mday, tm->tm_year + 1900, + nr); + return buffer; +} + /* * helper functions for dive_trip handling */ diff --git a/divelist.h b/divelist.h index e7de9e631..014c4e0ee 100644 --- a/divelist.h +++ b/divelist.h @@ -21,6 +21,8 @@ extern double init_decompression(struct dive * dive); extern void export_all_dives_uddf_cb(); /* divelist core logic functions */ +extern char *get_dive_date_string(struct tm *tm); +extern char *get_trip_date_string(struct tm *tm, int nr); extern void clear_trip_indexes(void); extern dive_trip_t *find_trip_by_idx(int idx); extern int dive_nr_sort(int idx_a, int idx_b, timestamp_t when_a, timestamp_t when_b); |