2828
2929
3030#define CONTENT_FONT FONT_KEY_GOTHIC_24_BOLD
31- #define NAME_HEIGHT 15
31+ #define NAME_HEIGHT 20
3232
3333typedef enum {
3434 SegmentTypeMessage ,
@@ -42,6 +42,7 @@ typedef enum {
4242
4343typedef struct {
4444 ConversationEntry * entry ;
45+ TextLayer * assistant_label_layer ;
4546 SegmentType type ;
4647 union {
4748 // fun fact: every member of this union is actually a Layer*.
@@ -60,44 +61,50 @@ typedef struct {
6061
6162static SegmentType prv_get_segment_type (ConversationEntry * entry );
6263
63- SegmentLayer * segment_layer_create (GRect rect , ConversationEntry * entry ) {
64+ SegmentLayer * segment_layer_create (GRect rect , ConversationEntry * entry , bool assistant_label ) {
6465 Layer * layer = layer_create_with_data (rect , sizeof (SegmentLayerData ));
6566 SegmentLayerData * data = layer_get_data (layer );
6667 data -> entry = entry ;
6768 data -> type = prv_get_segment_type (entry );
6869 GRect child_frame = GRect (0 , 0 , rect .size .w , rect .size .h );
70+ if (assistant_label ) {
71+ data -> assistant_label_layer = text_layer_create (GRect (5 , 0 , rect .size .w , NAME_HEIGHT ));
72+ layer_add_child (layer , text_layer_get_layer (data -> assistant_label_layer ));
73+ text_layer_set_text (data -> assistant_label_layer , "Bobby" );
74+ child_frame = GRect (0 , NAME_HEIGHT , rect .size .w , rect .size .h - NAME_HEIGHT );
75+ } else {
76+ data -> assistant_label_layer = NULL ;
77+ }
6978 switch (data -> type ) {
7079 case SegmentTypeMessage :
7180 data -> message_layer = message_layer_create (child_frame , entry );
72- layer_add_child (layer , data -> message_layer );
7381 break ;
7482 case SegmentTypeInfo :
7583 data -> info_layer = info_layer_create (child_frame , entry );
76- layer_add_child (layer , data -> info_layer );
7784 break ;
7885 case SegmentTypeWeatherSingleDayWidget :
7986 data -> weather_single_day_widget = weather_single_day_widget_create (child_frame , entry );
80- layer_add_child (layer , data -> weather_single_day_widget );
8187 break ;
8288 case SegmentTypeWeatherCurrentWidget :
8389 data -> weather_current_widget = weather_current_widget_create (child_frame , entry );
84- layer_add_child (layer , data -> weather_current_widget );
8590 break ;
8691 case SegmentTypeWeatherMultiDayWidget :
8792 data -> weather_multi_day_widget = weather_multi_day_widget_create (child_frame , entry );
88- layer_add_child (layer , data -> weather_multi_day_widget );
8993 break ;
9094 case SegmentTypeTimerWidget :
9195 data -> timer_widget = timer_widget_create (child_frame , entry );
92- layer_add_child (layer , data -> timer_widget );
9396 break ;
9497 case SegmentTypeNumberWidget :
9598 data -> number_widget = number_widget_create (child_frame , entry );
96- layer_add_child (layer , data -> number_widget );
9799 break ;
98100 }
101+ layer_add_child (layer , data -> layer );
99102 GSize child_size = layer_get_frame (data -> layer ).size ;
100- layer_set_frame (layer , GRect (rect .origin .x , rect .origin .y , child_size .w , child_size .h ));
103+ GRect final_size = GRect (rect .origin .x , rect .origin .y , child_size .w , child_size .h );
104+ if (data -> assistant_label_layer ) {
105+ final_size .size .h += NAME_HEIGHT ;
106+ }
107+ layer_set_frame (layer , final_size );
101108 return layer ;
102109}
103110
@@ -127,6 +134,9 @@ void segment_layer_destroy(SegmentLayer* layer) {
127134 number_widget_destroy (data -> number_widget );
128135 break ;
129136 }
137+ if (data -> assistant_label_layer ) {
138+ text_layer_destroy (data -> assistant_label_layer );
139+ }
130140 layer_destroy (layer );
131141}
132142
@@ -162,7 +172,11 @@ void segment_layer_update(SegmentLayer* layer) {
162172 }
163173 GSize child_size = layer_get_frame (data -> layer ).size ;
164174 GPoint origin = layer_get_frame (layer ).origin ;
165- layer_set_frame (layer , GRect (origin .x , origin .y , child_size .w , child_size .h ));
175+ GRect final_frame = GRect (origin .x , origin .y , child_size .w , child_size .h );
176+ if (data -> assistant_label_layer ) {
177+ final_frame .size .h += NAME_HEIGHT ;
178+ }
179+ layer_set_frame (layer , final_frame );
166180}
167181
168182static SegmentType prv_get_segment_type (ConversationEntry * entry ) {
0 commit comments