#ifndef WINDOW_MAIN_H #define WINDOW_MAIN_H #include "../rm_include.h" #include "rm_window_base.h" #include #include "../core/rm_player_base.h" #include "../data/rm_video_item_2ch.h" #include "../data/rm_video_item_loader.h" class WindowSettings; class RMFrameLeft; class RMFrameRight; class RMFrameBottom; // full screen only class RMVideoItem; #if (SUPPORT_LIBRARY_MODE) // TB5000 윈도우 CALLBACK typedef void (*onTB5000)(int); #endif // SUPPORT_LIBRARY_MODE #if (DESIGN_LAYOUT_MODE) class QGraphicsOpacityEffect; #endif #if (DUAL_VIEWER) class RMFrameTop; #endif // DUAL_VIEWER #if (DETECT_USB_CHANGE) class rm_usb; #endif // DETECT_USB_CHANGE #if (RM_MODEL == RM_MODEL_TYPE_TB4000) class QInputDialog; #endif #if (USE_VERSION_CHECK) class FMVersionDialog; #endif class WindowMain : public RMWindowBase { Q_OBJECT #if (RM_TESTING) friend class RMTestProcess; #endif #if (USE_VERSION_CHECK) FMVersionDialog* _versionDialog; #endif // #if (USE_VERSION_CHECK) public: #if (DESIGN_LAYOUT_MODE) QGraphicsOpacityEffect* alpha; #endif ~WindowMain(); static WindowMain* instance(QWidget* parent = nullptr) { static WindowMain * _mainWindowInstance = NULL; if ( _mainWindowInstance == NULL ) { _mainWindowInstance = new WindowMain(parent); } return _mainWindowInstance; } //protected: #if (RM_MODEL == RM_MODEL_TYPE_TB4000) QMenu* captureMenu; bool _reportCH1; void noPlayFileMessage(); typedef enum { REQUEST_CAPTURE_FOR_NONE = 0, // REQUEST_CAPTURE_FOR_SAVE, // 저장 REQUEST_CAPTURE_FOR_PRINT, // 프린트용 REQUEST_CAPTURE_FOR_CONTRAST, // 편집 REQUEST_CAPTURE_FOR_REPORT, // TELEBIT REPORT } REQUEST_CAPTURE_FOR; REQUEST_CAPTURE_FOR _reqestCaptureFor; void saveCaptureFile(QList* list); // 저장 <- 편집 후 호출 할 수도 있음 void printCaptureFile(QList* list); void deleteFiles(QList* files); #endif #if (PLAYER_ONLY_LIBRARY_MODE) void showEvent(QShowEvent *) override; #endif// #if (USE_MAXIMIZE) int mFullScreenMode; //protected: #endif // USE_MAXIMIZE #if !(SINGLE_CH_VIEWER) public: bool bSubFullScreen; ///!< 후방 FULLSCREEN #if (RM_MODEL == RM_MODEL_TYPE_TB4000 && !PLAYER_ONLY_LIBRARY_MODE) /** * @brief TB5000 윈도우로 이동시 스크린 OFF */ void allVideoOff(); #endif // RM_MODEL_TYPE_TB4000 + PLAYER_ONLY_LIBRARY_MODE protected: #endif // WindowMain(QWidget *parent = 0); WindowSettings* _settingWindow; #if (DUAL_VIEWER) RMFrameTop* _frameTop; QVBoxLayout* _dualMainLayout; // Dual 모드에서는 상,하단으로 구분되어 하단 영역이 _mainLayout 이 됨 QWidget* _bottomMainWidget; // 기존 _mainWidget 을 대신할 하단 Widget #endif QHBoxLayout* _mainLayout; // left - right layout RMFrameLeft* _frameLeft; // left widget QVBoxLayout* _layoutLeft; // left layout bool _bFirstWindowLoad; #if (PLAYER_ONLY_LIBRARY_MODE) onTB5000 _onTB5000; #else // PLAYER_ONLY_LIBRARY_MODE RMFrameRight* _frameRight; // right widget QVBoxLayout* _layoutRight; // right layout RMVideoItem* _loadingItem; // current loading item #if (USE_RM_KEYBOARD_EVENT) void keyPressEvent(QKeyEvent *event); void keyReleaseEvent(QKeyEvent *event); #endif // USE_RM_KEYBOARD_EVENT #if (OPEN_WITH_FILE_EXT) bool openWithFile(); #endif // OPEN_WITH_FILE_EXT #if !(REMOVE_ALL_SHORT_CUTS) QShortcut* escFullScreenShortcut; QShortcut* toggleFullScreenShortcut; QShortcut* toggleFullScreenShortcut2; // enter key in number keypad // QShortcut* toggleFullScreenShortcut3; // prevent alt+enter #endif // REMOVE_ALL_SHORT_CUTS #if (START_WITH_USB_SD || DETECT_USB_CHANGE) void openUSB(); #endif // DETECT_USB_CHANGE #if (LIVE_LANGUAGE_CHANGE) void showEvent(QShowEvent *ev); #endif #if (RM_MODEL == RM_MODEL_TYPE_TB4000) QInputDialog* _inputDialog; #endif #endif // #if !(PLAYER_ONLY_LIBRARY_MODE) #if (FILE_LOAD_MESSAGE) // 파일열기 메시지 전송 private: bool nativeEvent(const QByteArray & eventType, void * message, long * result) override; //bool winEvent ( MSG * message, long * result ); #endif // #if (FILE_LOAD_MESSAGE) // 파일열기 메시지 전송 public slots: void onCloseApplication(); #if (USE_DEVICE_SETTINGS) void onShowSettings(); void onCloseSettings(); #endif #if !(PLAYER_ONLY_LIBRARY_MODE) void onShowInfo(); #endif // PLAYER_ONLY_LIBRARY_MODE void onMinimize(); void onFullScreen(); #if !(SINGLE_CH_VIEWER) void onFullScreenSub(); #endif // #if !(SINGLE_CH_VIEWER) #if (USE_MAXIMIZE) void onMaximize(); #endif void onLoadingListStart(bool bLoading); void onLoadingListEnd(bool bLoading,RMVideoItem*); void onLoadingListEndUI(); #if !(DO_NOT_USE_REPORT) void onStartReport(); #endif void onStartCapture(); void onRequestVideoCaptureDone(QList* fileList); #if !(PLAYER_ONLY_LIBRARY_MODE) #if !(REMOVE_OLD_C) void onOpenPopup(); #endif #endif // !PLAYER_ONLY_LIBRARY_MODE #if (DUAL_VIEWER) void onDualViewMode(); #endif #if !(DO_NOT_USE_MAP) void onMap(); #endif // #if !(DO_NOT_USE_MAP) #if (!PLAYER_ONLY_LIBRARY_MODE) void onNext(); void onPrevious(); #endif // !PLAYER_ONLY_LIBRARY_MODE #if (RM_MODEL == RM_MODEL_TYPE_TB4000 && !PLAYER_ONLY_LIBRARY_MODE) void onPassword(); void onReportMenu(); void onSaveFile(); void onSaveVideoFile(); void onPrintFile(); void onReportFile(); void onReportFileCH1(); void onReportFileCH2(); void onReportFileCHAuto(); void onSaveReportFile(QString locationString,QList* list); #endif // #if (RM_MODEL == RM_MODEL_TYPE_TB4000) #if ((TOGGLE_PLAYER || FIXED_MAP_FRAME) && !DO_NOT_USE_MAP) // void onWindowMove(); #if (TOGGLE_PLAYER && !DO_NOT_USE_MAP) void onSnapMap(); #endif // TOGGLE_PLAYER #endif // TOGGLE_PLAYER + FIXED_MAP_FRAME #if (SPLIT_MULTI_TRACK_VIDEO) void onEditVideoDone(int); #endif // SPLIT_MULTI_TRACK_VIDEO #if (SUPPORT_AVI_SPLIT || SPLIT_MULTI_TRACK_VIDEO) //! \brief 영상 분할 저장 void onSplitVideo(); #endif // SPLIT_MULTI_TRACK_VIDEO #if (FE_LOG_VERSION) void onLogDialog(); #endif // #if (FE_LOG_VERSION) void onPlayEvent(PLAY_EVENT,RMVideoItem*); #if (DETECT_USB_CHANGE) void onUSBChange(bool inserted, QString& drive); #endif // #if (DETECT_USB_CHANGE) #if !(PLAYER_ONLY_LIBRARY_MODE) void onLoadEnd(); #endif // PLAYER_ONLY_LIBRARY_MODE #if (OPEN_WITH_FILE_EXT) void onPlayFirstFile(); #endif // OPEN_WITH_FILE_EXT #if (RM_MODEL_EMT_KR) void onWrongSDCard(); #endif // @RM_MODEL_EMT_KR signals: #if (RM_MODEL_EMT_KR) void usbRemoved(); #endif // #if (RM_MODEL_EMT_KR) }; #if (SUPPORT_LIBRARY_MODE) #include "../core/rm_player.h" // CALLBACK // 0:EXIT // 1: PLAY PREVIOUS // 2: PLAY NEXT typedef void (*onTB5000)(int); // 외부에서 창을 생성하는 팩토리 함수 extern "C" QMainWindow* createTB5000Window(QWidget* parent, RMSettings* settings, //RMPlayer** player360, RMVideoItem* playItem, RMVideoFileList* fileList, onTB5000 callback); // 다음파일 넘어갈때 재생 extern "C" void playTB5000(RMVideoItem* playItem); #endif // SUPPORT_LIBRARY_MODE) #endif // WINDOW_MAIN_H