*/
-#include "playlist_controls.h"
-#include "film_viewer.h"
-#include "wx_util.h"
+
#include "content_view.h"
#include "dcpomatic_button.h"
+#include "film_viewer.h"
+#include "playlist_controls.h"
#include "static_text.h"
-#include "lib/player_video.h"
-#include "lib/dcp_content.h"
+#include "wx_util.h"
+#include "lib/compose.hpp"
+#include "lib/constants.h"
#include "lib/cross.h"
-#include "lib/scoped_temporary.h"
-#include "lib/internet.h"
+#include "lib/dcp_content.h"
#include "lib/ffmpeg_content.h"
-#include "lib/compose.hpp"
-#include <dcp/raw_convert.h>
+#include "lib/film.h"
+#include "lib/internet.h"
+#include "lib/player_video.h"
+#include "lib/scoped_temporary.h"
#include <dcp/exceptions.h>
+#include <dcp/raw_convert.h>
+#include <dcp/warnings.h>
+LIBDCP_DISABLE_WARNINGS
#include <wx/listctrl.h>
#include <wx/progdlg.h>
+LIBDCP_ENABLE_WARNINGS
+
-using std::string;
using std::cout;
+using std::dynamic_pointer_cast;
using std::exception;
-using std::sort;
using std::shared_ptr;
-using std::dynamic_pointer_cast;
+using std::sort;
+using std::string;
using boost::optional;
using namespace dcpomatic;
-PlaylistControls::PlaylistControls (wxWindow* parent, shared_ptr<FilmViewer> viewer)
+
+PlaylistControls::PlaylistControls(wxWindow* parent, FilmViewer& viewer)
: Controls (parent, viewer, false)
, _play_button (new Button(this, _("Play")))
, _pause_button (new Button(this, _("Pause")))
_spl_view = new wxListCtrl (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT | wxLC_NO_HEADER);
_spl_view->AppendColumn (wxT(""), wxLIST_FORMAT_LEFT, 740);
- wxBoxSizer* left_sizer = new wxBoxSizer (wxVERTICAL);
- wxBoxSizer* e_sizer = new wxBoxSizer (wxHORIZONTAL);
+ auto left_sizer = new wxBoxSizer(wxVERTICAL);
+ auto e_sizer = new wxBoxSizer(wxHORIZONTAL);
wxFont subheading_font (*wxNORMAL_FONT);
subheading_font.SetWeight (wxFONTWEIGHT_BOLD);
- wxBoxSizer* spl_header = new wxBoxSizer (wxHORIZONTAL);
+ auto spl_header = new wxBoxSizer(wxHORIZONTAL);
{
- wxStaticText* m = new StaticText (this, "Playlists");
+ auto m = new StaticText(this, "Playlists");
m->SetFont (subheading_font);
spl_header->Add (m, 1, wxALIGN_CENTER_VERTICAL);
}
_content_view = new ContentView (this);
- wxBoxSizer* content_header = new wxBoxSizer (wxHORIZONTAL);
+ auto content_header = new wxBoxSizer(wxHORIZONTAL);
{
- wxStaticText* m = new StaticText (this, "Content");
+ auto m = new StaticText(this, "Content");
m->SetFont (subheading_font);
content_header->Add (m, 1, wxALIGN_CENTER_VERTICAL);
}
_previous_button->Bind (wxEVT_BUTTON, boost::bind(&PlaylistControls::previous_clicked, this));
_spl_view->Bind (wxEVT_LIST_ITEM_SELECTED, boost::bind(&PlaylistControls::spl_selection_changed, this));
_spl_view->Bind (wxEVT_LIST_ITEM_DESELECTED, boost::bind(&PlaylistControls::spl_selection_changed, this));
- viewer->Finished.connect (boost::bind(&PlaylistControls::viewer_finished, this));
+ _viewer.Finished.connect(boost::bind(&PlaylistControls::viewer_finished, this));
_refresh_spl_view->Bind (wxEVT_BUTTON, boost::bind(&PlaylistControls::update_playlist_directory, this));
_refresh_content_view->Bind (wxEVT_BUTTON, boost::bind(&ContentView::update, _content_view));
_selected_playlist = boost::none;
_spl_view->SetItemState (selected, 0, wxLIST_STATE_SELECTED);
}
- ResetFilm (shared_ptr<Film>(new Film(optional<boost::filesystem::path>())));
+ ResetFilm(std::make_shared<Film>(optional<boost::filesystem::path>()));
}
void
PlaylistControls::play_clicked ()
{
- auto viewer = _viewer.lock ();
- if (viewer) {
- viewer->start ();
- }
+ _viewer.start();
}
void
PlaylistControls::setup_sensitivity ()
{
- auto viewer = _viewer.lock ();
- if (!viewer) {
- return;
- }
-
Controls::setup_sensitivity ();
bool const active_job = _active_job && *_active_job != "examine_content";
bool const c = _film && !_film->content().empty() && !active_job;
- _play_button->Enable (c && !viewer->playing());
- _pause_button->Enable (viewer->playing());
- _spl_view->Enable (!viewer->playing());
+ _play_button->Enable(c && !_viewer.playing());
+ _pause_button->Enable(_viewer.playing());
+ _spl_view->Enable(!_viewer.playing());
_next_button->Enable (can_do_next());
_previous_button->Enable (can_do_previous());
}
void
PlaylistControls::pause_clicked ()
{
- auto viewer = _viewer.lock ();
- if (viewer) {
- viewer->stop ();
- }
+ _viewer.stop();
}
void
PlaylistControls::stop_clicked ()
{
- auto viewer = _viewer.lock ();
- if (!viewer) {
- return;
- }
-
- viewer->stop ();
- viewer->seek (DCPTime(), true);
+ _viewer.stop();
+ _viewer.seek(DCPTime(), true);
if (_selected_playlist) {
_selected_playlist_position = 0;
update_current_content ();
}
}
-void
-PlaylistControls::set_film (shared_ptr<Film> film)
-{
- Controls::set_film (film);
- setup_sensitivity ();
-}
void
PlaylistControls::update_current_content ()
void
PlaylistControls::viewer_finished ()
{
- auto viewer = _viewer.lock ();
- if (!_selected_playlist || !viewer) {
+ if (!_selected_playlist) {
return;
}
if (_selected_playlist_position < int(_playlists[*_selected_playlist].get().size())) {
/* Next piece of content on the SPL */
update_current_content ();
- viewer->start ();
+ _viewer.start();
} else {
/* Finished the whole SPL */
_selected_playlist_position = 0;
- ResetFilm (shared_ptr<Film>(new Film(optional<boost::filesystem::path>())));
+ ResetFilm(std::make_shared<Film>(optional<boost::filesystem::path>()));
_play_button->Enable (true);
_pause_button->Enable (false);
}