From be4367428b6478ae059614d7a9b6f6dc721e5dcb Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sun, 22 Dec 2013 02:31:47 +0100 Subject: [PATCH] BControl subclasses: Override SetIcon() ... and implement Perform() action for potential later use. --- headers/os/interface/Button.h | 2 ++ headers/os/interface/CheckBox.h | 2 ++ headers/os/interface/ColorControl.h | 2 ++ headers/os/interface/PictureButton.h | 2 ++ headers/os/interface/RadioButton.h | 2 ++ headers/os/interface/Slider.h | 2 ++ headers/os/interface/TextControl.h | 2 ++ headers/private/shared/IconButton.h | 3 ++- src/kits/interface/Button.cpp | 12 ++++++++++++ src/kits/interface/CheckBox.cpp | 12 ++++++++++++ src/kits/interface/ColorControl.cpp | 12 ++++++++++++ src/kits/interface/PictureButton.cpp | 12 ++++++++++++ src/kits/interface/RadioButton.cpp | 11 +++++++++++ src/kits/interface/Slider.cpp | 12 ++++++++++++ src/kits/interface/TextControl.cpp | 14 +++++++++++++- src/kits/shared/IconButton.cpp | 2 +- 16 files changed, 101 insertions(+), 3 deletions(-) diff --git a/headers/os/interface/Button.h b/headers/os/interface/Button.h index 240b9284bd..304bd64e9e 100644 --- a/headers/os/interface/Button.h +++ b/headers/os/interface/Button.h @@ -68,6 +68,8 @@ public: virtual BSize MaxSize(); virtual BSize PreferredSize(); + virtual status_t SetIcon(const BBitmap* icon, uint32 flags = 0); + protected: virtual void LayoutInvalidated(bool descendants = false); diff --git a/headers/os/interface/CheckBox.h b/headers/os/interface/CheckBox.h index 340bed2e80..70f89a8388 100644 --- a/headers/os/interface/CheckBox.h +++ b/headers/os/interface/CheckBox.h @@ -69,6 +69,8 @@ public: virtual status_t Perform(perform_code code, void* data); + virtual status_t SetIcon(const BBitmap* icon, uint32 flags = 0); + bool IsPartialStateToOff() const; void SetPartialStateToOff(bool partialToOff); diff --git a/headers/os/interface/ColorControl.h b/headers/os/interface/ColorControl.h index ca6171beb6..b68617706c 100644 --- a/headers/os/interface/ColorControl.h +++ b/headers/os/interface/ColorControl.h @@ -76,6 +76,8 @@ public: virtual void AllAttached(); virtual void AllDetached(); + virtual status_t SetIcon(const BBitmap* icon, uint32 flags = 0); + private: virtual status_t Perform(perform_code d, void *arg); // this can be made public again if needed diff --git a/headers/os/interface/PictureButton.h b/headers/os/interface/PictureButton.h index 10cfa10380..e457db8dbf 100644 --- a/headers/os/interface/PictureButton.h +++ b/headers/os/interface/PictureButton.h @@ -79,6 +79,8 @@ public: virtual status_t Perform(perform_code code, void* data); + virtual status_t SetIcon(const BBitmap* icon, uint32 flags = 0); + private: // FBC padding and forbidden methods virtual void _ReservedPictureButton1(); diff --git a/headers/os/interface/RadioButton.h b/headers/os/interface/RadioButton.h index 48da0183bc..040f6eed9c 100644 --- a/headers/os/interface/RadioButton.h +++ b/headers/os/interface/RadioButton.h @@ -63,6 +63,8 @@ public: virtual BSize MaxSize(); virtual BAlignment LayoutAlignment(); + virtual status_t SetIcon(const BBitmap* icon, uint32 flags = 0); + private: friend status_t _init_interface_kit_(); diff --git a/headers/os/interface/Slider.h b/headers/os/interface/Slider.h index 8b76dfaa38..42e81487c9 100644 --- a/headers/os/interface/Slider.h +++ b/headers/os/interface/Slider.h @@ -159,6 +159,8 @@ public: virtual BSize MaxSize(); virtual BSize PreferredSize(); + virtual status_t SetIcon(const BBitmap* icon, uint32 flags = 0); + protected: virtual void LayoutInvalidated(bool descendants); diff --git a/headers/os/interface/TextControl.h b/headers/os/interface/TextControl.h index 77d36d9928..05bf6dec3b 100644 --- a/headers/os/interface/TextControl.h +++ b/headers/os/interface/TextControl.h @@ -98,6 +98,8 @@ protected: virtual void LayoutInvalidated(bool descendants); virtual void DoLayout(); + virtual status_t SetIcon(const BBitmap* icon, uint32 flags = 0); + private: // FBC padding and forbidden methods virtual status_t Perform(perform_code d, void* arg); diff --git a/headers/private/shared/IconButton.h b/headers/private/shared/IconButton.h index 0b5a5f26b4..29f75355bf 100644 --- a/headers/private/shared/IconButton.h +++ b/headers/private/shared/IconButton.h @@ -71,7 +71,8 @@ public: status_t SetIcon(int32 resourceID); status_t SetIcon(const char* pathToBitmap); - status_t SetIcon(const BBitmap* bitmap); + virtual status_t SetIcon(const BBitmap* bitmap, + uint32 flags = 0); status_t SetIcon(const BMimeType* fileType, bool small = true); status_t SetIcon(const unsigned char* bitsFromQuickRes, diff --git a/src/kits/interface/Button.cpp b/src/kits/interface/Button.cpp index 87f85a3eea..99364fafec 100644 --- a/src/kits/interface/Button.cpp +++ b/src/kits/interface/Button.cpp @@ -661,6 +661,11 @@ BButton::Perform(perform_code code, void* _data) BButton::DoLayout(); return B_OK; } + case PERFORM_CODE_SET_ICON: + { + perform_data_set_icon* data = (perform_data_set_icon*)_data; + return BButton::SetIcon(data->icon, data->flags); + } } return BControl::Perform(code, _data); @@ -691,6 +696,13 @@ BButton::PreferredSize() } +status_t +BButton::SetIcon(const BBitmap* icon, uint32 flags) +{ + return BControl::SetIcon(icon, flags); +} + + void BButton::LayoutInvalidated(bool descendants) { diff --git a/src/kits/interface/CheckBox.cpp b/src/kits/interface/CheckBox.cpp index 53a498a5ff..d991bd068b 100644 --- a/src/kits/interface/CheckBox.cpp +++ b/src/kits/interface/CheckBox.cpp @@ -589,12 +589,24 @@ BCheckBox::Perform(perform_code code, void* _data) BCheckBox::DoLayout(); return B_OK; } + case PERFORM_CODE_SET_ICON: + { + perform_data_set_icon* data = (perform_data_set_icon*)_data; + return BCheckBox::SetIcon(data->icon, data->flags); + } } return BControl::Perform(code, _data); } +status_t +BCheckBox::SetIcon(const BBitmap* icon, uint32 flags) +{ + return BControl::SetIcon(icon, flags); +} + + void BCheckBox::LayoutInvalidated(bool descendants) { diff --git a/src/kits/interface/ColorControl.cpp b/src/kits/interface/ColorControl.cpp index 1fbd4fc0a9..245bb916fe 100644 --- a/src/kits/interface/ColorControl.cpp +++ b/src/kits/interface/ColorControl.cpp @@ -1036,6 +1036,13 @@ BColorControl::AllDetached() } +status_t +BColorControl::SetIcon(const BBitmap* icon, uint32 flags) +{ + return BControl::SetIcon(icon, flags); +} + + status_t BColorControl::Perform(perform_code code, void* _data) { @@ -1086,6 +1093,11 @@ BColorControl::Perform(perform_code code, void* _data) BColorControl::DoLayout(); return B_OK; } + case PERFORM_CODE_SET_ICON: + { + perform_data_set_icon* data = (perform_data_set_icon*)_data; + return BColorControl::SetIcon(data->icon, data->flags); + } } return BControl::Perform(code, _data); diff --git a/src/kits/interface/PictureButton.cpp b/src/kits/interface/PictureButton.cpp index 2b3b55449e..ee0c79fd9f 100644 --- a/src/kits/interface/PictureButton.cpp +++ b/src/kits/interface/PictureButton.cpp @@ -470,12 +470,24 @@ BPictureButton::Perform(perform_code code, void* _data) BPictureButton::DoLayout(); return B_OK; } + case PERFORM_CODE_SET_ICON: + { + perform_data_set_icon* data = (perform_data_set_icon*)_data; + return BPictureButton::SetIcon(data->icon, data->flags); + } } return BControl::Perform(code, _data); } +status_t +BPictureButton::SetIcon(const BBitmap* icon, uint32 flags) +{ + return BControl::SetIcon(icon, flags); +} + + // #pragma mark - diff --git a/src/kits/interface/RadioButton.cpp b/src/kits/interface/RadioButton.cpp index 89180954aa..2230c49fac 100644 --- a/src/kits/interface/RadioButton.cpp +++ b/src/kits/interface/RadioButton.cpp @@ -555,6 +555,11 @@ BRadioButton::Perform(perform_code code, void* _data) BRadioButton::DoLayout(); return B_OK; } + case PERFORM_CODE_SET_ICON: + { + perform_data_set_icon* data = (perform_data_set_icon*)_data; + return BRadioButton::SetIcon(data->icon, data->flags); + } } return BControl::Perform(code, _data); @@ -580,6 +585,12 @@ BRadioButton::LayoutAlignment() } +status_t +BRadioButton::SetIcon(const BBitmap* icon, uint32 flags) +{ + return BControl::SetIcon(icon, flags); +} + void BRadioButton::_ReservedRadioButton1() {} void BRadioButton::_ReservedRadioButton2() {} diff --git a/src/kits/interface/Slider.cpp b/src/kits/interface/Slider.cpp index 6d654d8848..1748594e16 100644 --- a/src/kits/interface/Slider.cpp +++ b/src/kits/interface/Slider.cpp @@ -345,6 +345,11 @@ BSlider::Perform(perform_code code, void* _data) BSlider::DoLayout(); return B_OK; } + case PERFORM_CODE_SET_ICON: + { + perform_data_set_icon* data = (perform_data_set_icon*)_data; + return BSlider::SetIcon(data->icon, data->flags); + } } return BControl::Perform(code, _data); @@ -1768,6 +1773,13 @@ BSlider::PreferredSize() } +status_t +BSlider::SetIcon(const BBitmap* icon, uint32 flags) +{ + return BControl::SetIcon(icon, flags); +} + + void BSlider::LayoutInvalidated(bool descendants) { diff --git a/src/kits/interface/TextControl.cpp b/src/kits/interface/TextControl.cpp index ee77dec9f1..9863ecde51 100644 --- a/src/kits/interface/TextControl.cpp +++ b/src/kits/interface/TextControl.cpp @@ -947,6 +947,13 @@ BTextControl::DoLayout() } +status_t +BTextControl::SetIcon(const BBitmap* icon, uint32 flags) +{ + return BControl::SetIcon(icon, flags); +} + + // #pragma mark - @@ -981,7 +988,7 @@ BTextControl::Perform(perform_code code, void* _data) BTextControl::GetHeightForWidth(data->width, &data->min, &data->max, &data->preferred); return B_OK; -} + } case PERFORM_CODE_SET_LAYOUT: { perform_data_set_layout* data = (perform_data_set_layout*)_data; @@ -1000,6 +1007,11 @@ BTextControl::Perform(perform_code code, void* _data) BTextControl::DoLayout(); return B_OK; } + case PERFORM_CODE_SET_ICON: + { + perform_data_set_icon* data = (perform_data_set_icon*)_data; + return BTextControl::SetIcon(data->icon, data->flags); + } case PERFORM_CODE_ALL_UNARCHIVED: { perform_data_all_unarchived* data diff --git a/src/kits/shared/IconButton.cpp b/src/kits/shared/IconButton.cpp index fb55ff030e..2bf8ea58b5 100644 --- a/src/kits/shared/IconButton.cpp +++ b/src/kits/shared/IconButton.cpp @@ -382,7 +382,7 @@ BIconButton::SetIcon(const char* pathToBitmap) status_t -BIconButton::SetIcon(const BBitmap* bitmap) +BIconButton::SetIcon(const BBitmap* bitmap, uint32 flags) { if (bitmap && bitmap->ColorSpace() == B_CMAP8) { status_t status = bitmap->InitCheck();