From: Carl Hetherington Date: Sat, 29 Feb 2020 23:14:39 +0000 (+0100) Subject: Separate SPL from a version which signals when things change. X-Git-Tag: v2.15.45~1 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=048c84a9a0bdcad6fbd487bacb3ed57765d956c5 Separate SPL from a version which signals when things change. --- diff --git a/src/lib/spl.h b/src/lib/spl.h index 8dd8eed92..9637f6189 100644 --- a/src/lib/spl.h +++ b/src/lib/spl.h @@ -75,15 +75,12 @@ public: void set_name (std::string name) { _name = name; - NameChanged (); } bool missing () const { return _missing; } - boost::signals2::signal NameChanged; - private: std::string _id; std::string _name; @@ -92,4 +89,22 @@ private: bool _missing; }; + +class SignalSPL : public SPL +{ +public: + SignalSPL () {} + + SignalSPL (std::string name) + : SPL (name) + {} + + void set_name (std::string name) { + SPL::set_name (name); + NameChanged (); + } + + boost::signals2::signal NameChanged; +}; + #endif diff --git a/src/tools/dcpomatic_playlist.cc b/src/tools/dcpomatic_playlist.cc index f8b888fe3..e2e9d4ebe 100644 --- a/src/tools/dcpomatic_playlist.cc +++ b/src/tools/dcpomatic_playlist.cc @@ -134,19 +134,19 @@ public: return _sizer; } - shared_ptr first_playlist () const + shared_ptr first_playlist () const { if (_playlists.empty()) { - return shared_ptr(); + return shared_ptr(); } return _playlists.front (); } - boost::signals2::signal)> Edit; + boost::signals2::signal)> Edit; private: - void add_playlist_to_view (shared_ptr playlist) + void add_playlist_to_view (shared_ptr playlist) { wxListItem item; item.SetId (_list->GetItemCount()); @@ -154,21 +154,21 @@ private: _list->SetItem (N, 0, std_to_wx(playlist->name())); } - void add_playlist_to_model (shared_ptr playlist) + void add_playlist_to_model (shared_ptr playlist) { _playlists.push_back (playlist); - playlist->NameChanged.connect (bind(&PlaylistList::name_changed, this, weak_ptr(playlist))); + playlist->NameChanged.connect (bind(&PlaylistList::name_changed, this, weak_ptr(playlist))); } - void name_changed (weak_ptr wp) + void name_changed (weak_ptr wp) { - shared_ptr playlist = wp.lock (); + shared_ptr playlist = wp.lock (); if (!playlist) { return; } int N = 0; - BOOST_FOREACH (shared_ptr i, _playlists) { + BOOST_FOREACH (shared_ptr i, _playlists) { if (i == playlist) { _list->SetItem (N, 0, std_to_wx(i->name())); } @@ -186,21 +186,21 @@ private: _list->DeleteAllItems (); _playlists.clear (); for (boost::filesystem::directory_iterator i(*path); i != boost::filesystem::directory_iterator(); ++i) { - shared_ptr spl(new SPL); + shared_ptr spl(new SignalSPL); try { spl->read (*i, _content_store); add_playlist_to_model (spl); } catch (...) {} } - BOOST_FOREACH (shared_ptr i, _playlists) { + BOOST_FOREACH (shared_ptr i, _playlists) { add_playlist_to_view (i); } } void new_playlist () { - shared_ptr spl (new SPL(wx_to_std(_("New Playlist")))); + shared_ptr spl (new SignalSPL(wx_to_std(_("New Playlist")))); add_playlist_to_model (spl); add_playlist_to_view (spl); _list->SetItemState (_list->GetItemCount() - 1, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); @@ -222,14 +222,14 @@ private: _list->DeleteItem (selected); _playlists.erase (_playlists.begin() + selected); - Edit (shared_ptr()); + Edit (shared_ptr()); } void selection_changed () { long int selected = _list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (selected < 0 || selected >= int(_playlists.size())) { - Edit (shared_ptr()); + Edit (shared_ptr()); } else { Edit (_playlists[selected]); } @@ -239,7 +239,7 @@ private: wxListCtrl* _list; wxButton* _new; wxButton* _delete; - vector > _playlists; + vector > _playlists; ContentStore* _content_store; }; @@ -317,7 +317,7 @@ public: return _sizer; } - void set (shared_ptr playlist) + void set (shared_ptr playlist) { _playlist = playlist; _list->DeleteAllItems (); @@ -332,7 +332,7 @@ public: setup_sensitivity (); } - shared_ptr playlist () const + shared_ptr playlist () const { return _playlist; } @@ -443,7 +443,7 @@ private: wxButton* _down; wxButton* _add; wxButton* _remove; - shared_ptr _playlist; + shared_ptr _playlist; }; @@ -504,16 +504,16 @@ private: _config_dialog->Show (this); } - void change_playlist (shared_ptr playlist) + void change_playlist (shared_ptr playlist) { - shared_ptr old = _playlist_content->playlist (); + shared_ptr old = _playlist_content->playlist (); if (old) { save_playlist (old); } _playlist_content->set (playlist); } - void save_playlist (shared_ptr playlist) + void save_playlist (shared_ptr playlist) { optional dir = Config::instance()->player_playlist_directory(); if (!dir) {