Skip to content

Commit

Permalink
feature: adds functional navigation between different modules UserCon…
Browse files Browse the repository at this point in the history
…trols
  • Loading branch information
andr9528 committed Dec 6, 2024
1 parent e71f673 commit 5d5991c
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 40 deletions.
2 changes: 1 addition & 1 deletion Tracker.Frontend.Uno/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public App()
}

protected Window? MainWindow { get; private set; }
protected IHost? Host { get; private set; }
public IHost? Host { get; private set; }

protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
Expand Down
37 changes: 8 additions & 29 deletions Tracker.Frontend.Uno/Presentation/ModulesNavigationPage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,10 @@ public sealed partial class ModulesNavigationPage : Page

public ModulesNavigationPage()
{
var viewModel = new ModulesNavigationViewModel();
DataContext ??= (Application.Current as App).Host.Services.GetRequiredService<ModulesNavigationViewModel>();

this.DataContext(viewModel,
(page, vm) => page.NavigationCacheMode(NavigationCacheMode.Required)
.Background(Theme.Brushes.Background.Default).Content(BuildContent(vm)));
this.NavigationCacheMode(NavigationCacheMode.Required).Background(Theme.Brushes.Background.Default).Content(
BuildContent((ModulesNavigationViewModel) DataContext));
}

private Grid BuildContent(ModulesNavigationViewModel viewModel)
Expand Down Expand Up @@ -60,8 +59,6 @@ private ListView BuildNavigationListView(ModulesNavigationViewModel viewModel)
{
var view = new ListView();

view.Region(true);

var options = Modules.Select(module =>
{
var item = new TextBlock()
Expand All @@ -74,12 +71,6 @@ private ListView BuildNavigationListView(ModulesNavigationViewModel viewModel)
FocusVisualPrimaryBrush = view.Background,
FocusVisualSecondaryBrush = view.Background,
};
item.Region(name: module.GetModuleAsReadableString());
//item.SetRequest(module.GetModuleAsReadableString());
//item.SetData(module.GetModuleControl());

//item.Command(() => GetModuleCommand(viewModel, module.TypeModule));
//item.Style(new Style(typeof(TextBlock)));

return item;
});
Expand All @@ -93,10 +84,7 @@ private ListView BuildNavigationListView(ModulesNavigationViewModel viewModel)
private void ListViewOnSelectionChanged(
object sender, SelectionChangedEventArgs e, ModulesNavigationViewModel viewModel)
{
Console.WriteLine($"Listview Selection Changed Called");
viewModel.ListViewOnSelectionChanged(sender, e);
// Not Fired...
Console.WriteLine($"View Model Called");
}

private Grid BuildContentGrid(ModulesNavigationViewModel viewModel)
Expand All @@ -105,7 +93,8 @@ private Grid BuildContentGrid(ModulesNavigationViewModel viewModel)
{
Background = new SolidColorBrush(Colors.AliceBlue),
};
grid.Region(true, navigator: "Visibility");

Dictionary<TrackerModule.Module, Grid> contentGrids = new();

foreach (TrackerModule module in Modules)
{
Expand All @@ -115,24 +104,14 @@ private Grid BuildContentGrid(ModulesNavigationViewModel viewModel)
VerticalAlignment = VerticalAlignment.Stretch,
Visibility = Visibility.Collapsed,
};
contentGrid.Visibility(() => GetModuleVisibility(viewModel, module.TypeModule));
contentGrid.Region(name: module.GetModuleAsReadableString());
contentGrid.Children.Add(module.GetModuleControl());

contentGrids.Add(module.TypeModule, contentGrid);
grid.Children.Add(contentGrid);
}

return grid;
}
viewModel.SetContentGridsDictionary(contentGrids);

private Visibility GetModuleVisibility(ModulesNavigationViewModel viewModel, TrackerModule.Module module)
{
return module switch
{
TrackerModule.Module.TIME => viewModel.TimeModuleVisibility,
TrackerModule.Module.DINING => viewModel.DiningModuleVisibility,
TrackerModule.Module.BUDGET => viewModel.BudgetModuleVisibility,
_ => viewModel.BudgetModuleVisibility,
};
return grid;
}
}
36 changes: 26 additions & 10 deletions Tracker.Frontend.Uno/Presentation/ModulesNavigationViewModel.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Uno.Extensions.Equality;
using Console = System.Console;

namespace Tracker.Frontend.Uno.Presentation;

Expand All @@ -7,16 +8,12 @@ public partial class ModulesNavigationViewModel : ObservableObject
//private readonly INavigator _navigator;

[ObservableProperty] private TrackerModule.Module activeModule;
[ObservableProperty] private Visibility budgetModuleVisibility;
[ObservableProperty] private Visibility diningModuleVisibility;
[ObservableProperty] private Visibility timeModuleVisibility;
private Dictionary<TrackerModule.Module, Grid> contentGrids = new();

public ModulesNavigationViewModel()
{
//_navigator = navigator;
Title = "Tracker";

SetActiveModule(ModulesNavigationPage.Modules[0].TypeModule);
}

public string? Title { get; }
Expand All @@ -29,13 +26,32 @@ public void ListViewOnSelectionChanged(object sender, SelectionChangedEventArgs
SetActiveModule(trackerModule.TypeModule);
}

public void SetContentGridsDictionary(Dictionary<TrackerModule.Module, Grid> contentGrids)
{
this.contentGrids = contentGrids;
SetActiveModule(ModulesNavigationPage.Modules[0].TypeModule);
}

private void SetActiveModule(TrackerModule.Module module)
{
ActiveModule = module;
BudgetModuleVisibility =
ActiveModule == TrackerModule.Module.BUDGET ? Visibility.Visible : Visibility.Collapsed;
DiningModuleVisibility =
ActiveModule == TrackerModule.Module.DINING ? Visibility.Visible : Visibility.Collapsed;
TimeModuleVisibility = ActiveModule == TrackerModule.Module.TIME ? Visibility.Visible : Visibility.Collapsed;

foreach (var grid in contentGrids)
{
grid.Value.Visibility = Visibility.Collapsed;
}

contentGrids[ActiveModule].Visibility = Visibility.Visible;

Console.WriteLine($"Collapsed all grids except {ActiveModule}");

//BudgetModuleVisibility =
// ActiveModule == TrackerModule.Module.BUDGET ? Visibility.Visible : Visibility.Collapsed;
//DiningModuleVisibility =
// ActiveModule == TrackerModule.Module.DINING ? Visibility.Visible : Visibility.Collapsed;
//TimeModuleVisibility = ActiveModule == TrackerModule.Module.TIME ? Visibility.Visible : Visibility.Collapsed;

//Console.WriteLine(
// $"Budget: {BudgetModuleVisibility}; Dining: {DiningModuleVisibility}; Time: {TimeModuleVisibility}");
}
}

0 comments on commit 5d5991c

Please sign in to comment.