15 #include "win_select.h" 19 win_select::win_select()
21 cur_select_ = list_wb_.begin();
23 set_mode(MODE_BRIGHTNESS);
25 border_select_ = NULL;
29 finish_scroll_ =
true;
37 cur_select_ = list_wb_.begin ();
39 if(border_select_ != NULL) w->set_border(*border_select_);
50 void win_select::remove(
win_base * w)
54 win_scroll::remove(w);
60 void win_select::remove_all()
62 win_scroll::remove_all();
63 cur_select_ = list_wb_.begin();
67 void win_select::next()
70 if(cur_select_ == list_wb_.end() || list_wb_.size() == 0)
return;
72 audio::play_wave (-1, 1);
73 (*cur_select_)->on_unselect();
76 rules(
false,*cur_select_);
77 (*cur_select_)->set_activate (
false);
80 lwb :: iterator i = cur_select_;
86 while( i != list_wb_.end() && !(*i)->is_can_be_selected() && i != cur_select_) i++;
89 if(i == list_wb_.end())
95 while(i != list_wb_.end() && !(*i)->is_can_be_selected() && i != cur_select_) i++;
96 if(i != list_wb_.end()) cur_select_ = i;
98 }
else cur_select_ = i;
100 rules(
true,*cur_select_);
102 (*cur_select_)->on_select();
106 finish_scroll_ =
false;
112 void win_select::previous()
114 if(cur_select_==list_wb_.end() || list_wb_.size() == 0)
return;
116 audio::play_wave (-1, 1);
117 (*cur_select_)->on_unselect();
120 rules(
false,*cur_select_);
122 (*cur_select_)->set_activate (
false);
124 lwb::iterator i=cur_select_;
128 if(i==list_wb_.begin()) i=list_wb_.end();
131 else if(i!=list_wb_.begin()) i--;
133 while(i != list_wb_.begin() && !(*i)->is_can_be_selected() && i != cur_select_) i--;
135 if( i== list_wb_.begin() && !(*i)->is_can_be_selected())
141 while(i!=list_wb_.begin() && !(*i)->is_can_be_selected() && i!=cur_select_) i--;
142 if((*i)->is_can_be_selected()) cur_select_=i;
144 }
else cur_select_=i;
146 (*cur_select_)->on_select();
149 rules(
true,*cur_select_);
154 finish_scroll_ =
false;
159 void win_select::activate()
161 if(cur_select_ == list_wb_.end())
return;
163 audio::play_wave (-1, 0);
167 (*cur_select_)->set_activate(
true);
178 if(focus_object_)
return true;
190 void win_select::rules(
const bool b,
win_base * wb)
197 wb->set_visible_border(b);
200 case MODE_BRIGHTNESS:
207 void win_select::set_default()
209 if(list_wb_.size() == 0)
return;
211 if(cur_select_ != list_wb_.end())
213 rules(
false,*cur_select_);
216 cur_select_ = list_wb_.begin();
218 while(cur_select_ != list_wb_.end() && !(*cur_select_)->is_can_be_selected()) cur_select_++;
220 if(cur_select_ != list_wb_.end()) rules(
true,*cur_select_);
222 finish_scroll_ =
false;
225 void win_select::set_default_object(
const win_base * wb)
227 if(list_wb_.size() == 0)
return;
229 if(cur_select_ != list_wb_.end()) rules(
false,*cur_select_);
231 cur_select_ = list_wb_.begin();
233 while(cur_select_ != list_wb_.end() && *cur_select_ != wb) cur_select_++;
235 if(cur_select_ != list_wb_.end()) rules(
true,*cur_select_);
237 finish_scroll_ =
false;
242 void win_select::set_default_position(
const u_int16 pos)
244 if(list_wb_.size() == 0 || pos > list_wb_.size())
return;
246 if(cur_select_ != list_wb_.end()) rules(
false,*cur_select_);
248 cur_select_ = list_wb_.begin();
252 while(cur_select_ != list_wb_.end() && i++ < pos) cur_select_++;
254 if(cur_select_ != list_wb_.end()) rules(
true,*cur_select_);
256 finish_scroll_ =
false;
261 win_base * win_select::get_selected_object()
263 if(cur_select_ != list_wb_.end() || list_wb_.size() == 0)
return *cur_select_;
267 u_int16 win_select::get_selected_position()
271 lwb::iterator i = list_wb_.begin();
273 if(i==list_wb_.end())
return 0;
275 while( (*i++) != (*cur_select_)) pos_++;
282 void win_select::update_cur_select_position()
284 if(!max_amplitude_)
return;
290 if((*cur_select_)->height() + (space_with_border_ << 1) >
height())
break;
291 else if((*cur_select_)->y() + (*cur_select_)->pad_y() < space_with_border_ ) up();
292 else if((*cur_select_)->y() + (*cur_select_)->pad_y() + (*cur_select_)->height() >
height() - space_with_border_) down();
304 if(!max_amplitude_) {finish_scroll_=
true;
return true;}
305 if((*cur_select_)->height() + (space_with_border_ << 1) >
height()) {finish_scroll_ =
true;
return true;}
306 else if((*cur_select_)->y() + (*cur_select_)->pad_y() < space_with_border_ ) up();
307 else if((*cur_select_)->y() + (*cur_select_)->pad_y() + (*cur_select_)->height() >
height() - space_with_border_) down();
308 else finish_scroll_ =
true;
u_int16 height() const
Returns the height of the drawing_area.
#define u_int16
16 bits long unsigned integer
bool input_update()
Input Update process .
virtual void set_brightness(const bool b)
Set the transluency parameter.
bool is_can_be_selected() const
Test if win_* can be selected.
Common properties for each win_base's object.
bool update()
Update process.