switch to sqlite

This commit is contained in:
2022-03-11 16:10:11 +08:00
parent f5f16d43f4
commit 5ec4119025
25 changed files with 286 additions and 435 deletions

View File

@ -205,7 +205,7 @@ namespace Billing.UI
{
if (!int.TryParse(key, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out int i))
{
return ImageSource.FromFile(BaseModel.ICON_DEFAULT);
return ImageSource.FromFile(Definition.DefaultIcon);
}
glyph = char.ConvertFromUtf32(i);
}

View File

@ -1,17 +1,15 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using System.Xml.Linq;
using Billing.Languages;
using Billing.Models;
using Xamarin.Forms;
namespace Billing.UI
{
public static partial class Definition
{
public static string PrimaryColorKey = "PrimaryColor";
public const string PrimaryColorKey = "PrimaryColor";
public const string DefaultIcon = "ic_default";
public static partial (string main, long build) GetVersion();
public static partial string GetRegularFontFamily();
public static partial string GetSemiBoldFontFamily();
@ -98,50 +96,33 @@ namespace Billing.UI
// add 23:59:59.999...
return date.AddTicks(863999999999);
}
}
public static class ModelExtensionHelper
{
public static List<T> FromStream<T>(Stream stream) where T : IModel, new()
public static bool IsTransparent(this long color)
{
XDocument doc = XDocument.Load(stream);
var root = doc.Root;
var list = new List<T>();
foreach (XElement ele in root.Elements("item"))
{
if (ele.Attribute("null")?.Value == "1")
{
list.Add(default);
}
else
{
T value = new();
value.OnXmlDeserialize(ele);
list.Add(value);
}
}
return list;
return (color & 0xff000000L) == 0x00000000L;
}
public static void ToStream<T>(this IEnumerable<T> list, Stream stream) where T : IModel
public static Color ToColor(this long color)
{
XElement root = new("root");
foreach (var t in list)
{
XElement item = new("item");
if (t == null)
{
item.Add(new XAttribute("null", 1));
}
else
{
t.OnXmlSerialize(item);
}
root.Add(item);
}
ulong c = (ulong)color;
int r = (int)(c & 0xff);
c >>= 8;
int g = (int)(c & 0xff);
c >>= 8;
int b = (int)(c & 0xff);
c >>= 8;
int a = (int)(c & 0xff);
return Color.FromRgba(r, g, b, a);
}
XDocument doc = new(new XDeclaration("1.0", "utf-8", "yes"), root);
doc.Save(stream, SaveOptions.DisableFormatting);
public static long ToLong(this Color color)
{
long l =
(uint)(color.A * 255) << 24 |
(uint)(color.B * 255) << 16 |
(uint)(color.G * 255) << 8 |
(uint)(color.R * 255);
return l;
}
}