]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Select better (?) default date for adding new dive
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 18 Aug 2012 18:47:29 +0000 (11:47 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 18 Aug 2012 18:47:29 +0000 (11:47 -0700)
We now pick one hour after the end of the currently selected dive as the
default starting time for the new dive to be added.  If multiple dives
(or no dives) are selected, we default to current time as before.

The "one hour after the end" is just a random (but not unreasonable)
assumption for the surface time if you add multiple dives.

Suggested-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
info.c

diff --git a/info.c b/info.c
index 0616eead9846a5105af34a07b7a8f95ee3bbd620..adc6c590239d6837416f9f05038c10aac862dc1d 100644 (file)
--- a/info.c
+++ b/info.c
@@ -582,9 +582,7 @@ static time_t dive_time_widget(struct dive *dive)
        GtkWidget *duration, *depth;
        GtkWidget *label;
        guint yval, mval, dval;
-       struct tm tm, *tmp;
-       struct timeval tv;
-       time_t time;
+       struct tm tm, *time;
        int success;
        double depthinterval, val;
 
@@ -608,11 +606,27 @@ static time_t dive_time_widget(struct dive *dive)
        h = gtk_spin_button_new_with_range (0.0, 23.0, 1.0);
        m = gtk_spin_button_new_with_range (0.0, 59.0, 1.0);
 
-       gettimeofday(&tv, NULL);
-       time = tv.tv_sec;
-       tmp = localtime(&time);
-       gtk_spin_button_set_value(GTK_SPIN_BUTTON(h), tmp->tm_hour);
-       gtk_spin_button_set_value(GTK_SPIN_BUTTON(m), (tmp->tm_min / 5)*5);
+       /*
+        * If we have a dive selected, 'add dive' will default
+        * to one hour after the end of that dive. Otherwise,
+        * we'll just take the current time.
+        */
+       if (amount_selected == 1) {
+               time_t when = current_dive->when;
+               when += current_dive->duration.seconds;
+               when += 60*60;
+               time = gmtime(&when);
+       } else {
+               time_t now;
+               struct timeval tv;
+               gettimeofday(&tv, NULL);
+               now = tv.tv_sec;
+               time = localtime(&now);
+       }
+       gtk_calendar_select_month(GTK_CALENDAR(cal), time->tm_mon, time->tm_year + 1900);
+       gtk_calendar_select_day(GTK_CALENDAR(cal), time->tm_mday);
+       gtk_spin_button_set_value(GTK_SPIN_BUTTON(h), time->tm_hour);
+       gtk_spin_button_set_value(GTK_SPIN_BUTTON(m), (time->tm_min / 5)*5);
 
        gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(h), TRUE);
        gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(m), TRUE);