source: trunk/src/Halite.hpp @ 503

Revision 503, 3.0 KB checked in by Eoin, 11 years ago (diff)

Cleaned up trunk alert handler code.

Line 
1
2//         Copyright Eóin O'Callaghan 2006 - 2008.
3// Distributed under the Boost Software License, Version 1.0.
4//    (See accompanying file LICENSE_1_0.txt or copy at
5//          http://www.boost.org/LICENSE_1_0.txt)
6
7#pragma once
8
9using std::string;
10using std::wstring;
11
12using boost::lexical_cast;
13using boost::array;
14using boost::format;
15using boost::wformat;
16using boost::bind;
17using boost::thread;
18using boost::shared_ptr;
19using boost::scoped_ptr;
20using boost::filesystem::path;
21using boost::filesystem::wpath;
22using boost::noncopyable;
23
24template<class Archive>
25void serialize(Archive& ar, WTL::CRect& rect, const unsigned int version)
26{
27        ar & BOOST_SERIALIZATION_NVP(rect.top);
28        ar & BOOST_SERIALIZATION_NVP(rect.bottom);
29        ar & BOOST_SERIALIZATION_NVP(rect.left);
30        ar & BOOST_SERIALIZATION_NVP(rect.right);
31}
32
33namespace hal
34{       
35        namespace fs = boost::filesystem;
36        namespace pt = boost::posix_time;
37        namespace xp = boost::xpressive;
38        namespace sl = boost::serialization;
39
40        using std::pair;
41        using std::make_pair;
42       
43        using boost::tuple;
44
45        typedef boost::int64_t size_type;
46}
47
48#define foreach BOOST_FOREACH
49
50#include "global/wtl_app.hpp"
51#include "global/string_conv.hpp"
52
53#include "halIni.hpp"
54#include "halEvent.hpp"
55#include "halTorrent.hpp"
56
57template<class T>
58class RedrawLock
59{
60public:
61        RedrawLock(T& window) :
62                window_(window)
63        {
64                window_.SetRedraw(false);
65        }
66       
67        ~RedrawLock()
68        {
69                unlock();
70        }
71       
72        void unlock()
73        {
74                window_.SetRedraw(true);
75                window_.InvalidateRect(NULL, true);
76        }
77       
78private:
79        T& window_;
80};
81       
82class Halite :
83        public hal::IniBase<Halite>,
84        private boost::noncopyable
85{
86public:
87        Halite() :
88                hal::IniBase<Halite>("globals/halite", "Halite"),
89                oneInst(false),
90#ifdef TORRENT_LOGGING
91                logDebug_(true),
92#else
93                logDebug_(false),
94#endif
95                showMessage_(true),
96                logToFile_(true),
97                logListLen_(128),
98                dll_(L"")
99        {
100                hal::event_log.init();
101                load_from_ini();
102        }
103       
104        friend class boost::serialization::access;
105        template<class Archive>
106        void serialize(Archive& ar, const unsigned int version)
107        {       
108        ar & BOOST_SERIALIZATION_NVP(oneInst);
109                ar & BOOST_SERIALIZATION_NVP(logDebug_);
110                ar & boost::serialization::make_nvp("showMessage", showMessage_);
111               
112                ar & BOOST_SERIALIZATION_NVP(logToFile_);
113                if (version > 1)
114                        ar & BOOST_SERIALIZATION_NVP(logListLen_);
115                if (version > 0)
116                        ar & BOOST_SERIALIZATION_NVP(dll_);
117        }       
118       
119        bool logToFile() { return logToFile_; }
120        bool logDebug() { return logDebug_; }
121        const std::wstring& dll() { return dll_; }
122        const int logListLen() { return logListLen_; }
123        bool showMessage() { return showMessage_; }
124       
125        friend class GeneralOptions;
126        friend class SplashDialog;
127        friend class AdvDebugDialog;
128        friend int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
129       
130private:
131        std::wstring dll_;
132        bool oneInst;
133        bool logDebug_;
134        bool showMessage_;
135        bool logToFile_;
136        size_t logListLen_;
137};
138
139Halite& halite();
140
141BOOST_CLASS_VERSION(Halite, 3)
Note: See TracBrowser for help on using the repository browser.