* Added missing license headers.
* Coding style cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33449 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1,3 +1,12 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2008-2009, Haiku, Inc.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Clemens Zeidler ([email protected])
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "TouchpadPref.h"
|
#include "TouchpadPref.h"
|
||||||
|
|
||||||
#include <List.h>
|
#include <List.h>
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
#ifndef TouchpadPref_h
|
/*
|
||||||
#define TouchpadPref_h
|
* Copyright 2008-2009, Haiku, Inc.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Clemens Zeidler ([email protected])
|
||||||
|
*/
|
||||||
|
#ifndef TOUCHPAD_PREF_H
|
||||||
|
#define TOUCHPAD_PREF_H
|
||||||
|
|
||||||
|
|
||||||
#define DEBUG 1
|
#define DEBUG 1
|
||||||
#include <Debug.h>
|
#include <Debug.h>
|
||||||
@@ -15,9 +23,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// draw a touchpad
|
class TouchpadPref {
|
||||||
class TouchpadPref
|
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
TouchpadPref();
|
TouchpadPref();
|
||||||
~TouchpadPref();
|
~TouchpadPref();
|
||||||
@@ -25,12 +31,16 @@ class TouchpadPref
|
|||||||
void Revert();
|
void Revert();
|
||||||
void Defaults();
|
void Defaults();
|
||||||
|
|
||||||
BPoint WindowPosition(){return fWindowPosition;}
|
BPoint WindowPosition()
|
||||||
void SetWindowPosition(BPoint position){
|
{ return fWindowPosition; }
|
||||||
fWindowPosition = position;}
|
void SetWindowPosition(BPoint position)
|
||||||
|
{ fWindowPosition = position; }
|
||||||
|
|
||||||
|
touchpad_settings& Settings()
|
||||||
|
{ return fSettings; }
|
||||||
|
|
||||||
touchpad_settings * GetSettings(){return &fSettings;}
|
|
||||||
status_t UpdateSettings();
|
status_t UpdateSettings();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
status_t GetSettingsPath(BPath& path);
|
status_t GetSettingsPath(BPath& path);
|
||||||
status_t LoadSettings();
|
status_t LoadSettings();
|
||||||
@@ -47,4 +57,4 @@ class TouchpadPref
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif // TOUCHPAD_PREF_H
|
||||||
|
|||||||
@@ -1,3 +1,12 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2008-2009, Haiku, Inc.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Clemens Zeidler ([email protected])
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "TouchpadPrefView.h"
|
#include "TouchpadPrefView.h"
|
||||||
#include "kb_mouse_driver.h"
|
#include "kb_mouse_driver.h"
|
||||||
|
|
||||||
@@ -25,7 +34,8 @@ const uint32 SCROLL_Y_DRAG = 'sydr';
|
|||||||
|
|
||||||
|
|
||||||
TouchpadView::TouchpadView(BRect frame)
|
TouchpadView::TouchpadView(BRect frame)
|
||||||
:BView(frame, "TouchpadView", B_FOLLOW_NONE, B_WILL_DRAW)
|
:
|
||||||
|
BView(frame, "TouchpadView", B_FOLLOW_NONE, B_WILL_DRAW)
|
||||||
{
|
{
|
||||||
fXTracking = false;
|
fXTracking = false;
|
||||||
fYTracking = false;
|
fYTracking = false;
|
||||||
@@ -43,32 +53,28 @@ TouchpadView::TouchpadView(BRect frame)
|
|||||||
|
|
||||||
TouchpadView::~TouchpadView()
|
TouchpadView::~TouchpadView()
|
||||||
{
|
{
|
||||||
if(fOffScreenBitmap){
|
puts("GONE!");
|
||||||
delete fOffScreenBitmap;
|
delete fOffScreenBitmap;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TouchpadView::Draw(BRect updateRect)
|
TouchpadView::Draw(BRect updateRect)
|
||||||
{
|
{
|
||||||
DrawSliders();
|
DrawSliders();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TouchpadView::MouseDown(BPoint point)
|
TouchpadView::MouseDown(BPoint point)
|
||||||
{
|
{
|
||||||
if(fXScrollDragZone.Contains(point))
|
if (fXScrollDragZone.Contains(point)) {
|
||||||
{
|
|
||||||
fXTracking = true;
|
fXTracking = true;
|
||||||
fOldXScrollRange = fXScrollRange;
|
fOldXScrollRange = fXScrollRange;
|
||||||
SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS);
|
SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fYScrollDragZone.Contains(point))
|
if (fYScrollDragZone.Contains(point)) {
|
||||||
{
|
|
||||||
fYTracking = true;
|
fYTracking = true;
|
||||||
fOldYScrollRange = fYScrollRange;
|
fOldYScrollRange = fYScrollRange;
|
||||||
SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS);
|
SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS);
|
||||||
@@ -79,29 +85,29 @@ TouchpadView::MouseDown(BPoint point)
|
|||||||
void
|
void
|
||||||
TouchpadView::MouseUp(BPoint point)
|
TouchpadView::MouseUp(BPoint point)
|
||||||
{
|
{
|
||||||
if(fXTracking || fYTracking){
|
if (!fXTracking && !fYTracking)
|
||||||
|
return;
|
||||||
|
|
||||||
fXTracking = false;
|
fXTracking = false;
|
||||||
fYTracking = false;
|
fYTracking = false;
|
||||||
|
|
||||||
int32 result = 0;
|
int32 result = 0;
|
||||||
if (GetRightScrollRatio() > 0.7 || GetBottomScrollRatio() > 0.7) {
|
if (GetRightScrollRatio() > 0.7 || GetBottomScrollRatio() > 0.7) {
|
||||||
BAlert *alert = new BAlert("ReallyChangeScrollArea",
|
BAlert *alert = new BAlert("ReallyChangeScrollArea",
|
||||||
"The new scroll area is very small. Do you really want to change the scroll area?", "Ok", "Cancel",
|
"The new scroll area is very small. Do you really want to change "
|
||||||
NULL,
|
"the scroll area?", "Ok", "Cancel", NULL, B_WIDTH_AS_USUAL,
|
||||||
B_WIDTH_AS_USUAL,
|
|
||||||
B_WARNING_ALERT);
|
B_WARNING_ALERT);
|
||||||
result = alert->Go();
|
result = alert->Go();
|
||||||
}
|
}
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
BMessage msg(SCROLL_AREA_CHANGED);
|
BMessage msg(SCROLL_AREA_CHANGED);
|
||||||
Invoke(&msg);
|
Invoke(&msg);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
fXScrollRange = fOldXScrollRange;
|
fXScrollRange = fOldXScrollRange;
|
||||||
fYScrollRange = fOldYScrollRange;
|
fYScrollRange = fOldYScrollRange;
|
||||||
DrawSliders();
|
DrawSliders();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -115,7 +121,6 @@ TouchpadView::AttachedToWindow()
|
|||||||
|
|
||||||
if (fOffScreenBitmap && fOffScreenView)
|
if (fOffScreenBitmap && fOffScreenView)
|
||||||
fOffScreenBitmap->AddChild(fOffScreenView);
|
fOffScreenBitmap->AddChild(fOffScreenView);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,7 +137,9 @@ TouchpadView::SetValues(float rightRange, float bottomRange)
|
|||||||
void
|
void
|
||||||
TouchpadView::GetPreferredSize(float* width, float* height)
|
TouchpadView::GetPreferredSize(float* width, float* height)
|
||||||
{
|
{
|
||||||
|
if (width != NULL)
|
||||||
*width = fPrefRect.Width();
|
*width = fPrefRect.Width();
|
||||||
|
if (height != NULL)
|
||||||
*height = fPrefRect.Height();
|
*height = fPrefRect.Height();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,28 +148,24 @@ void
|
|||||||
TouchpadView::MouseMoved(BPoint point, uint32 transit, const BMessage* message)
|
TouchpadView::MouseMoved(BPoint point, uint32 transit, const BMessage* message)
|
||||||
{
|
{
|
||||||
if (fXTracking) {
|
if (fXTracking) {
|
||||||
if(point.x > fPadRect.right){
|
if (point.x > fPadRect.right)
|
||||||
fXScrollRange = fPadRect.Width();
|
fXScrollRange = fPadRect.Width();
|
||||||
}
|
else if (point.x < fPadRect.left)
|
||||||
else if(point.x < fPadRect.left){
|
|
||||||
fXScrollRange = 0;
|
fXScrollRange = 0;
|
||||||
}
|
else
|
||||||
else{
|
|
||||||
fXScrollRange = point.x - fPadRect.left;
|
fXScrollRange = point.x - fPadRect.left;
|
||||||
}
|
|
||||||
DrawSliders();
|
DrawSliders();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fYTracking){
|
if (fYTracking){
|
||||||
if(point.y > fPadRect.bottom){
|
if (point.y > fPadRect.bottom)
|
||||||
fYScrollRange = fPadRect.Height();
|
fYScrollRange = fPadRect.Height();
|
||||||
}
|
else if (point.y < fPadRect.top)
|
||||||
else if(point.y < fPadRect.top){
|
|
||||||
fYScrollRange = 0;
|
fYScrollRange = 0;
|
||||||
}
|
else
|
||||||
else{
|
|
||||||
fYScrollRange = point.y - fPadRect.top;
|
fYScrollRange = point.y - fPadRect.top;
|
||||||
}
|
|
||||||
DrawSliders();
|
DrawSliders();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -172,15 +175,15 @@ TouchpadView::MouseMoved(BPoint point, uint32 transit, const BMessage *message)
|
|||||||
void
|
void
|
||||||
TouchpadView::DrawSliders()
|
TouchpadView::DrawSliders()
|
||||||
{
|
{
|
||||||
BView *view = NULL;
|
BView *view;
|
||||||
if(fOffScreenView){
|
if (fOffScreenView != NULL)
|
||||||
view = fOffScreenView;
|
view = fOffScreenView;
|
||||||
}
|
else
|
||||||
else{
|
|
||||||
view = this;
|
view = this;
|
||||||
}
|
|
||||||
|
|
||||||
if (LockLooper()) {
|
if (!LockLooper())
|
||||||
|
return;
|
||||||
|
|
||||||
if (fOffScreenBitmap->Lock()) {
|
if (fOffScreenBitmap->Lock()) {
|
||||||
view->SetHighColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
view->SetHighColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||||
view->FillRect(Bounds());
|
view->FillRect(Bounds());
|
||||||
@@ -210,12 +213,10 @@ TouchpadView::DrawSliders()
|
|||||||
BPoint(fPadRect.left + fXScrollRange, fPadRect.bottom));
|
BPoint(fPadRect.left + fXScrollRange, fPadRect.bottom));
|
||||||
|
|
||||||
fXScrollDragZone = BRect(fPadRect.left + fXScrollRange - dragSize,
|
fXScrollDragZone = BRect(fPadRect.left + fXScrollRange - dragSize,
|
||||||
fPadRect.top - dragSize,
|
fPadRect.top - dragSize, fPadRect.left + fXScrollRange + dragSize,
|
||||||
fPadRect.left + fXScrollRange + dragSize,
|
|
||||||
fPadRect.bottom + dragSize);
|
fPadRect.bottom + dragSize);
|
||||||
fXScrollDragZone1 = BRect(fPadRect.left + fXScrollRange - dragSize,
|
fXScrollDragZone1 = BRect(fPadRect.left + fXScrollRange - dragSize,
|
||||||
fPadRect.top - dragSize,
|
fPadRect.top - dragSize, fPadRect.left + fXScrollRange + dragSize,
|
||||||
fPadRect.left + fXScrollRange + dragSize,
|
|
||||||
fPadRect.top + dragSize);
|
fPadRect.top + dragSize);
|
||||||
view->FillRect(fXScrollDragZone1);
|
view->FillRect(fXScrollDragZone1);
|
||||||
fXScrollDragZone2 = BRect(fPadRect.left + fXScrollRange - dragSize,
|
fXScrollDragZone2 = BRect(fPadRect.left + fXScrollRange - dragSize,
|
||||||
@@ -233,65 +234,65 @@ TouchpadView::DrawSliders()
|
|||||||
fPadRect.right + dragSize,
|
fPadRect.right + dragSize,
|
||||||
fPadRect.top + fYScrollRange + dragSize);
|
fPadRect.top + fYScrollRange + dragSize);
|
||||||
fYScrollDragZone1 = BRect(fPadRect.left - dragSize,
|
fYScrollDragZone1 = BRect(fPadRect.left - dragSize,
|
||||||
fPadRect.top + fYScrollRange - dragSize,
|
fPadRect.top + fYScrollRange - dragSize, fPadRect.left + dragSize,
|
||||||
fPadRect.left + dragSize,
|
|
||||||
fPadRect.top + fYScrollRange + dragSize);
|
fPadRect.top + fYScrollRange + dragSize);
|
||||||
view->FillRect(fYScrollDragZone1);
|
view->FillRect(fYScrollDragZone1);
|
||||||
fYScrollDragZone2 = BRect(fPadRect.right - dragSize,
|
fYScrollDragZone2 = BRect(fPadRect.right - dragSize,
|
||||||
fPadRect.top + fYScrollRange - dragSize,
|
fPadRect.top + fYScrollRange - dragSize, fPadRect.right + dragSize,
|
||||||
fPadRect.right + dragSize,
|
|
||||||
fPadRect.top + fYScrollRange + dragSize);
|
fPadRect.top + fYScrollRange + dragSize);
|
||||||
view->FillRect(fYScrollDragZone2);
|
view->FillRect(fYScrollDragZone2);
|
||||||
|
|
||||||
fOffScreenView->Sync();
|
fOffScreenView->Sync();
|
||||||
fOffScreenBitmap->Unlock();
|
fOffScreenBitmap->Unlock();
|
||||||
DrawBitmap(fOffScreenBitmap, B_ORIGIN);
|
DrawBitmap(fOffScreenBitmap, B_ORIGIN);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
UnlockLooper();
|
UnlockLooper();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// -------TouchpadPrefView----------
|
|
||||||
|
// #pragma mark - TouchpadPrefView
|
||||||
|
|
||||||
|
|
||||||
TouchpadPrefView::TouchpadPrefView(BRect frame, const char *name)
|
TouchpadPrefView::TouchpadPrefView(BRect frame, const char *name)
|
||||||
:BView(frame, name, B_FOLLOW_ALL_SIDES, 0)
|
:
|
||||||
|
BView(frame, name, B_FOLLOW_ALL_SIDES, 0)
|
||||||
{
|
{
|
||||||
SetupView();
|
SetupView();
|
||||||
// set view values
|
// set view values
|
||||||
SetValues(fTouchpadPref.GetSettings());
|
SetValues(&fTouchpadPref.Settings());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TouchpadPrefView::~TouchpadPrefView()
|
TouchpadPrefView::~TouchpadPrefView()
|
||||||
{
|
{
|
||||||
delete fTouchpadView;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TouchpadPrefView::MessageReceived(BMessage* msg)
|
TouchpadPrefView::MessageReceived(BMessage* msg)
|
||||||
{
|
{
|
||||||
touchpad_settings *settings = fTouchpadPref.GetSettings();
|
touchpad_settings& settings = fTouchpadPref.Settings();
|
||||||
switch (msg->what) {
|
switch (msg->what) {
|
||||||
case SCROLL_AREA_CHANGED:
|
case SCROLL_AREA_CHANGED:
|
||||||
settings->scroll_rightrange = fTouchpadView->GetRightScrollRatio();
|
settings.scroll_rightrange = fTouchpadView->GetRightScrollRatio();
|
||||||
settings->scroll_bottomrange = fTouchpadView->GetBottomScrollRatio();
|
settings.scroll_bottomrange = fTouchpadView->GetBottomScrollRatio();
|
||||||
fRevertButton->SetEnabled(true);
|
fRevertButton->SetEnabled(true);
|
||||||
fTouchpadPref.UpdateSettings();
|
fTouchpadPref.UpdateSettings();
|
||||||
break;
|
break;
|
||||||
case SCROLL_CONTROL_CHANGED:
|
case SCROLL_CONTROL_CHANGED:
|
||||||
settings->scroll_twofinger = (fTwoFingerBox->Value() == B_CONTROL_ON) ? true : false;
|
settings.scroll_twofinger = fTwoFingerBox->Value() == B_CONTROL_ON;
|
||||||
settings->scroll_multifinger = (fMultiFingerBox->Value() == B_CONTROL_ON) ? true : false;
|
settings.scroll_multifinger
|
||||||
settings->scroll_acceleration = fScrollAccelSlider->Value();
|
= fMultiFingerBox->Value() == B_CONTROL_ON;
|
||||||
settings->scroll_xstepsize = (20 - fScrollStepXSlider->Value()) * 3;
|
settings.scroll_acceleration = fScrollAccelSlider->Value();
|
||||||
settings->scroll_ystepsize = (20 - fScrollStepYSlider->Value()) * 3;
|
settings.scroll_xstepsize = (20 - fScrollStepXSlider->Value()) * 3;
|
||||||
|
settings.scroll_ystepsize = (20 - fScrollStepYSlider->Value()) * 3;
|
||||||
fRevertButton->SetEnabled(true);
|
fRevertButton->SetEnabled(true);
|
||||||
fTouchpadPref.UpdateSettings();
|
fTouchpadPref.UpdateSettings();
|
||||||
break;
|
break;
|
||||||
case TAP_CONTROL_CHANGED:
|
case TAP_CONTROL_CHANGED:
|
||||||
settings->tapgesture_sensibility = fTapSlider->Value();
|
settings.tapgesture_sensibility = fTapSlider->Value();
|
||||||
fRevertButton->SetEnabled(true);
|
fRevertButton->SetEnabled(true);
|
||||||
fTouchpadPref.UpdateSettings();
|
fTouchpadPref.UpdateSettings();
|
||||||
break;
|
break;
|
||||||
@@ -299,13 +300,13 @@ TouchpadPrefView::MessageReceived(BMessage *msg)
|
|||||||
fTouchpadPref.Defaults();
|
fTouchpadPref.Defaults();
|
||||||
fRevertButton->SetEnabled(true);
|
fRevertButton->SetEnabled(true);
|
||||||
fTouchpadPref.UpdateSettings();
|
fTouchpadPref.UpdateSettings();
|
||||||
SetValues(settings);
|
SetValues(&settings);
|
||||||
break;
|
break;
|
||||||
case REVERT_SETTINGS:
|
case REVERT_SETTINGS:
|
||||||
fTouchpadPref.Revert();
|
fTouchpadPref.Revert();
|
||||||
fTouchpadPref.UpdateSettings();
|
fTouchpadPref.UpdateSettings();
|
||||||
fRevertButton->SetEnabled(false);
|
fRevertButton->SetEnabled(false);
|
||||||
SetValues(settings);
|
SetValues(&settings);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
BView::MessageReceived(msg);
|
BView::MessageReceived(msg);
|
||||||
@@ -329,20 +330,17 @@ TouchpadPrefView::AttachedToWindow()
|
|||||||
BSize size = PreferredSize();
|
BSize size = PreferredSize();
|
||||||
Window()->ResizeTo(size.width, size.height);
|
Window()->ResizeTo(size.width, size.height);
|
||||||
|
|
||||||
BRect rect = BScreen().Frame();
|
|
||||||
BRect windowFrame = Window()->Frame();
|
|
||||||
BPoint position = fTouchpadPref.WindowPosition();
|
BPoint position = fTouchpadPref.WindowPosition();
|
||||||
// center window on screen if it had a bad position
|
// center window on screen if it had a bad position
|
||||||
if(position.x < 0 && position.y < 0){
|
if (position.x < 0 && position.y < 0)
|
||||||
position.x = (rect.Width() - windowFrame.Width()) / 2;
|
Window()->CenterOnScreen();
|
||||||
position.y = (rect.Height() - windowFrame.Height()) / 2;
|
else
|
||||||
}
|
|
||||||
Window()->MoveTo(position);
|
Window()->MoveTo(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TouchpadPrefView::DetachedFromWindow(void)
|
TouchpadPrefView::DetachedFromWindow()
|
||||||
{
|
{
|
||||||
fTouchpadPref.SetWindowPosition(Window()->Frame().LeftTop());
|
fTouchpadPref.SetWindowPosition(Window()->Frame().LeftTop());
|
||||||
}
|
}
|
||||||
@@ -362,26 +360,30 @@ TouchpadPrefView::SetupView()
|
|||||||
fTouchpadView->SetExplicitMaxSize(BSize(130, 120));
|
fTouchpadView->SetExplicitMaxSize(BSize(130, 120));
|
||||||
|
|
||||||
// Create the "Mouse Speed" slider...
|
// Create the "Mouse Speed" slider...
|
||||||
fScrollAccelSlider = new BSlider(rect, "scroll_accel", "Scroll Acceleration",
|
fScrollAccelSlider = new BSlider(rect, "scroll_accel",
|
||||||
new BMessage(SCROLL_CONTROL_CHANGED), 0, 20);
|
"Scroll Acceleration", new BMessage(SCROLL_CONTROL_CHANGED), 0, 20);
|
||||||
fScrollAccelSlider->SetHashMarks(B_HASH_MARKS_BOTTOM);
|
fScrollAccelSlider->SetHashMarks(B_HASH_MARKS_BOTTOM);
|
||||||
fScrollAccelSlider->SetHashMarkCount(7);
|
fScrollAccelSlider->SetHashMarkCount(7);
|
||||||
fScrollAccelSlider->SetLimitLabels("Slow", "Fast");
|
fScrollAccelSlider->SetLimitLabels("Slow", "Fast");
|
||||||
|
|
||||||
fScrollStepXSlider = new BSlider(rect, "scroll_stepX", "Horizontal Scroll Stepsize",
|
fScrollStepXSlider = new BSlider(rect, "scroll_stepX",
|
||||||
new BMessage(SCROLL_CONTROL_CHANGED), 0, 20);
|
"Horizontal Scroll Step Size", new BMessage(SCROLL_CONTROL_CHANGED), 0,
|
||||||
|
20);
|
||||||
fScrollStepXSlider->SetHashMarks(B_HASH_MARKS_BOTTOM);
|
fScrollStepXSlider->SetHashMarks(B_HASH_MARKS_BOTTOM);
|
||||||
fScrollStepXSlider->SetHashMarkCount(7);
|
fScrollStepXSlider->SetHashMarkCount(7);
|
||||||
fScrollStepXSlider->SetLimitLabels("Wide", "Small");
|
fScrollStepXSlider->SetLimitLabels("Wide", "Small");
|
||||||
|
|
||||||
fScrollStepYSlider = new BSlider(rect, "scroll_stepY", "Vertical Scroll Stepsize",
|
fScrollStepYSlider = new BSlider(rect, "scroll_stepY",
|
||||||
new BMessage(SCROLL_CONTROL_CHANGED), 0, 20);
|
"Vertical Scroll Step Size", new BMessage(SCROLL_CONTROL_CHANGED), 0,
|
||||||
|
20);
|
||||||
fScrollStepYSlider->SetHashMarks(B_HASH_MARKS_BOTTOM);
|
fScrollStepYSlider->SetHashMarks(B_HASH_MARKS_BOTTOM);
|
||||||
fScrollStepYSlider->SetHashMarkCount(7);
|
fScrollStepYSlider->SetHashMarkCount(7);
|
||||||
fScrollStepYSlider->SetLimitLabels("Wide", "Small");
|
fScrollStepYSlider->SetLimitLabels("Wide", "Small");
|
||||||
|
|
||||||
fTwoFingerBox = new BCheckBox("Two Finger Scrolling", new BMessage(SCROLL_CONTROL_CHANGED));
|
fTwoFingerBox = new BCheckBox("Two Finger Scrolling",
|
||||||
fMultiFingerBox = new BCheckBox("Multi Finger Scrolling", new BMessage(SCROLL_CONTROL_CHANGED));
|
new BMessage(SCROLL_CONTROL_CHANGED));
|
||||||
|
fMultiFingerBox = new BCheckBox("Multi Finger Scrolling",
|
||||||
|
new BMessage(SCROLL_CONTROL_CHANGED));
|
||||||
|
|
||||||
BGroupView* scrollPrefLeftLayout = new BGroupView(B_VERTICAL);
|
BGroupView* scrollPrefLeftLayout = new BGroupView(B_VERTICAL);
|
||||||
scrollPrefLeftLayout->AddChild(fTouchpadView);
|
scrollPrefLeftLayout->AddChild(fTouchpadView);
|
||||||
@@ -395,7 +397,8 @@ TouchpadPrefView::SetupView()
|
|||||||
|
|
||||||
BGroupLayout* scrollPrefLayout = new BGroupLayout(B_HORIZONTAL);
|
BGroupLayout* scrollPrefLayout = new BGroupLayout(B_HORIZONTAL);
|
||||||
scrollPrefLayout->SetSpacing(10);
|
scrollPrefLayout->SetSpacing(10);
|
||||||
scrollPrefLayout->SetInsets(10, scrollBox->TopBorderOffset() * 2 + 10, 10, 10);
|
scrollPrefLayout->SetInsets(10, scrollBox->TopBorderOffset() * 2 + 10, 10,
|
||||||
|
10);
|
||||||
scrollBox->SetLayout(scrollPrefLayout);
|
scrollBox->SetLayout(scrollPrefLayout);
|
||||||
|
|
||||||
scrollPrefLayout->AddView(scrollPrefLeftLayout);
|
scrollPrefLayout->AddView(scrollPrefLeftLayout);
|
||||||
@@ -418,13 +421,12 @@ TouchpadPrefView::SetupView()
|
|||||||
tapPrefLayout->AddView(fTapSlider);
|
tapPrefLayout->AddView(fTapSlider);
|
||||||
|
|
||||||
BGroupView* buttonView = new BGroupView(B_HORIZONTAL);
|
BGroupView* buttonView = new BGroupView(B_HORIZONTAL);
|
||||||
fDefaultButton = new BButton("Defaults",
|
fDefaultButton = new BButton("Defaults", new BMessage(DEFAULT_SETTINGS));
|
||||||
new BMessage(DEFAULT_SETTINGS));
|
|
||||||
|
|
||||||
buttonView->AddChild(fDefaultButton);
|
buttonView->AddChild(fDefaultButton);
|
||||||
buttonView->GetLayout()->AddItem(BSpaceLayoutItem::CreateHorizontalStrut(7));
|
buttonView->GetLayout()->AddItem(
|
||||||
fRevertButton = new BButton("Revert",
|
BSpaceLayoutItem::CreateHorizontalStrut(7));
|
||||||
new BMessage(REVERT_SETTINGS));
|
fRevertButton = new BButton("Revert", new BMessage(REVERT_SETTINGS));
|
||||||
fRevertButton->SetEnabled(false);
|
fRevertButton->SetEnabled(false);
|
||||||
buttonView->AddChild(fRevertButton);
|
buttonView->AddChild(fRevertButton);
|
||||||
buttonView->GetLayout()->AddItem(BSpaceLayoutItem::CreateGlue());
|
buttonView->GetLayout()->AddItem(BSpaceLayoutItem::CreateGlue());
|
||||||
@@ -446,9 +448,12 @@ TouchpadPrefView::SetupView()
|
|||||||
void
|
void
|
||||||
TouchpadPrefView::SetValues(touchpad_settings* settings)
|
TouchpadPrefView::SetValues(touchpad_settings* settings)
|
||||||
{
|
{
|
||||||
fTouchpadView->SetValues(settings->scroll_rightrange, settings->scroll_bottomrange);
|
fTouchpadView->SetValues(settings->scroll_rightrange,
|
||||||
fTwoFingerBox->SetValue(settings->scroll_twofinger ? B_CONTROL_ON : B_CONTROL_OFF);
|
settings->scroll_bottomrange);
|
||||||
fMultiFingerBox->SetValue(settings->scroll_multifinger ? B_CONTROL_ON : B_CONTROL_OFF);
|
fTwoFingerBox->SetValue(settings->scroll_twofinger
|
||||||
|
? B_CONTROL_ON : B_CONTROL_OFF);
|
||||||
|
fMultiFingerBox->SetValue(settings->scroll_multifinger
|
||||||
|
? B_CONTROL_ON : B_CONTROL_OFF);
|
||||||
fScrollStepXSlider->SetValue(20 - settings->scroll_xstepsize / 2);
|
fScrollStepXSlider->SetValue(20 - settings->scroll_xstepsize / 2);
|
||||||
fScrollStepYSlider->SetValue(20 - settings->scroll_ystepsize / 2);
|
fScrollStepYSlider->SetValue(20 - settings->scroll_ystepsize / 2);
|
||||||
fScrollAccelSlider->SetValue(settings->scroll_acceleration);
|
fScrollAccelSlider->SetValue(settings->scroll_acceleration);
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
#ifndef TouchpadPrefView_h
|
/*
|
||||||
#define TouchpadPrefView_h
|
* Copyright 2008-2009, Haiku, Inc.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Clemens Zeidler ([email protected])
|
||||||
|
*/
|
||||||
|
#ifndef TOUCHPAD_PREF_VIEW_H
|
||||||
|
#define TOUCHPAD_PREF_VIEW_H
|
||||||
|
|
||||||
|
|
||||||
#include <Bitmap.h>
|
#include <Bitmap.h>
|
||||||
#include <Button.h>
|
#include <Button.h>
|
||||||
@@ -27,26 +35,29 @@ const uint DEFAULT_SETTINGS = '&dse';
|
|||||||
const uint REVERT_SETTINGS = '&rse';
|
const uint REVERT_SETTINGS = '&rse';
|
||||||
|
|
||||||
|
|
||||||
// draw a touchpad
|
//! Shows a touchpad
|
||||||
class TouchpadView : public BView, public BInvoker
|
class TouchpadView : public BView, public BInvoker {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
TouchpadView(BRect frame);
|
TouchpadView(BRect frame);
|
||||||
~TouchpadView();
|
virtual ~TouchpadView();
|
||||||
virtual void Draw(BRect updateRect);
|
virtual void Draw(BRect updateRect);
|
||||||
virtual void MouseDown(BPoint point);
|
virtual void MouseDown(BPoint point);
|
||||||
virtual void MouseUp(BPoint point);
|
virtual void MouseUp(BPoint point);
|
||||||
virtual void MouseMoved(BPoint point, uint32 transit, const BMessage *message);
|
virtual void MouseMoved(BPoint point, uint32 transit,
|
||||||
|
const BMessage* dragMessage);
|
||||||
|
|
||||||
virtual void AttachedToWindow();
|
virtual void AttachedToWindow();
|
||||||
virtual void GetPreferredSize(float* width, float* height);
|
virtual void GetPreferredSize(float* width, float* height);
|
||||||
|
|
||||||
void SetValues(float rightRange, float bottomRange);
|
void SetValues(float rightRange, float bottomRange);
|
||||||
float GetRightScrollRatio(){ return (1 - fXScrollRange / fPadRect.Width()); };
|
float GetRightScrollRatio()
|
||||||
float GetBottomScrollRatio(){ return (1 - fYScrollRange / fPadRect.Height()); };
|
{ return 1 - fXScrollRange / fPadRect.Width(); }
|
||||||
|
float GetBottomScrollRatio()
|
||||||
|
{ return 1
|
||||||
|
- fYScrollRange / fPadRect.Height(); }
|
||||||
private:
|
private:
|
||||||
|
|
||||||
virtual void DrawSliders();
|
virtual void DrawSliders();
|
||||||
|
|
||||||
BRect fPrefRect;
|
BRect fPrefRect;
|
||||||
BRect fPadRect;
|
BRect fPadRect;
|
||||||
BRect fXScrollDragZone;
|
BRect fXScrollDragZone;
|
||||||
@@ -67,20 +78,18 @@ class TouchpadView : public BView, public BInvoker
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class TouchpadPrefView : public BView
|
class TouchpadPrefView : public BView {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
TouchpadPrefView(BRect frame, const char* name);
|
TouchpadPrefView(BRect frame, const char* name);
|
||||||
~TouchpadPrefView();
|
virtual ~TouchpadPrefView();
|
||||||
virtual void MessageReceived(BMessage* msg);
|
virtual void MessageReceived(BMessage* msg);
|
||||||
virtual void AttachedToWindow();
|
virtual void AttachedToWindow();
|
||||||
virtual void DetachedFromWindow(void);
|
virtual void DetachedFromWindow();
|
||||||
void SetupView();
|
void SetupView();
|
||||||
|
|
||||||
void SetValues(touchpad_settings *settings);
|
void SetValues(touchpad_settings *settings);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// visual the touchpad
|
|
||||||
TouchpadView* fTouchpadView;
|
TouchpadView* fTouchpadView;
|
||||||
BCheckBox* fTwoFingerBox;
|
BCheckBox* fTwoFingerBox;
|
||||||
BCheckBox* fMultiFingerBox;
|
BCheckBox* fMultiFingerBox;
|
||||||
@@ -95,4 +104,4 @@ class TouchpadPrefView : public BView
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif // TOUCHPAD_PREF_VIEW_H
|
||||||
|
|||||||
@@ -1,20 +1,25 @@
|
|||||||
//Autor: Clemens Zeidler [email protected]
|
/*
|
||||||
//licence: MIT
|
* Copyright 2008-2009, Haiku, Inc.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Clemens Zeidler ([email protected])
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "TouchpadPrefView.h"
|
|
||||||
#include <Application.h>
|
#include <Application.h>
|
||||||
#include <Window.h>
|
#include <Window.h>
|
||||||
|
|
||||||
|
#include "TouchpadPrefView.h"
|
||||||
|
|
||||||
class TouchpadPrefWindow : public BWindow
|
|
||||||
{
|
class TouchpadPrefWindow : public BWindow {
|
||||||
public:
|
public:
|
||||||
TouchpadPrefWindow(BRect frame,
|
TouchpadPrefWindow(BRect frame, const char* title, window_type type,
|
||||||
const char *title,
|
|
||||||
window_type type,
|
|
||||||
uint32 flags)
|
uint32 flags)
|
||||||
: BWindow(frame, title, type, flags)
|
: BWindow(frame, title, type, flags)
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
virtual bool QuitRequested()
|
virtual bool QuitRequested()
|
||||||
{
|
{
|
||||||
@@ -28,9 +33,11 @@ int
|
|||||||
main(int argc, char* argv[])
|
main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
BApplication* app = new BApplication("application/x-vnd.Haiku-Touchpad");
|
BApplication* app = new BApplication("application/x-vnd.Haiku-Touchpad");
|
||||||
TouchpadPrefWindow *window = new TouchpadPrefWindow(BRect(50, 50, 450, 350),"Touchpad", B_TITLED_WINDOW,
|
TouchpadPrefWindow* window = new TouchpadPrefWindow(BRect(50, 50, 450, 350),
|
||||||
B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_AVOID_FRONT | B_ASYNCHRONOUS_CONTROLS);
|
"Touchpad", B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE
|
||||||
window->AddChild(new TouchpadPrefView(window->Bounds(), "TouchpadPrefView"));
|
| B_ASYNCHRONOUS_CONTROLS);
|
||||||
|
window->AddChild(
|
||||||
|
new TouchpadPrefView(window->Bounds(), "TouchpadPrefView"));
|
||||||
window->Show();
|
window->Show();
|
||||||
app->Run();
|
app->Run();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user