Engauge Digitizer  2
StatusBar.h
1 /******************************************************************************************************
2  * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5  ******************************************************************************************************/
6 
7 #ifndef STATUS_BAR_H
8 #define STATUS_BAR_H
9 
10 #include <QComboBox>
11 #include <QMap>
12 #include <QObject>
13 #include <QString>
14 #include "StatusBarMode.h"
15 #include "ZoomFactor.h"
16 
17 class QFrame;
18 class QStatusBar;
19 class QTextEdit;
20 class QTimer;
21 
24 class StatusBar : public QObject
25 {
26  Q_OBJECT;
27 
28 public:
30  StatusBar(QStatusBar &statusBar);
31  ~StatusBar();
32 
34  void setCoordinates (const QString &coordsScreen,
35  const QString &coordsGraph,
36  const QString &resolutionGraph);
37 
39  void setStatusBarMode (StatusBarMode statusBarMode);
40 
42  void showTemporaryMessage(const QString &message);
43 
45  StatusBarMode statusBarMode() const { return m_statusBarMode; }
46 
48  void wakeUp ();
49 
50 public slots:
52  void slotZoom(int);
53 
54 private slots:
56  void slotComboUnits (const QString &);
57 
59  void slotComboZoom (const QString &);
60 
63  void slotStatusBarChanged(const QString &message);
64 
66  void slotTimeout();
67 
68 signals:
70  void signalZoom (int);
71 
72 private:
73  StatusBar();
74 
75  void createGroupUnits ();
76  void createZoom ();
77  void createZoomMaps ();
78  void updateCoordsText ();
79 
80  enum StatusBarUnits {
81  STATUS_BAR_UNITS_COORDS_SCREEN,
82  STATUS_BAR_UNITS_COORDS_GRAPH,
83  STATUS_BAR_UNITS_RESOLUTION_GRAPH
84  };
85 
86  QStatusBar &m_statusBar;
87 
88  QComboBox *m_cmbZoom;
89 
90  QFrame *m_groupUnits;
91  QComboBox *m_cmbUnits;
92  QTextEdit *m_editCoords;
93 
94  QString m_coordsScreen;
95  QString m_coordsGraph;
96  QString m_resolutionGraph;
97 
98  StatusBarMode m_statusBarMode;
99 
100  QTimer *m_timer;
101 
102  // Map to/from/between zoom enumerations. These eliminate the need for switch statements
103  QMap<ZoomFactor, QString> m_zoomMapToLabel;
104  QMap<QString, ZoomFactor> m_zoomMapFromLabel;
105 };
106 
107 #endif // STATUS_BAR_H
void setStatusBarMode(StatusBarMode statusBarMode)
Set the status bar visibility mode.
Definition: StatusBar.cpp:217
void setCoordinates(const QString &coordsScreen, const QString &coordsGraph, const QString &resolutionGraph)
Populate the coordinates fields. Unavailable values are empty. Html-encoding to highlight with colors...
Definition: StatusBar.cpp:198
void slotZoom(int)
Receive zoom selection from MainWindow.
Definition: StatusBar.cpp:279
void wakeUp()
Enable all widgets in the status bar. This is called just after a Document becomes active...
Definition: StatusBar.cpp:300
void signalZoom(int)
Send zoom factor, that was just selected in the status bar, to MainWindow.
StatusBarMode statusBarMode() const
Current mode for status bar visibility. This is tracked locally so this class knows when to hide/show...
Definition: StatusBar.h:45
Wrapper around QStatusBar to manage permanent widgets.
Definition: StatusBar.h:24
void showTemporaryMessage(const QString &message)
Show temporary message in status bar. After a short interval the message will disappear.
Definition: StatusBar.cpp:227