Skip to content

Commit

Permalink
Update app fonts and add Windows lifecycle events
Browse files Browse the repository at this point in the history
This commit updates the app's font library to include new fonts. It also adds a section of code that handles Windows lifecycle events, which allows for Mica or Acrylic effects on windows.
  • Loading branch information
kfrancis committed May 18, 2023
1 parent 60cba84 commit d85df3e
Show file tree
Hide file tree
Showing 27 changed files with 545 additions and 323 deletions.
Binary file modified nusocial.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed pic.png
Binary file not shown.
7 changes: 4 additions & 3 deletions src/NuSocial/AppShell.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
FlyoutIsPresented="{Binding IsPresented, Mode=TwoWay}"
Shell.BackgroundColor="{DynamicResource Primary}">
<Shell.Behaviors>
<toolkit:StatusBarBehavior StatusBarColor="{OnPlatform iOS='#00FFFFFF', Default='#FF0D2647'}" StatusBarStyle="LightContent" />
<toolkit:StatusBarBehavior StatusBarColor="{OnPlatform iOS='#00FFFFFF', Default='#FF373063'}" StatusBarStyle="LightContent" />
</Shell.Behaviors>

<ShellContent
Expand Down Expand Up @@ -163,9 +163,10 @@
<!-- Logout -->
<Button
Grid.Row="1"
BackgroundColor="{DynamicResource Blue100Accent}"
BackgroundColor="{DynamicResource Yellow100Accent}"
Command="{Binding LogoutPressedCommand}"
Text="{loc:Translate Logout}" />
Text="{loc:Translate Logout}"
TextColor="{DynamicResource Black}" />
</Grid>
</DataTemplate>
</Shell.FlyoutFooterTemplate>
Expand Down
266 changes: 151 additions & 115 deletions src/NuSocial/MauiProgram.cs
Original file line number Diff line number Diff line change
@@ -1,62 +1,98 @@
using Autofac;
using Autofac.Diagnostics;
using CommunityToolkit.Maui.Markup;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Mopups.Hosting;
using NuSocial.Core.Threading;
using Autofac;
using Autofac.Diagnostics;
using CommunityToolkit.Maui.Markup;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Microsoft.Maui.LifecycleEvents;
using Mopups.Hosting;
using NuSocial.Core.Threading;
using Serilog;
using Serilog.Events;
using Serilog.Sinks.FastConsole;
using SkiaSharp.Views.Maui.Controls.Hosting;
using System.Reflection;
using Volo.Abp;
using Volo.Abp.Autofac;

namespace NuSocial;

public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
using SkiaSharp.Views.Maui.Controls.Hosting;
using System.Reflection;
using Volo.Abp;
using Volo.Abp.Autofac;


#if WINDOWS10_0_17763_0_OR_GREATER
using NuSocial.Platforms.Windows;
#endif

namespace NuSocial;

public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
SetupSerilog();
builder
.UseMauiApp<App>()
.UseMauiCommunityToolkit(options =>
{
options.SetShouldSuppressExceptionsInConverters(true);
options.SetShouldSuppressExceptionsInBehaviors(false);
options.SetShouldSuppressExceptionsInAnimations(false);
})
.UseSkiaSharp()
.UseMauiCommunityToolkitMarkup()
.ConfigureFonts(fonts =>
{
fonts.AddFont("FontAwesome6FreeBrands.otf", "FontAwesomeBrands");
fonts.AddFont("FontAwesome6FreeRegular.otf", "FontAwesomeRegular");
fonts.AddFont("FontAwesome6FreeSolid.otf", "FontAwesomeSolid");
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
fonts.AddFont("Urbanist-Medium.ttf", "Urbanist");
})
.ConfigureMopups()
.ConfigureContainer<ContainerBuilder>(new AbpAutofacServiceProviderFactory(GetAutofacContainerBuilder(builder.Services)));

ConfigureFromConfigurationOptions(builder);

builder.Services.AddApplication<NuSocialModule>(options =>
{
options.Services.ReplaceConfiguration(builder.Configuration);
});

