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>
This commit is contained in:
Dirk Hohndel 2013-04-18 13:18:09 -07:00
parent d25de98b7c
commit e4a31e1e41
3 changed files with 36 additions and 16 deletions

View file

@ -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,

View file

@ -559,6 +559,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
*/

View file

@ -22,6 +22,8 @@ extern void upload_all_dives_divelogs_cb();
#endif
/* 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);