Files
haiku-beta6/src/prefs/screen/RefreshSlider.cpp
T
ejakowatz 52a3801208 It is accomplished ...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-09 12:24:59 +00:00

106 lines
1.5 KiB
C++

#include <StringView.h>
#include <Window.h>
#include <Locker.h>
#include <Slider.h>
#include <String.h>
#include <cstdlib>
#include <cstring>
#include "RefreshSlider.h"
#include "Constants.h"
RefreshSlider::RefreshSlider(BRect frame)
: BSlider(frame, "Screen", "Refresh Rate:", new BMessage(SLIDER_INVOKE_MSG), 450, 845)
{
fStatus = (char*)malloc(64);
}
RefreshSlider::~RefreshSlider()
{
if (fStatus)
free(fStatus);
}
void RefreshSlider::DrawFocusMark()
{
if (IsFocus())
{
rgb_color blueColor = {0, 0, 229, 255};
BRect Rect;
BView *View;
Rect = ThumbFrame();
View = OffscreenView();
Rect.InsetBy(2.0, 2.0);
Rect.right = Rect.right - 1;
Rect.bottom = Rect.bottom - 1;
View->SetHighColor(blueColor);
View->StrokeRect(Rect);
}
}
void RefreshSlider::KeyDown(const char *bytes, int32 numBytes)
{
switch ( *bytes )
{
case B_LEFT_ARROW:
{
SetValue(Value() - 1);
Invoke();
break;
}
case B_RIGHT_ARROW:
{
SetValue(Value() + 1);
Invoke();
break;
}
default:
break;
}
}
char* RefreshSlider::UpdateText() const
{
if (fStatus && Window()->Lock())
{
BString String;
String << Value();
int32 Len = String.Length()+1;
strcpy(fStatus, String.LockBuffer(Len));
char Last = fStatus[2];
String.UnlockBuffer(Len);
String.Truncate(2);
String << "." << Last << " Hz";
strcpy(fStatus, String.LockBuffer(Len));
String.UnlockBuffer(Len);
return(fStatus);
}
else
{
return NULL;
}
}