OSDN Git Service

Added menu entry for the User's Manual + improved code for opening document links.
[lamexp/LameXP.git] / src / Dialog_MainWindow.h
index bf5a39c..1f95df2 100644 (file)
@@ -1,11 +1,12 @@
 ///////////////////////////////////////////////////////////////////////////////
 // LameXP - Audio Encoder Front-End
-// Copyright (C) 2004-2011 LoRd_MuldeR <MuldeR2@GMX.de>
+// Copyright (C) 2004-2014 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
 // the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
+// (at your option) any later version, but always including the *additional*
+// restrictions defined in the "License.txt" file.
 //
 // This program is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 
 #pragma once
 
-#include "../tmp/UIC_MainWindow.h"
+#include <QMainWindow>
 
 //Class declarations
-class QFileSystemModelEx;
-class WorkingBanner;
-class MessageHandlerThread;
+class AbstractEncoder;
 class AudioFileModel;
+class AudioFileModel_MetaInfo;
+class CustomEventFilter;
+class DropBox;
+class FileListModel;
+class MessageHandlerThread;
 class MetaInfoModel;
-class SettingsModel;
+class QActionGroup;
 class QButtonGroup;
-class FileListModel;
-class AbstractEncoder;
+class QFileSystemModelEx;
+class QLabel;
 class QMenu;
-class DropBox;
+class QUrl;
+class QModelIndex;
+class SettingsModel;
+class WorkingBanner;
+class lamexp_icon_t;
+
+//UIC forward declartion
+namespace Ui
+{
+       class MainWindow;
+}
 
-class MainWindow: public QMainWindow, private Ui::MainWindow
+//IPC forward declartion
+namespace MUtils
+{
+       class IPCChannel;
+}
+
+//MainWindow class
+class MainWindow: public QMainWindow
 {
        Q_OBJECT
 
 public:
-       MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, SettingsModel *settingsModel, QWidget *parent = 0);
+       MainWindow(MUtils::IPCChannel *const ipcChannel, FileListModel *const fileListModel, AudioFileModel_MetaInfo *const metaInfo, SettingsModel *const settingsModel, QWidget *const parent = 0);
        ~MainWindow(void);
 
        bool isAccepted() { return m_accepted; }
 
 private slots:
        void aboutButtonClicked(void);
-       void addFileDelayed(const QString &filePath);
+       void addFileDelayed(const QString &filePath, bool tryASAP = false);
        void addFilesButtonClicked(void);
+       void addFilesDelayed(const QStringList &filePaths, bool tryASAP = false);
+       void addFavoriteFolderActionTriggered(void);
+       void addFolderDelayed(const QString &folderPath, bool recursive);
        void aftenCodingModeChanged(int value);
        void aftenDRCModeChanged(int value);
        void aftenFastAllocationChanged(bool checked);
@@ -59,32 +83,44 @@ private slots:
        void bitrateManagementMaxChanged(int value);
        void bitrateManagementMinChanged(int value);
        void browseCustomTempFolderButtonClicked(void);
+       void centerOutputFolderModel(void);
+       void centerOutputFolderModel_doAsync(void);
        void channelModeChanged(int value);
        void checkForBetaUpdatesActionTriggered(bool checked);
        void checkUpdatesActionActivated(void);
        void clearFilesButtonClicked(void);
        void clearMetaButtonClicked(void);
        void closeButtonClicked(void);
+       void compressionTabEventOccurred(QWidget*, QEvent*);
+       void cornerWidgetEventOccurred(QWidget *sender, QEvent *event);
        void customParamsChanged(void);
+       void customParamsHelpRequested(QWidget *obj, QEvent *event);
        void customTempFolderChanged(const QString &text);
        void disableNeroAacNotificationsActionTriggered(bool checked);
        void disableShellIntegrationActionTriggered(bool);
+       void disableSlowStartupNotificationsActionTriggered(bool checked);
        void disableSoundsActionTriggered(bool checked);
        void disableUpdateReminderActionTriggered(bool checked);
-       void disableWmaDecoderNotificationsActionTriggered(bool checked);
        void documentActionActivated(void);
        void editMetaButtonClicked(void);
        void encodeButtonClicked(void);
+       void exportCsvContextActionTriggered(void);
        void fileDownButtonClicked(void);
        void fileUpButtonClicked(void);
        void findFileContextActionTriggered(void);
+       void forceStereoDownmixEnabledChanged(bool checked);
        void gotoDesktopButtonClicked(void);
+       void gotoFavoriteFolder(void);
        void gotoHomeFolderButtonClicked(void);
        void gotoMusicFolderButtonClicked(void);
+       void goUpFolderContextActionTriggered(void);
        void handleDelayedFiles(void);
+       void handleDroppedFiles(void);
+       void hibernateComputerActionTriggered(bool checked);
        void importCueSheetActionTriggered(bool checked);
+       void importCsvContextActionTriggered(void);
        void initOutputFolderModel(void);
-       void installWMADecoderActionTriggered(bool checked);
+       void initOutputFolderModel_doAsync(void);
        void languageActionActivated(QAction *action);
        void languageFromFileActionActivated(bool checked);
        void makeFolderButtonClicked(void);
@@ -93,32 +129,49 @@ private slots:
        void neroAACProfileChanged(int value);
        void normalizationEnabledChanged(bool checked);
        void normalizationMaxVolumeChanged(double volume);
+       void normalizationModeChanged(int mode);
        void notifyOtherInstance(void);
        void openFolderActionActivated(void);
+       void opusSettingsChanged(void);
        void outputFolderContextMenu(const QPoint &pos);
