first commit
This commit is contained in:
349
project/fm_viewer/ui/rm_speed_label.cpp
Normal file
349
project/fm_viewer/ui/rm_speed_label.cpp
Normal file
@@ -0,0 +1,349 @@
|
||||
#include "rm_speed_label.h"
|
||||
#include "../core/rm_player.h"
|
||||
#include "../data/rm_video_item_2ch.h"
|
||||
#include "../data/rm_sensordata.h"
|
||||
#include "rm_button.h"
|
||||
#include <QStyle>
|
||||
|
||||
#if (MODEL_BBVIEWER)
|
||||
#include "../core/rm_language.h"
|
||||
#endif
|
||||
#include <QDebug>
|
||||
|
||||
#if (MODEL_WATEX)
|
||||
RMSpeedLabel::RMSpeedLabel(QWidget *parent,bool map) : RMWidgetStyleBase(parent,"",false)
|
||||
{
|
||||
setFixedSize(map ? 200 : 99,map ? 50 : 56);
|
||||
layout = new QHBoxLayout(this);
|
||||
layout->setAlignment(Qt::AlignBottom | Qt::AlignLeft);
|
||||
ZERO_LAYOUT(layout);
|
||||
layout->setContentsMargins(0,0,0,4);
|
||||
|
||||
QWidget* speedWidget = new QWidget(this);
|
||||
layout->addWidget(speedWidget);
|
||||
|
||||
QVBoxLayout* speedLayout = new QVBoxLayout(speedWidget);
|
||||
speedLayout->setContentsMargins(0,0,0,2);
|
||||
speedLayout->setSpacing(0);
|
||||
speedLayout->setAlignment(Qt::AlignBottom);
|
||||
|
||||
speed = new QLabel(speedWidget);
|
||||
speed->setObjectName("LCD");
|
||||
speedLayout->addWidget(speed);
|
||||
speed->setText("000");
|
||||
speed->setAlignment(Qt::AlignLeft | Qt::AlignBottom);
|
||||
speed->setFixedWidth(40);
|
||||
|
||||
kmh = new QLabel(this);
|
||||
kmh->setPixmap( QPixmap(":/image/label_kmh.png") );
|
||||
kmh->setFixedSize(27,34);
|
||||
layout->addWidget(kmh);
|
||||
|
||||
QWidget* kmhWidget = new QWidget(this);
|
||||
kmhWidget->setFixedWidth(31);
|
||||
layout->addWidget(kmhWidget);
|
||||
|
||||
QVBoxLayout* kmhLayout = new QVBoxLayout(kmhWidget);
|
||||
kmhLayout->setContentsMargins(0,0,0,15);
|
||||
kmhLayout->setSpacing(0);
|
||||
kmhLayout->setAlignment(Qt::AlignBottom);
|
||||
|
||||
// 速度表示切替
|
||||
kmhButton = RMButton::create(this,kmhLayout,"speed_unit",MKU8("\xe9\x80\x9f\xe5\xba\xa6\xe8\xa1\xa8\xe7\xa4\xba\xe5\x88\x87\xe6\x9b\xbf"),QSize(31,19));
|
||||
//RMLanguage::instance()->appendENGToolTip(kmhButton,"Change speed unit");
|
||||
|
||||
|
||||
connect(kmhButton,SIGNAL(clicked()),SLOT(onSpeednUnit()));
|
||||
|
||||
_sensor = NULL;
|
||||
connect(RMPlayer::instance(),SIGNAL(positionChanged(qint64,qint64)),SLOT(onPositionChanged(qint64,qint64)));
|
||||
connect(RMPlayer::instance(),SIGNAL(playEvent(PLAY_EVENT,RMVideoItem*)),SLOT(onPlayEvent(PLAY_EVENT,RMVideoItem*)));
|
||||
|
||||
_isMPH = false;
|
||||
//RMApp::isMPH = false;
|
||||
|
||||
_spd = -1;
|
||||
}
|
||||
#else // MODEL_WATEX
|
||||
#if (MODEL_BBVIEWER)
|
||||
RMSpeedLabel::RMSpeedLabel(QWidget *parent,bool map) : RMWidgetStyleBase(parent,"",false)
|
||||
#else
|
||||
RMSpeedLabel::RMSpeedLabel(QWidget *parent) : RMWidgetStyleBase(parent,"",false)
|
||||
#endif
|
||||
{
|
||||
#if (MODEL_BBVIEWER)
|
||||
setFixedSize(map ? 200 : 141,map ? 50 : 68);
|
||||
#else
|
||||
setFixedSize(125,68);
|
||||
#endif
|
||||
setObjectName("all_border_dark");
|
||||
layout = new QHBoxLayout(this);
|
||||
layout->setAlignment(Qt::AlignVCenter | Qt::AlignRight);
|
||||
#if (MODEL_BBVIEWER)
|
||||
layout->setContentsMargins(1,map ? 0 : 5,1,1);
|
||||
#else
|
||||
layout->setContentsMargins(1,5,1,1);
|
||||
#endif
|
||||
layout->setSpacing(0);
|
||||
|
||||
speed = new QLabel(this);
|
||||
speed->setObjectName("LCD");
|
||||
layout->addWidget(speed);
|
||||
speed->setText("");
|
||||
speed->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
|
||||
|
||||
QWidget* kmhWidget = new QWidget(this);
|
||||
#if (MODEL_BBVIEWER)
|
||||
kmhWidget->setFixedWidth(56);
|
||||
#else
|
||||
kmhWidget->setFixedWidth(36);
|
||||
#endif
|
||||
layout->addWidget(kmhWidget);
|
||||
|
||||
QVBoxLayout* kmhLayout = new QVBoxLayout(kmhWidget);
|
||||
kmhLayout->setContentsMargins(0,0,0,5);
|
||||
kmhLayout->setSpacing(0);
|
||||
kmhLayout->setAlignment(Qt::AlignBottom);
|
||||
|
||||
#if (MODEL_BBVIEWER)
|
||||
|
||||
_obdSpeed = new QLabel(this);
|
||||
_obdSpeed->setObjectName("text_obd");
|
||||
_obdSpeed->setFixedSize(60,30);
|
||||
_obdSpeed->setAlignment(Qt::AlignCenter);
|
||||
// 車速
|
||||
_obdSpeed->setText(MKU8("\xe8\xbb\x8a\xe9\x80\x9f"));
|
||||
kmhLayout->addWidget(_obdSpeed);
|
||||
|
||||
RMLanguage::instance()->append(RMLanguage::LANGUAGE_JP,RMLanguage::TITLE_TEXT,_obdSpeed,MKU8("\xe8\xbb\x8a\xe9\x80\x9f"));
|
||||
#if !(LANGUAGE_REMOVE_ENG) // WATEX
|
||||
RMLanguage::instance()->append(RMLanguage::LANGUAGE_EN,RMLanguage::TITLE_TEXT,_obdSpeed,QString("OBD"));
|
||||
#endif
|
||||
|
||||
// 速度表示切替
|
||||
QSize buttonSize = QSize(60,30);
|
||||
kmhButton = RMButton::create(this,kmhLayout,"speed_unit",MKU8("\xe9\x80\x9f\xe5\xba\xa6\xe8\xa1\xa8\xe7\xa4\xba\xe5\x88\x87\xe6\x9b\xbf"),buttonSize);
|
||||
RMLanguage::instance()->appendENGToolTip(kmhButton,"Change speed unit");
|
||||
connect(kmhButton,SIGNAL(clicked()),SLOT(onSpeednUnit()));
|
||||
|
||||
|
||||
|
||||
#else
|
||||
kmh = new QLabel(this);
|
||||
kmh->setObjectName("kmh_label");
|
||||
kmhLayout->addWidget(kmh);
|
||||
kmh->setText("km/h");
|
||||
|
||||
//#if (KMH_MPH_TOGGLE)
|
||||
// connect(this,SIGNAL(clicked()),SLOT(onSpeednUnit()));
|
||||
//#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
_sensor = NULL;
|
||||
connect(RMPlayer::instance(),SIGNAL(positionChanged(qint64,qint64)),SLOT(onPositionChanged(qint64,qint64)));
|
||||
connect(RMPlayer::instance(),SIGNAL(playEvent(PLAY_EVENT,RMVideoItem*)),SLOT(onPlayEvent(PLAY_EVENT,RMVideoItem*)));
|
||||
|
||||
#if (MODEL_BBVIEWER)
|
||||
isOBDSpeed = true;
|
||||
#endif
|
||||
|
||||
#if (KMH_MPH_TOGGLE)
|
||||
RMApp::isMPH = false;
|
||||
#endif
|
||||
|
||||
#if (MODEL_STANDARD && KMH_MPH_TOGGLE)
|
||||
RMApp::isMPH = RMLanguage::isJP() == false;
|
||||
kmh->setText(RMApp::isMPH ? "mph" : "km/h");
|
||||
connect(RMLanguage::instance(),SIGNAL(languageChange(RMLanguage::LANGUAGE_TYPE)),SLOT(onLanguageChange(RMLanguage::LANGUAGE_TYPE)));
|
||||
#endif
|
||||
|
||||
_spd = -1;
|
||||
}
|
||||
#endif // MODEL_WATEX
|
||||
#if (MODEL_STANDARD && KMH_MPH_TOGGLE)
|
||||
void RMSpeedLabel::mouseReleaseEvent ( QMouseEvent * event )
|
||||
{
|
||||
Q_UNUSED(event)
|
||||
setObjectName("all_border_dark");
|
||||
style()->unpolish(this);
|
||||
style()->polish(this);
|
||||
update();
|
||||
onSpeednUnit();
|
||||
}
|
||||
void RMSpeedLabel::mousePressEvent(QMouseEvent * event )
|
||||
{
|
||||
Q_UNUSED(event)
|
||||
setObjectName("all_border_dark_pressed");
|
||||
style()->unpolish(this);
|
||||
style()->polish(this);
|
||||
update();
|
||||
}
|
||||
void RMSpeedLabel::onLanguageChange(RMLanguage::LANGUAGE_TYPE language)
|
||||
{
|
||||
|
||||
|
||||
Q_UNUSED(language)
|
||||
RMApp::isMPH = RMLanguage::isJP() == false;
|
||||
kmh->setText(RMApp::isMPH ? "mph" : "km/h");
|
||||
refreshSpeed();
|
||||
emit speedUnitChange();
|
||||
}
|
||||
|
||||
#endif
|
||||
void RMSpeedLabel::onPositionChanged(qint64 position,qint64 duration)
|
||||
{
|
||||
//qInfo() << __FUNCTION__ << _sensor;
|
||||
|
||||
if(_sensor != NULL)
|
||||
{
|
||||
double ratio = ((double)position) / ((double)duration);
|
||||
_spd = _sensor->getGPSSpeed(ratio);
|
||||
#if (MODEL_BBVIEWER && !MODEL_WATEX)
|
||||
float speedOBD = _sensor->getOBDSpeed(ratio);
|
||||
bool isOBD = (speedOBD > -1.0f);
|
||||
if(isOBD)
|
||||
{
|
||||
_spd = speedOBD;
|
||||
}
|
||||
//qInfo() << "isOBD:" << isOBD;
|
||||
|
||||
#endif
|
||||
|
||||
double rspd = _spd;
|
||||
#if (KMH_MPH_TOGGLE)
|
||||
if(RMApp::isMPH)
|
||||
{
|
||||
rspd = 0.621371 * _spd;
|
||||
}
|
||||
#endif
|
||||
|
||||
if(rspd >= 0 && rspd < 500)
|
||||
{
|
||||
QString str;
|
||||
str.sprintf("%d",(int)rspd);
|
||||
speed->setText(str);
|
||||
#if (MODEL_BBVIEWER)
|
||||
//unsigned int index = (int)(((double)_sensor->getSensorCount()) * ratio);
|
||||
//qInfo() << "SENSOR INDEX:" << index;
|
||||
//qInfo() << "is OBD:" << isOBD << " ratio:" << ratio << " index:" << index << "/" << _sensor->getSensorCount() << " pos:" << position;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
speed->setText("--");
|
||||
}
|
||||
#if (MODEL_BBVIEWER && !MODEL_WATEX)
|
||||
// 정상 속도가 아니라도 GPS 수신일 경우 GPS 표시
|
||||
if(isOBD != isOBDSpeed)
|
||||
{
|
||||
isOBDSpeed = isOBD;
|
||||
refreshOBDLabel();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#if (MODEL_BBVIEWER && !MODEL_WATEX)
|
||||
void RMSpeedLabel::refreshOBDLabel()
|
||||
{
|
||||
QString str = "GPS";
|
||||
if(isOBDSpeed == true)
|
||||
{
|
||||
#if (LANGUAGE_REMOVE_ENG) // WATEX
|
||||
str = MKU8("\xe8\xbb\x8a\xe9\x80\x9f");
|
||||
#else
|
||||
str = RMLanguage::instance()->language() == RMLanguage::LANGUAGE_EN ? "OBD" : MKU8("\xe8\xbb\x8a\xe9\x80\x9f");
|
||||
#endif
|
||||
}
|
||||
_obdSpeed->setText(str);
|
||||
}
|
||||
#endif
|
||||
|
||||
void RMSpeedLabel::onPlayEvent(PLAY_EVENT event,RMVideoItem* item)
|
||||
{
|
||||
// 사용자 STOP 일 경우 PLAY ITEM CLEAR
|
||||
// if(event == PLAY_DID_CLEARED || event == PLAY_DID_LOADED)
|
||||
if(event == PLAY_DID_LOADED) {
|
||||
|
||||
_spd = -1;
|
||||
#if (MODEL_BBVIEWER)
|
||||
if(item->getSensorData() != NULL) // ODB 가 존재하여
|
||||
#else
|
||||
if(item->getSensorData() != NULL && item->getSensorData()->getGPSCount() > 0)
|
||||
#endif
|
||||
{
|
||||
_sensor = item->getSensorData();
|
||||
}
|
||||
else
|
||||
{
|
||||
_sensor = NULL;
|
||||
speed->setText("--");
|
||||
#if (MODEL_BBVIEWER && !MODEL_WATEX)
|
||||
isOBDSpeed = true;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else if (event == PLAY_DID_CLEARED)
|
||||
{
|
||||
_spd = -1;
|
||||
_sensor = NULL;
|
||||
#if (MODEL_BBVIEWER && !MODEL_WATEX)
|
||||
isOBDSpeed = true;
|
||||
#endif
|
||||
}
|
||||
else if (event == PLAY_DID_USER_STOP)
|
||||
{
|
||||
speed->setText("");
|
||||
}
|
||||
|
||||
#if (MODEL_BBVIEWER && !MODEL_WATEX)
|
||||
refreshOBDLabel();
|
||||
#endif
|
||||
}
|
||||
|
||||
#if (KMH_MPH_TOGGLE)
|
||||
void RMSpeedLabel::refreshSpeed()
|
||||
{
|
||||
double rspd = _spd;
|
||||
if(RMApp::isMPH)
|
||||
{
|
||||
rspd = 0.621371 * _spd;
|
||||
}
|
||||
|
||||
if(rspd >= 0 && rspd < 500)
|
||||
{
|
||||
QString str;
|
||||
str.sprintf("%d",(int)rspd);
|
||||
speed->setText(str);
|
||||
}
|
||||
else
|
||||
{
|
||||
#if (MODEL_WATEX)
|
||||
speed->setText("000");
|
||||
#else
|
||||
speed->setText("--");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void RMSpeedLabel::onSpeednUnit()
|
||||
{
|
||||
_isMPH = !_isMPH;
|
||||
RMApp::isMPH = _isMPH;
|
||||
#if (MODEL_WATEX)
|
||||
kmh->setPixmap(RMApp::isMPH ? QPixmap(":/image/label_mph.png") : QPixmap(":/image/label_kmh.png") );
|
||||
#else
|
||||
kmh->setText(RMApp::isMPH ? "mph" : "km/h");
|
||||
#endif
|
||||
qInfo() << "RMApp::isMPH" << RMApp::isMPH << "kmh:" << kmh->pixmap();
|
||||
|
||||
#if (MODEL_BBVIEWER)
|
||||
kmhButton->setStyleStatus("mph",RMApp::isMPH);
|
||||
//kmhButton->setStyleStatus("mph",isMPH);
|
||||
refreshSpeed();
|
||||
#endif
|
||||
emit speedUnitChange();
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user