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)14 PlaybackLoader<PlaybackTabImp>::PlaybackLoader( ParentType* parent ):
15 	wxEvtHandler(),
16 	m_parent( parent ),
17 	m_thread_loader( NULL )
18 {
19 }
20 
21 template <class PlaybackTabImp >
~PlaybackLoader()22 PlaybackLoader<PlaybackTabImp>::~PlaybackLoader()
23 {
24 	delete m_thread_loader;
25 }
26 
27 template <class PlaybackTabImp >
Run()28 void 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()41 void 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()50 std::vector<std::string> PlaybackLoader<PlaybackTabImp>::GetPlaybackFilenames()
51 {
52 	return m_filenames;
53 }
54 
55 template <class PlaybackTabImp >
PlaybackLoaderThread()56 PlaybackLoader<PlaybackTabImp>::PlaybackLoaderThread::PlaybackLoaderThread():
57 m_parent(0)
58 {
59 }
60 
61 template <class PlaybackTabImp >
Entry()62 void* 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)74 void PlaybackLoader<PlaybackTabImp>::PlaybackLoaderThread::SetParent( ParentType* parent )
75 {
76 	m_parent = parent;
77 }
78