Skip to content

Commit

Permalink
fix bugs
Browse files Browse the repository at this point in the history
  • Loading branch information
MikiraSora committed Oct 22, 2024
1 parent 384ef4e commit 8ae4585
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 111 deletions.

This file was deleted.

This file was deleted.

117 changes: 88 additions & 29 deletions OngekiFumenEditor/Kernel/ProgramUpdater/DefaultProgramUpdater.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
using Gemini.Modules.MainMenu;
using Gemini.Modules.MainMenu.Controls;
using Gemini.Modules.MainMenu.Models;
using Gemini.Modules.MainMenu.Views;
using Gemini.Modules.MainWindow.Views;
using OngekiFumenEditor.Kernel.MiscMenu.Commands.About;
using OngekiFumenEditor.Kernel.ProgramUpdater.Commands.About;
using OngekiFumenEditor.Kernel.ProgramUpdater.Dialogs.ViewModels;
using OngekiFumenEditor.Properties;
using OngekiFumenEditor.Utils;
using System;
Expand All @@ -21,6 +23,7 @@
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;

Expand Down Expand Up @@ -56,46 +59,102 @@ public VersionInfo RemoteVersionInfo
Set(ref remoteVersionInfo, value);
NotifyOfPropertyChange(nameof(HasNewVersion));

if (HasNewVersion)
menuBar.Add(menuItem);
else
menuBar.Remove(menuItem);
if (updatableButton is not null)
updatableButton.Visibility = HasNewVersion ? Visibility.Visible : Visibility.Collapsed;
}
}

private HttpClient http;
private IMenu menuBar;
private ICommandService commandService;
private MenuItemBase menuItem;

private BitmapImage icon;
private Image iconImg;
private bool isModified = false;
private Button updatableButton;

public DefaultProgramUpdater()
private void ModifyFrameworkMenuView()
{
http = new HttpClient();
menuBar = IoC.Get<IMenu>();

//build
var menuBuilder = IoC.Get<IMenuBuilder>();
var dummyModel = new MenuModel();
menuBuilder.BuildMenuBar(MenuDefinitions.dummyMenuBar, dummyModel);
menuItem = dummyModel.FirstOrDefault();
icon = new BitmapImage(new Uri("pack://application:,,,/OngekiFumenEditor;component/Resources/Icons/notication.png"));
if (isModified)
return;

IEnumerable<T> GetAllMenuItems2<T>(DependencyObject parent)
{
if (parent is T menuItem)
yield return menuItem;

foreach (var child in LogicalTreeHelper.GetChildren(parent).OfType<DependencyObject>())
foreach (var f in GetAllMenuItems2<T>(child))
yield return f;
}

var mainMenuView2 = GetAllMenuItems2<MainMenuView>(App.Current.MainWindow).FirstOrDefault();
var contentPresent = mainMenuView2.Parent as ContentControl;
contentPresent.Content = null;

var grid = new Grid();

grid.SetResourceReference(Grid.BackgroundProperty, "MenuDefaultBackground");

ColumnDefinition column1 = new ColumnDefinition()
{
Width = new GridLength(1, GridUnitType.Star)
};
ColumnDefinition column2 = new ColumnDefinition()
{
Width = GridLength.Auto
};
grid.ColumnDefinitions.Add(column1);
grid.ColumnDefinitions.Add(column2);

Grid.SetColumn(mainMenuView2, 0);
grid.Children.Add(mainMenuView2);

var icon = new BitmapImage(new Uri("pack://application:,,,/OngekiFumenEditor;component/Resources/Icons/notication.png"));
icon.Freeze();
updatableButton = new Button()
{
BorderThickness = new Thickness(0),
BorderBrush = Brushes.Transparent,
Visibility = Visibility.Collapsed,
Content = new StackPanel()
{
Orientation = Orientation.Horizontal,
Children =
{
new Image()
{
Height = 20,
Source = icon
},
new TextBlock()
{
FontWeight = FontWeights.Bold,
VerticalAlignment = VerticalAlignment.Center,
Text = "有新版本!"
}
}
},
HorizontalAlignment = HorizontalAlignment.Right,
VerticalAlignment = VerticalAlignment.Center,
};
updatableButton.SetResourceReference(Button.BackgroundProperty, "MenuDefaultBackground");
updatableButton.Click += (e, ee) =>
{
IoC.Get<IWindowManager>().ShowWindowAsync(new ShowNewVersionDialogViewModel()).Wait();
};

Grid.SetColumn(updatableButton, 1);
grid.Children.Add(updatableButton);

contentPresent.Content = grid;

isModified = true;
}

IEnumerable<T> GetAllMenuItems<T>(DependencyObject parent)
public DefaultProgramUpdater()
{
int childCount = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < childCount; i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
if (child is T menuItem)
yield return menuItem;
http = new HttpClient();

foreach (var child2 in GetAllMenuItems<T>(child))
yield return child2;
if ((App.Current as App)?.IsGUIMode ?? false)
{
ModifyFrameworkMenuView();
}
}

Expand Down
37 changes: 0 additions & 37 deletions OngekiFumenEditor/Kernel/ProgramUpdater/MenuDefinitions.cs

This file was deleted.

0 comments on commit 8ae4585

Please sign in to comment.