mirror of
https://github.com/mattermost/focalboard.git
synced 2024-12-21 13:38:56 +02:00
Delete MainWindow.xaml.cs
This commit is contained in:
parent
08f09f0c99
commit
58a1fccb96
@ -1,153 +0,0 @@
|
|||||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
||||||
// See LICENSE.txt for license information.
|
|
||||||
using System;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
|
||||||
using System.Windows;
|
|
||||||
using System.Windows.Input;
|
|
||||||
using Microsoft.Web.WebView2.Core;
|
|
||||||
|
|
||||||
namespace Focalboard {
|
|
||||||
/// <summary>
|
|
||||||
/// Interaction logic for MainWindow.xaml
|
|
||||||
/// </summary>
|
|
||||||
public partial class MainWindow : Window {
|
|
||||||
private int port {
|
|
||||||
get { return ((App)Application.Current).port; }
|
|
||||||
}
|
|
||||||
|
|
||||||
private string sessionToken {
|
|
||||||
get { return ((App)Application.Current).sessionToken; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public MainWindow() {
|
|
||||||
Debug.WriteLine($"MainWindow()");
|
|
||||||
|
|
||||||
InitializeComponent();
|
|
||||||
|
|
||||||
RestoreWindowsState();
|
|
||||||
|
|
||||||
this.Loaded += MainWindow_Loaded;
|
|
||||||
this.Closing += MainWindow_Closing;
|
|
||||||
|
|
||||||
InitializeWebView();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void MainWindow_Loaded(object sender, RoutedEventArgs e) {
|
|
||||||
Activate();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PromptToInstallWebview2() {
|
|
||||||
var dialogResult = MessageBox.Show(
|
|
||||||
"Focalboard requires the WebView2 runtime to be downloaded and installed. Install now?",
|
|
||||||
"Focalboard",
|
|
||||||
MessageBoxButton.YesNo,
|
|
||||||
MessageBoxImage.Information,
|
|
||||||
MessageBoxResult.OK,
|
|
||||||
MessageBoxOptions.DefaultDesktopOnly);
|
|
||||||
|
|
||||||
if (dialogResult == MessageBoxResult.Yes) {
|
|
||||||
installingLabel.Visibility = Visibility.Visible;
|
|
||||||
webView.Visibility = Visibility.Collapsed;
|
|
||||||
|
|
||||||
var installer = new Webview2Installer();
|
|
||||||
installer.InstallProgress += Installer_InstallProgress;
|
|
||||||
installer.InstallCompleted += Installer_InstallCompleted;
|
|
||||||
installer.DownloadAndInstall();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Installer_InstallProgress(Webview2Installer sender, EventArgs e) {
|
|
||||||
Application.Current.Dispatcher.Invoke(() => {
|
|
||||||
if (sender.downloadProgress < 100) {
|
|
||||||
installingLabel.Content = $"Downloading Webview2: {sender.downloadProgress}%";
|
|
||||||
} else {
|
|
||||||
installingLabel.Content = "Installing Webview2...";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Installer_InstallCompleted(Webview2Installer sender, EventArgs e) {
|
|
||||||
Application.Current.Dispatcher.Invoke(() => {
|
|
||||||
installingLabel.Content = "Webview2 install completed";
|
|
||||||
Activate();
|
|
||||||
|
|
||||||
if (sender.exitCode != 0) {
|
|
||||||
var message = $"Webview2 install FAILED with code {sender.exitCode}. Try again.";
|
|
||||||
MessageBox.Show(message, "Install failed");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reopen window
|
|
||||||
var window = new MainWindow();
|
|
||||||
window.Show();
|
|
||||||
Close();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SaveWindowState() {
|
|
||||||
try {
|
|
||||||
Properties.Settings.Default.WindowPosition = new System.Drawing.Point(
|
|
||||||
Convert.ToInt32(RestoreBounds.Location.X),
|
|
||||||
Convert.ToInt32(RestoreBounds.Location.Y));
|
|
||||||
|
|
||||||
Properties.Settings.Default.WindowSize = new System.Drawing.Size(
|
|
||||||
Convert.ToInt32(RestoreBounds.Size.Width),
|
|
||||||
Convert.ToInt32(RestoreBounds.Size.Height));
|
|
||||||
|
|
||||||
Properties.Settings.Default.WindowMaximized = (WindowState == WindowState.Maximized);
|
|
||||||
Properties.Settings.Default.Save();
|
|
||||||
} catch {
|
|
||||||
// Ignore errors, e.g. overflow
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RestoreWindowsState() {
|
|
||||||
this.Left = Properties.Settings.Default.WindowPosition.X;
|
|
||||||
this.Top = Properties.Settings.Default.WindowPosition.Y;
|
|
||||||
this.Width = Math.Max(300, Properties.Settings.Default.WindowSize.Width);
|
|
||||||
this.Height = Math.Max(200, Properties.Settings.Default.WindowSize.Height);
|
|
||||||
|
|
||||||
if (Properties.Settings.Default.WindowMaximized) {
|
|
||||||
WindowState = WindowState.Maximized;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e) {
|
|
||||||
SaveWindowState();
|
|
||||||
}
|
|
||||||
|
|
||||||
async void InitializeWebView() {
|
|
||||||
string version = GetWebView2Version();
|
|
||||||
var isAltKeyPressed = (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt));
|
|
||||||
if (version == "" || isAltKeyPressed) {
|
|
||||||
PromptToInstallWebview2();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.Title = $"Focalboard (port {port} WebView {version})";
|
|
||||||
|
|
||||||
// must create a data folder if running out of a secured folder that can't write like Program Files
|
|
||||||
var env = await CoreWebView2Environment.CreateAsync(
|
|
||||||
userDataFolder: Path.Combine(Path.GetTempPath(), "Focalboard")
|
|
||||||
);
|
|
||||||
await webView.EnsureCoreWebView2Async(env);
|
|
||||||
|
|
||||||
webView.ContentLoading += WebView_ContentLoading;
|
|
||||||
|
|
||||||
var url = String.Format("http://localhost:{0}", port);
|
|
||||||
webView.Source = new Uri(url);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string GetWebView2Version() {
|
|
||||||
try {
|
|
||||||
return CoreWebView2Environment.GetAvailableBrowserVersionString();
|
|
||||||
} catch (Exception) { return ""; }
|
|
||||||
}
|
|
||||||
|
|
||||||
private void WebView_ContentLoading(object sender, CoreWebView2ContentLoadingEventArgs e) {
|
|
||||||
// Set focalboardSessionId
|
|
||||||
string script = $"localStorage.setItem('focalboardSessionId', '{sessionToken}');";
|
|
||||||
webView.ExecuteScriptAsync(script);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user