+       void outputFolderDirectoryLoaded(const QString &path);
+       void outputFolderEditFinished(void);
+       void outputFolderItemExpanded(const QModelIndex &item);
+       void outputFolderMouseEventOccurred(QWidget *sender, QEvent *event);
+       void outputFolderViewEventOccurred(QWidget *sender, QEvent *event);
+       void outputFolderRowsInserted(const QModelIndex &parent, int start, int end);
        void outputFolderViewClicked(const QModelIndex &index);
        void outputFolderViewMoved(const QModelIndex &index);
+       void overwriteModeChanged(int id);
        void playlistEnabledChanged(void);
        void prependRelativePathChanged(void);
        void previewContextActionTriggered(void);
+       void refreshFolderContextActionTriggered(void);
        void removeFileButtonClicked(void);
+       void renameOutputEnabledChanged(bool checked);
+       void renameOutputPatternChanged(void);
+       void renameOutputPatternChanged(const QString &text, bool silent = false);
        void resetAdvancedOptionsButtonClicked(void);
        void restoreCursor(void);
        void samplingRateChanged(int value);
        void saveToSourceFolderChanged(void);
+       void showAnnounceBox(void);
+       void showCustomParamsHelpScreen(const QString &toolName, const QString &command);
        void showDetailsButtonClicked(void);
        void showDropBoxWidgetActionTriggered(bool checked);
        void showFolderContextActionTriggered(void);
+       void showRenameMacros(const QString &text);
        void sourceFilesContextMenu(const QPoint &pos);
+       void sourceFilesScrollbarMoved(int);
        void sourceModelChanged(void);
        void styleActionActivated(QAction *action);
        void tabActionActivated(QAction *action);
-       void tabPageChanged(int idx);
+       void tabPageChanged(int idx, const bool silent = false);
        void toneAdjustBassChanged(double value);
        void toneAdjustTrebleChanged(double value);
        void toneAdjustTrebleReset(void);
        void updateBitrate(int value);
-       void updateEncoder(int id);
+       void updateEncoder(int id = 0);
        void updateLameAlgoQuality(int value);
        void updateMaximumInstances(int value);
        void updateRCMode(int id);
@@ -127,27 +180,34 @@ private slots:
        void windowShown(void);
 
 protected:
-       void changeEvent(QEvent *e);
-       void closeEvent(QCloseEvent *event);
-       void dragEnterEvent(QDragEnterEvent *event);
-       void dropEvent(QDropEvent *event);
-       bool eventFilter(QObject *obj, QEvent *event);
-       void resizeEvent(QResizeEvent *event);
-       void showEvent(QShowEvent *event);
+       virtual void changeEvent(QEvent *e);
+       virtual void closeEvent(QCloseEvent *event);
+       virtual void dragEnterEvent(QDragEnterEvent *event);
+       virtual void dropEvent(QDropEvent *event);
+       virtual bool eventFilter(QObject *obj, QEvent *event);
+       virtual void resizeEvent(QResizeEvent *event);
+       virtual void showEvent(QShowEvent *event);
+       virtual void keyPressEvent(QKeyEvent *e);
+       virtual bool event(QEvent *e);
+       virtual bool winEvent(MSG *message, long *result);
 
 private:
+       Ui::MainWindow *ui; //for Qt UIC
+
        void addFiles(const QStringList &files);
-       void addFolder(const QString &path, bool recursive = false);
+       void addFolder(const QString &path, bool recursive = false, bool delayed = false);
        bool checkForUpdates(void);
-       bool installWMADecoder(void);
+       void initializeTranslation(void);
+       void refreshFavorites(void);
+       void openDocumentLink(QAction *const action);
        
        bool m_accepted;
        bool m_firstTimeShown;
-       bool m_OutputFolderViewInitialized;
-
-       const bool m_neroEncoderAvailable;
+       uint m_outputFolderViewInitCounter;
+       bool m_outputFolderViewCentering;
 
        WorkingBanner *m_banner;
+       QList<QUrl> *m_droppedFileList;
        QStringList *m_delayedFileList;
        QTimer *m_delayedFileTimer;
        DropBox *m_dropBox;
@@ -155,19 +215,33 @@ private:
        FileListModel *m_fileListModel;
        QFileSystemModelEx *m_fileSystemModel;
        MessageHandlerThread *m_messageHandler;
-       AudioFileModel *m_metaData;
+       AudioFileModel_MetaInfo *const m_metaData;
        MetaInfoModel *m_metaInfoModel;
        QMenu *m_outputFolderContextMenu;
        SettingsModel *m_settings;
        QMenu *m_sourceFilesContextMenu;
+       QMenu *m_outputFolderFavoritesMenu;
+       QLabel *m_outputFolderNoteBox;
 
        QAction *m_findFileContextAction;
        QAction *m_previewContextAction;
        QAction *m_showDetailsContextAction;
        QAction *m_showFolderContextAction;
+       QAction *m_refreshFolderContextAction;
+       QAction *m_goUpFolderContextAction;
+       QAction *m_addFavoriteFolderAction;
+       QAction *m_exportCsvContextAction;
+       QAction *m_importCsvContextAction;
        QActionGroup *m_languageActionGroup;
        QActionGroup *m_styleActionGroup;
        QActionGroup *m_tabActionGroup;
        QButtonGroup *m_encoderButtonGroup;
        QButtonGroup *m_modeButtonGroup;
+       QButtonGroup *m_overwriteButtonGroup;
+
+       CustomEventFilter *m_evenFilterCornerWidget;
+       CustomEventFilter *m_evenFilterCustumParamsHelp;
+       CustomEventFilter *m_evenFilterOutputFolderMouse;
+       CustomEventFilter *m_evenFilterOutputFolderView;
+       CustomEventFilter *m_evenFilterCompressionTab;
 };