#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 //"", 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