Labrador/Desktop_Interface/ui_elements/espospinbox.cpp

54 lines
1.4 KiB
C++

#include "espospinbox.h"
espoSpinBox::espoSpinBox(QWidget *parent) : QDoubleSpinBox(parent)
{
//connect(this, SIGNAL(valueChanged(double)), this, SLOT(changeStepping(double)));
}
QString espoSpinBox::textFromValue(double value) const{
QString windowText;
if (value == 0){
QTextStream(&windowText) << value;
return windowText;
}
if (value >= 1000000){
QTextStream(&windowText) << value/1000000 << "M";
return windowText;
}
if (value >= 1000){
QTextStream(&windowText) << value/1000 << "k";
return windowText;
}
if (value >= 1){
QTextStream(&windowText) << value;
return windowText;
}
if (value >= 1/1000){
QTextStream(&windowText) << value * 1000 << "m";
return windowText;
}
if (value >= 1/1000000){
QTextStream(&windowText) << value * 1000000 << "u";
return windowText;
}
return "invalid";
}
void espoSpinBox::maximumChanged(double linked){
this->setMaximum(9.6-linked);
}
void espoSpinBox::setMax(double newMax){
this->setMaximum(newMax);
}
void espoSpinBox::setMin(double newMin){
this->setMinimum(newMin);
}
void espoSpinBox::changeStepping(double value){
double roundval = pow(10.0, floor(log10(value))); //http://stackoverflow.com/questions/22491505/how-to-round-down-to-the-nearest-power-of-10
roundval = (roundval == 0) ? 0.1 : roundval/10;
setSingleStep(roundval);
}