1/* 2 * Copyright 2019, Haiku, Inc. 3 * Distributed under the terms of the MIT License. 4 * 5 * Author: 6 * Preetpal Kaur <preetpalok123@gmail.com> 7 */ 8 9 10#ifndef TOUCHPAD_PREF_VIEW_H 11#define TOUCHPAD_PREF_VIEW_H 12 13#include <Bitmap.h> 14#include <Button.h> 15#include <CheckBox.h> 16#include <GroupView.h> 17#include <Invoker.h> 18#include <Slider.h> 19#include <StringView.h> 20#include <View.h> 21 22#include "InputTouchpadPref.h" 23#include "touchpad_settings.h" 24 25#include <Debug.h> 26 27#if DEBUG 28# define LOG(text...) PRINT((text)) 29#else 30# define LOG(text...) 31#endif 32 33const uint SCROLL_AREA_CHANGED = '&sac'; 34const uint SCROLL_CONTROL_CHANGED = '&scc'; 35const uint TAP_CONTROL_CHANGED = '&tcc'; 36const uint DEFAULT_SETTINGS = '&dse'; 37const uint REVERT_SETTINGS = '&rse'; 38const uint PADBLOCK_TIME_CHANGED = '&ptc'; 39 40class DeviceListView; 41 42 43//! Shows a touchpad 44class TouchpadView : public BView, public BInvoker { 45public: 46 TouchpadView(BRect frame); 47 virtual ~TouchpadView(); 48 virtual void Draw(BRect updateRect); 49 virtual void MouseDown(BPoint point); 50 virtual void MouseUp(BPoint point); 51 virtual void MouseMoved(BPoint point, uint32 transit, 52 const BMessage* dragMessage); 53 54 virtual void AttachedToWindow(); 55 virtual void GetPreferredSize(float* width, float* height); 56 57 void SetValues(float rightRange, float bottomRange); 58 float GetRightScrollRatio() 59 { return 1 - fXScrollRange / fPadRect.Width(); } 60 float GetBottomScrollRatio() 61 { return 1 62 - fYScrollRange / fPadRect.Height(); } 63private: 64 virtual void DrawSliders(); 65 66 BRect fPrefRect; 67 BRect fPadRect; 68 BRect fXScrollDragZone; 69 float fXScrollRange; 70 float fOldXScrollRange; 71 BRect fYScrollDragZone; 72 float fYScrollRange; 73 float fOldYScrollRange; 74 75 bool fXTracking; 76 bool fYTracking; 77 BView* fOffScreenView; 78 BBitmap* fOffScreenBitmap; 79}; 80 81 82class TouchpadPrefView : public BGroupView { 83public: 84 TouchpadPrefView(BInputDevice* dev); 85 virtual ~TouchpadPrefView(); 86 virtual void MessageReceived(BMessage* message); 87 virtual void AttachedToWindow(); 88 virtual void DetachedFromWindow(); 89 void SetupView(); 90 91 void SetValues(touchpad_settings *settings); 92private: 93 TouchpadPref fTouchpadPref; 94 TouchpadView* fTouchpadView; 95 BCheckBox* fTwoFingerBox; 96 BCheckBox* fTwoFingerHorizontalBox; 97 BSlider* fScrollStepXSlider; 98 BSlider* fScrollStepYSlider; 99 BSlider* fScrollAccelSlider; 100 BSlider* fPadBlockerSlider; 101 BSlider* fTapSlider; 102 BButton* fDefaultButton; 103 BButton* fRevertButton; 104}; 105 106#endif // TOUCHPAD_PREF_VIEW_H 107