ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/truck/DashInterface/DashInterface.cpp
(Generate patch)

Comparing DashInterface/DashInterface.cpp (file contents):
Revision 36 by douglas, 2008-03-04T22:24:35-08:00 vs.
Revision 38 by douglas, 2008-03-05T13:36:38-08:00

# Line 11 | Line 11
11   #include <foreach.hpp>
12   #include <hash.hpp>
13   #include <regex.hpp>
14 + #include <timing.hpp>
15  
16   #include <Audacious.hpp>
17   #include <GPS.hpp>
# Line 25 | Line 26
26  
27   bool debug(false);
28  
29 < void Uname(Display &display, time_t now = 0, bool change = false)
29 > void Uname_(Display &display, time_t now = 0, bool change = false)
30   {
31          if (!now || change)
32          {
# Line 93 | Line 94 | void Uname(Display &display, time_t now
94          }
95   }
96  
97 + enum Mode { Uname, Music, English, Metric, Nautical, Menu };
98 +
99 + Mode &operator ++(Mode &mode)
100 + {
101 +        return mode = Mode((mode + 1) % Menu);
102 + }
103 +
104 + Mode &operator --(Mode &mode)
105 + {
106 +        return mode = Mode((Menu + mode - 1) % Menu);
107 + }
108 +
109   int main(int argc, char *argv[])
110   {
111          std::string device;
# Line 145 | Line 158 | usage: std::cout << _B("Usage: ") << arg
158                          display.KeyReporting(mask, mask);
159                  }
160  
161 <                ::Uname(display);
161 >                Uname_(display);
162  
163                  display.Store();
164                  display.Set(Running, Display::Green, 100);
165                  display.Set(Running, Display::Red, 0);
166  
167 <                enum Mode { Uname, Music, English, Metric, Nautical, Last } mode(Uname);
167 >                Mode mode(Uname);
168                  //Audacious::Audacious audacious;
169                  //GPS::GPS gps;
170  
171                  _forever
172                  {
173 <                        time_t now(std::time(NULL));
173 >                        // XXX: I'm going to refactor this into callback functions, grr
174 >                        /*while (Display::KeyActivity activity = display.GetKeyActivity())
175 >                                if (mode != Menu)
176 >                                        switch (activity)
177 >                                        {
178 >                                        case Display::UpPress:
179 >                                                ++mode;
180 >
181 >                                                goto change;
182 >                                        case Display::DownPress:
183 >                                                --mode;
184 >
185 >                                                goto change;
186 >                                        case Display::LeftPress:
187 >                                                std::cerr << _B("Previous") << std::endl;
188 >
189 >                                                break;
190 >                                        case Display::RightPress:
191 >                                                std::cerr << _B("Next") << std::endl;
192 >
193 >                                                break;
194 >                                        case Display::EnterPress:
195 >                                                std::cerr << _B("Menu") << std::endl;
196 >
197 >                                                mode = Menu;
198 >
199 >                                                goto change;
200 >                                        case Display::ExitPress:
201 >                                                std::cerr << _B("Play/Pause") << std::endl;
202 >
203 >                                                break;
204 >                                        default:
205 >                                                break;
206 >                                        }
207 >
208 >                        if (false)
209 > change:                 change = true;*/
210 >
211 >                        Timing::Time now(Timing::GetTimeOfDay());
212  
213 +                        if (mode != Menu)
214                          {
215                                  char when[16];
216  
217 <                                std::strftime(when, sizeof (when), "%l:%M:%S %p %Z", std::localtime(&now));
217 >                                std::strftime(when, sizeof (when), "%l:%M:%S %p %Z", std::localtime(now));
218  
219                                  display.Set(2, 0, when);
220                          }
221  
222                          switch (mode)
223                          {
224 <                        default:
225 <                                ::Uname(display, now);
224 >                        case Uname:
225 >                                Uname_(display, now);
226  
227                                  break;
228                          case Music:
229                          case English:
230                          case Metric:
231                          case Nautical:
232 +                        case Menu:
233                                  break;
234                          }
235  
236 <                        ::sleep(1);
236 >                        Timing::NanoSleep(Timing::Time(1) -= Timing::GetTimeOfDay().GetNanoseconds());
237                  }
238          }
239          catch (const std::exception &exception)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines