Update to dms control phase1.

This commit is contained in:
sunwen
2023-08-21 14:22:41 +08:00
parent d1dc5df680
commit 20fb814608
59 changed files with 2538 additions and 904 deletions

View 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));
}

View 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