• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright 2005 The Android Open Source Project
3 //
4 // Phone button image holder.
5 //
6 #ifndef _SIM_PHONE_BUTTON_H
7 #define _SIM_PHONE_BUTTON_H
8 
9 #include "LoadableImage.h"
10 #include <ui/KeycodeLabels.h>
11 
12 /*
13  * One button on a phone.  Position, size, and a highlight graphic.  The
14  * coordinates are relative to the device graphic.
15  *
16  * We now have a "highlighted" graphic for mouse-overs and a "selected"
17  * graphic for button presses.  We assume they have the same dimensions.
18  * We currently assume that either both or neither exist, because we
19  * generate one from the other.
20  */
21 class PhoneButton {
22 public:
PhoneButton(void)23     PhoneButton(void)
24         : mHasImage(false), mKeyCode(kKeyCodeUnknown)
25         {}
~PhoneButton(void)26     virtual ~PhoneButton(void) {}
PhoneButton(const PhoneButton & src)27     PhoneButton(const PhoneButton& src)
28         : mHasImage(false), mKeyCode(kKeyCodeUnknown)
29     {
30         CopyMembers(src);
31     }
32     PhoneButton& operator=(const PhoneButton& src) {
33         if (this != &src) {
34             // Unload any resources in case we're using operator= to
35             // assign to an existing object.
36             mSelectedImage.UnloadResources();
37             // Copy fields.
38             CopyMembers(src);
39         }
40         return *this;
41     }
CopyMembers(const PhoneButton & src)42     void CopyMembers(const PhoneButton& src) {
43         mSelectedImage = src.mSelectedImage;
44         mHighlightedBitmap = src.mHighlightedBitmap;
45         mHasImage = src.mHasImage;
46         mKeyCode = src.mKeyCode;
47     }
48 
49     /* finish construction of PhoneButton, with or without an image */
50     bool Create(const char* label);
51     bool Create(const char* label, const char* imageFileName, int x, int y);
52 
GetX(void)53     int GetX(void) const { return mSelectedImage.GetX(); }
GetY(void)54     int GetY(void) const { return mSelectedImage.GetY(); }
GetWidth(void)55     int GetWidth(void) const { return mSelectedImage.GetWidth(); }
GetHeight(void)56     int GetHeight(void) const { return mSelectedImage.GetHeight(); }
GetHighlightedBitmap(void)57     wxBitmap* GetHighlightedBitmap(void) { return &mHighlightedBitmap; }
GetSelectedBitmap(void)58     wxBitmap* GetSelectedBitmap(void) const {
59         return mSelectedImage.GetBitmap();
60     }
61 
62     bool CheckCollision(int x, int y) const;
GetKeyCode(void)63     KeyCode GetKeyCode(void) const { return mKeyCode; }
64 
65     // load or unload the image bitmap, if any
66     bool LoadResources(void);
67     bool UnloadResources(void);
68 
69 private:
70     void CreateHighlightedBitmap(void);
71     KeyCode LookupKeyCode(const char* label) const;
72 
73     LoadableImage       mSelectedImage;
74     wxBitmap            mHighlightedBitmap;
75     bool                mHasImage;          // both exist or neither exist
76 
77     KeyCode    mKeyCode;
78 };
79 
80 #endif // _SIM_PHONE_BUTTON_H
81