完成TimeLine组件和其它时间组件之间的数据通信和同步
This commit is contained in:
parent
531d5a74c8
commit
7c2d409091
|
|
@ -82,6 +82,8 @@ public slots:
|
||||||
void onSignal_dashboardTabMoved(int, int); //拖动tab引发了位置变化
|
void onSignal_dashboardTabMoved(int, int); //拖动tab引发了位置变化
|
||||||
void onSignal_panelSelectResult(const QString&);
|
void onSignal_panelSelectResult(const QString&);
|
||||||
|
|
||||||
|
void onSignal_timeRangeChanged(TimeUnit);
|
||||||
|
void onSignal_viewRealTimeData();
|
||||||
void onSignal_viewHistoricalData(QDateTime);
|
void onSignal_viewHistoricalData(QDateTime);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ public:
|
||||||
~DateTimeWidget();
|
~DateTimeWidget();
|
||||||
|
|
||||||
void setDateTime(QDateTime);
|
void setDateTime(QDateTime);
|
||||||
|
void setState(DateTimeWidgetState);
|
||||||
|
void setRange(TimeUnit);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool eventFilter(QObject*, QEvent*);
|
bool eventFilter(QObject*, QEvent*);
|
||||||
|
|
@ -38,7 +40,8 @@ public slots:
|
||||||
void onDateTimeSelectResults(QDateTime);
|
void onDateTimeSelectResults(QDateTime);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void setRange(int);
|
void timeRangeChanged(TimeUnit);
|
||||||
|
void viewRealTimeData();
|
||||||
void viewHistoricalData(QDateTime);
|
void viewHistoricalData(QDateTime);
|
||||||
|
|
||||||
void showMask();
|
void showMask();
|
||||||
|
|
@ -46,7 +49,6 @@ signals:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void initialize();
|
void initialize();
|
||||||
void setState(DateTimeWidgetState);
|
|
||||||
|
|
||||||
Ui::dateTimeWidget* ui;
|
Ui::dateTimeWidget* ui;
|
||||||
QTimer* m_pTimer_RealTime;
|
QTimer* m_pTimer_RealTime;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,9 @@
|
||||||
#ifndef GLOBAL_H
|
#ifndef GLOBAL_H
|
||||||
#define GLOBAL_H
|
#define GLOBAL_H
|
||||||
|
|
||||||
|
#include <QHash>
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
enum MessageDialogType
|
enum MessageDialogType
|
||||||
{
|
{
|
||||||
type_information = 0,
|
type_information = 0,
|
||||||
|
|
@ -21,6 +24,31 @@ enum DateTimeWidgetState
|
||||||
historical
|
historical
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum TimeUnit
|
||||||
|
{
|
||||||
|
TU_Year = 1, //yyyy
|
||||||
|
TU_Month, //yyyy/M/1
|
||||||
|
TU_Day, //M/d
|
||||||
|
TU_Hour, //M/d/hh
|
||||||
|
TU_Minute_30, //hh:mm
|
||||||
|
TU_Minute_20, //hh:mm
|
||||||
|
TU_Minute_15, //hh:mm
|
||||||
|
TU_Minute_10, //hh:mm
|
||||||
|
TU_Minute_5, //hh:mm
|
||||||
|
TU_Minute_3, //hh:mm
|
||||||
|
TU_Minute_1, //hh:mm
|
||||||
|
TU_Second_30, //hh:mm:ss
|
||||||
|
TU_Second_10, //hh:mm:ss
|
||||||
|
TU_Second_1, //hh:mm:ss
|
||||||
|
TU_MSecond_500, //mm:ss:z
|
||||||
|
TU_MSecond_100, //mm:ss:z
|
||||||
|
TU_MSecond_50, //mm:ss:z
|
||||||
|
TU_MSecond_10 //mm:ss:z
|
||||||
|
};
|
||||||
|
|
||||||
extern MessageDialogBtn g_msgDlgBtn;
|
extern MessageDialogBtn g_msgDlgBtn;
|
||||||
|
extern QHash<int, QString> g_timeUnit;
|
||||||
|
|
||||||
|
void initializeGlobalVariable();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -44,12 +44,16 @@ DashboardFrame::DashboardFrame(const QString& strName, dashboardFrame::frameType
|
||||||
ui->btnAlarmNoticatio->setVisible(false);
|
ui->btnAlarmNoticatio->setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
initializeGlobalVariable();
|
||||||
|
|
||||||
m_pDateTimeWidget = new DateTimeWidget(this);
|
m_pDateTimeWidget = new DateTimeWidget(this);
|
||||||
m_pDateTimeWidget->setObjectName("dateTimeWidget");
|
m_pDateTimeWidget->setObjectName("dateTimeWidget");
|
||||||
ui->layout_dateTime->addWidget(m_pDateTimeWidget);
|
ui->layout_dateTime->addWidget(m_pDateTimeWidget);
|
||||||
connect(m_pDateTimeWidget, SIGNAL(showMask()), this, SLOT(onSignal_showMask()));
|
connect(m_pDateTimeWidget, SIGNAL(showMask()), this, SLOT(onSignal_showMask()));
|
||||||
connect(m_pDateTimeWidget, SIGNAL(hideMask()), this, SLOT(onSignal_hideMask()));
|
connect(m_pDateTimeWidget, SIGNAL(hideMask()), this, SLOT(onSignal_hideMask()));
|
||||||
|
connect(m_pDateTimeWidget, SIGNAL(viewRealTimeData()), this, SLOT(onSignal_viewRealTimeData()));
|
||||||
connect(m_pDateTimeWidget, SIGNAL(viewHistoricalData(QDateTime)), this, SLOT(onSignal_viewHistoricalData(QDateTime)));
|
connect(m_pDateTimeWidget, SIGNAL(viewHistoricalData(QDateTime)), this, SLOT(onSignal_viewHistoricalData(QDateTime)));
|
||||||
|
connect(m_pDateTimeWidget, SIGNAL(timeRangeChanged(TimeUnit)), this, SLOT(onSignal_timeRangeChanged(TimeUnit)));
|
||||||
|
|
||||||
m_pDashboardTabBar = new CustomTabBar(this);
|
m_pDashboardTabBar = new CustomTabBar(this);
|
||||||
m_pDashboardTabBar->setFrame(this);
|
m_pDashboardTabBar->setFrame(this);
|
||||||
|
|
@ -62,6 +66,9 @@ DashboardFrame::DashboardFrame(const QString& strName, dashboardFrame::frameType
|
||||||
m_pTimeLineWidget->setTimelineColor(QColor(250, 250, 250));
|
m_pTimeLineWidget->setTimelineColor(QColor(250, 250, 250));
|
||||||
m_pTimeLineWidget->setTimeScaleSize(200);
|
m_pTimeLineWidget->setTimeScaleSize(200);
|
||||||
ui->layout_timeLine->addWidget(m_pTimeLineWidget);
|
ui->layout_timeLine->addWidget(m_pTimeLineWidget);
|
||||||
|
connect(m_pTimeLineWidget, SIGNAL(viewHistoricalData(QDateTime)), this, SLOT(onSignal_viewHistoricalData(QDateTime)));
|
||||||
|
connect(m_pTimeLineWidget, SIGNAL(timeScaleUnitChanged(TimeUnit)), this, SLOT(onSignal_timeRangeChanged(TimeUnit)));
|
||||||
|
m_pTimeLineWidget->syncTimeUnit();
|
||||||
|
|
||||||
connect(ui->btnAddDashboard, SIGNAL(clicked()), this, SLOT(onBtnClicked_addDashboard()));
|
connect(ui->btnAddDashboard, SIGNAL(clicked()), this, SLOT(onBtnClicked_addDashboard()));
|
||||||
connect(ui->btnAddPanel, SIGNAL(clicked()), this, SLOT(onBtnClicked_addDataPanel()));
|
connect(ui->btnAddPanel, SIGNAL(clicked()), this, SLOT(onBtnClicked_addDataPanel()));
|
||||||
|
|
@ -76,6 +83,9 @@ DashboardFrame::DashboardFrame(const QString& strName, dashboardFrame::frameType
|
||||||
DashboardFrame::~DashboardFrame()
|
DashboardFrame::~DashboardFrame()
|
||||||
{
|
{
|
||||||
delete ui;
|
delete ui;
|
||||||
|
|
||||||
|
if(m_pTimer_RealTime->isActive())
|
||||||
|
m_pTimer_RealTime->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DashboardFrame::eventFilter(QObject* obj, QEvent* event)
|
bool DashboardFrame::eventFilter(QObject* obj, QEvent* event)
|
||||||
|
|
@ -609,7 +619,7 @@ void DashboardFrame::onSignal_renameDashboard()
|
||||||
}
|
}
|
||||||
|
|
||||||
showTransparentMask();
|
showTransparentMask();
|
||||||
QPoint originPoint = ui->navigationPanel->mapToGlobal(QPoint(0, 0));
|
//QPoint originPoint = ui->navigationPanel->mapToGlobal(QPoint(0, 0));
|
||||||
int nX = (ui->navigationPanel->width() - m_pDashboardNamingDialog->width()) * 0.5;
|
int nX = (ui->navigationPanel->width() - m_pDashboardNamingDialog->width()) * 0.5;
|
||||||
int nY = ui->navigationPanel->y() + ui->navigationPanel->height() * 0.5;
|
int nY = ui->navigationPanel->y() + ui->navigationPanel->height() * 0.5;
|
||||||
m_pDashboardNamingDialog->setGeometry(nX, nY, m_pDashboardNamingDialog->width(), m_pDashboardNamingDialog->height());
|
m_pDashboardNamingDialog->setGeometry(nX, nY, m_pDashboardNamingDialog->width(), m_pDashboardNamingDialog->height());
|
||||||
|
|
@ -624,18 +634,44 @@ void DashboardFrame::onSignal_panelSelectResult(const QString& strType)
|
||||||
m_curActiveDashboard->addPanel(strType);
|
m_curActiveDashboard->addPanel(strType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DashboardFrame::onSignal_timeRangeChanged(TimeUnit unit)
|
||||||
|
{
|
||||||
|
QObject* pObject = QObject::sender();
|
||||||
|
if(pObject->objectName() == "dateTimeWidget")
|
||||||
|
{
|
||||||
|
m_pTimeLineWidget->setTimeScaleUnit(unit);
|
||||||
|
}
|
||||||
|
else if(pObject->objectName() == "timeLineWidget")
|
||||||
|
{
|
||||||
|
m_pDateTimeWidget->setRange(unit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DashboardFrame::onSignal_viewRealTimeData()
|
||||||
|
{
|
||||||
|
if(!m_pTimer_RealTime->isActive())
|
||||||
|
m_pTimer_RealTime->start(1000);
|
||||||
|
|
||||||
|
m_pTimeLineWidget->setDisplayState(realTime);
|
||||||
|
}
|
||||||
|
|
||||||
void DashboardFrame::onSignal_viewHistoricalData(QDateTime dateTime)
|
void DashboardFrame::onSignal_viewHistoricalData(QDateTime dateTime)
|
||||||
{
|
{
|
||||||
//qDebug() << "viewHistoricalData: " + dateTime.date().toString("yyyy/MM/dd");
|
//qDebug() << "viewHistoricalData: " + dateTime.date().toString("yyyy/MM/dd");
|
||||||
hideTransparentMask();
|
hideTransparentMask();
|
||||||
|
|
||||||
|
if(m_pTimer_RealTime->isActive())
|
||||||
|
m_pTimer_RealTime->stop();
|
||||||
|
|
||||||
QObject* pObject = QObject::sender();
|
QObject* pObject = QObject::sender();
|
||||||
if(pObject->objectName() == "dateTimeWidget")
|
if(pObject->objectName() == "dateTimeWidget")
|
||||||
{
|
{
|
||||||
|
m_pTimeLineWidget->setDateTime(dateTime);
|
||||||
|
m_pTimeLineWidget->setDisplayState(historical);
|
||||||
}
|
}
|
||||||
else if(pObject->objectName() == "timeLineWidget")
|
else if(pObject->objectName() == "timeLineWidget")
|
||||||
{
|
{
|
||||||
|
m_pDateTimeWidget->setDateTime(dateTime);
|
||||||
|
m_pDateTimeWidget->setState(historical);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,10 @@ void DateTimeSelectionPanel::show_()
|
||||||
QDate today = QDate::currentDate();
|
QDate today = QDate::currentDate();
|
||||||
m_pCalendar->setSelectedDate(today);
|
m_pCalendar->setSelectedDate(today);
|
||||||
m_pCalendar->showToday();
|
m_pCalendar->showToday();
|
||||||
|
|
||||||
|
ui->btn_year->setText(QString::number(m_pCalendar->selectedDate().year()));
|
||||||
|
ui->btn_month->setText(QString::number(m_pCalendar->selectedDate().month()));
|
||||||
|
|
||||||
show();
|
show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,31 +58,31 @@ void DateTimeWidget::initialize()
|
||||||
connect(ui->btnDate, SIGNAL(clicked()), this, SLOT(onBtnClicked_date()));
|
connect(ui->btnDate, SIGNAL(clicked()), this, SLOT(onBtnClicked_date()));
|
||||||
connect(ui->btnHistoricalData, SIGNAL(clicked()), this, SLOT(onBtnClicked_historicalData()));
|
connect(ui->btnHistoricalData, SIGNAL(clicked()), this, SLOT(onBtnClicked_historicalData()));
|
||||||
|
|
||||||
int nMinUnit = 60; //以秒为最小单位
|
//int nMinUnit = 60 * 1000; //以毫秒为最小单位
|
||||||
ui->btnRange_1m->setProperty("range", 1*nMinUnit);
|
//ui->btnRange_1m->setProperty("range", 1*nMinUnit);
|
||||||
ui->btnRange_1m->setProperty("name", "1m");
|
ui->btnRange_1m->setProperty("timeUnit", TU_Minute_1);
|
||||||
connect(ui->btnRange_1m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
connect(ui->btnRange_1m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
||||||
ui->btnRange_3m->setProperty("range", 3*nMinUnit);
|
//ui->btnRange_3m->setProperty("range", 3*nMinUnit);
|
||||||
ui->btnRange_3m->setProperty("name", "3m");
|
ui->btnRange_3m->setProperty("timeUnit", TU_Minute_3);
|
||||||
connect(ui->btnRange_3m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
connect(ui->btnRange_3m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
||||||
ui->btnRange_5m->setProperty("range", 5*nMinUnit);
|
//ui->btnRange_5m->setProperty("range", 5*nMinUnit);
|
||||||
ui->btnRange_5m->setProperty("name", "5m");
|
ui->btnRange_5m->setProperty("timeUnit", TU_Minute_5);
|
||||||
connect(ui->btnRange_5m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
connect(ui->btnRange_5m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
||||||
ui->btnRange_10m->setProperty("range", 10*nMinUnit);
|
//ui->btnRange_10m->setProperty("range", 10*nMinUnit);
|
||||||
ui->btnRange_10m->setProperty("name", "10m");
|
ui->btnRange_10m->setProperty("timeUnit", TU_Minute_10);
|
||||||
connect(ui->btnRange_10m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
connect(ui->btnRange_10m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
||||||
ui->btnRange_30m->setProperty("range", 30*nMinUnit);
|
//ui->btnRange_30m->setProperty("range", 30*nMinUnit);
|
||||||
ui->btnRange_30m->setProperty("name", "30m");
|
ui->btnRange_30m->setProperty("timeUnit", TU_Minute_30);
|
||||||
connect(ui->btnRange_30m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
connect(ui->btnRange_30m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
||||||
ui->btnRange_1h->setProperty("range", 1*60*nMinUnit);
|
//ui->btnRange_1h->setProperty("range", 1*60*nMinUnit);
|
||||||
ui->btnRange_1h->setProperty("name", "1h");
|
ui->btnRange_1h->setProperty("timeUnit", TU_Hour);
|
||||||
connect(ui->btnRange_1h, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
connect(ui->btnRange_1h, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
||||||
ui->btnRange_1d->setProperty("range", 24*60*nMinUnit);
|
//ui->btnRange_1d->setProperty("range", 24*60*nMinUnit);
|
||||||
ui->btnRange_1d->setProperty("name", "1d");
|
ui->btnRange_1d->setProperty("timeUnit", TU_Day);
|
||||||
connect(ui->btnRange_1d, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
connect(ui->btnRange_1d, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
||||||
ui->btnRange_7d->setProperty("range", 7*24*60*nMinUnit);
|
//ui->btnRange_30d->setProperty("range", 30*24*60*nMinUnit);
|
||||||
ui->btnRange_7d->setProperty("name", "7d");
|
ui->btnRange_30d->setProperty("timeUnit", TU_Month);
|
||||||
connect(ui->btnRange_7d, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
connect(ui->btnRange_30d, SIGNAL(clicked()), this, SLOT(onBtnClicked_range()));
|
||||||
|
|
||||||
connect(ui->btnRangeSelect1, SIGNAL(clicked()), this, SLOT(onBtnClicked_rangeSelect()));
|
connect(ui->btnRangeSelect1, SIGNAL(clicked()), this, SLOT(onBtnClicked_rangeSelect()));
|
||||||
connect(ui->btnRangeSelect2, SIGNAL(clicked()), this, SLOT(onBtnClicked_rangeSelect()));
|
connect(ui->btnRangeSelect2, SIGNAL(clicked()), this, SLOT(onBtnClicked_rangeSelect()));
|
||||||
|
|
@ -102,6 +102,19 @@ void DateTimeWidget::initialize()
|
||||||
connect(m_pSelectionPanel, SIGNAL(selectResults(QDateTime)), this, SLOT(onDateTimeSelectResults(QDateTime)));
|
connect(m_pSelectionPanel, SIGNAL(selectResults(QDateTime)), this, SLOT(onDateTimeSelectResults(QDateTime)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DateTimeWidget::setRange(TimeUnit unit)
|
||||||
|
{
|
||||||
|
QString strName = g_timeUnit.value(unit);
|
||||||
|
ui->btnRangeSelect1->setText(strName);
|
||||||
|
QChar c = strName.back();
|
||||||
|
if(c == 'm')
|
||||||
|
ui->btnRangeSelect2->setText("Minute Chart Range");
|
||||||
|
else if(c == 'h')
|
||||||
|
ui->btnRangeSelect2->setText("Hour Chart Range");
|
||||||
|
else if(c == 'd')
|
||||||
|
ui->btnRangeSelect2->setText("Day Chart Range");
|
||||||
|
}
|
||||||
|
|
||||||
void DateTimeWidget::setState(DateTimeWidgetState state)
|
void DateTimeWidget::setState(DateTimeWidgetState state)
|
||||||
{
|
{
|
||||||
if(state == realTime)
|
if(state == realTime)
|
||||||
|
|
@ -121,7 +134,7 @@ void DateTimeWidget::setDateTime(QDateTime dateTime)
|
||||||
{
|
{
|
||||||
QString strTime = dateTime.time().toString("HH:mm:ss");
|
QString strTime = dateTime.time().toString("HH:mm:ss");
|
||||||
ui->label_time->setText(strTime);
|
ui->label_time->setText(strTime);
|
||||||
if(dateTime.time() == QTime(0,0,0))
|
//if(dateTime.time() == QTime(0,0,0))
|
||||||
{
|
{
|
||||||
QString strDate = dateTime.date().toString("yyyy/MM/dd");
|
QString strDate = dateTime.date().toString("yyyy/MM/dd");
|
||||||
ui->btnDate->setText(strDate);
|
ui->btnDate->setText(strDate);
|
||||||
|
|
@ -131,6 +144,7 @@ void DateTimeWidget::setDateTime(QDateTime dateTime)
|
||||||
void DateTimeWidget::onBtnClicked_historicalData()
|
void DateTimeWidget::onBtnClicked_historicalData()
|
||||||
{
|
{
|
||||||
setState(realTime);
|
setState(realTime);
|
||||||
|
emit viewRealTimeData();
|
||||||
}
|
}
|
||||||
void DateTimeWidget::onBtnClicked_realTimeData()
|
void DateTimeWidget::onBtnClicked_realTimeData()
|
||||||
{
|
{
|
||||||
|
|
@ -139,7 +153,6 @@ void DateTimeWidget::onBtnClicked_realTimeData()
|
||||||
|
|
||||||
void DateTimeWidget::onBtnClicked_date()
|
void DateTimeWidget::onBtnClicked_date()
|
||||||
{
|
{
|
||||||
setState(historical);
|
|
||||||
emit showMask();
|
emit showMask();
|
||||||
|
|
||||||
QPoint originPoint = ui->btnDate->mapToGlobal(QPoint(0, 0));
|
QPoint originPoint = ui->btnDate->mapToGlobal(QPoint(0, 0));
|
||||||
|
|
@ -161,18 +174,9 @@ void DateTimeWidget::onBtnClicked_range()
|
||||||
if(!pBtn)
|
if(!pBtn)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int nRange = pBtn->property("range").toInt();
|
TimeUnit unit = (TimeUnit)pBtn->property("timeUnit").toInt();
|
||||||
emit setRange(nRange);
|
setRange(unit);
|
||||||
|
emit timeRangeChanged(unit);
|
||||||
QString strName = pBtn->property("name").toString();
|
|
||||||
ui->btnRangeSelect1->setText(strName);
|
|
||||||
QChar c = strName.back();
|
|
||||||
if(c == 'm')
|
|
||||||
ui->btnRangeSelect2->setText("Minute Chart Range");
|
|
||||||
else if(c == 'h')
|
|
||||||
ui->btnRangeSelect2->setText("Hour Chart Range");
|
|
||||||
else if(c == 'd')
|
|
||||||
ui->btnRangeSelect2->setText("Day Chart Range");
|
|
||||||
|
|
||||||
ui->stacked_range->setCurrentIndex(0);
|
ui->stacked_range->setCurrentIndex(0);
|
||||||
if(m_pTimer_Range->isActive())
|
if(m_pTimer_Range->isActive())
|
||||||
|
|
@ -197,14 +201,13 @@ void DateTimeWidget::onTimeout_realTime()
|
||||||
|
|
||||||
void DateTimeWidget::onDateTimeSelectResults(QDateTime dateTime)
|
void DateTimeWidget::onDateTimeSelectResults(QDateTime dateTime)
|
||||||
{
|
{
|
||||||
if(dateTime.date() == QDate::currentDate())
|
if(dateTime.date() == QDate::currentDate() && ui->stacked_time->currentIndex() == 0)
|
||||||
{
|
{
|
||||||
setState(realTime);
|
|
||||||
emit hideMask();
|
emit hideMask();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
setState(historical);
|
||||||
dateTime.setTime(QTime::currentTime());
|
dateTime.setTime(QTime::currentTime());
|
||||||
emit viewHistoricalData(dateTime);
|
emit viewHistoricalData(dateTime);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,27 @@
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
|
||||||
MessageDialogBtn g_msgDlgBtn = btn_Null;
|
MessageDialogBtn g_msgDlgBtn = btn_Null;
|
||||||
|
|
||||||
|
QHash<int, QString> g_timeUnit;
|
||||||
|
|
||||||
|
void initializeGlobalVariable()
|
||||||
|
{
|
||||||
|
g_timeUnit.insert(TU_Year, QString::fromWCharArray(L"365d"));
|
||||||
|
g_timeUnit.insert(TU_Month, QString::fromWCharArray(L"30d"));
|
||||||
|
g_timeUnit.insert(TU_Day, QString::fromWCharArray(L"1d"));
|
||||||
|
g_timeUnit.insert(TU_Hour, QString::fromWCharArray(L"1h"));
|
||||||
|
g_timeUnit.insert(TU_Minute_30, QString::fromWCharArray(L"30m"));
|
||||||
|
g_timeUnit.insert(TU_Minute_20, QString::fromWCharArray(L"20m"));
|
||||||
|
g_timeUnit.insert(TU_Minute_15, QString::fromWCharArray(L"15m"));
|
||||||
|
g_timeUnit.insert(TU_Minute_10, QString::fromWCharArray(L"10m"));
|
||||||
|
g_timeUnit.insert(TU_Minute_5, QString::fromWCharArray(L"5m"));
|
||||||
|
g_timeUnit.insert(TU_Minute_3, QString::fromWCharArray(L"3m"));
|
||||||
|
g_timeUnit.insert(TU_Minute_1, QString::fromWCharArray(L"1m"));
|
||||||
|
g_timeUnit.insert(TU_Second_30, QString::fromWCharArray(L"30s"));
|
||||||
|
g_timeUnit.insert(TU_Second_10, QString::fromWCharArray(L"10s"));
|
||||||
|
g_timeUnit.insert(TU_Second_1, QString::fromWCharArray(L"1s"));
|
||||||
|
g_timeUnit.insert(TU_MSecond_500, QString::fromWCharArray(L"500ms"));
|
||||||
|
g_timeUnit.insert(TU_MSecond_100, QString::fromWCharArray(L"100ms"));
|
||||||
|
g_timeUnit.insert(TU_MSecond_50, QString::fromWCharArray(L"50ms"));
|
||||||
|
g_timeUnit.insert(TU_MSecond_10, QString::fromWCharArray(L"10ms"));
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@ color:rgb(250,250,250);</string>
|
||||||
<string>11:39:52</string>
|
<string>11:39:52</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
<set>Qt::AlignCenter</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
@ -300,7 +300,7 @@ background-color:transparent;
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer">
|
<spacer name="horizontalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Orientation::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
|
|
@ -314,13 +314,13 @@ background-color:transparent;
|
||||||
<widget class="QPushButton" name="btnRangeSelect1">
|
<widget class="QPushButton" name="btnRangeSelect1">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>65</width>
|
<width>100</width>
|
||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>65</width>
|
<width>100</width>
|
||||||
<height>16777215</height>
|
<height>16777215</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
|
@ -342,7 +342,7 @@ QPushButton:pressed
|
||||||
}</string>
|
}</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>30m</string>
|
<string>500ms</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="flat">
|
<property name="flat">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
|
|
@ -352,7 +352,7 @@ QPushButton:pressed
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer_2">
|
<spacer name="horizontalSpacer_2">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Orientation::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
|
|
@ -654,7 +654,7 @@ background-color:transparent;
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="3">
|
<item row="1" column="3">
|
||||||
<widget class="QPushButton" name="btnRange_7d">
|
<widget class="QPushButton" name="btnRange_30d">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>41</width>
|
<width>41</width>
|
||||||
|
|
@ -684,7 +684,7 @@ background-color:transparent;
|
||||||
}</string>
|
}</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>7d</string>
|
<string>30d</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
||||||
|
|
@ -17,13 +17,14 @@ public:
|
||||||
QDateTime m_rightTime; //当前时间右边第一个需要输出展示的时间点
|
QDateTime m_rightTime; //当前时间右边第一个需要输出展示的时间点
|
||||||
int m_curTimePos; //当前时间所在的位置(x值),默认在中间(=0)
|
int m_curTimePos; //当前时间所在的位置(x值),默认在中间(=0)
|
||||||
int m_rightTimePos;
|
int m_rightTimePos;
|
||||||
DisplayState m_curState;
|
|
||||||
int m_scaleSize; //时间刻度大小,单位为像素
|
int m_scaleSize; //时间刻度大小,单位为像素
|
||||||
int m_scaleFactor; //缩放倍数
|
int m_scaleFactor; //缩放倍数
|
||||||
|
|
||||||
bool m_leftMouseIsDown; //鼠标左键是否按下
|
bool m_leftMouseIsDown; //鼠标左键是否按下
|
||||||
QPointF m_mouseDownPoint; //鼠标左键按下的坐标
|
QPointF m_mouseDownPoint; //鼠标左键按下的坐标
|
||||||
QDateTime m_mouseDownTime; //鼠标左键是按下坐标对应的时间
|
QDateTime m_mouseDownTime; //鼠标左键是按下坐标对应的时间
|
||||||
|
|
||||||
|
DateTimeWidgetState m_curState;
|
||||||
};
|
};
|
||||||
TimeLineItemPrivate::TimeLineItemPrivate()
|
TimeLineItemPrivate::TimeLineItemPrivate()
|
||||||
{
|
{
|
||||||
|
|
@ -33,7 +34,7 @@ TimeLineItemPrivate::TimeLineItemPrivate()
|
||||||
m_rightTime = m_curTime;
|
m_rightTime = m_curTime;
|
||||||
m_curTimePos = 0;
|
m_curTimePos = 0;
|
||||||
m_rightTimePos = 0;
|
m_rightTimePos = 0;
|
||||||
m_curState = RealTime;
|
m_curState = realTime;
|
||||||
m_scaleSize = 100;
|
m_scaleSize = 100;
|
||||||
m_scaleFactor = (int)m_curTimeUnit;
|
m_scaleFactor = (int)m_curTimeUnit;
|
||||||
}
|
}
|
||||||
|
|
@ -70,7 +71,7 @@ void TimeLineItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* opti
|
||||||
QFont font = painter->font();
|
QFont font = painter->font();
|
||||||
QString strCurState = "";
|
QString strCurState = "";
|
||||||
//绘制title,包含当前日期显示、状态显示,不同状态对应不同颜色
|
//绘制title,包含当前日期显示、状态显示,不同状态对应不同颜色
|
||||||
if(d_ptr->m_curState == RealTime)
|
if(d_ptr->m_curState == realTime)
|
||||||
{
|
{
|
||||||
brush.setColor(QColor(39, 102, 59));
|
brush.setColor(QColor(39, 102, 59));
|
||||||
brush.setStyle(Qt::SolidPattern);
|
brush.setStyle(Qt::SolidPattern);
|
||||||
|
|
@ -578,7 +579,7 @@ void TimeLineItem::setScaleSize(int size)
|
||||||
d_ptr->m_scaleSize = size;
|
d_ptr->m_scaleSize = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TimeLineItem::setState(DisplayState state)
|
void TimeLineItem::setState(DateTimeWidgetState state)
|
||||||
{
|
{
|
||||||
d_ptr->m_curState = state;
|
d_ptr->m_curState = state;
|
||||||
}
|
}
|
||||||
|
|
@ -618,4 +619,14 @@ void TimeLineItem::zoomOut()
|
||||||
//qDebug() << d_ptr->m_curTimeUnit;
|
//qDebug() << d_ptr->m_curTimeUnit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TimeLineItem::setTimeUnit(TimeUnit unit)
|
||||||
|
{
|
||||||
|
d_ptr->m_curTimeUnit = unit;
|
||||||
|
}
|
||||||
|
|
||||||
|
TimeUnit TimeLineItem::timeUnit()
|
||||||
|
{
|
||||||
|
return d_ptr->m_curTimeUnit;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace TimeLine
|
} // namespace TimeLine
|
||||||
|
|
|
||||||
|
|
@ -13,36 +13,13 @@
|
||||||
** 这样可以保证拖动时跨越时间区间时,左右时刻可以无缝的转换,从而完成平滑的拖动效果
|
** 这样可以保证拖动时跨越时间区间时,左右时刻可以无缝的转换,从而完成平滑的拖动效果
|
||||||
**
|
**
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
#include "global.h"
|
||||||
#include "timeLine_globals.h"
|
|
||||||
#include <QGraphicsObject>
|
#include <QGraphicsObject>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
|
|
||||||
namespace TimeLine
|
namespace TimeLine
|
||||||
{
|
{
|
||||||
|
|
||||||
enum TimeUnit
|
|
||||||
{
|
|
||||||
TU_Year = 1, //yyyy
|
|
||||||
TU_Month, //yyyy/M/1
|
|
||||||
TU_Day, //M/d
|
|
||||||
TU_Hour, //M/d/hh
|
|
||||||
TU_Minute_30, //hh:mm
|
|
||||||
TU_Minute_20, //hh:mm
|
|
||||||
TU_Minute_15, //hh:mm
|
|
||||||
TU_Minute_10, //hh:mm
|
|
||||||
TU_Minute_5, //hh:mm
|
|
||||||
TU_Minute_3, //hh:mm
|
|
||||||
TU_Minute_1, //hh:mm
|
|
||||||
TU_Second_30, //hh:mm:ss
|
|
||||||
TU_Second_10, //hh:mm:ss
|
|
||||||
TU_Second_1, //hh:mm:ss
|
|
||||||
TU_MSecond_500, //mm:ss:z
|
|
||||||
TU_MSecond_100, //mm:ss:z
|
|
||||||
TU_MSecond_50, //mm:ss:z
|
|
||||||
TU_MSecond_10 //mm:ss:z
|
|
||||||
};
|
|
||||||
|
|
||||||
class TimeLineItemPrivate;
|
class TimeLineItemPrivate;
|
||||||
class TimeLineItem : public QGraphicsObject
|
class TimeLineItem : public QGraphicsObject
|
||||||
{
|
{
|
||||||
|
|
@ -56,7 +33,7 @@ public:
|
||||||
void updateBoundingRect(const QRect&);
|
void updateBoundingRect(const QRect&);
|
||||||
void setLineColor(QColor);
|
void setLineColor(QColor);
|
||||||
void setScaleSize(int);
|
void setScaleSize(int);
|
||||||
void setState(DisplayState);
|
void setState(DateTimeWidgetState);
|
||||||
|
|
||||||
void setTime(QDateTime);
|
void setTime(QDateTime);
|
||||||
QDateTime time();
|
QDateTime time();
|
||||||
|
|
@ -65,6 +42,8 @@ public:
|
||||||
|
|
||||||
void zoomIn();
|
void zoomIn();
|
||||||
void zoomOut();
|
void zoomOut();
|
||||||
|
void setTimeUnit(TimeUnit);
|
||||||
|
TimeUnit timeUnit();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
|
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
|
||||||
|
|
|
||||||
|
|
@ -71,9 +71,12 @@ void TimeLineWidget::mouseMoveEvent(QMouseEvent* e)
|
||||||
if(offsetX < 0)
|
if(offsetX < 0)
|
||||||
offsetValue = -offsetValue;
|
offsetValue = -offsetValue;
|
||||||
|
|
||||||
d_ptr->m_timeLineItem->setTime(d_ptr->m_timeMousePress.addMSecs(-offsetValue));
|
QDateTime dateTime = d_ptr->m_timeMousePress.addMSecs(-offsetValue);
|
||||||
|
d_ptr->m_timeLineItem->setTime(dateTime);
|
||||||
d_ptr->m_ptMousePress = e->pos();
|
d_ptr->m_ptMousePress = e->pos();
|
||||||
d_ptr->m_timeMousePress = d_ptr->m_timeLineItem->time();
|
d_ptr->m_timeMousePress = d_ptr->m_timeLineItem->time();
|
||||||
|
|
||||||
|
emit viewHistoricalData(dateTime);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
QGraphicsView::mouseMoveEvent(e);
|
QGraphicsView::mouseMoveEvent(e);
|
||||||
|
|
@ -94,6 +97,8 @@ void TimeLineWidget::wheelEvent(QWheelEvent* e)
|
||||||
d_ptr->m_timeLineItem->zoomIn();
|
d_ptr->m_timeLineItem->zoomIn();
|
||||||
else
|
else
|
||||||
d_ptr->m_timeLineItem->zoomOut();
|
d_ptr->m_timeLineItem->zoomOut();
|
||||||
|
|
||||||
|
emit timeScaleUnitChanged(d_ptr->m_timeLineItem->timeUnit());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TimeLineWidget::updateAll()
|
void TimeLineWidget::updateAll()
|
||||||
|
|
@ -117,8 +122,23 @@ void TimeLineWidget::setTimeScaleSize(int size)
|
||||||
d_ptr->m_timeLineItem->setScaleSize(size);
|
d_ptr->m_timeLineItem->setScaleSize(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TimeLineWidget::setTimeScaleUnit(TimeUnit unit)
|
||||||
|
{
|
||||||
|
d_ptr->m_timeLineItem->setTimeUnit(unit);
|
||||||
|
}
|
||||||
|
|
||||||
void TimeLineWidget::setDateTime(QDateTime dateTime)
|
void TimeLineWidget::setDateTime(QDateTime dateTime)
|
||||||
{
|
{
|
||||||
d_ptr->m_timeLineItem->setTime(dateTime);
|
d_ptr->m_timeLineItem->setTime(dateTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TimeLineWidget::setDisplayState(DateTimeWidgetState state)
|
||||||
|
{
|
||||||
|
d_ptr->m_timeLineItem->setState(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TimeLineWidget::syncTimeUnit()
|
||||||
|
{
|
||||||
|
emit timeScaleUnitChanged(d_ptr->m_timeLineItem->timeUnit());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef TIMELINEWIDGET_H
|
#ifndef TIMELINEWIDGET_H
|
||||||
#define TIMELINEWIDGET_H
|
#define TIMELINEWIDGET_H
|
||||||
|
|
||||||
|
#include "global.h"
|
||||||
#include <QGraphicsView>
|
#include <QGraphicsView>
|
||||||
|
|
||||||
class TimeLineWidgetPrivate;
|
class TimeLineWidgetPrivate;
|
||||||
|
|
@ -16,7 +17,16 @@ public:
|
||||||
void setBackground(QColor);
|
void setBackground(QColor);
|
||||||
void setTimelineColor(QColor);
|
void setTimelineColor(QColor);
|
||||||
void setTimeScaleSize(int); //设置时间刻度大小(像素)
|
void setTimeScaleSize(int); //设置时间刻度大小(像素)
|
||||||
|
void setTimeScaleUnit(TimeUnit); //设置时间刻度单位
|
||||||
|
|
||||||
void setDateTime(QDateTime);
|
void setDateTime(QDateTime);
|
||||||
|
void setDisplayState(DateTimeWidgetState);
|
||||||
|
|
||||||
|
void syncTimeUnit();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void viewHistoricalData(QDateTime);
|
||||||
|
void timeScaleUnitChanged(TimeUnit);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void resizeEvent(QResizeEvent*) override;
|
virtual void resizeEvent(QResizeEvent*) override;
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,6 @@
|
||||||
namespace TimeLine
|
namespace TimeLine
|
||||||
{
|
{
|
||||||
|
|
||||||
enum DisplayState
|
|
||||||
{
|
|
||||||
RealTime,
|
|
||||||
Historical
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue