110 lines
3.1 KiB
C++
110 lines
3.1 KiB
C++
#include "fm_frame_speed.h"
|
|
#include "../core/rm_player.h"
|
|
#include "../data/rm_video_item_2ch.h"
|
|
#include "../data/rm_sensordata.h"
|
|
#include "fm_speed_widget.h"
|
|
#include "fm_button.h"
|
|
#include <QStyle>
|
|
|
|
FMSpeedFrame::FMSpeedFrame(QWidget *parent) : RMWidgetBase(parent,false)
|
|
{
|
|
//LAYOUT_DEBUG(this);
|
|
layout = new QVBoxLayout(this);
|
|
layout->setAlignment(Qt::AlignTop);
|
|
ZERO_LAYOUT(layout);
|
|
layout->setContentsMargins(1,0,0,0);
|
|
|
|
speed = new FMSpeedWidget(this);
|
|
speed->setFixedSize(87,52);
|
|
//LAYOUT_DEBUG(speed)
|
|
layout->addWidget(speed);
|
|
|
|
#if (LIVE_LANGUAGE2)
|
|
kmhButton = FMButton::btnStatic2(this,layout,"speed_kmh",NULL,QSize(87,23));
|
|
#else // LIVE_LANGUAGE2
|
|
kmhButton = FMButton::btnStatic(this,layout,"speed_kmh",MKU8(""),QSize(87,23));
|
|
#endif // LIVE_LANGUAGE2
|
|
layout->addWidget(kmhButton);
|
|
|
|
_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*)));
|
|
|
|
RMApp::isMPH = false;
|
|
|
|
#if (REMOVE_OLD_C)
|
|
RMApp::isMPH = (RMLanguage::instance()->language() == RMLanguage::LANGUAGE_EN);
|
|
#else
|
|
RMApp::isMPH = RMLanguage::isJP() == false;
|
|
#endif
|
|
//kmh->setText(RMApp::isMPH ? "mph" : "km/h");
|
|
//connect(RMLanguage::instance(),SIGNAL(languageChange(RMLanguage::LANGUAGE_TYPE)),SLOT(onLanguageChange(RMLanguage::LANGUAGE_TYPE)));
|
|
_spd = -1;
|
|
}
|
|
void FMSpeedFrame::onPositionChanged(qint64 position,qint64 duration)
|
|
{
|
|
if(_sensor != NULL)
|
|
{
|
|
double ratio = ((double)position) / ((double)duration);
|
|
_spd = _sensor->getGPSSpeed(ratio);
|
|
//qInfo() << _spd << ratio << __FUNCTION__;
|
|
double rspd = _spd;
|
|
if(RMApp::isMPH)
|
|
{
|
|
rspd = 0.621371 * _spd;
|
|
}
|
|
if(rspd >= 0 && rspd < 500)
|
|
{
|
|
speed->updateSpeed(rspd);
|
|
// QString str;
|
|
// str.sprintf("%d",(int)rspd);
|
|
//speed->setText(str);
|
|
}
|
|
else
|
|
{
|
|
speed->updateSpeed(-1);
|
|
//speed->setText("--");
|
|
}
|
|
}
|
|
}
|
|
void FMSpeedFrame::onSpeednUnit()
|
|
{
|
|
_isMPH = !_isMPH;
|
|
RMApp::isMPH = _isMPH;
|
|
//kmh->setText(RMApp::isMPH ? "mph" : "km/h");
|
|
//qInfo() << "RMApp::isMPH" << RMApp::isMPH << "kmh:" << kmh->pixmap();
|
|
|
|
emit speedUnitChange();
|
|
}
|
|
void FMSpeedFrame::onPlayEvent(PLAY_EVENT event,RMVideoItem* item)
|
|
{
|
|
//qInfo() << __FUNCTION__ << event;
|
|
|
|
// 사용자 STOP 일 경우 PLAY ITEM CLEAR
|
|
// if(event == PLAY_DID_CLEARED || event == PLAY_DID_LOADED)
|
|
if(event == PLAY_DID_LOADED) {
|
|
|
|
_spd = -1;
|
|
if(item->getSensorData() != NULL && item->getSensorData()->getGPSCount() > 0)
|
|
{
|
|
_sensor = item->getSensorData();
|
|
}
|
|
else
|
|
{
|
|
_sensor = NULL;
|
|
speed->updateSpeed(-1);
|
|
//speed->setText("--");
|
|
}
|
|
}
|
|
else if (event == PLAY_DID_CLEARED)
|
|
{
|
|
_spd = -1;
|
|
_sensor = NULL;
|
|
speed->updateSpeed(-1);
|
|
}
|
|
else if (event == PLAY_DID_USER_STOP)
|
|
{
|
|
//speed->setText("");
|
|
}
|
|
}
|