OSDN Git Service

Happy new year 2020!
[x264-launcher/x264-launcher.git] / src / win_main.h
index c53d5c6..0df916e 100644 (file)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Simple x264 Launcher
-// Copyright (C) 2004-2014 LoRd_MuldeR <MuldeR2@GMX.de>
+// Copyright (C) 2004-2020 LoRd_MuldeR <MuldeR2@GMX.de>
 //
 // This program is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 
 #pragma once
 
+//Internal
 #include "global.h"
+
+//Qt
 #include <QMainWindow>
 
+//Forward declarations
 class JobListModel;
 class OptionsModel;
+class SysinfoModel;
 class QFile;
 class QLibrary;
 class PreferencesModel;
 class RecentlyUsed;
+class InputEventFilter;
 class QModelIndex;
 class QLabel;
+class QSystemTrayIcon;
+class IPCThread_Recv;
 enum JobStatus;
 
 namespace Ui
@@ -39,46 +47,65 @@ namespace Ui
        class MainWindow;
 }
 
+namespace MUtils
+{
+       class IPCChannel;
+       class Taskbar7;
+       namespace CPUFetaures
+       {
+               typedef struct _cpu_info_t cpu_info_t;
+       }
+}
+
 class MainWindow: public QMainWindow
 {
        Q_OBJECT
 
 public:
-       MainWindow(const x264_cpu_t *const cpuFeatures);
+       MainWindow(const MUtils::CPUFetaures::cpu_info_t &cpuFeatures, MUtils::IPCChannel *const ipcChannel);
        ~MainWindow(void);
 
 protected:
        virtual void closeEvent(QCloseEvent *e);
        virtual void showEvent(QShowEvent *e);
        virtual void resizeEvent(QResizeEvent *e);
-       virtual bool eventFilter(QObject *o, QEvent *e);
        virtual void dragEnterEvent(QDragEnterEvent *event);
        virtual void dropEvent(QDropEvent *event);
-       virtual bool winEvent(MSG *message, long *result);
 
 private:
+       typedef enum
+       {
+               POST_OP_DONOTHING = 0,
+               POST_OP_POWERDOWN = 1,
+               POST_OP_HIBERNATE = 2
+       }
+       postOp_t;
+
        Ui::MainWindow *const ui;
+       MUtils::IPCChannel *const m_ipcChannel;
 
-       bool m_firstShow;
-       bool m_skipVersionTest;
-       bool m_abortOnTimeout;
+       postOp_t m_postOperation;
        bool m_initialized;
 
-       QLabel *m_label;
-       //IPCThread *m_ipcThread;
+       QScopedPointer<QLabel> m_label[2];
+       QScopedPointer<QMovie> m_animation;
+       QScopedPointer<QTimer> m_fileTimer;
 
-       JobListModel *m_jobList;
-       OptionsModel *m_options;
-       QStringList *m_droppedFiles;
-       QList<QFile*> m_toolsList;
-       
-       PreferencesModel *m_preferences;
-       RecentlyUsed *m_recentlyUsed;
+       QScopedPointer<IPCThread_Recv>   m_ipcThread;
+       QScopedPointer<MUtils::Taskbar7> m_taskbar;
+       QScopedPointer<QSystemTrayIcon>  m_sysTray;
 
-       QString m_vapoursynthPath;
+       QScopedPointer<InputEventFilter> m_inputFilter_jobList;
+       QScopedPointer<InputEventFilter> m_inputFilter_version;
+       QScopedPointer<InputEventFilter> m_inputFilter_checkUp;
 
-       const x264_cpu_t *const m_cpuFeatures;
-       const QString m_appDir;
+       QScopedPointer<JobListModel> m_jobList;
+       QScopedPointer<OptionsModel> m_options;
+       QScopedPointer<QStringList> m_pendingFiles;
+       
+       QScopedPointer<SysinfoModel> m_sysinfo;
+       QScopedPointer<PreferencesModel> m_preferences;
+       QScopedPointer<RecentlyUsed> m_recentlyUsed;
        
        bool createJob(QString &sourceFileName, QString &outputFileName, OptionsModel *options, bool &runImmediately, const bool restart = false, int fileNo = -1, int fileTotal = 0, bool *applyToAll = NULL);
        bool createJobMultiple(const QStringList &filePathIn);
@@ -89,23 +116,29 @@ private:
        unsigned int countPendingJobs(void);
        unsigned int countRunningJobs(void);
 
-       void parseCommandLineArgs(void);
+       bool parseCommandLineArgs(void);
 
 private slots:
        void addButtonPressed();
        void openActionTriggered();
+       void cleanupActionTriggered(void);
+       void postOpActionTriggered(void);
        void abortButtonPressed(void);
        void browseButtonPressed(void);
        void deleteButtonPressed(void);
        void copyLogToClipboard(bool checked);
+       void saveLogToLocalFile(bool checked);
+       void toggleLineWrapping(bool checked);
        void checkUpdates(void);
-       void handleDroppedFiles(void);
+       void handlePendingFiles(void);
        void init(void);
-       void instanceCreated(unsigned int pid);
+       void handleCommand(const int &command, const QStringList &args, const quint32 &flags = 0);
        void jobSelected(const QModelIndex &current, const QModelIndex &previous);
        void jobChangedData(const  QModelIndex &top, const  QModelIndex &bottom);
        void jobLogExtended(const QModelIndex & parent, int start, int end);
+       void jobListKeyPressed(const int &tag);
        void launchNextJob();
+       void moveButtonPressed(void);
        void pauseButtonPressed(bool checked);
        void restartButtonPressed(void);
        void saveLogFile(const QModelIndex &index);
@@ -114,5 +147,7 @@ private slots:
        void showWebLink(void);
        void shutdownComputer(void);
        void startButtonPressed(void);
+       void sysTrayActived(void);
        void updateLabelPos(void);
+       void versionLabelMouseClicked(const int &tag);
 };