* 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>
+42 -32
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,36 +23,38 @@
#endif #endif
// draw a touchpad class TouchpadPref {
class TouchpadPref public:
{ TouchpadPref();
public: ~TouchpadPref();
TouchpadPref();
~TouchpadPref(); void Revert();
void Defaults();
void Revert();
void Defaults(); BPoint WindowPosition()
{ return fWindowPosition; }
BPoint WindowPosition(){return fWindowPosition;} void SetWindowPosition(BPoint position)
void SetWindowPosition(BPoint position){ { fWindowPosition = position; }
fWindowPosition = position;}
touchpad_settings& Settings()
touchpad_settings * GetSettings(){return &fSettings;} { return fSettings; }
status_t UpdateSettings();
private: status_t UpdateSettings();
status_t GetSettingsPath(BPath &path);
status_t LoadSettings(); private:
status_t SaveSettings(); status_t GetSettingsPath(BPath& path);
status_t LoadSettings();
status_t ConnectToTouchPad(); status_t SaveSettings();
bool fConnected; status_t ConnectToTouchPad();
BInputDevice * fTouchPad;
bool fConnected;
touchpad_settings fSettings; BInputDevice* fTouchPad;
touchpad_settings fStartSettings;
BPoint fWindowPosition; touchpad_settings fSettings;
touchpad_settings fStartSettings;
BPoint fWindowPosition;
}; };
#endif #endif // TOUCHPAD_PREF_H
+163 -158
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,9 +53,8 @@ TouchpadView::TouchpadView(BRect frame)
TouchpadView::~TouchpadView() TouchpadView::~TouchpadView()
{ {
if(fOffScreenBitmap){ puts("GONE!");
delete fOffScreenBitmap; delete fOffScreenBitmap;
}
} }
@@ -53,25 +62,22 @@ 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,27 +85,27 @@ TouchpadView::MouseDown(BPoint point)
void void
TouchpadView::MouseUp(BPoint point) TouchpadView::MouseUp(BPoint point)
{ {
if(fXTracking || fYTracking){ if (!fXTracking && !fYTracking)
fXTracking = false; return;
fYTracking = false;
int32 result = 0; fXTracking = false;
if(GetRightScrollRatio() > 0.7 || GetBottomScrollRatio() > 0.7){ fYTracking = false;
BAlert *alert = new BAlert("ReallyChangeScrollArea",
"The new scroll area is very small. Do you really want to change the scroll area?", "Ok", "Cancel", int32 result = 0;
NULL, if (GetRightScrollRatio() > 0.7 || GetBottomScrollRatio() > 0.7) {
B_WIDTH_AS_USUAL, BAlert *alert = new BAlert("ReallyChangeScrollArea",
B_WARNING_ALERT); "The new scroll area is very small. Do you really want to change "
result = alert->Go(); "the scroll area?", "Ok", "Cancel", NULL, B_WIDTH_AS_USUAL,
} B_WARNING_ALERT);
if(result == 0){ result = alert->Go();
BMessage msg(SCROLL_AREA_CHANGED); }
Invoke(&msg); if (result == 0) {
} BMessage msg(SCROLL_AREA_CHANGED);
else{ Invoke(&msg);
fXScrollRange = fOldXScrollRange; } else {
fYScrollRange = fOldYScrollRange; fXScrollRange = fOldXScrollRange;
DrawSliders(); fYScrollRange = fOldYScrollRange;
} DrawSliders();
} }
} }
@@ -115,7 +121,6 @@ TouchpadView::AttachedToWindow()
if (fOffScreenBitmap && fOffScreenView) if (fOffScreenBitmap && fOffScreenView)
fOffScreenBitmap->AddChild(fOffScreenView); fOffScreenBitmap->AddChild(fOffScreenView);
} }
} }
@@ -130,39 +135,37 @@ TouchpadView::SetValues(float rightRange, float bottomRange)
void void
TouchpadView::GetPreferredSize(float *width, float *height) TouchpadView::GetPreferredSize(float* width, float* height)
{ {
*width = fPrefRect.Width(); if (width != NULL)
*height = fPrefRect.Height(); *width = fPrefRect.Width();
if (height != NULL)
*height = fPrefRect.Height();
} }
void 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,126 +175,124 @@ 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());
view->SetHighColor(100, 100, 100); view->SetHighColor(100, 100, 100);
view->FillRoundRect(fPadRect, 4, 4); view->FillRoundRect(fPadRect, 4, 4);
int32 dragSize = 3; //half drag size int32 dragSize = 3; // half drag size
// scroll areas // scroll areas
view->SetHighColor(145, 100, 100); view->SetHighColor(145, 100, 100);
BRect rightRect(fPadRect.left + fXScrollRange, fPadRect.top, BRect rightRect(fPadRect.left + fXScrollRange, fPadRect.top,
fPadRect.right, fPadRect.bottom); fPadRect.right, fPadRect.bottom);
view->FillRoundRect(rightRect, 4, 4); view->FillRoundRect(rightRect, 4, 4);
BRect bottomRect(fPadRect.left, fPadRect.top + fYScrollRange, BRect bottomRect(fPadRect.left, fPadRect.top + fYScrollRange,
fPadRect.right, fPadRect.bottom); fPadRect.right, fPadRect.bottom);
view->FillRoundRect(bottomRect, 4, 4); view->FillRoundRect(bottomRect, 4, 4);
// Stroke Rect // Stroke Rect
view->SetHighColor(100, 100, 100); view->SetHighColor(100, 100, 100);
view->SetPenSize(2); view->SetPenSize(2);
view->StrokeRoundRect(fPadRect, 4, 4); view->StrokeRoundRect(fPadRect, 4, 4);
// x scroll range line // x scroll range line
view->SetHighColor(200, 0, 0); view->SetHighColor(200, 0, 0);
view->StrokeLine(BPoint(fPadRect.left + fXScrollRange, fPadRect.top), view->StrokeLine(BPoint(fPadRect.left + fXScrollRange, fPadRect.top),
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.left + fXScrollRange + dragSize,
fPadRect.top - dragSize, fPadRect.top + dragSize);
fPadRect.left + fXScrollRange + dragSize, view->FillRect(fXScrollDragZone1);
fPadRect.top + dragSize); fXScrollDragZone2 = BRect(fPadRect.left + fXScrollRange - dragSize,
view->FillRect(fXScrollDragZone1); fPadRect.bottom - dragSize,
fXScrollDragZone2 = BRect(fPadRect.left + fXScrollRange - dragSize, fPadRect.left + fXScrollRange + dragSize,
fPadRect.bottom - dragSize, fPadRect.bottom + dragSize);
fPadRect.left + fXScrollRange + dragSize, view->FillRect(fXScrollDragZone2);
fPadRect.bottom + dragSize);
view->FillRect(fXScrollDragZone2);
// y scroll range line // y scroll range line
view->StrokeLine(BPoint(fPadRect.left, fPadRect.top + fYScrollRange), view->StrokeLine(BPoint(fPadRect.left, fPadRect.top + fYScrollRange),
BPoint(fPadRect.right, fPadRect.top + fYScrollRange)); BPoint(fPadRect.right, fPadRect.top + fYScrollRange));
fYScrollDragZone = BRect(fPadRect.left - dragSize, fYScrollDragZone = BRect(fPadRect.left - dragSize,
fPadRect.top + fYScrollRange - dragSize, fPadRect.top + fYScrollRange - dragSize,
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.right + dragSize,
fPadRect.top + fYScrollRange - dragSize, fPadRect.top + fYScrollRange + dragSize);
fPadRect.right + dragSize, view->FillRect(fYScrollDragZone2);
fPadRect.top + fYScrollRange + dragSize);
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());
} }
@@ -354,7 +352,7 @@ TouchpadPrefView::SetupView()
SetLayout(new BGroupLayout(B_VERTICAL)); SetLayout(new BGroupLayout(B_VERTICAL));
BRect rect = Bounds(); BRect rect = Bounds();
rect.InsetBy(5, 5); rect.InsetBy(5, 5);
BBox *scrollBox = new BBox(rect, "Touchpad"); BBox* scrollBox = new BBox(rect, "Touchpad");
scrollBox->SetLabel("Scrolling"); scrollBox->SetLabel("Scrolling");
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
@@ -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,14 +397,15 @@ 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);
scrollPrefLayout->AddItem(BSpaceLayoutItem::CreateVerticalStrut(15)); scrollPrefLayout->AddItem(BSpaceLayoutItem::CreateVerticalStrut(15));
scrollPrefLayout->AddView(scrollPrefRightLayout); scrollPrefLayout->AddView(scrollPrefRightLayout);
BBox *tapBox = new BBox(rect, "tapbox"); BBox* tapBox = new BBox(rect, "tapbox");
tapBox->SetLabel("Tap Gesture"); tapBox->SetLabel("Tap Gesture");
BGroupLayout* tapPrefLayout = new BGroupLayout(B_HORIZONTAL); BGroupLayout* tapPrefLayout = new BGroupLayout(B_HORIZONTAL);
@@ -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());
@@ -444,11 +446,14 @@ 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);
+74 -65
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,72 +35,73 @@ 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); virtual ~TouchpadView();
~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,
virtual void MouseMoved(BPoint point, uint32 transit, const BMessage *message); 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(); }
private: float GetBottomScrollRatio()
{ return 1
virtual void DrawSliders(); - fYScrollRange / fPadRect.Height(); }
BRect fPrefRect; private:
BRect fPadRect; virtual void DrawSliders();
BRect fXScrollDragZone;
BRect fXScrollDragZone1; BRect fPrefRect;
BRect fXScrollDragZone2; BRect fPadRect;
float fXScrollRange; BRect fXScrollDragZone;
float fOldXScrollRange; BRect fXScrollDragZone1;
BRect fYScrollDragZone; BRect fXScrollDragZone2;
BRect fYScrollDragZone1; float fXScrollRange;
BRect fYScrollDragZone2; float fOldXScrollRange;
float fYScrollRange; BRect fYScrollDragZone;
float fOldYScrollRange; BRect fYScrollDragZone1;
BRect fYScrollDragZone2;
bool fXTracking; float fYScrollRange;
bool fYTracking; float fOldYScrollRange;
BView *fOffScreenView;
BBitmap *fOffScreenBitmap; bool fXTracking;
bool fYTracking;
BView* fOffScreenView;
BBitmap* fOffScreenBitmap;
}; };
class TouchpadPrefView : public BView class TouchpadPrefView : public BView {
{ public:
public: TouchpadPrefView(BRect frame, const char* name);
TouchpadPrefView(BRect frame, const char *name); virtual ~TouchpadPrefView();
~TouchpadPrefView(); virtual void MessageReceived(BMessage* msg);
virtual void MessageReceived(BMessage *msg); virtual void AttachedToWindow();
virtual void AttachedToWindow(); virtual void DetachedFromWindow();
virtual void DetachedFromWindow(void); void SetupView();
void SetupView();
void SetValues(touchpad_settings *settings);
void SetValues(touchpad_settings *settings);
private:
private: TouchpadView* fTouchpadView;
// visual the touchpad BCheckBox* fTwoFingerBox;
TouchpadView* fTouchpadView; BCheckBox* fMultiFingerBox;
BCheckBox* fTwoFingerBox; BSlider* fScrollStepXSlider;
BCheckBox* fMultiFingerBox; BSlider* fScrollStepYSlider;
BSlider* fScrollStepXSlider; BSlider* fScrollAccelSlider;
BSlider* fScrollStepYSlider; BSlider* fTapSlider;
BSlider* fScrollAccelSlider; BButton* fDefaultButton;
BSlider* fTapSlider; BButton* fRevertButton;
BButton* fDefaultButton;
BButton* fRevertButton; TouchpadPref fTouchpadPref;
TouchpadPref fTouchpadPref;
}; };
#endif #endif // TOUCHPAD_PREF_VIEW_H
+31 -24
View File
@@ -1,39 +1,46 @@
//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, uint32 flags)
window_type type, : BWindow(frame, title, type, flags)
uint32 flags) {
:BWindow(frame, title, type, flags) }
{}
virtual bool QuitRequested()
virtual bool QuitRequested() {
{ be_app->PostMessage(B_QUIT_REQUESTED);
be_app->PostMessage(B_QUIT_REQUESTED); return true;
return true; }
}
}; };
int 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();
delete app; delete app;
return 0; return 0;
} }