.UseMauiApp<App>()
.UseMauiCommunityToolkit(options =>
{
options.SetShouldSuppressExceptionsInConverters(true);
options.SetShouldSuppressExceptionsInBehaviors(false);
options.SetShouldSuppressExceptionsInAnimations(false);
})
.UseSkiaSharp()
.UseMauiCommunityToolkitMarkup()
.ConfigureFonts(fonts =>
{
fonts.AddFont("FontAwesome6FreeBrands.otf", "FontAwesomeBrands");
fonts.AddFont("FontAwesome6FreeRegular.otf", "FontAwesomeRegular");
fonts.AddFont("FontAwesome6FreeSolid.otf", "FontAwesomeSolid");
fonts.AddFont("Urbanist-Black.ttf", "Black");
fonts.AddFont("Urbanist-BlackItalic.ttf", "BlackItalic");
fonts.AddFont("Urbanist-Bold.ttf", "Bold");
fonts.AddFont("Urbanist-BoldItalic.ttf", "BoldItalic");
fonts.AddFont("Urbanist-ExtraBold.ttf", "ExtraBold");
fonts.AddFont("Urbanist-ExtraBoldItalic.ttf", "ExtraBoldItalic");
fonts.AddFont("Urbanist-ExtraLight.ttf", "ExtraLight");
fonts.AddFont("Urbanist-ExtraLightItalic.ttf", "ExtraLightItalic");
fonts.AddFont("Urbanist-Italic.ttf", "Italic");
fonts.AddFont("Urbanist-Light.ttf", "Light");
fonts.AddFont("Urbanist-LightItalic.ttf", "LightItalic");
fonts.AddFont("Urbanist-Medium.ttf", "Medium");
fonts.AddFont("Urbanist-MediumItalic.ttf", "MediumItalic");
fonts.AddFont("Urbanist-Regular.ttf", "Regular");
fonts.AddFont("Urbanist-SemiBold.ttf", "SemiBold");
fonts.AddFont("Urbanist-SemiBoldItalic.ttf", "SemiBoldItalic");
fonts.AddFont("Urbanist-Thin.ttf", "Thin");
fonts.AddFont("Urbanist-ThinItalic.ttf", "ThinItalic");
})
.ConfigureMopups()
.ConfigureContainer<ContainerBuilder>(new AbpAutofacServiceProviderFactory(GetAutofacContainerBuilder(builder.Services)));

ConfigureFromConfigurationOptions(builder);

builder.Services.AddApplication<NuSocialModule>(options =>
{
options.Services.ReplaceConfiguration(builder.Configuration);
});

AddDebugLogging(builder.Logging);

var app = builder.Build();

app.Services.GetRequiredService<IAbpApplicationWithExternalServiceProvider>().Initialize(app.Services);

return app;

// **** THIS SECTION IS WHAT IS RELEVANT FOR YOU ************ //
builder.ConfigureLifecycleEvents(events =>
{
#if WINDOWS10_0_17763_0_OR_GREATER
events.AddWindows(wndLifeCycleBuilder =>
{
wndLifeCycleBuilder.OnWindowCreated(window =>
{
window.TryMicaOrAcrylic();
});
});
#endif
});
// ************* END OF RELEVANT SECTION *********** //

var app = builder.Build();

app.Services.GetRequiredService<IAbpApplicationWithExternalServiceProvider>().Initialize(app.Services);

return app;
}

private static void SetupSerilog()
Expand All @@ -73,69 +109,69 @@ private static void SetupSerilog()
.CreateLogger();
}

[Conditional("DEBUG")]
private static void AddDebugLogging(ILoggingBuilder logging)
{
logging.AddDebug();

//AppDomain.CurrentDomain.FirstChanceException += ExceptionService.Set;
//AppDomain.CurrentDomain.UnhandledException += ExceptionService.Set;
//TaskScheduler.UnobservedTaskException += ExceptionService.Set;
}

