Wrapper classes for the emwin library

Dependents:   app_emwin1 app_emwin2_pos lpc4088_ebb_gui_emwin

Revision:
0:316c181e9b65
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/EwDropDown.h	Mon Dec 16 07:03:22 2013 +0000
@@ -0,0 +1,106 @@
+
+#ifndef EWDROPDOWN_H
+#define EWDROPDOWN_H
+
+#include "EwPainter.h"
+#include "EwWindow.h"
+#include "EwFunctionPointer.h"
+
+#include "DROPDOWN.h"
+
+// TODO: move to EwScrollbar.h ----------------->
+#include "SCROLLBAR.h"
+
+enum ewScrollBarColorIndex_t {
+    ScrollBarColorIndexThumb = SCROLLBAR_CI_THUMB,
+    ScrollBarColorIndexShaft = SCROLLBAR_CI_SHAFT,
+    ScrollBarColorIndexArrow = SCROLLBAR_CI_ARROW,
+};
+// <---------------------------------------------
+
+enum ewDropDownColorIndex_t {
+    DropDownColorIndexUnselected = DROPDOWN_CI_UNSEL,
+    DropDownColorIndexSelected = DROPDOWN_CI_SEL,
+    DropDownColorIndexSelFocus = DROPDOWN_CI_SELFOCUS,
+};
+
+/**
+ * This is a wrapper class for the emwin DROPDOWN interface.
+ */
+class EwDropDown : public EwWindow {
+public:
+
+    EwDropDown(EwWindow* parent = 0);
+    EwDropDown(int x, int y, int width, int height, EwWindow* parent = 0);
+
+
+    void addString(const char* s);
+    void collapse();
+    void decrementSelection();
+    void deleteItem(uint32_t idx);
+    void expand();
+    bool isItemDisabled(uint32_t idx);
+    bool getItemText(uint32_t idx, char* pBuffer, int maxSize);
+    int getNumItems();
+    int32_t getSelectedIndex();
+    void incrementSelection();
+    void insertString(const char* s, uint32_t idx);
+    void setAutoScroll(bool on);
+    void setBackgroundColor(ewDropDownColorIndex_t idx, ewColor_t c);
+    void setColor(ewDropDownColorIndex_t idx, ewColor_t c);
+    void setFont(const ewFont_t* pFont);
+    void setItemEnableState(uint32_t idx, bool enabled);
+    void setScrollbarColor(ewScrollBarColorIndex_t idx, ewColor_t c);
+    void setScrollbarWidth(uint32_t width);
+    void setSelectedItem(int32_t idx);
+    void setItemSpacing(uint32_t spacing);
+    void setTextAlign(ewTextAlign_t align);
+    void setTextColor(ewDropDownColorIndex_t idx, ewColor_t c);
+    void setTextHeight(uint32_t height);
+    void setUpMode(bool upMode);
+
+    /**
+     * Register a member function that will called when a selection
+     * in the drop-down list has changed.
+     *
+     * @param tptr pointer to the object to call the member function on
+     * @param mptr pointer to the member function to be called
+     */
+    template<typename T>
+    void setSelectionChangedListener(T* tptr, void (T::*mptr)(EwWindow* w)) {
+        if((mptr != NULL) && (tptr != NULL)) {
+            _selChangedListener.attach(tptr, mptr);
+        }
+    }
+
+    /**
+     * Register a function that will called when the a selection
+     * in the drop-down list has changed.
+     *
+     * @param fptr A pointer to a void function that will be called
+     */
+    void setSelectionChangedListener(void (*fptr)(EwWindow* w));
+
+    static ewColor_t getDefaultBackgroundColor(ewDropDownColorIndex_t idx);
+    static ewColor_t getDefaultColor(ewDropDownColorIndex_t idx);
+    static ewColor_t getDefaultScrollbarColor(ewDropDownColorIndex_t idx);
+    static const ewFont_t* getDefaultFont();
+
+    void setDefaultBackgroundColor(ewDropDownColorIndex_t idx, ewColor_t c);
+    static void setDefaultColor(ewDropDownColorIndex_t idx, ewColor_t c);
+    static void setDefaultFont(const ewFont_t* pFont);
+    static void setDefaultScrollbarColor(ewScrollBarColorIndex_t idx, ewColor_t c);
+
+private:
+
+    EwFunctionPointer _selChangedListener;
+
+    void init(int x, int y, int width, int height, EwWindow* parent);
+    void handleSelectionChanged();
+
+    static void _callback(WM_MESSAGE* pMsg, EwWindow* w);
+
+
+};
+
+#endif