/elec/propeller-clock

To get this branch, use:
bzr branch http://bzr.ed.am/elec/propeller-clock

« back to all changes in this revision

Viewing changes to src/modes/settings_major_mode.cc

  • Committer: Tim Marston
  • Date: 2013-03-31 17:07:36 UTC
  • Revision ID: tim@ed.am-20130331170736-hphm2hg0y6l7w6z1
made rtc-test's DS1307 library a symlink to the main one in src/util

Show diffs side-by-side

added added

removed removed

33
33
#define DATE_SET_IDX 2
34
34
 
35
35
 
 
36
SettingsMajorMode::SettingsMajorMode( Button &button )
 
37
        :
 
38
        _button( button )
 
39
{
 
40
}
 
41
 
 
42
 
36
43
void SettingsMajorMode::draw( int segment )
37
44
{
38
 
        Text::draw( 0, segment );
 
45
        // check button state for unpress
 
46
        if( _press_state == 1 && !_button.get_state() )
 
47
                _press_state = 2;
39
48
}
40
49
 
41
50
 
42
51
void SettingsMajorMode::draw_reset()
43
52
{
 
53
        // do a short button press?
 
54
        if( _press_state == 2 ) {
 
55
                _press_state = 0;
 
56
                switch( _item )
 
57
                {
 
58
                case TIME_SET_IDX:
 
59
                        switch( _part ) {
 
60
                        case 0: Time::inc_hours(); break;
 
61
                        case 1: Time::inc_minutes(); break;
 
62
                        case 2: Time::reset_seconds(); break;
 
63
                        }
 
64
                        break;
 
65
                case DATE_SET_IDX:
 
66
                        switch( _part ) {
 
67
                        case 0: Time::inc_year(); break;
 
68
                        case 1: Time::inc_month(); break;
 
69
                        case 2: Time::inc_day(); break;
 
70
                        }
 
71
                        break;
 
72
                case FONT_SET_IDX:
 
73
                        TextRenderer::inc_font();
 
74
                        break;
 
75
                }
 
76
        }
 
77
 
44
78
        bool flash = ( ::millis() % 1000 ) > 600;
45
79
        PString str0( Text::_messages[ 0 ], MESSAGE_LEN * 2 );
46
 
        str0.begin();
47
80
 
48
81
        switch( _item ) {
49
82
        case TIME_SET_IDX:
94
127
                break;
95
128
        }
96
129
 
97
 
        Text::set_message( 0, str0 );
 
130
        Text::set_message_text( 0, str0 );
98
131
}
99
132
 
100
133
 
101
134
void SettingsMajorMode::activate()
102
135
{
103
136
        _item = _part = 0;
 
137
        _press_state = 0;
104
138
 
105
139
        reset_messages();
106
140
}
108
142
 
109
143
void SettingsMajorMode::deactivate()
110
144
{
 
145
        // save time
 
146
        Time::save_time();
111
147
}
112
148
 
113
149
 
114
150
void SettingsMajorMode::press()
115
151
{
116
 
        switch( _item )
117
 
        {
118
 
        case TIME_SET_IDX:
119
 
                switch( _part ) {
120
 
                case 0: Time::inc_hours(); break;
121
 
                case 1: Time::inc_minutes(); break;
122
 
                case 2: Time::reset_seconds(); break;
123
 
                }
124
 
                break;
125
 
        case DATE_SET_IDX:
126
 
                switch( _part ) {
127
 
                case 0: Time::inc_year(); break;
128
 
                case 1: Time::inc_month(); break;
129
 
                case 2: Time::inc_day(); break;
130
 
                }
131
 
                break;
132
 
        case FONT_SET_IDX:
133
 
                TextRenderer::inc_font();
134
 
                break;
135
 
        }
 
152
        _press_state = 1;
136
153
}
137
154
 
138
155
 
139
156
void SettingsMajorMode::long_press()
140
157
{
 
158
        _press_state = 0;
 
159
 
141
160
        // how many parts does this item have?
142
161
        int max = 1;
143
162
        switch( _item ) {
158
177
 
159
178
void SettingsMajorMode::reset_messages()
160
179
{
161
 
        Text::reset_message( 0, Text::MODE_TOP | Text::MODE_ALL );
 
180
        Text::reset();
 
181
        Text::set_up_message( 0, Text::MODE_TOP | Text::MODE_ALL );
162
182
}