Browse Source

Refactor RadioList to comply with oF code style

master
Krisjanis Rijnieks 10 years ago
parent
commit
ed7d0fab02
  1. 148
      src/UserInterface/RadioList.cpp
  2. 23
      src/UserInterface/RadioList.h

148
src/UserInterface/RadioList.cpp

@ -1,33 +1,36 @@
#include "RadioList.h" #include "RadioList.h"
namespace ofx { namespace ofx{
namespace piMapper { namespace piMapper{
RadioList::RadioList() { RadioList::RadioList(){
storedTitle = ""; storedTitle = "";
storedSelectedItem = 0; storedSelectedItem = 0;
} }
RadioList::RadioList(vector<string>& labels, vector<string>& values) { RadioList::RadioList(vector<string> & labels, vector<string> & values){
RadioList(); RadioList();
setup(labels, values); setup(labels, values);
} }
RadioList::RadioList(string title, vector<string>& labels, vector<string>& values) { RadioList::RadioList(string title, vector<string> & labels, vector<string> & values){
RadioList(); RadioList();
setup(title, labels, values); setup(title, labels, values);
} }
RadioList::~RadioList() { clear(); } RadioList::~RadioList(){
clear();
}
void RadioList::setup(vector<string> & labels, vector<string> & values){
void RadioList::setup(vector<string>& labels, vector<string>& values) {
// Copy incomming labels for later use // Copy incomming labels for later use
storedLabels = labels; storedLabels = labels;
storedValues = values; storedValues = values;
// Create toggles with labels from the labels arg // Create toggles with labels from the labels arg
int i; int i;
for (i = 0; i < labels.size(); i++) { for(i = 0; i < labels.size(); i++){
ofxToggle* toggle = new ofxToggle(); ofxToggle * toggle = new ofxToggle();
toggle->setup(false); toggle->setup(false);
toggle->setName(labels[i]); toggle->setName(labels[i]);
toggle->addListener(this, &RadioList::onToggleClicked); toggle->addListener(this, &RadioList::onToggleClicked);
@ -36,34 +39,41 @@ void RadioList::setup(vector<string>& labels, vector<string>& values) {
toggle->registerMouseEvents(); toggle->registerMouseEvents();
#endif #endif
} }
} }
void RadioList::setup(string title, vector<string> & labels, vector<string> & values){
void RadioList::setup(string title, vector<string>& labels, vector<string>& values) {
// Store title for later use // Store title for later use
storedTitle = title; storedTitle = title;
guiGroup.setName(title); guiGroup.setName(title);
setup(labels, values); setup(labels, values);
} }
void RadioList::draw() { guiGroup.draw(); } void RadioList::draw(){
guiGroup.draw();
}
void RadioList::setTitle(string title) { void RadioList::setTitle(string title){
storedTitle = title; storedTitle = title;
guiGroup.setName(title); guiGroup.setName(title);
} }
void RadioList::setPosition(ofPoint p) { guiGroup.setPosition(p); } void RadioList::setPosition(ofPoint p){
guiGroup.setPosition(p);
}
void RadioList::setPosition(float x, float y) { guiGroup.setPosition(x, y); } void RadioList::setPosition(float x, float y){
guiGroup.setPosition(x, y);
}
void RadioList::selectItem(int index) { void RadioList::selectItem(int index){
if (index >= guiGroup.getNumControls()) { if(index >= guiGroup.getNumControls()){
return; return;
} }
unselectAll(); unselectAll();
ofxToggle* toggle = static_cast<ofxToggle*>(guiGroup.getControl(index)); ofxToggle * toggle = static_cast<ofxToggle *>(guiGroup.getControl(index));
toggle->removeListener(this, &RadioList::onToggleClicked); toggle->removeListener(this, &RadioList::onToggleClicked);
*toggle = true; // Select the specific radio button *toggle = true; // Select the specific radio button
toggle->addListener(this, &RadioList::onToggleClicked); toggle->addListener(this, &RadioList::onToggleClicked);
@ -72,23 +82,23 @@ void RadioList::selectItem(int index) {
string value = storedValues[index]; string value = storedValues[index];
ofNotifyEvent(onRadioSelected, value, this); ofNotifyEvent(onRadioSelected, value, this);
storedSelectedItem = index; storedSelectedItem = index;
} }
bool RadioList::selectItemByValue(std::string itemValue) { bool RadioList::selectItemByValue(std::string itemValue){
if (itemValue == "") { if(itemValue == ""){
ofLogNotice("RadioList") << "Item value empty"; ofLogNotice("RadioList") << "Item value empty";
return false; return false;
} }
unselectAll(); unselectAll();
int itemIndex = -1; int itemIndex = -1;
for (int i = 0; i < storedValues.size(); i++) { for(int i = 0; i < storedValues.size(); i++){
if (itemValue == storedValues[i]) { if(itemValue == storedValues[i]){
itemIndex = i; itemIndex = i;
break; break;
} }
} }
if (itemIndex >= 0) { if(itemIndex >= 0){
ofxToggle* toggle = static_cast<ofxToggle*>(guiGroup.getControl(itemIndex)); ofxToggle * toggle = static_cast<ofxToggle *>(guiGroup.getControl(itemIndex));
toggle->removeListener(this, &RadioList::onToggleClicked); toggle->removeListener(this, &RadioList::onToggleClicked);
*toggle = true; // Select the specific radio button *toggle = true; // Select the specific radio button
toggle->addListener(this, &RadioList::onToggleClicked); toggle->addListener(this, &RadioList::onToggleClicked);
@ -98,8 +108,8 @@ void RadioList::selectItem(int index) {
return false; return false;
} }
void RadioList::enable() { void RadioList::enable(){
if (guiGroup.getNumControls() >= 0) { if(guiGroup.getNumControls() > 0){
clear(); clear();
} }
@ -107,77 +117,83 @@ void RadioList::enable() {
setup(storedTitle, storedLabels, storedValues); setup(storedTitle, storedLabels, storedValues);
// Select the stored selected item without throwing an event // Select the stored selected item without throwing an event
ofxToggle* toggle = ofxToggle * toggle = static_cast<ofxToggle *>(guiGroup.getControl(storedSelectedItem));
static_cast<ofxToggle*>(guiGroup.getControl(storedSelectedItem));
toggle->removeListener(this, &RadioList::onToggleClicked); toggle->removeListener(this, &RadioList::onToggleClicked);
*toggle = true; *toggle = true;
toggle->addListener(this, &RadioList::onToggleClicked); toggle->addListener(this, &RadioList::onToggleClicked);
cout << "num items after enable: " << guiGroup.getNumControls() << endl; cout << "num items after enable: " << guiGroup.getNumControls() << endl;
} }
void RadioList::disable() { void RadioList::disable(){
// Just remove everything // Just remove everything
clear(); clear();
} }
void RadioList::clear() { void RadioList::clear(){
int i; int i;
for (i = 0; i < guiGroup.getNumControls(); i++) { for(i = 0; i < guiGroup.getNumControls(); i++){
ofxToggle* toggle = static_cast<ofxToggle*>(guiGroup.getControl(i)); ofxToggle * toggle = static_cast<ofxToggle *>(guiGroup.getControl(i));
toggle->removeListener(this, &RadioList::onToggleClicked); toggle->removeListener(this, &RadioList::onToggleClicked);
delete toggle; delete toggle;
} }
guiGroup.clear(); guiGroup.clear();
} }
void RadioList::unselectAll() { void RadioList::unselectAll(){
int i; int i;
for (i = 0; i < guiGroup.getNumControls(); i++) { for(i = 0; i < guiGroup.getNumControls(); i++){
ofxToggle* toggle = static_cast<ofxToggle*>(guiGroup.getControl(i)); ofxToggle * toggle = static_cast<ofxToggle *>(guiGroup.getControl(i));
ofParameter<bool>* paramPtr = ofParameter<bool> * paramPtr = static_cast<ofParameter<bool> *>(&toggle->getParameter());
static_cast<ofParameter<bool>*>(&toggle->getParameter());
toggle->removeListener(this, &RadioList::onToggleClicked); toggle->removeListener(this, &RadioList::onToggleClicked);
*toggle = false; *toggle = false;
toggle->addListener(this, &RadioList::onToggleClicked); toggle->addListener(this, &RadioList::onToggleClicked);
} }
} }
ofPoint RadioList::getPosition() { return guiGroup.getPosition(); } ofPoint RadioList::getPosition(){
return guiGroup.getPosition();
}
float RadioList::getWidth() { return guiGroup.getWidth(); } float RadioList::getWidth(){
return guiGroup.getWidth();
}
float RadioList::getHeight() { return guiGroup.getHeight(); } float RadioList::getHeight(){
return guiGroup.getHeight();
}
string RadioList::getTitle() { return guiGroup.getName(); } string RadioList::getTitle(){
return guiGroup.getName();
}
string RadioList::getItemName(int index) { string RadioList::getItemName(int index){
if (index >= guiGroup.getNumControls()) { if(index >= guiGroup.getNumControls()){
return ""; return "";
} }
ofxToggle* toggle = static_cast<ofxToggle*>(guiGroup.getControl(index)); ofxToggle * toggle = static_cast<ofxToggle *>(guiGroup.getControl(index));
return toggle->getName(); return toggle->getName();
} }
int RadioList::size() { return storedValues.size(); } int RadioList::size(){
return storedValues.size();
}
void RadioList::onToggleClicked(bool& toggleValue) void RadioList::onToggleClicked(bool & toggleValue){
{
unselectAll(); unselectAll();
// Search for the actual toggle triggering the event // Search for the actual toggle triggering the event
int i; int i;
for (i = 0; i < guiGroup.getNumControls(); i++) { for(i = 0; i < guiGroup.getNumControls(); i++){
ofxToggle* toggle = static_cast<ofxToggle*>(guiGroup.getControl(i)); ofxToggle * toggle = static_cast<ofxToggle *>(guiGroup.getControl(i));
ofParameter<bool>* paramPtr = ofParameter<bool> * paramPtr = static_cast<ofParameter<bool> *>(&toggle->getParameter());
static_cast<ofParameter<bool>*>(&toggle->getParameter());
if (&(paramPtr->get()) == &toggleValue) { if(&(paramPtr->get()) == &toggleValue){
selectItem(i); selectItem(i);
break; break;
} }
} }
} }
} } // namespace piMapper
} } // namespace ofx

23
src/UserInterface/RadioList.h

@ -5,17 +5,17 @@
#include "ofxToggle.h" #include "ofxToggle.h"
#include "ofxLabel.h" #include "ofxLabel.h"
namespace ofx { namespace ofx{
namespace piMapper { namespace piMapper{
class RadioList { class RadioList{
public: public:
RadioList(); RadioList();
RadioList(vector<string>& labels, vector<string>& values); RadioList(vector<string> & labels, vector<string> & values);
RadioList(string title, vector<string>& labels, vector<string>& values); RadioList(string title, vector<string> & labels, vector<string> & values);
~RadioList(); ~RadioList();
void setup(vector<string> &labels, vector<string>& values); void setup(vector<string> & labels, vector<string> & values);
void setup(string title, vector<string>& labels, vector<string>& values); void setup(string title, vector<string> & labels, vector<string> & values);
void draw(); void draw();
void setTitle(string title); void setTitle(string title);
void setPosition(ofPoint p); void setPosition(ofPoint p);
@ -47,7 +47,8 @@ class RadioList {
ofxGuiGroup guiGroup; ofxGuiGroup guiGroup;
int storedSelectedItem; int storedSelectedItem;
void onToggleClicked(bool &toggleValue); void onToggleClicked(bool & toggleValue);
};
} };
} } // namespace piMapper
} // namespace ofx
Loading…
Cancel
Save