Browse Source

Add ofxRadioList base code

master
Krisjanis Rijnieks 11 years ago
parent
commit
d4b17dc092
  1. 95
      src/ui/ofxRadioList.cpp
  2. 23
      src/ui/ofxRadioList.h

95
src/ui/ofxRadioList.cpp

@ -0,0 +1,95 @@
#include "ofxRadioList.h"
ofxRadioList::ofxRadioList(){}
ofxRadioList::ofxRadioList(vector<string> &labels)
{
setup(labels);
}
ofxRadioList::~ofxRadioList()
{
removeListeners();
int i;
for (i = 0; i < toggles.size(); i++) {
delete toggles[i];
}
toggles.clear();
}
void ofxRadioList::setup(vector<string> &labels)
{
// Create toggles with labels from the labels arg
int i;
for (i = 0; i < labels.size(); i++) {
ofxToggle* toggle = new ofxToggle();
toggle->setup(false);
toggle->setName(labels[i]);
toggle->setPosition(0, toggle->getHeight() * i);
toggles.push_back(toggle);
}
addListeners();
}
void ofxRadioList::draw()
{
int i;
for (i = 0; i < toggles.size(); i++) {
toggles[i]->draw();
}
}
void ofxRadioList::addListeners()
{
if (toggles.size() <= 0) return;
int i;
for (i = 0; i < toggles.size(); i++) {
toggles[i]->addListener(this, &ofxRadioList::onToggleClicked);
}
}
void ofxRadioList::removeListeners()
{
if (toggles.size() <= 0) return;
int i;
for (i = 0; i < toggles.size(); i++) {
toggles[i]->removeListener(this, &ofxRadioList::onToggleClicked);
}
}
void ofxRadioList::unselectAll()
{
int i;
removeListeners();
for (i = 0; i < toggles.size(); i++) {
ofParameter<bool>* paramPtr = static_cast<ofParameter<bool>*>(&toggles[i]->getParameter());
*toggles[i] = false;
}
addListeners();
}
void ofxRadioList::onToggleClicked(bool &toggleValue)
{
unselectAll();
// Search for the actual toggle triggering the event
int i;
for (i = 0; i < toggles.size(); i++) {
ofParameter<bool>* paramPtr = static_cast<ofParameter<bool>*>(&toggles[i]->getParameter());
if (&(paramPtr->get()) == &toggleValue) {
removeListeners();
*toggles[i] = true;
cout << toggles[i]->getName() << endl;
addListeners();
break;
}
}
}

23
src/ui/ofxRadioList.h

@ -0,0 +1,23 @@
#pragma once
#include "ofGraphics.h"
#include "ofxToggle.h"
class ofxRadioList
{
public:
ofxRadioList();
ofxRadioList(vector<string> &labels);
~ofxRadioList();
void setup(vector<string> &labels);
void draw();
private:
vector<ofxToggle*> toggles;
void addListeners();
void removeListeners();
void unselectAll();
void onToggleClicked(bool &toggleValue);
};
Loading…
Cancel
Save