Files
fmviewer3/project/fm_viewer/ui/fm_frame_speed.cpp
2026-02-21 17:11:31 +09:00

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("");
}
}