163 lines
5.1 KiB
C++
163 lines
5.1 KiB
C++
#include "rm_frame_video_sub.h"
|
|
#include "rm_button.h"
|
|
#include "rm_dialog_map.h"
|
|
#include "../rm_app.h"
|
|
#include "../fm_dimensions.h"
|
|
#include "../core/rm_player.h"
|
|
#include "../data/rm_video_item_2ch.h"
|
|
#include <QMainWindow>
|
|
|
|
//"",
|
|
RMFrameVideoSub::RMFrameVideoSub(QWidget *parent) : RMFrameVideoBase(parent,false,true)
|
|
{
|
|
#if !(DO_NOT_USE_ZOOM || ZOOM_SHADER)
|
|
pipRect = QRect(8,8,84,48);
|
|
#endif
|
|
|
|
#if ((!SINGLE_CH_VIEWER && !TOGGLE_PLAYER) || DUAL_VIEWER)
|
|
setVideoWidget(RMPlayer::instance()->playWidgetR());
|
|
#endif
|
|
|
|
#if !((DUAL_CH_FILE && !DUAL_CH_1CH_EXIST) || SINGLE_CH_VIEWER)
|
|
_temporarySwap = false;
|
|
#endif
|
|
|
|
|
|
|
|
#if (LIVE_LANGUAGE_CHANGE && MODEL_STANDARD)
|
|
refreshLanguageSub();
|
|
#endif
|
|
|
|
}
|
|
|
|
void RMFrameVideoSub::onPlayEvent(PLAY_EVENT event, RMVideoItem* item)
|
|
{
|
|
//LOG_TEST << "EVENT:" << event;
|
|
RMFrameVideoBase::onPlayEvent(event,item);
|
|
if(event == PLAY_DID_LOADED)
|
|
{
|
|
//#if (MODEL_STANDARD && !SINGLE_CH_VIEWER)
|
|
// _toggleButton->setEnabled(item->isSingleChannel() == false);
|
|
//#endif
|
|
|
|
#if (DUAL_CH_1CH_EXIST)
|
|
// 2CH DUAL 중 1CH 만 존재하는 경우 강제 toggle
|
|
//LOG_TEST << "SWAPPED:" << RMPlayer::instance()->isSwapped() << " CH:" << (item->filePathCH2.length() > 0);
|
|
bool bToogle = false;
|
|
|
|
// _temporarySwap 의 경우
|
|
// 현재 상태는 항상 swap 이 아닌 상태임 (swap 상태를 정상으로 변경했기 때문에)
|
|
// 따라서 상태가 _temporarySwap 일 경우 현재 single file 이 아닐 경우 무조건 swap 상태로 만들어야함
|
|
if(_temporarySwap)
|
|
{
|
|
if(item->isSingleChannel() == false && RMPlayer::instance()->isSwapped() == false)
|
|
{
|
|
bToogle = true;
|
|
_temporarySwap = false;
|
|
}
|
|
}
|
|
// 정상 상태일 경우 (_temporarySwap 이 아닌)
|
|
// 현재 상태는 swap 일 수도, 아닐 수도 있으며
|
|
// 1CH 파일이며
|
|
// swap 상태일 경우에는 임시 toggle 해야함
|
|
else
|
|
{
|
|
if(RMPlayer::instance()->isSwapped() == true && item->isSingleChannel() == true)
|
|
{
|
|
bToogle = true;
|
|
_temporarySwap = true;
|
|
}
|
|
}
|
|
|
|
//LOG_TEST << "TOGGLE:" << bToogle << " _temporarySwap:" << _temporarySwap;
|
|
if(bToogle)
|
|
{
|
|
RMPlayer::instance()->toggleSwap(true);
|
|
}
|
|
#endif // DUAL_CH_1CH_EXIST
|
|
}
|
|
else if (event == PLAY_DID_USER_STOP)
|
|
{
|
|
#if !((DUAL_CH_FILE && !DUAL_CH_1CH_EXIST) || SINGLE_CH_VIEWER)
|
|
|
|
// SWAPPED: true CH: false
|
|
// TOGGLE: false _temporarySwap: true
|
|
// swap -> 1CH 플레이 -> stop -> swap -> 1CH 플레이 하면 후방에서 표시됨
|
|
// 방지하기 위해 STOP 시점에서 _temporarySwap 할 경우 원상복귀
|
|
if(_temporarySwap) {
|
|
_temporarySwap = false;
|
|
RMPlayer::instance()->toggleSwap();
|
|
}
|
|
#endif // #if !(DUAL_CH_FILE)
|
|
|
|
//#if (MODEL_STANDARD && !SINGLE_CH_VIEWER)
|
|
// _toggleButton->setEnabled(true);
|
|
//#endif
|
|
}
|
|
else if (event == PLAY_WILL_LOADED)
|
|
{
|
|
#if !(DUAL_CH_FILE || SINGLE_CH_VIEWER)
|
|
//LOG_TEST << "SWAPPED:" << RMPlayer::instance()->isSwapped() << " CH:" << (item->filePathCH2.length() > 0);
|
|
bool bToogle = false;
|
|
|
|
// _temporarySwap 의 경우
|
|
// 현재 상태는 항상 swap 이 아닌 상태임 (swap 상태를 정상으로 변경했기 때문에)
|
|
// 따라서 상태가 _temporarySwap 일 경우 현재 single file 이 아닐 경우 무조건 swap 상태로 만들어야함
|
|
if(_temporarySwap)
|
|
{
|
|
if(item->filePathCH2.length() > 0 && RMPlayer::instance()->isSwapped() == false)
|
|
{
|
|
bToogle = true;
|
|
_temporarySwap = false;
|
|
}
|
|
}
|
|
// 정상 상태일 경우 (_temporarySwap 이 아닌)
|
|
// 현재 상태는 swap 일 수도, 아닐 수도 있으며
|
|
// 1CH 파일이며
|
|
// swap 상태일 경우에는 임시 toggle 해야함
|
|
else
|
|
{
|
|
if(RMPlayer::instance()->isSwapped() == true && item->filePathCH2.length() == 0)
|
|
{
|
|
bToogle = true;
|
|
_temporarySwap = true;
|
|
}
|
|
}
|
|
|
|
|
|
//LOG_TEST << "TOGGLE:" << bToogle << " _temporarySwap:" << _temporarySwap;
|
|
if(bToogle)
|
|
{
|
|
RMPlayer::instance()->toggleSwap();
|
|
}
|
|
#endif // #if !(DUAL_CH_FILE)
|
|
}
|
|
|
|
|
|
}
|
|
//#if !(DUAL_VIEWER)
|
|
//void RMFrameVideoSub::onMap()
|
|
//{
|
|
// //qInfo() << "size:" << _videoWidget->size();
|
|
// if(RMDialogMap::instance()->isHiddenReal()) {
|
|
// RMDialogMap::instance()->show();
|
|
// RMDialogMap::instance()->setFocus();
|
|
// }
|
|
// else
|
|
// {
|
|
// RMDialogMap::instance()->onClose();
|
|
// }
|
|
//}
|
|
//#endif // DUAL_VIEWER
|
|
|
|
//#if (LIVE_LANGUAGE_CHANGE && MODEL_STANDARD)
|
|
//void RMFrameVideoSub::refreshLanguageSub()
|
|
//{
|
|
// QString objectName = "swap_video" + RMLanguage::languageTag();
|
|
// _toggleButton->updateObject(objectName);
|
|
|
|
// objectName = "map" + RMLanguage::languageTag();
|
|
// _mapButton->updateObject(objectName);
|
|
//}
|
|
//#endif
|