* 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:
Axel Dörfler
2009-10-06 08:19:49 +00:00
parent ede7c33d8c
commit a8e3e8b563
5 changed files with 319 additions and 279 deletions
@@ -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>
+20 -10
View File
@@ -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
+89 -84
View File
@@ -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);
+25 -16
View File
@@ -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
+19 -12
View File
@@ -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();