private static void ConfigureFromConfigurationOptions(MauiAppBuilder builder)
{
var localType = Assembly.GetExecutingAssembly().DefinedTypes.Where(type => type.Name.EndsWith("MauiProgram", StringComparison.Ordinal)).First();
var assembly = localType.Assembly;
var names = assembly.GetManifestResourceNames().ToList();
using var stream = assembly.GetManifestResourceStream(names.Find(x => x.EndsWith("appsettings.json", StringComparison.OrdinalIgnoreCase)) ?? "appsettings.json");

if (stream != null)
{
var config = new ConfigurationBuilder().AddJsonStream(stream).Build();
builder.Configuration.AddConfiguration(config);
}

using var stream2 = assembly.GetManifestResourceStream(names.Find(x => x.EndsWith("appsettings.Development.json", StringComparison.OrdinalIgnoreCase)) ?? "appsettings.Development.json");
if (stream2 != null)
{
var config = new ConfigurationBuilder().AddJsonStream(stream2).Build();
builder.Configuration.AddConfiguration(config);
}
}

private static ContainerBuilder GetAutofacContainerBuilder(IServiceCollection services)
[Conditional("DEBUG")]
private static void AddDebugLogging(ILoggingBuilder logging)
{
var db = new LocalStorage();
services.AddSingleton<IDatabase>(db);
logging.AddDebug();

//AppDomain.CurrentDomain.FirstChanceException += ExceptionService.Set;
//AppDomain.CurrentDomain.UnhandledException += ExceptionService.Set;
//TaskScheduler.UnobservedTaskException += ExceptionService.Set;
}

private static void ConfigureFromConfigurationOptions(MauiAppBuilder builder)
{
var localType = Assembly.GetExecutingAssembly().DefinedTypes.Where(type => type.Name.EndsWith("MauiProgram", StringComparison.Ordinal)).First();
var assembly = localType.Assembly;
var names = assembly.GetManifestResourceNames().ToList();
using var stream = assembly.GetManifestResourceStream(names.Find(x => x.EndsWith("appsettings.json", StringComparison.OrdinalIgnoreCase)) ?? "appsettings.json");

if (stream != null)
{
var config = new ConfigurationBuilder().AddJsonStream(stream).Build();
builder.Configuration.AddConfiguration(config);
}

using var stream2 = assembly.GetManifestResourceStream(names.Find(x => x.EndsWith("appsettings.Development.json", StringComparison.OrdinalIgnoreCase)) ?? "appsettings.Development.json");
if (stream2 != null)
{
var config = new ConfigurationBuilder().AddJsonStream(stream2).Build();
builder.Configuration.AddConfiguration(config);
}
}

private static ContainerBuilder GetAutofacContainerBuilder(IServiceCollection services)
{
var db = new LocalStorage();
services.AddSingleton<IDatabase>(db);
services.AddSingleton<ICustomDispatcher, MauiDispatcher>();
services.AddSingleton<INostrService>(new NostrService(db));
services.AddSingleton<INostrService>(new NostrService(db));
services.AddLocalization();
services.AddLogging(logging => logging.AddSerilog());

services.AddLogging(logging => logging.AddSerilog());

var builder = new Autofac.ContainerBuilder();

SetupAutofacDebug(builder);

return builder;
}

[Conditional("DEBUG")]
private static void SetupAutofacDebug(ContainerBuilder builder)
{
var tracer = new DefaultDiagnosticTracer();
tracer.OperationCompleted += (sender, args) =>
{
if (args.OperationSucceeded == false)
Console.WriteLine(args.TraceContent);
};

builder.RegisterBuildCallback(c =>
{
if (c is Autofac.IContainer container)
{
container.SubscribeToDiagnostics(tracer);
}
});
}
}

SetupAutofacDebug(builder);

return builder;
}

[Conditional("DEBUG")]
private static void SetupAutofacDebug(ContainerBuilder builder)
{
var tracer = new DefaultDiagnosticTracer();
tracer.OperationCompleted += (sender, args) =>
{
if (args.OperationSucceeded == false)
Console.WriteLine(args.TraceContent);
};

builder.RegisterBuildCallback(c =>
{
if (c is Autofac.IContainer container)
{
container.SubscribeToDiagnostics(tracer);
}
});
}
}
Loading

0 comments on commit d85df3e

Please sign in to comment.