forked from jackburton79/bescreencapture
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CamStatusView.cpp
127 lines (102 loc) · 1.94 KB
/
CamStatusView.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include "CamStatusView.h"
#include "Controller.h"
#include "ControllerObserver.h"
#include "messages.h"
#include <LayoutUtils.h>
#include <Message.h>
#include <Window.h>
#include <stdio.h>
CamStatusView::CamStatusView(const char *name)
:
BView(name, B_WILL_DRAW),
fRecording(false),
fPaused(false)
{
}
void
CamStatusView::AttachedToWindow()
{
if (Parent())
SetViewColor(Parent()->ViewColor());
}
void
CamStatusView::Draw(BRect updateRect)
{
BRect bounds = Bounds();
if (fRecording) {
if (fPaused) {
SetHighColor(0, 240, 0);
BRect one(2, 1, bounds.right / 2 - 2, bounds.bottom - 1);
FillRect(one);
one.OffsetTo(bounds.Width() - one.Width() - 2, 1);
FillRect(one);
} else {
SetHighColor(248, 0, 0);
//bounds.InsetBy(4, 4);
FillEllipse(bounds);
}
}
}
void
CamStatusView::MessageReceived(BMessage *message)
{
switch (message->what) {
case B_OBSERVER_NOTICE_CHANGE:
{
int32 what;
message->FindInt32("be:observe_change_what", &what);
switch (what) {
case kMsgControllerCaptureStarted:
SetRecording(true);
break;
case kMsgControllerCaptureStopped:
if (fPaused)
fPaused = false;
SetRecording(false);
break;
case kMsgControllerCapturePaused:
case kMsgControllerCaptureResumed:
TogglePause(what == kMsgControllerCapturePaused);
break;
default:
break;
}
break;
}
default:
BView::MessageReceived(message);
break;
}
}
void
CamStatusView::TogglePause(const bool paused)
{
fPaused = paused;
Invalidate();
}
bool
CamStatusView::Paused() const
{
return fPaused;
}
void
CamStatusView::SetRecording(const bool recording)
{
fRecording = recording;
Invalidate();
}
bool
CamStatusView::Recording() const
{
return fRecording;
}
BSize
CamStatusView::MinSize()
{
return BLayoutUtils::ComposeSize(ExplicitMinSize(), BSize(25, 25));
}
BSize
CamStatusView::MaxSize()
{
return BLayoutUtils::ComposeSize(ExplicitMaxSize(), BSize(25, 25));
}