예제 #1
0
        static void Main()
        {
            // Updaterを更新する。
            FileUtils.copy(
                Application.StartupPath + "\\update\\temp\\LinearAudioPlayer\\update\\LinearAudioPlayerUpdate.exe",
                Application.StartupPath + "\\update\\LinearAudioPlayerUpdate.exe",
                true);
            DirectoryUtils.deleteDir(Application.StartupPath + "\\update\\temp");

            // ThreadExceptionイベント・ハンドラを登録する
            Application.ThreadException += new
                                           ThreadExceptionEventHandler(Application_ThreadException);

            // UnhandledExceptionイベント・ハンドラを登録する
            Thread.GetDomain().UnhandledException += new
                                                     UnhandledExceptionEventHandler(Application_UnhandledException);


            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            //Initializer init = new Initializer();
            //init.Initialize();
            //init = null;


            SettingManager = new SettingManager();
            SettingManager.LoadSetting();
            SettingManager.restoreGlobalSetting();

            initLogging();

            initApplication();

            initPlugin();

            // データベースアップデート
            UpdateUtils.updateDatabase();



            LinearAudioPlayer.WorkerThread = new WorkerThread();

            if (LinearGlobal.LinearConfig.ViewConfig.UseWebInterface)
            {
                LinearAudioPlayer.WebServerThread = new WebServerThread();
            }

            _playController = new PlayerController();

            LinearUtils.connectDatabase(LinearGlobal.LinearConfig.PlayerConfig.SelectDatabase);
            LinearAudioPlayer.GridController = new GridController();
            // 再生中リスト復元
            _playController.restorePlayingList();

            LinearGlobal.MainForm = new MainForm();
            int h = LinearGlobal.MainForm.Handle.ToInt32(); // ハンドルを作成する(作成されてないとBeginInvokeでエラーになるので)

            StyleController = new StyleController();
            StyleController.loadStyle(LinearGlobal.StyleConfig);
            StyleController.setColorProfile(LinearGlobal.ColorConfig);


            // TODO: 仮設定
            switch (LinearGlobal.LinearConfig.EngineConfig.PlayEngine)
            {
            case LinearEnum.PlayEngine.FMOD:
                LinearGlobal.MainForm.setPlayEngineInfo("Powered by FMOD Engine");
                break;

            case LinearEnum.PlayEngine.BASS:
                LinearGlobal.MainForm.setPlayEngineInfo("Powered by BASS Engine");
                break;
            }



            /* 設定を復元 */
            // メインフォーム
            //LinearGlobal.MainForm.restoreSetting();
            // リストフォーム
            //LinearGlobal.MainForm.ListForm.restoreSetting();
            // 設定フォーム
            //LinearGlobal.MainForm.ConfigForm.restoreConfig(
            //    LinearGlobal.LinearConfig);



            // データベースアップデート(ver.0.3.0用)
            LinearGlobal.isCompleteStartup = true;

            Action resumePlayAction = () =>
            {
                // レジューム情報があれば再生
                MainFunction mf = new MainFunction();
                if (LinearGlobal.LinearConfig.PlayerConfig.ResumeId != -1 &&
                    mf.isIdRegistDatabase(LinearGlobal.LinearConfig.PlayerConfig.ResumeId))
                {
                    LinearGlobal.CurrentPlayItemInfo.Id =
                        LinearGlobal.LinearConfig.PlayerConfig.ResumeId;

                    if (LinearGlobal.LinearConfig.PlayerConfig.ResumePlay &&
                        LinearGlobal.LinearConfig.PlayerConfig.ResumePosition != -1 &&
                        LinearEnum.DatabaseMode.MUSIC.Equals(LinearGlobal.DatabaseMode))
                    {
                        // レジューム再生

                        // todo:ボリュームを操作する必要ある?

                        Action uiAction = () =>
                        {
                            int backupVolume = LinearGlobal.Volume;
                            LinearGlobal.Volume = 0;
                            LinearAudioPlayer.PlayController.play(LinearGlobal.LinearConfig.PlayerConfig.ResumeId,
                                                                  true, false);
                            LinearGlobal.Volume = backupVolume;
                            if (LinearGlobal.LinearConfig.PlayerConfig.ResumePosition != -1)
                            {
                                LinearAudioPlayer.PlayController.setPosition(
                                    (uint)LinearGlobal.LinearConfig.PlayerConfig.ResumePosition);
                            }
                        };
                        LinearGlobal.MainForm.ListForm.BeginInvoke(uiAction);
                    }
                }
            };

            LinearAudioPlayer.WorkerThread.EnqueueTask(resumePlayAction);

            if (LinearGlobal.LinearConfig.PlayerConfig.IsAutoUpdate)
            {
                Action checkUpdateAction = () =>
                {
                    // アップデートチェックアクション
                    UpdateInfo updateInfo = UpdateUtils.checkSoftwareUpdate();

                    if (updateInfo.IsReleaseNewVersion)
                    {
                        Action uiAction = () =>
                        {
                            UpdateUtils.showUpdateConfirmMessage(updateInfo.NewFileVersion);
                        };
                        LinearGlobal.MainForm.BeginInvoke(uiAction);
                    }
                };
                LinearAudioPlayer.WorkerThread.EnqueueTask(checkUpdateAction);
            }

            Application.Run(LinearGlobal.MainForm);
        }