d8fb038a1624b4189e1d93dbfd38e5e21fdeeee8
[debian/gsimplecal.git] / src / Config.hpp
1 #ifndef CONFIG_HPP
2 #define CONFIG_HPP
3
4 #include <iostream>
5 #include <fstream>
6 #include <string>
7 #include <vector>
8
9 #include <gtk/gtk.h>
10
11 using namespace std;
12
13 typedef struct _ClockInfo
14 {
15     string label;
16     string timezone;
17 } ClockInfo;
18
19 class Config
20 {
21 public:
22     static Config* getInstance();
23
24     // options
25     bool show_calendar;
26     bool show_timezones;
27     string clock_format;
28     vector<ClockInfo*> clocks;
29     bool mark_today;
30     string external_viewer;
31     bool show_week_numbers;
32
33     bool mainwindow_decorated;
34     bool mainwindow_keep_above;
35     bool mainwindow_sticky;
36     bool mainwindow_skip_taskbar;
37     bool mainwindow_resizable;
38     GtkWindowPosition mainwindow_position;
39
40 private:
41     static Config* _instance;
42     static void Destroy();
43
44     template <class T> bool fromString(T& t, const string& s);
45     string strip(string const& str);
46
47     std::ifstream file;
48
49 protected:
50     explicit Config();
51     ~Config();
52
53     void getDefaults();
54     bool getFile();
55     void readFile();
56     void parseLine(string line);
57     void addOption(string var, string val);
58
59 };
60
61 #endif