1 /* 2 * Copyright 2006-2011, Stephan Aßmus <superstippi@gmx.de> 3 * All rights reserved. Distributed under the terms of the MIT License. 4 */ 5 #ifndef LAUNCH_BUTTON_H 6 #define LAUNCH_BUTTON_H 7 8 9 #include <IconButton.h> 10 #include <List.h> 11 #include <String.h> 12 13 14 enum { 15 MSG_ADD_SLOT = 'adsl', 16 MSG_CLEAR_SLOT = 'clsl', 17 MSG_REMOVE_SLOT = 'rmsl', 18 MSG_LAUNCH = 'lnch', 19 }; 20 21 22 class LaunchButton : public BIconButton { 23 public: 24 LaunchButton(const char* name, 25 const char* label = NULL, 26 BMessage* message = NULL, 27 BHandler* target = NULL); 28 virtual ~LaunchButton(); 29 30 // BIconButton interface 31 virtual void AttachedToWindow(); 32 virtual void Draw(BRect updateRect); 33 virtual void MessageReceived(BMessage* message); 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 BSize MinSize(); 40 virtual BSize PreferredSize(); 41 virtual BSize MaxSize(); 42 43 // LaunchButton 44 void SetTo(const entry_ref* ref); 45 entry_ref* Ref() const; 46 47 void SetTo(const char* appSig, bool updateIcon); AppSignature()48 const char* AppSignature() const 49 { return fAppSig; } 50 51 void SetDescription(const char* text); Description()52 const char* Description() const 53 { return fDescription.String(); } 54 55 void SetIconSize(uint32 size); IconSize()56 uint32 IconSize() const 57 { return fIconSize; } 58 59 static void SetIgnoreDoubleClick(bool refuse); IgnoreDoubleClick()60 static bool IgnoreDoubleClick() 61 { return sIgnoreDoubleClick; } 62 63 private: 64 void _UpdateToolTip(); 65 void _UpdateIcon(const entry_ref* ref); 66 67 void _DrawFrame(BRect frame, 68 rgb_color left, rgb_color top, 69 rgb_color right, rgb_color bottom); 70 71 private: 72 entry_ref* fRef; 73 char* fAppSig; 74 BString fDescription; 75 76 bool fAnticipatingDrop; 77 bigtime_t fLastClickTime; 78 BPoint fDragStart; 79 80 uint32 fIconSize; 81 82 static bigtime_t sClickSpeed; 83 static bool sIgnoreDoubleClick; 84 }; 85 86 #endif // LAUNCH_BUTTON_H 87