]> git.vomp.tv Git - vompclient-marten.git/blob - woptionbox.cc
Options view files added, new remote type supported
[vompclient-marten.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(char* takeText)
40 {
41   int length = strlen(takeText);
42   char* newOption = new char[length + 1];
43   strcpy(newOption, takeText);
44
45   options = (char**)realloc(options, numOptions * sizeof(char*));
46   options[numOptions] = newOption;
47
48   numOptions++;
49 }
50
51 void WOptionBox::setActive(UCHAR tactive)
52 {
53   active = tactive;
54 }
55
56 void WOptionBox::draw()
57 {
58   if (active)
59   {
60     fillColour(Colour::SELECTHIGHLIGHT);
61     drawText(options[currentOption], 0, 0, Colour::DARKTEXT);
62   }
63   else
64   {
65     fillColour(Colour::BUTTONBACKGROUND);
66     drawText(options[currentOption], 0, 0, Colour::LIGHTTEXT);
67   }
68 }
69
70 void WOptionBox::left()
71 {
72   if (currentOption == 0) return;
73   --currentOption;
74 }
75
76 void WOptionBox::right()
77 {
78   if (currentOption == (numOptions - 1)) return;
79   ++currentOption;
80 }
81
82 void WOptionBox::cycle()
83 {
84   if (currentOption == (numOptions - 1))
85   {
86     currentOption = 0;
87   }
88   else
89   {
90     ++currentOption;
91   }
92 }
93
94 void WOptionBox::setSelected(char* toSelect)
95 {
96   for(UINT i = 0; i < numOptions; i++)
97   {
98     if (!strcmp(toSelect, options[i]))
99     {
100       currentOption = i;
101       return;
102     }
103   }
104   currentOption = 0;
105 }
106
107 char* WOptionBox::getSelected()
108 {
109   return options[currentOption];
110 }