/// <summary> /// Event fired when the next button is clicked /// </summary> private async void NextBtn_Click(object sender, EventArgs e) { // Disable this form this.Enabled = false; string Message1 = ""; // Initiate the Task Form if (TypeSelect.SelectedIndex == 1) { TaskForm.Show(this, "Create Database", "Connecting to MySQL Database...", false); Message1 = "Successfully Connected to MySQL Database! We will attempt to create the necessary tables into the specified database. Continue?"; } else { TaskForm.Show(this, "Create Database", "Creating SQLite Database...", false); Message1 = "Successfully Created the SQLite Database! We will attempt to create the necessary tables into the specified database. Continue?"; } // Temporarily set settings if (!SetConfigSettings()) { this.Enabled = true; TaskForm.CloseForm(); return; } // Try and install the SQL try { bool PreviousInstall = true; // Run in a seperate thread, dont wanna lock up the GUI thread await Task.Run(() => { // Switch mode if (DbMode == DatabaseMode.Stats) { // Open up the database connetion using (StatsDatabase Db = new StatsDatabase()) { // We only have work to do if the tables are not installed if (!Db.TablesExist) { PreviousInstall = false; // Verify that the user wants to install DB tables DialogResult Res = MessageBox.Show(Message1, "Verify Installation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, (MessageBoxOptions)0x40000 // Force window on top ); // If we dont want to install tables, back out! if (Res == DialogResult.No) return; // Create our tables TaskForm.Progress.Report(new TaskProgressUpdate("Creating Stats Tables")); Db.CreateSqlTables(TaskForm.Progress); } } } else // Gamespy Mode { // Open up the database connetion using (GamespyDatabase Db = new GamespyDatabase()) { // We only have work to do if the tables are not installed if (!Db.TablesExist) { PreviousInstall = false; // Verify that the user wants to install DB tables DialogResult Res = MessageBox.Show(Message1, "Verify Installation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, (MessageBoxOptions)0x40000 // Force window on top ); // If we dont want to install tables, back out! if (Res == DialogResult.No) return; // Create our tables TaskForm.Progress.Report(new TaskProgressUpdate("Creating Gamespy Tables")); Db.CreateSqlTables(); } } } }); // No errors, so save the config file Program.Config.Save(); // Close the task form TaskForm.CloseForm(); // Show Success Form if (!PreviousInstall) MessageBox.Show("Successfully installed the database tables!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, (MessageBoxOptions)0x40000 // Force window on top ); else MessageBox.Show( "We've detected that the database was already installed here. Your database settings have been saved and no further setup is required.", "Existing Installation Found", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, (MessageBoxOptions)0x40000 // Force window on top ); // Close this form, as we are done now this.Close(); } catch (Exception Ex) { // Close the task form and re-enable this form TaskForm.CloseForm(); this.Enabled = true; // Revert the temporary config settings and show the error to the user Program.Config.Reload(); MessageBox.Show(Ex.Message, "Database Installation Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, (MessageBoxOptions)0x40000 // Force window on top ); return; } finally { if (TaskForm.IsOpen) TaskForm.CloseForm(); this.Enabled = true; } }