Update to dms control phase1.
This commit is contained in:
95
src/components/TimeSliderPickerBox.cpp
Normal file
95
src/components/TimeSliderPickerBox.cpp
Normal file
@@ -0,0 +1,95 @@
|
||||
#include "TimeSliderPickerBox.h"
|
||||
#include <QHBoxLayout>
|
||||
#include <QLabel>
|
||||
|
||||
TimeSlidePickerBox::TimeSlidePickerBox(QWidget* aParent)
|
||||
: QWidget(aParent)
|
||||
, mLayout(new QHBoxLayout(this))
|
||||
, mHourBox1(new SlidePickerBox(this))
|
||||
, mHourBox2(new SlidePickerBox(this))
|
||||
, mMinuteBox1(new SlidePickerBox(this))
|
||||
, mMinuteBox2(new SlidePickerBox(this))
|
||||
, mSecondBox1(new SlidePickerBox(this))
|
||||
, mSecondBox2(new SlidePickerBox(this))
|
||||
, mIsMinuteSixty(false)
|
||||
, mIsSecondSixty(false)
|
||||
{
|
||||
initBox(mHourBox1, {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, 56);
|
||||
initBox(mHourBox2, {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, 56);
|
||||
|
||||
QLabel* hour = new QLabel(this);
|
||||
hour->setText("H");
|
||||
hour->setAlignment(Qt::AlignCenter);
|
||||
hour->setFixedWidth(50);
|
||||
hour->setObjectName("sliderSpliterLabel");
|
||||
mLayout->addWidget(hour);
|
||||
|
||||
initBox(mMinuteBox1, {"0", "1", "2", "3", "4", "5"}, 56);
|
||||
initBox(mMinuteBox2, {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, 56);
|
||||
|
||||
QLabel* min = new QLabel(this);
|
||||
min->setText("M");
|
||||
min->setAlignment(Qt::AlignCenter);
|
||||
min->setFixedWidth(50);
|
||||
min->setObjectName("sliderSpliterLabel");
|
||||
mLayout->addWidget(min);
|
||||
|
||||
initBox(mSecondBox1, {"0", "1", "2", "3", "4", "5"}, 56);
|
||||
initBox(mSecondBox2, {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, 56);
|
||||
|
||||
QLabel* sec = new QLabel(this);
|
||||
sec->setText("S");
|
||||
sec->setAlignment(Qt::AlignCenter);
|
||||
sec->setFixedWidth(50);
|
||||
sec->setObjectName("sliderSpliterLabel");
|
||||
mLayout->addWidget(sec);
|
||||
}
|
||||
|
||||
void TimeSlidePickerBox::initBox(SlidePickerBox* aBox, const QStringList& aItemsValues, int width)
|
||||
{
|
||||
aBox->setItems(aItemsValues);
|
||||
mLayout->addWidget(aBox);
|
||||
aBox->setFixedWidth(width);
|
||||
}
|
||||
|
||||
void TimeSlidePickerBox::resizeLabel()
|
||||
{
|
||||
mHourBox1->resizeLabelWidth();
|
||||
mHourBox2->resizeLabelWidth();
|
||||
mMinuteBox1->resizeLabelWidth();
|
||||
mMinuteBox2->resizeLabelWidth();
|
||||
mSecondBox1->resizeLabelWidth();
|
||||
mSecondBox2->resizeLabelWidth();
|
||||
}
|
||||
|
||||
QString TimeSlidePickerBox::getSelectedValue() const
|
||||
{
|
||||
return QString("%1%2%3%4%5%6%7%8%9").arg(mHourBox1->getSelectedValue())
|
||||
.arg(mHourBox2->getSelectedValue())
|
||||
.arg(tr("Hour"))
|
||||
.arg(mMinuteBox1->getSelectedValue())
|
||||
.arg(mMinuteBox2->getSelectedValue())
|
||||
.arg(tr("Min"))
|
||||
.arg(mSecondBox1->getSelectedValue())
|
||||
.arg(mSecondBox2->getSelectedValue())
|
||||
.arg(tr("Sec"));
|
||||
}
|
||||
int TimeSlidePickerBox::getTotalSeconds() const
|
||||
{
|
||||
return mHourBox1->getSelectedValue().toInt() * 10 * 3600 +
|
||||
mHourBox2->getSelectedValue().toInt() * 3600 +
|
||||
mMinuteBox1->getSelectedValue().toInt() * 10 * 60 +
|
||||
mMinuteBox2->getSelectedValue().toInt() * 60 +
|
||||
mSecondBox1->getSelectedValue().toInt() * 10 +
|
||||
mSecondBox2->getSelectedValue().toInt();
|
||||
}
|
||||
|
||||
void TimeSlidePickerBox::setSelectedValue(const int& aSeconds)
|
||||
{
|
||||
mHourBox1->setSelectedValue(QString::number(aSeconds / 36000));
|
||||
mHourBox2->setSelectedValue(QString::number((aSeconds / 3600) % 10));
|
||||
mMinuteBox1->setSelectedValue(QString::number((aSeconds % 3600) / 600));
|
||||
mMinuteBox2->setSelectedValue(QString::number((aSeconds % 600) / 60));
|
||||
mSecondBox1->setSelectedValue(QString::number((aSeconds % 60) / 10));
|
||||
mSecondBox2->setSelectedValue(QString::number(aSeconds % 10));
|
||||
}
|
||||
33
src/components/TimeSliderPickerBox.h
Normal file
33
src/components/TimeSliderPickerBox.h
Normal file
@@ -0,0 +1,33 @@
|
||||
#ifndef GUI_TIMESLIDEPICKERBOX_H
|
||||
#define GUI_TIMESLIDEPICKERBOX_H
|
||||
|
||||
#include <QWidget>
|
||||
#include "SlidePickerBox.h"
|
||||
|
||||
class QHBoxLayout;
|
||||
|
||||
class TimeSlidePickerBox : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit TimeSlidePickerBox(QWidget* aParent = nullptr);
|
||||
QString getSelectedValue() const;
|
||||
int getTotalSeconds() const;
|
||||
void setSelectedValue(const int& aSeconds);
|
||||
void resizeLabel();
|
||||
|
||||
private:
|
||||
QHBoxLayout* mLayout;
|
||||
SlidePickerBox* mHourBox1;
|
||||
SlidePickerBox* mHourBox2;
|
||||
SlidePickerBox* mMinuteBox1;
|
||||
SlidePickerBox* mMinuteBox2;
|
||||
SlidePickerBox* mSecondBox1;
|
||||
SlidePickerBox* mSecondBox2;
|
||||
bool mIsMinuteSixty;
|
||||
bool mIsSecondSixty;
|
||||
void initBox(SlidePickerBox* aBox, const QStringList& aItemsValues, int width = 50);
|
||||
};
|
||||
|
||||
|
||||
#endif //GUI_TIMESLIDEPICKERBOX_H
|
||||
Reference in New Issue
Block a user