1 /* Copyright (C) 2007 The SpringLobby Team. All rights reserved. */ 2 // 3 // 4 5 #include <wx/app.h> 6 #include <wx/log.h> 7 8 //#include "../utils.h" 9 #include "replaylist.h" 10 #include "savegamelist.h" 11 #include <lslunitsync/unitsync.h> 12 13 template <class PlaybackTabImp > PlaybackLoader(ParentType * parent)14PlaybackLoader<PlaybackTabImp>::PlaybackLoader( ParentType* parent ): 15 wxEvtHandler(), 16 m_parent( parent ), 17 m_thread_loader( NULL ) 18 { 19 } 20 21 template <class PlaybackTabImp > ~PlaybackLoader()22PlaybackLoader<PlaybackTabImp>::~PlaybackLoader() 23 { 24 delete m_thread_loader; 25 } 26 27 template <class PlaybackTabImp > Run()28void PlaybackLoader<PlaybackTabImp>::Run() 29 { 30 if ( !LSL::usync().IsLoaded() ) return; 31 if ( m_thread_loader ) return; // a thread is already running 32 m_filenames = LSL::usync().GetPlaybackList( IsReplayType ); 33 playbacklist<ListType>().RemoveAll(); 34 m_thread_loader = new ThreadType(); 35 m_thread_loader->SetParent( this ); 36 m_thread_loader->Create(); 37 m_thread_loader->Run(); 38 } 39 40 template <class PlaybackTabImp > OnComplete()41void PlaybackLoader<PlaybackTabImp>::OnComplete() 42 { 43 if ( m_parent == NULL ) return; 44 wxCommandEvent notice( PlaybacksLoadedEvt, 1 ); 45 wxPostEvent(m_parent, notice); 46 m_thread_loader = 0; // the thread object deleted itself 47 } 48 49 template <class PlaybackTabImp > GetPlaybackFilenames()50std::vector<std::string> PlaybackLoader<PlaybackTabImp>::GetPlaybackFilenames() 51 { 52 return m_filenames; 53 } 54 55 template <class PlaybackTabImp > PlaybackLoaderThread()56PlaybackLoader<PlaybackTabImp>::PlaybackLoaderThread::PlaybackLoaderThread(): 57 m_parent(0) 58 { 59 } 60 61 template <class PlaybackTabImp > Entry()62void* PlaybackLoader<PlaybackTabImp>::ThreadType::Entry() 63 { 64 if( m_parent ) 65 { 66 playbacklist<ListType>().LoadPlaybacks( m_parent->GetPlaybackFilenames() ); 67 m_parent->OnComplete(); 68 } 69 70 return NULL; 71 } 72 73 template <class PlaybackTabImp > SetParent(ParentType * parent)74void PlaybackLoader<PlaybackTabImp>::PlaybackLoaderThread::SetParent( ParentType* parent ) 75 { 76 m_parent = parent; 77 } 78