Imported Upstream version 1
[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     bool close_on_unfocus;
33
34     bool mainwindow_decorated;
35     bool mainwindow_keep_above;
36     bool mainwindow_sticky;
37     bool mainwindow_skip_taskbar;
38     bool mainwindow_resizable;
39     GtkWindowPosition mainwindow_position;
40     int mainwindow_xoffset;
41     int mainwindow_yoffset;
42
43 private:
44     static Config* _instance;
45     static void Destroy();
46
47     template <class T> bool fromString(T& t, const string& s);
48     string strip(string const& str);
49
50     std::ifstream file;
51
52 protected:
53     explicit Config();
54     ~Config();
55
56     void getDefaults();
57     bool getFile();
58     void readFile();
59     void parseLine(string line);
60     void addOption(string var, string val);
61
62 };
63
64 #endif