1 #ifndef __WMSTATUS_H
2 #define __WMSTATUS_H
3 
4 #include "ywindow.h"
5 #include "ytimer.h"
6 
7 class YFrameWindow;
8 
9 class YWindowManagerStatus: public YWindow {
10 public:
11     YWindowManagerStatus();
12     virtual ~YWindowManagerStatus();
13 
14     virtual void configure(const YRect2& r2);
handleExpose(const XExposeEvent & expose)15     virtual void handleExpose(const XExposeEvent& expose) {}
16     virtual void paint(Graphics &g, const YRect &r);
repaint()17     virtual void repaint() { repaintSync(); }
18     virtual void repaintSync();
19 
20     void begin();
end()21     virtual void end() { hide(); }
22 
23     virtual mstring getStatus() = 0;
24     virtual mstring longestStatus() = 0;
25 
26 protected:
setScreen(int screen)27     void setScreen(int screen) { fScreen = screen; }
28     static YColorName statusFg;
29     static YColorName statusBg;
30     static YFont statusFont;
31 
32 private:
33     void configureStatus();
34     int fScreen;
35     bool fConfigured;
36 };
37 
38 class MoveSizeStatus: public YWindowManagerStatus {
39     typedef YWindowManagerStatus super;
40 
41 public:
42     MoveSizeStatus();
43     virtual ~MoveSizeStatus();
44 
45     virtual void end();
46     virtual mstring getStatus();
47     virtual mstring longestStatus();
48 
49     void begin(YFrameWindow *frame);
50     void setStatus(YFrameWindow *frame, const YRect &r);
51     void setStatus(YFrameWindow *frame);
52 private:
53 
54     int fX, fY, fW, fH;
55 };
56 
57 class WorkspaceStatus: public YWindowManagerStatus, public YTimerListener {
58     typedef YWindowManagerStatus super;
59 
60 public:
61     WorkspaceStatus();
62     virtual ~WorkspaceStatus();
63 
64     virtual void end();
65     virtual mstring getStatus();
66     virtual mstring longestStatus();
67 
68     void begin(long workspace);
69     virtual void setStatus(long workspace);
70     virtual bool handleTimer(YTimer *timer);
71 private:
72     WorkspaceStatus(YWindow *aParent, mstring templateString);
73     static mstring getStatus(const char* name);
74 
75     long workspace;
76     YTimer timer;
77 };
78 
79 extern lazy<MoveSizeStatus> statusMoveSize;
80 extern lazy<WorkspaceStatus> statusWorkspace;
81 
82 #endif
83 
84 // vim: set sw=4 ts=4 et:
85