source: trunk/src/Halite.hpp @ 459

Revision 459, 3.0 KB checked in by Eoin, 12 years ago (diff)

Tweaks to shutdown 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                load();
101        }
102
103        void saveIniData()
104        {
105                save();         
106                hal::ini().save_data();
107        }
108       
109        friend class boost::serialization::access;
110        template<class Archive>
111        void serialize(Archive& ar, const unsigned int version)
112        {       
113        ar & BOOST_SERIALIZATION_NVP(oneInst);
114                ar & BOOST_SERIALIZATION_NVP(logDebug_);
115                ar & boost::serialization::make_nvp("showMessage", showMessage_);
116               
117                ar & BOOST_SERIALIZATION_NVP(logToFile_);
118                if (version > 1)
119                        ar & BOOST_SERIALIZATION_NVP(logListLen_);
120                if (version > 0)
121                        ar & BOOST_SERIALIZATION_NVP(dll_);
122        }       
123       
124        bool logToFile() { return logToFile_; }
125        bool logDebug() { return logDebug_; }
126        const std::wstring& dll() { return dll_; }
127        const int logListLen() { return logListLen_; }
128        bool showMessage() { return showMessage_; }
129       
130        friend class GeneralOptions;
131        friend class SplashDialog;
132        friend class AdvDebugDialog;
133        friend int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
134       
135private:
136        std::wstring dll_;
137        bool oneInst;
138        bool logDebug_;
139        bool showMessage_;
140        bool logToFile_;
141        size_t logListLen_;
142};
143
144Halite& halite();
145
146BOOST_CLASS_VERSION(Halite, 3)
Note: See TracBrowser for help on using the repository browser.