Pebble Foundation Classes  0.2.0
C++ for Pebble
pebble_simplemenu_layer.hpp
1 #pragma once
2 
3 #include "pebble.hpp"
4 
5 namespace Pebble {
6 
7 class SimpleMenuLayer : public Layer
8 {
9 protected:
10  // The layer pointer
11  ::SimpleMenuLayer* menu_layer_;
12 
13 public:
14  SimpleMenuLayer(Window& window, GRect frame, SimpleMenuSection* sections, int num_sections)
15  : Layer((menu_layer_ = simple_menu_layer_create(frame, window, sections, num_sections, &window), simple_menu_layer_get_layer(menu_layer_))) { }
16 
17  SimpleMenuLayer(Window& window, SimpleMenuSection* section, int num_sections)
18  : SimpleMenuLayer(window, window.GetFrame(), section, num_sections) { }
19 
20  template<std::size_t N>
21  SimpleMenuLayer(Window& window, GRect frame, SimpleMenuSection (&section)[N])
22  : SimpleMenuLayer(window, frame, section, N) { }
23 
24  template<std::size_t N>
25  SimpleMenuLayer(Window& window, SimpleMenuSection (&section)[N])
26  : SimpleMenuLayer(window, section, N) { }
27 
29  virtual ~SimpleMenuLayer()
30  {
31  simple_menu_layer_destroy(menu_layer_);
32  }
33 
35  inline operator ::SimpleMenuLayer*() { return menu_layer_; }
36 
37  inline int GetSelectedIndex() const { return simple_menu_layer_get_selected_index(menu_layer_); }
38 
39  inline void SetSelectedIndex(int32_t index, bool animated) { simple_menu_layer_set_selected_index(menu_layer_, index, animated); }
40 };
41 
42 // Click handler implementation
43 template<class T, void (T::*Method)(int index)>
44 static void pebble_callback_handler(int index, void* context)
45 {
46  (((T*)context)->*Method)(index);
47 }
48 
49 }
Pebble::Layer
Definition: pebble_layer.hpp:34
Pebble::Window
Wraps and existing Pebble window but does not take ownership of it.
Definition: pebble_window.hpp:26
Pebble::Layer::Layer
Layer(::Layer *layer)
Wraps an existing TextLayer.
Definition: pebble_layer.hpp:38
Pebble::SimpleMenuLayer
Definition: pebble_simplemenu_layer.hpp:7
Pebble::SimpleMenuLayer::~SimpleMenuLayer
virtual ~SimpleMenuLayer()
Destroys the underlying SimpleMenuLayer.
Definition: pebble_simplemenu_layer.hpp:29
simple_menu_layer_get_selected_index
int simple_menu_layer_get_selected_index(const SimpleMenuLayer *simple_menu)
simple_menu_layer_get_layer
Layer * simple_menu_layer_get_layer(const SimpleMenuLayer *simple_menu)
simple_menu_layer_destroy
void simple_menu_layer_destroy(SimpleMenuLayer *menu_layer)
Destroys a SimpleMenuLayer previously created by simple_menu_layer_create.
SimpleMenuSection
Data structure containing the information of a menu section.
Definition: pebble.h:7372
Pebble::GRect
Definition: pebble_graphics_types.hpp:71
simple_menu_layer_set_selected_index
void simple_menu_layer_set_selected_index(SimpleMenuLayer *simple_menu, int32_t index, bool animated)
Pebble::Layer::GetFrame
GRect GetFrame()
Definition: pebble_layer.hpp:71
simple_menu_layer_create
SimpleMenuLayer * simple_menu_layer_create(GRect frame, Window *window, const SimpleMenuSection *sections, int32_t num_sections, void *callback_context)