[PATCH] Trip header format in dive list

Dirk Hohndel dirk at hohndel.org
Mon Oct 5 13:37:42 PDT 2015


this should have gone to the developer mailing list...


Hi Giorgio,

I continue to review this a little more strictly than I might normally do,
simply to give you better ideas of what I prefer...

On Mon, Oct 05, 2015 at 11:04:51AM +0200, Giorgio Marzano wrote:
> From 29fde2898e04f839319e65d84092a6cb5e76a7f4 Mon Sep 17 00:00:00 2001
> From: Giorgio Marzano <marzano.giorgio at gmail.com>
> Date: Sun, 4 Oct 2015 13:48:10 +0200
> Subject: [PATCH] make trips shorter than 1 day displayed as "Month Day Year"

What's wrong with

[PATCH] include the day when showing single day trips in the divelist

it's active, it's more informative and it doesn't contain incorrect
information (as I sure home we don't always do middle endian...)

> This improves readability in the case that many trip refer to the same month.

many trips

> diff --git a/helpers.h b/helpers.h
> index 6c5c31c..760d962 100644
> --- a/helpers.h
> +++ b/helpers.h
> @@ -33,7 +33,8 @@ int parseTemperatureToMkelvin(const QString &text);
>  QString get_dive_duration_string(timestamp_t when, QString hourText, QString minutesText);
>  QString get_dive_date_string(timestamp_t when);
>  QString get_short_dive_date_string(timestamp_t when);
> -QString get_trip_date_string(timestamp_t when, int nr);
> +bool is_same_day (timestamp_t trip_when, timestamp_t dive_when);
> +QString get_trip_date_string(timestamp_t when, int nr, bool getday);
>  QString uiLanguage(QLocale *callerLoc);
>  QLocale getLocale();
>  QString getDateFormat();
> diff --git a/qt-models/divetripmodel.cpp b/qt-models/divetripmodel.cpp
> index fcba4a5..31d62ce 100644
> --- a/qt-models/divetripmodel.cpp
> +++ b/qt-models/divetripmodel.cpp
> @@ -43,6 +43,7 @@ static QVariant dive_table_alignment(int column)
>  QVariant TripItem::data(int column, int role) const
>  {
>  	QVariant ret;
> +   bool oneDayTrip=true;

And there we go again - four spaces instead of a tab

>  	if (role == DiveTripModel::TRIP_ROLE)
>  		return QVariant::fromValue<void *>(trip);
> @@ -59,14 +60,15 @@ QVariant TripItem::data(int column, int role) const
>  			while (d) {
>  				if (!d->hidden_by_filter)
>  					countShown++;
> -				d = d->next;
> +			    oneDayTrip &= is_same_day (trip->when,  d->when);
> +			   d = d->next;

Same here. Actually there's something even odder going on with the last line.

> diff --git a/qthelper.cpp b/qthelper.cpp
> index ed23948..4767be9 100644
> --- a/qthelper.cpp
> +++ b/qthelper.cpp
> @@ -1028,20 +1028,42 @@ const char *get_dive_date_c_string(timestamp_t when)
>  	return strdup(text.toUtf8().data());
>  }
>  
> -QString get_trip_date_string(timestamp_t when, int nr)
> +bool is_same_day(timestamp_t trip_when, timestamp_t dive_when)
> +{
> +	static timestamp_t twhen = (timestamp_t) 0;
> +	static struct tm tmt;
> +	struct tm tmd;
> +
> +	utc_mkdate(dive_when, &tmd);
> +
> +	if (twhen != trip_when) {
> +		twhen = trip_when;
> +		utc_mkdate(twhen, &tmt);
> +	}
> +
> +	return ((tmd.tm_mday == tmt.tm_mday) && (tmd.tm_mon == tmt.tm_mon)
> +	                && (tmd.tm_year == tmt.tm_year));

Up until the last line indentation was correct, the last one is all spaces
and off... the '&&' should be at the end of the previous line and the
"(tmd.tm_year..." should be aligned under the "(tmd.tm_mday..." above.
With as many tabs as possible and finally spaces

> +}
> +
> +QString get_trip_date_string(timestamp_t when, int nr, bool getday)
>  {
>  	struct tm tm;
>  	utc_mkdate(when, &tm);
> +	QDateTime localTime = QDateTime::fromTime_t(when);
> +	localTime.setTimeSpec(Qt::UTC);
> +	QString ret ;

No space before the ';'

> +
>  	if (nr != 1) {
> -		QString ret =  translate("gettextFromC", "%1 %2 (%3 dives)");
> -		return ret.arg(monthname(tm.tm_mon))
> -			.arg(tm.tm_year + 1900)
> -			.arg(nr);
> +		if (getday) {
> +			ret = localTime.date().toString(dateFormat).append(" (%1 dives)").arg(nr);
> +		} else {
> +			ret = localTime.date().toString("MMM yy").append(" (%1 dives)").arg(nr);
> +		}

This looks better

>  	} else {
> -		QString ret = translate("gettextFromC", "%1 %2 (1 dive)");
> -		return ret.arg(monthname(tm.tm_mon))
> -			.arg(tm.tm_year + 1900);
> +		ret = localTime.date().toString(dateFormat).append(" (1 dive)");

It took me a moment to realize that a trip with just one dive is by
definition always a single day trip :-)


Thanks for working on this - as I said, I'd like to leave this until after
4.5, but I think we are getting closer...

/D


More information about the subsurface mailing list