OSDN Git Service

Happy new year 2020!
[x264-launcher/x264-launcher.git] / src / win_main.h
index f20b5ab..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>
 
-class IPC;
+//Forward declarations
 class JobListModel;
 class OptionsModel;
 class SysinfoModel;
@@ -36,6 +39,7 @@ class InputEventFilter;
 class QModelIndex;
 class QLabel;
 class QSystemTrayIcon;
+class IPCThread_Recv;
 enum JobStatus;
 
 namespace Ui
@@ -43,12 +47,22 @@ 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, IPC *ipc);
+       MainWindow(const MUtils::CPUFetaures::cpu_info_t &cpuFeatures, MUtils::IPCChannel *const ipcChannel);
        ~MainWindow(void);
 
 protected:
@@ -57,39 +71,41 @@ protected:
        virtual void resizeEvent(QResizeEvent *e);
        virtual void dragEnterEvent(QDragEnterEvent *event);
        virtual void dropEvent(QDropEvent *event);
-       virtual bool winEvent(MSG *message, long *result);
 
+private:
        typedef enum
        {
-               STATUS_PRE_INIT = 0,
-               STATUS_IDLE     = 1,
-               STATUS_AWAITING = 2,
-               STATUS_BLOCKED  = 3,
-               STATUS_EXITTING = 4
+               POST_OP_DONOTHING = 0,
+               POST_OP_POWERDOWN = 1,
+               POST_OP_HIBERNATE = 2
        }
-       x264_status_t;
+       postOp_t;
 
-private:
        Ui::MainWindow *const ui;
+       MUtils::IPCChannel *const m_ipcChannel;
+
+       postOp_t m_postOperation;
+       bool m_initialized;
 
-       x264_status_t m_status;
-       QLabel *m_label;
+       QScopedPointer<QLabel> m_label[2];
+       QScopedPointer<QMovie> m_animation;
+       QScopedPointer<QTimer> m_fileTimer;
 
-       IPC *const m_ipc;
-       QSystemTrayIcon *const m_sysTray;
+       QScopedPointer<IPCThread_Recv>   m_ipcThread;
+       QScopedPointer<MUtils::Taskbar7> m_taskbar;
+       QScopedPointer<QSystemTrayIcon>  m_sysTray;
 
-       InputEventFilter *m_inputFilter_jobList;
-       InputEventFilter *m_inputFilter_version;
-       InputEventFilter *m_inputFilter_checkUp;
+       QScopedPointer<InputEventFilter> m_inputFilter_jobList;
+       QScopedPointer<InputEventFilter> m_inputFilter_version;
+       QScopedPointer<InputEventFilter> m_inputFilter_checkUp;
 
-       JobListModel *m_jobList;
-       OptionsModel *m_options;
-       QStringList *m_pendingFiles;
-       QList<QFile*> m_toolsList;
+       QScopedPointer<JobListModel> m_jobList;
+       QScopedPointer<OptionsModel> m_options;
+       QScopedPointer<QStringList> m_pendingFiles;
        
-       SysinfoModel *m_sysinfo;
-       PreferencesModel *m_preferences;
-       RecentlyUsed *m_recentlyUsed;
+       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);
@@ -105,10 +121,14 @@ private:
 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 handlePendingFiles(void);
        void init(void);