#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 #if (MODEL_BBVIEWER) #include "../core/rm_language.h" #endif #include #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