OSDN Git Service

Happy new year 2020!
[x264-launcher/x264-launcher.git] / src / win_main.h
index dbf30ae..0df916e 100644 (file)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Simple x264 Launcher
-// Copyright (C) 2004-2012 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
 
-#include "uic_win_main.h"
-#include "thread_encode.h"
+//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
+{
+       class MainWindow;
+}
 
-class MainWindow: public QMainWindow, private Ui::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(bool x64supported);
+       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 void dragEnterEvent(QDragEnterEvent *event);
+       virtual void dropEvent(QDropEvent *event);
 
 private:
-       bool m_firstShow;
+       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;
+
+       postOp_t m_postOperation;
+       bool m_initialized;
 
-       JobListModel *m_jobList;
-       OptionsModel *m_options;
-       QList<QFile*> m_toolsList;
+       QScopedPointer<QLabel> m_label[2];
+       QScopedPointer<QMovie> m_animation;
+       QScopedPointer<QTimer> m_fileTimer;
 
-       const bool m_x64supported;
-       const QString m_appDir;
+       QScopedPointer<IPCThread_Recv>   m_ipcThread;
+       QScopedPointer<MUtils::Taskbar7> m_taskbar;
+       QScopedPointer<QSystemTrayIcon>  m_sysTray;
+
+       QScopedPointer<InputEventFilter> m_inputFilter_jobList;
+       QScopedPointer<InputEventFilter> m_inputFilter_version;
+       QScopedPointer<InputEventFilter> m_inputFilter_checkUp;
+
+       QScopedPointer<JobListModel> m_jobList;
+       QScopedPointer<OptionsModel> m_options;
+       QScopedPointer<QStringList> m_pendingFiles;
        
-       void updateButtons(EncodeThread::JobStatus status);
-       bool havePendingJobs(void);
+       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);
+
+       bool appendJob(const QString &sourceFileName, const QString &outputFileName, OptionsModel *options, const bool runImmediately);
+       void updateButtons(JobStatus status);
+       void updateTaskbar(JobStatus status, const QIcon &icon);
+       unsigned int countPendingJobs(void);
+       unsigned int countRunningJobs(void);
+
+       bool parseCommandLineArgs(void);
 
 private slots:
-       void addButtonPressed(void);
-       void startButtonPressed(void);
+       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);
-       void jobSelected(const QModelIndex & current, const QModelIndex & previous);
+       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);
        void showAbout(void);
+       void showPreferences(void);
        void showWebLink(void);
-       void launchNextJob(void);
+       void shutdownComputer(void);
+       void startButtonPressed(void);
+       void sysTrayActived(void);
+       void updateLabelPos(void);
+       void versionLabelMouseClicked(const int &tag);
 };