first commit

This commit is contained in:
2026-02-21 17:11:31 +09:00
commit 18b4338361
4001 changed files with 365464 additions and 0 deletions

View File

@@ -0,0 +1,299 @@
#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