300 lines
7.5 KiB
C++
300 lines
7.5 KiB
C++
#ifndef WINDOW_MAIN_H
|
|
#define WINDOW_MAIN_H
|
|
|
|
#include "../rm_include.h"
|
|
#include "rm_window_base.h"
|
|
#include <QShortcut>
|
|
#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<QString>* list); // 저장 <- 편집 후 호출 할 수도 있음
|
|
void printCaptureFile(QList<QString>* list);
|
|
void deleteFiles(QList<QString>* 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<QString>* 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<QString>* 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
|