add "last modified" column to session-dialog
authorRobin Gareus <robin@gareus.org>
Wed, 16 Sep 2015 15:14:10 +0000 (17:14 +0200)
committerRobin Gareus <robin@gareus.org>
Wed, 16 Sep 2015 16:24:56 +0000 (18:24 +0200)
gtk2_ardour/session_dialog.cc
gtk2_ardour/session_dialog.h

index 082bbf9e32d51f3d11f97f4cfa059faaa2d10f0b..5c81df04260998488d6c00dbc512fb7608a50a28 100644 (file)
@@ -326,6 +326,7 @@ SessionDialog::setup_initial_choice_box ()
        recent_session_display.append_column (_("Session Name"), recent_session_columns.visible_name);
        recent_session_display.append_column (_("Sample Rate"), recent_session_columns.sample_rate);
        recent_session_display.append_column (_("File Resolution"), recent_session_columns.disk_format);
+       recent_session_display.append_column (_("Last Modified"), recent_session_columns.time_formatted);
        recent_session_display.set_headers_visible (true);
        recent_session_display.get_selection()->set_mode (SELECTION_SINGLE);
        
@@ -688,6 +689,7 @@ SessionDialog::redisplay_recent_sessions ()
                        // opening the parent item will fail, but expanding it will show the session
                        // files that actually exist, and the right one can then be opened.
                        row[recent_session_columns.visible_name] = Glib::path_get_basename (dirname);
+                       int64_t most_recent = 0;
 
                        // add the children
                        for (std::vector<std::string>::iterator i2 = state_file_names.begin(); i2 != state_file_names.end(); ++i2) {
@@ -699,7 +701,14 @@ SessionDialog::redisplay_recent_sessions ()
                                child_row[recent_session_columns.fullpath] = s;
                                child_row[recent_session_columns.tip] = Glib::Markup::escape_text (dirname);
                                g_stat (s.c_str(), &gsb);
-                               row[recent_session_columns.time_modified] = gsb.st_mtime;
+                               child_row[recent_session_columns.time_modified] = gsb.st_mtime;
+
+                               Glib::DateTime gdt(Glib::DateTime::create_now_local (gsb.st_mtime));
+                               child_row[recent_session_columns.time_formatted] = gdt.format ("%F");
+
+                               if (gsb.st_mtime > most_recent) {
+                                       most_recent = gsb.st_mtime;
+                               }
                                
                                if (Session::get_info_from_path (s, sr, sf) == 0) {
                                        child_row[recent_session_columns.sample_rate] = rate_as_string (sr);
@@ -718,14 +727,20 @@ SessionDialog::redisplay_recent_sessions ()
                                        child_row[recent_session_columns.sample_rate] = "??";
                                        child_row[recent_session_columns.disk_format] = "--";
                                }
-                               
 
                                ++session_snapshot_count;
                        }
+
+                       assert (most_recent >= row[recent_session_columns.time_modified]);
+                       row[recent_session_columns.time_modified] = most_recent;
+
                } else {
                        // only a single session file in the directory - show its actual name.
                        row[recent_session_columns.visible_name] = state_file_basename;
                }
+
+               Glib::DateTime gdt(Glib::DateTime::create_now_local (row[recent_session_columns.time_modified]));
+               row[recent_session_columns.time_formatted] = gdt.format ("%F");
        }
 
        recent_session_display.set_tooltip_column(1); // recent_session_columns.tip 
index b4beb698febe148948dc150311a7bd75badfaf7d..e7c8738b5b9cba33b4d99d3f0fc5b53809870dcd 100644 (file)
@@ -116,6 +116,7 @@ class SessionDialog : public ArdourDialog {
                    add (sample_rate);
                    add (disk_format);
                    add (time_modified);
+                   add (time_formatted);
            }
            Gtk::TreeModelColumn<std::string> visible_name;
            Gtk::TreeModelColumn<std::string> tip;
@@ -123,6 +124,7 @@ class SessionDialog : public ArdourDialog {
            Gtk::TreeModelColumn<std::string> sample_rate;
            Gtk::TreeModelColumn<std::string> disk_format;
            Gtk::TreeModelColumn<int64_t>     time_modified;
+           Gtk::TreeModelColumn<std::string> time_formatted;
        };
 
        RecentSessionModelColumns    recent_session_columns;