All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
LocalJsonLabelStyleSheetLoader.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "ILabelStyleSheetLoader.h"
6 #include "Types.h"
7 #include "Helpers.h"
8 
9 #include <vector>
10 
11 namespace Eegeo
12 {
13  namespace Labels
14  {
15  class IUpdatable
16  {
17  public:
18  virtual ~IUpdatable() {}
19  virtual void Update() = 0;
20  };
21 
22 
24  {
25  public:
27  const ILabelStyleSheetParser& labelStyleSheetParser,
28  ILabelStyleSheetBuilder& labelStyleSheetBuilder);
29 
30  void Load(const std::string& url, LoadCompleteCallbackType& callback);
31 
32  void Update();
33 
34  private:
35 
36  struct LabelStyleSheetLoad
37  {
38  LabelStyleSheetLoad(const std::string& url, LoadCompleteCallbackType& callback)
39  : m_url(url)
40  , m_pCallback(&callback)
41  {}
42 
43  const std::string& GetUrl() const { return m_url; }
44  LoadCompleteCallbackType& GetCallback() const { return *m_pCallback; }
45  private:
46  std::string m_url;
47  LoadCompleteCallbackType* m_pCallback;
48  };
49 
50  bool TryLoad(const LabelStyleSheetLoad& load);
51 
52  Helpers::IFileIO& m_fileIO;
53  const ILabelStyleSheetParser& m_labelStyleSheetParser;
54  ILabelStyleSheetBuilder& m_labelStyleSheetBuilder;
55 
56  std::vector<LabelStyleSheetLoad> m_loads;
57  };
58  }
59 }