swaroop: skippable -> disable next/previous.
authorCarl Hetherington <cth@carlh.net>
Thu, 13 Dec 2018 21:51:40 +0000 (21:51 +0000)
committerCarl Hetherington <cth@carlh.net>
Thu, 13 Dec 2018 21:51:40 +0000 (21:51 +0000)
src/wx/swaroop_controls.cc
src/wx/swaroop_controls.h

index 6a7cde4e71febab12cf7183c4eb91c83c42a6e8b..6a40e1fc0ca12284c581b677764467e88ecf7e0a 100644 (file)
@@ -44,6 +44,7 @@ SwaroopControls::SwaroopControls (wxWindow* parent, shared_ptr<FilmViewer> viewe
        , _next_button (new Button(this, "Next"))
        , _previous_button (new Button(this, "Previous"))
        , _current_disable_timeline (false)
+       , _current_disable_next_previous (false)
 {
        _button_sizer->Add (_play_button, 0, wxEXPAND);
        _button_sizer->Add (_pause_button, 0, wxEXPAND);
@@ -144,6 +145,8 @@ SwaroopControls::setup_sensitivity ()
        _pause_button->Enable (_viewer->playing());
        _slider->Enable (!_current_disable_timeline);
        _spl_view->Enable (!_viewer->playing());
+       _next_button->Enable (!_current_disable_next_previous && can_do_next());
+       _previous_button->Enable (!_current_disable_next_previous && can_do_previous());
 }
 
 void
@@ -159,10 +162,16 @@ SwaroopControls::stop_clicked ()
        _viewer->seek (DCPTime(), true);
 }
 
+bool
+SwaroopControls::can_do_previous ()
+{
+       return _selected_playlist && (_selected_playlist_position - 1) >= 0;
+}
+
 void
 SwaroopControls::previous_clicked ()
 {
-       if (!_selected_playlist || (_selected_playlist_position - 1) < 0) {
+       if (!can_do_previous ()) {
                return;
        }
 
@@ -170,10 +179,16 @@ SwaroopControls::previous_clicked ()
        update_current_content ();
 }
 
+bool
+SwaroopControls::can_do_next ()
+{
+       return _selected_playlist && (_selected_playlist_position + 1) < int(_playlists[*_selected_playlist].get().size());
+}
+
 void
 SwaroopControls::next_clicked ()
 {
-       if (!_selected_playlist || (_selected_playlist_position + 1) >= int(_playlists[*_selected_playlist].get().size())) {
+       if (!can_do_next ()) {
                return;
        }
 
@@ -311,7 +326,11 @@ SwaroopControls::update_current_content ()
        DCPOMATIC_ASSERT (_selected_playlist);
 
        _viewer->stop ();
-       _current_disable_timeline = _playlists[*_selected_playlist].get()[_selected_playlist_position].disable_timeline;
+
+       SPLEntry const & e = _playlists[*_selected_playlist].get()[_selected_playlist_position];
+       _current_disable_timeline = e.disable_timeline;
+       _current_disable_next_previous = e.skippable;
+
        setup_sensitivity ();
        reset_film ();
        _viewer->start ();
index 91fad1537d16b616877935f7cc1c109a49c04c63..2d0d14a67763b1437cb1baa8ae7f9017feeb2d0e 100644 (file)
@@ -51,6 +51,8 @@ private:
        void viewer_finished ();
        void reset_film ();
        void update_current_content ();
+       bool can_do_previous ();
+       bool can_do_next ();
 
        wxButton* _play_button;
        wxButton* _pause_button;
@@ -66,6 +68,7 @@ private:
        wxTextCtrl* _log;
 
        bool _current_disable_timeline;
+       bool _current_disable_next_previous;
 
        std::vector<SPL> _playlists;
        boost::optional<int> _selected_playlist;