about summary refs log blame commit diff stats
path: root/src/tracker_frame.h
blob: 131c7b81ce5671d9292004acb919f6a490406ced (plain) (tree)
1
2
3
4
5
6
7
8
9







                                
                 
                     
                  
                    
                       
                
                
                  
                    
                
                   
                      
                      
                       
 





















                                                                      
                               
                                 


                                     
                           
                               
                                













                                                                         
                                             
                                                  
                                                
                                               
 
                                     
        
                 
                                                                           
                             
 
                         
                                           
 
         
                                      
                                           
                                         
                                                
                                        
                                              
                                            
                                         
                                                     
 
                                           
                                                
                                              
                                            
                                    
 
                                     
                        
                               
                                       
                         
                             
                                 
                         
                                        
                                   

                                  
                   

                                                           
#ifndef TRACKER_FRAME_H_86BD8DFB
#define TRACKER_FRAME_H_86BD8DFB

#include <wx/wxprec.h>

#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif

#include <memory>

#include "ap_state.h"
#include "icons.h"
#include "updater.h"

class AchievementsPane;
class ItemsPane;
class LogDialog;
class OptionsPane;
class PaintingsPane;
class SubwayMap;
class TrackerPanel;
class wxBookCtrlEvent;
class wxNotebook;
class wxSplitterEvent;
class wxSplitterWindow;

class ApConnectEvent : public wxEvent {
 public:
  ApConnectEvent(wxEventType eventType, int winid, std::string server,
                 std::string user, std::string pass)
      : wxEvent(winid, eventType),
        ap_server_(std::move(server)),
        ap_user_(std::move(user)),
        ap_pass_(std::move(pass)) {}

  const std::string &GetServer() const { return ap_server_; }

  const std::string &GetUser() const { return ap_user_; }

  const std::string &GetPass() const { return ap_pass_; }

  virtual wxEvent *Clone() const { return new ApConnectEvent(*this); }

 private:
  std::string ap_server_;
  std::string ap_user_;
  std::string ap_pass_;
};

struct StateUpdate {
  std::vector<ItemState> items;
  bool progression_items = false;
  std::vector<std::string> paintings;
  bool achievements = false;
  bool open_panels_tab = false;
  bool cleared_locations = false;
  bool hunt_panels = false;
  bool player_position = false;
  bool changed_settings = false;
};

class StateChangedEvent : public wxEvent {
 public:
  StateChangedEvent(wxEventType eventType, int winid, StateUpdate state)
      : wxEvent(winid, eventType), state_(std::move(state)) {}

  const StateUpdate &GetState() const { return state_; }

  virtual wxEvent *Clone() const { return new StateChangedEvent(*this); }

 private:
  StateUpdate state_;
};

wxDECLARE_EVENT(STATE_RESET, wxCommandEvent);
wxDECLARE_EVENT(STATE_CHANGED, StateChangedEvent);
wxDECLARE_EVENT(STATUS_CHANGED, wxCommandEvent);
wxDECLARE_EVENT(CONNECT_TO_AP, ApConnectEvent);

class TrackerFrame : public wxFrame {
 public:
  TrackerFrame();

  void ConnectToAp(std::string server, std::string user, std::string pass);
  void UpdateStatusMessage();

  void ResetIndicators();
  void UpdateIndicators(StateUpdate state);

 private:
  void OnExit(wxCommandEvent &event);
  void OnAbout(wxCommandEvent &event);
  void OnApConnect(wxCommandEvent &event);
  void OnIpcConnect(wxCommandEvent &event);
  void OnSettings(wxCommandEvent &event);
  void OnCheckForUpdates(wxCommandEvent &event);
  void OnZoomIn(wxCommandEvent &event);
  void OnZoomOut(wxCommandEvent &event);
  void OnOpenLogWindow(wxCommandEvent &event);
  void OnCloseLogWindow(wxCloseEvent &event);
  void OnChangePage(wxBookCtrlEvent &event);
  void OnOpenFile(wxCommandEvent &event);
  void OnSashPositionChanged(wxSplitterEvent &event);

  void OnStateReset(wxCommandEvent &event);
  void OnStateChanged(StateChangedEvent &event);
  void OnStatusChanged(wxCommandEvent &event);
  void OnConnectToAp(ApConnectEvent &event);
  
  std::unique_ptr<Updater> updater_;

  wxSplitterWindow *splitter_window_;
  wxNotebook *notebook_;
  TrackerPanel *tracker_panel_;
  AchievementsPane *achievements_pane_;
  ItemsPane *items_pane_;
  OptionsPane *options_pane_;
  PaintingsPane *paintings_pane_;
  SubwayMap *subway_map_;
  TrackerPanel *panels_panel_ = nullptr;
  LogDialog *log_dialog_ = nullptr;

  wxMenuItem *zoom_in_menu_item_;
  wxMenuItem *zoom_out_menu_item_;

  IconCache icons_;
};

#endif /* end of include guard: TRACKER_FRAME_H_86BD8DFB */