]> git.vomp.tv Git - vompclient.git/blob - woptionbox.cc
Add video PTS to demuxer and do some tidying
[vompclient.git] / woptionbox.cc
1 /*
2     Copyright 2004-2005 Chris Tallon
3
4     This file is part of VOMP.
5
6     VOMP is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10
11     VOMP is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with VOMP; if not, write to the Free Software
18     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 */
20
21 #include "woptionbox.h"
22
23 WOptionBox::WOptionBox()
24 {
25   numOptions = 0;
26   options = NULL;
27   active = 0;
28   currentOption = 0;
29 }
30
31 WOptionBox::~WOptionBox()
32 {
33   if (!options) return;
34
35   for(UINT i = 0; i < numOptions; i++) delete[] options[i];
36   free(options);
37 }
38
39 void WOptionBox::addOption(const char* takeText)
40 {
41   int length = strlen(takeText);
42   char* newOption = new char[length + 1];
43   strcpy(newOption, takeText);
44
45   Log::getInstance()->log("Temp", Log::DEBUG, "About to realloc, num Options=%i, current options = %p, new text = %s", numOptions, options, newOption);
46
47   options = (char**)realloc(options, (numOptions+1) * sizeof(char*));
48   Log::getInstance()->log("Temp", Log::DEBUG, "");
49
50   options[numOptions] = newOption;
51
52   numOptions++;
53 }
54
55 void WOptionBox::setActive(UCHAR tactive)
56 {
57   active = tactive;
58 }
59
60 void WOptionBox::draw()
61 {
62   if (active)
63   {
64     fillColour(Colour::SELECTHIGHLIGHT);
65     drawText(options[currentOption], 0, 0, Colour::DARKTEXT);
66   }
67   else
68   {
69     fillColour(Colour::BUTTONBACKGROUND);
70     drawText(options[currentOption], 0, 0, Colour::LIGHTTEXT);
71   }
72 }
73
74 void WOptionBox::left()
75 {
76   if (currentOption == 0) return;
77   --currentOption;
78 }
79
80 void WOptionBox::right()
81 {
82   if (currentOption == (numOptions - 1)) return;
83   ++currentOption;
84 }
85
86 void WOptionBox::cycle()
87 {
88   if (currentOption == (numOptions - 1))
89   {
90     currentOption = 0;
91   }
92   else
93   {
94     ++currentOption;
95   }
96 }
97
98 void WOptionBox::setSelected(const char* toSelect)
99 {
100   for(UINT i = 0; i < numOptions; i++)
101   {
102     if (!strcmp(toSelect, options[i]))
103     {
104       currentOption = i;
105       return;
106     }
107   }
108   currentOption = 0;
109 }
110
111 char* WOptionBox::getSelected()
112 {
113   return options[currentOption];
114 }
115
116 int WOptionBox::getSelectedIndex()
117 {
118   return currentOption;
119 }