Newer
Older
Michael Carpenter
committed
#include "UASQuickViewTextItem.h"
#include <QVBoxLayout>
Michael Carpenter
committed
#include <QDebug>
Michael Carpenter
committed
UASQuickViewTextItem::UASQuickViewTextItem(QWidget *parent) : UASQuickViewItem(parent)
{
// Set a standard vertical layout.
QVBoxLayout* layout = new QVBoxLayout();
Michael Carpenter
committed
layout->setMargin(0);
layout->setSizeConstraint(QLayout::SetMinimumSize);
// Create the title label. Scale the font based on available size.
Michael Carpenter
committed
titleLabel = new QLabel(this);
titleLabel->setAlignment(Qt::AlignHCenter);
titleLabel->setSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::Minimum);
titleLabel->setObjectName(QString::fromUtf8("title"));
QFont titlefont = titleLabel->font();
titlefont.setPixelSize(this->height() / 4.0);
titleLabel->setFont(titlefont);
layout->addWidget(titleLabel);
// Create the value label. Scale the font based on available size.
valueLabel = new QLabel(this);
valueLabel->setAlignment(Qt::AlignHCenter);
valueLabel->setSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::Minimum);
valueLabel->setObjectName(QString::fromUtf8("value"));
valueLabel->setText("0.00");
Michael Carpenter
committed
QFont valuefont = valueLabel->font();
valuefont.setPixelSize(this->height() / 2.0);
valueLabel->setFont(valuefont);
layout->addWidget(valueLabel);
// And make sure the items are evenly spaced in the UASQuickView.
layout->addSpacerItem(new QSpacerItem(10, 0, QSizePolicy::Minimum, QSizePolicy::Expanding));
Michael Carpenter
committed
}
void UASQuickViewTextItem::setValue(double value)
{
Michael Carpenter
committed
if (value < 10 && value > -10)
{
valueLabel->setText(QString::number(value,'f',4));
}
else if (value < 100 && value > -100)
{
valueLabel->setText(QString::number(value,'f',3));
}
else if (value < 1000 && value > -1000)
{
valueLabel->setText(QString::number(value,'f',2));
}
else if (value < 10000 && value > -10000)
{
valueLabel->setText(QString::number(value,'f',1));
}
Michael Carpenter
committed
{
valueLabel->setText(QString::number(value,'f',0));
}
Michael Carpenter
committed
}
void UASQuickViewTextItem::setTitle(QString title)
{
if (title.indexOf(".") != -1 && title.indexOf(":") != -1)
{
titleLabel->setText(title.mid(title.indexOf(".") + 1));
}
else
{
titleLabel->setText(title);
}
Michael Carpenter
committed
}
Michael Carpenter
committed
int UASQuickViewTextItem::minValuePixelSize()
{
QFont valuefont = valueLabel->font();
QFont titlefont = titleLabel->font();
valuefont.setPixelSize(this->height());
titlefont.setPixelSize(valuefont.pixelSize() * 0.75);
Michael Carpenter
committed
//spacerItem->setGeometry(QRect(0,0,20,this->height()/10.0));
QFontMetrics metrics(valuefont);
//valuefont.setPixelSize(this->height() / 2.0);
bool fit = false;
while (!fit)
{
QFontMetrics valfm( valuefont );
QRect valbound = valfm.boundingRect(0,0, valueLabel->width(), valueLabel->height(), Qt::TextWordWrap | Qt::AlignLeft, "12345678.00"/*valueLabel->text()*/);
//QFontMetrics titlefm( titlefont );
//QRect titlebound = titlefm.boundingRect(0,0, titleLabel->width(), titleLabel->height(), Qt::TextWordWrap | Qt::AlignLeft, titleLabel->text());
if ((valbound.width() <= valueLabel->width() && valbound.height() <= valueLabel->height())) // && (titlebound.width() <= titleLabel->width() && titlebound.height() <= titleLabel->height()))
Michael Carpenter
committed
fit = true;
else
{
Michael Carpenter
committed
{
fit = true;
Michael Carpenter
committed
}
else
{
valuefont.setPixelSize(valuefont.pixelSize() - 1);
Michael Carpenter
committed
}
//titlefont.setPixelSize(valuefont.pixelSize() / 2.0);
//qDebug() << "Point size:" << valuefont.pixelSize() << valueLabel->width() << valueLabel->height();
}
}
return valuefont.pixelSize();
}
void UASQuickViewTextItem::setValuePixelSize(int size)
{
QFont valuefont = valueLabel->font();
QFont titlefont = titleLabel->font();
valuefont.setPixelSize(size);
titlefont.setPixelSize(valuefont.pixelSize() * 0.75);
Michael Carpenter
committed
valueLabel->setFont(valuefont);
titleLabel->setFont(titlefont);
update();
}
Michael Carpenter
committed
void UASQuickViewTextItem::resizeEvent(QResizeEvent *event)
{
Don Gagne
committed
Q_UNUSED(event);
Michael Carpenter
committed
return;
Don Gagne
committed
#if 0
// code ifdef'ed out to silence warnings
Michael Carpenter
committed
QFont valuefont = valueLabel->font();
QFont titlefont = titleLabel->font();
Michael Carpenter
committed
valuefont.setPixelSize(this->height());
titlefont.setPixelSize(valuefont.pixelSize() / 2.0);
//spacerItem->setGeometry(QRect(0,0,20,this->height()/10.0));
Michael Carpenter
committed
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
QFontMetrics metrics(valuefont);
//valuefont.setPixelSize(this->height() / 2.0);
bool fit = false;
while (!fit)
{
QFontMetrics valfm( valuefont );
QRect valbound = valfm.boundingRect(0,0, valueLabel->width(), valueLabel->height(), Qt::TextWordWrap | Qt::AlignLeft, valueLabel->text());
//QFontMetrics titlefm( titlefont );
//QRect titlebound = titlefm.boundingRect(0,0, titleLabel->width(), titleLabel->height(), Qt::TextWordWrap | Qt::AlignLeft, titleLabel->text());
if ((valbound.width() <= valueLabel->width() && valbound.height() <= valueLabel->height()))// && (titlebound.width() <= titleLabel->width() && titlebound.height() <= titleLabel->height()))
fit = true;
else
{
if (valuefont.pixelSize()-5 <= 0)
{
fit = true;
valuefont.setPixelSize(5);
}
else
{
valuefont.setPixelSize(valuefont.pixelSize() - 5);
}
//titlefont.setPixelSize(valuefont.pixelSize() / 2.0);
//qDebug() << "Point size:" << valuefont.pixelSize() << valueLabel->width() << valueLabel->height();
}
}
titlefont.setPixelSize(valuefont.pixelSize() / 2.0);
Michael Carpenter
committed
valueLabel->setFont(valuefont);
titleLabel->setFont(titlefont);
update();
Don Gagne
committed
#endif