1/* 2 * Copyright 2003-2009, Haiku, Inc. 3 * Distributed under the terms of the MIT license. 4 * 5 * Authors: 6 * J��r��me Duval 7 * Fran��ois Revol 8 * Axel D��rfler, axeld@pinc-software.de. 9 */ 10#ifndef VOLUME_SLIDER_H 11#define VOLUME_SLIDER_H 12 13 14#include <String.h> 15#include <Slider.h> 16 17class MixerControl; 18 19 20class VolumeControl : public BSlider { 21public: 22 VolumeControl(int32 volumeWhich, bool beep, 23 BMessage* message); 24 VolumeControl(BMessage* archive); 25 virtual ~VolumeControl(); 26 27 static VolumeControl* Instantiate(BMessage* archive); 28 virtual status_t Archive(BMessage* archive, bool deep = true) const; 29 30protected: 31 virtual void AttachedToWindow(); 32 virtual void DetachedFromWindow(); 33 34 virtual void MouseDown(BPoint where); 35 virtual void MouseUp(BPoint where); 36 virtual void MouseMoved(BPoint where, uint32 transit, 37 const BMessage* dragMessage); 38 39 virtual void MessageReceived(BMessage* message); 40 virtual status_t Invoke(BMessage* message = NULL); 41 42 virtual void DrawBar(); 43 virtual const char* UpdateText() const; 44 45private: 46 void _DisconnectVolume(); 47 void _ConnectVolume(); 48 bool _IsReplicant() const; 49 float _PointForValue(int32 value) const; 50 51 mutable BString fText; 52 MixerControl* fMixerControl; 53 int32 fOriginalValue; 54 bool fBeep; 55 56 bool fSnapping; 57 float fMinSnap; 58 float fMaxSnap; 59 60 int32 fConnectRetries; 61 bool fMediaServerRunning; 62 bool fAddOnServerRunning; 63}; 64 65#endif // VOLUME_SLIDER_H 66