1 // This file is part of Heimer.
2 // Copyright (C) 2020 Jussi Lind <jussi.lind@iki.fi>
3 //
4 // Heimer is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 // Heimer is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with Heimer. If not, see <http://www.gnu.org/licenses/>.
15 
16 #ifndef SETTINGS_PROXY_HPP
17 #define SETTINGS_PROXY_HPP
18 
19 #include "edge.hpp"
20 
21 #include <memory>
22 
23 class SettingsProxy
24 {
25 public:
26     SettingsProxy();
27 
28     static SettingsProxy & instance();
29 
30     bool autosave() const;
31 
32     void setAutosave(bool autosave);
33 
34     Edge::ArrowMode edgeArrowMode() const;
35 
36     void setEdgeArrowMode(Edge::ArrowMode mode);
37 
38     bool reversedEdgeDirection() const;
39 
40     void setReversedEdgeDirection(bool reversedEdgeDirection);
41 
42     bool selectNodeGroupByIntersection() const;
43 
44     void setSelectNodeGroupByIntersection(bool selectNodeGroupByIntersection);
45 
46 private:
47     bool m_autosave = false;
48 
49     Edge::ArrowMode m_edgeArrowMode;
50 
51     bool m_reversedEdgeDirection = false;
52 
53     bool m_selectNodeGroupByIntersection = false;
54 
55     static std::unique_ptr<SettingsProxy> m_instance;
56 };
57 
58 #endif // SETTINGS_PROXY_HPP
59