Scaffolding
This commit is contained in:
parent
79bf276ab9
commit
a40d900653
|
|
@ -1,13 +0,0 @@
|
|||
using Estara.Core.Models;
|
||||
|
||||
namespace Estara.Core.Contracts.Services;
|
||||
|
||||
// Remove this class once your pages/features are using your data.
|
||||
public interface ISampleDataService
|
||||
{
|
||||
Task<IEnumerable<SampleOrder>> GetContentGridDataAsync();
|
||||
|
||||
Task<IEnumerable<SampleOrder>> GetGridDataAsync();
|
||||
|
||||
Task<IEnumerable<SampleOrder>> GetListDetailsDataAsync();
|
||||
}
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
namespace Estara.Core.Models;
|
||||
|
||||
// Model for the SampleDataService. Replace with your own model.
|
||||
public class SampleCompany
|
||||
{
|
||||
public string CompanyID
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string CompanyName
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string ContactName
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string ContactTitle
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Address
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string City
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string PostalCode
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Country
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Phone
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Fax
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public ICollection<SampleOrder> Orders
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
namespace Estara.Core.Models;
|
||||
|
||||
// Model for the SampleDataService. Replace with your own model.
|
||||
public class SampleOrder
|
||||
{
|
||||
public long OrderID
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public DateTime OrderDate
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public DateTime RequiredDate
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public DateTime ShippedDate
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string ShipperName
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string ShipperPhone
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public double Freight
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Company
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string ShipTo
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public double OrderTotal
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Status
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public int SymbolCode
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string SymbolName
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public char Symbol => (char)SymbolCode;
|
||||
|
||||
public ICollection<SampleOrderDetail> Details
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string ShortDescription => $"Order ID: {OrderID}";
|
||||
|
||||
public override string ToString() => $"{Company} {Status}";
|
||||
}
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
namespace Estara.Core.Models;
|
||||
|
||||
// Model for the SampleDataService. Replace with your own model.
|
||||
public class SampleOrderDetail
|
||||
{
|
||||
public long ProductID
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string ProductName
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public int Quantity
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public double Discount
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string QuantityPerUnit
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public double UnitPrice
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string CategoryName
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string CategoryDescription
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public double Total
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string ShortDescription => $"Product ID: {ProductID} - {ProductName}";
|
||||
}
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
*Recommended Markdown Viewer: [Markdown Editor](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.MarkdownEditor2)*
|
||||
|
||||
## Getting Started
|
||||
|
||||
The Core project contains code that can be [reused across multiple application projects](https://docs.microsoft.com/dotnet/standard/net-standard#net-5-and-net-standard).
|
||||
|
|
@ -1,522 +0,0 @@
|
|||
using Estara.Core.Contracts.Services;
|
||||
using Estara.Core.Models;
|
||||
|
||||
namespace Estara.Core.Services;
|
||||
|
||||
// This class holds sample data used by some generated pages to show how they can be used.
|
||||
// TODO: The following classes have been created to display sample data. Delete these files once your app is using real data.
|
||||
// 1. Contracts/Services/ISampleDataService.cs
|
||||
// 2. Services/SampleDataService.cs
|
||||
// 3. Models/SampleCompany.cs
|
||||
// 4. Models/SampleOrder.cs
|
||||
// 5. Models/SampleOrderDetail.cs
|
||||
public class SampleDataService : ISampleDataService
|
||||
{
|
||||
private List<SampleOrder> _allOrders;
|
||||
|
||||
public SampleDataService()
|
||||
{
|
||||
}
|
||||
|
||||
private static IEnumerable<SampleOrder> AllOrders()
|
||||
{
|
||||
// The following is order summary data
|
||||
var companies = AllCompanies();
|
||||
return companies.SelectMany(c => c.Orders);
|
||||
}
|
||||
|
||||
private static IEnumerable<SampleCompany> AllCompanies()
|
||||
{
|
||||
return new List<SampleCompany>()
|
||||
{
|
||||
new SampleCompany()
|
||||
{
|
||||
CompanyID = "ALFKI",
|
||||
CompanyName = "Company A",
|
||||
ContactName = "Maria Anders",
|
||||
ContactTitle = "Sales Representative",
|
||||
Address = "Obere Str. 57",
|
||||
City = "Berlin",
|
||||
PostalCode = "12209",
|
||||
Country = "Germany",
|
||||
Phone = "030-0074321",
|
||||
Fax = "030-0076545",
|
||||
Orders = new List<SampleOrder>()
|
||||
{
|
||||
new SampleOrder()
|
||||
{
|
||||
OrderID = 10643, // Symbol Globe
|
||||
OrderDate = new DateTime(1997, 8, 25),
|
||||
RequiredDate = new DateTime(1997, 9, 22),
|
||||
ShippedDate = new DateTime(1997, 9, 22),
|
||||
ShipperName = "Speedy Express",
|
||||
ShipperPhone = "(503) 555-9831",
|
||||
Freight = 29.46,
|
||||
Company = "Company A",
|
||||
ShipTo = "Company A, Obere Str. 57, Berlin, 12209, Germany",
|
||||
OrderTotal = 814.50,
|
||||
Status = "Shipped",
|
||||
SymbolCode = 57643,
|
||||
SymbolName = "Globe",
|
||||
Details = new List<SampleOrderDetail>()
|
||||
{
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 28,
|
||||
ProductName = "Rössle Sauerkraut",
|
||||
Quantity = 15,
|
||||
Discount = 0.25,
|
||||
QuantityPerUnit = "25 - 825 g cans",
|
||||
UnitPrice = 45.60,
|
||||
CategoryName = "Produce",
|
||||
CategoryDescription = "Dried fruit and bean curd",
|
||||
Total = 513.00
|
||||
},
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 39,
|
||||
ProductName = "Chartreuse verte",
|
||||
Quantity = 21,
|
||||
Discount = 0.25,
|
||||
QuantityPerUnit = "750 cc per bottle",
|
||||
UnitPrice = 18.0,
|
||||
CategoryName = "Beverages",
|
||||
CategoryDescription = "Soft drinks, coffees, teas, beers, and ales",
|
||||
Total = 283.50
|
||||
},
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 46,
|
||||
ProductName = "Spegesild",
|
||||
Quantity = 2,
|
||||
Discount = 0.25,
|
||||
QuantityPerUnit = "4 - 450 g glasses",
|
||||
UnitPrice = 12.0,
|
||||
CategoryName = "Seafood",
|
||||
CategoryDescription = "Seaweed and fish",
|
||||
Total = 18.00
|
||||
}
|
||||
}
|
||||
},
|
||||
new SampleOrder()
|
||||
{
|
||||
OrderID = 10835, // Symbol Music
|
||||
OrderDate = new DateTime(1998, 1, 15),
|
||||
RequiredDate = new DateTime(1998, 2, 12),
|
||||
ShippedDate = new DateTime(1998, 1, 21),
|
||||
ShipperName = "Federal Shipping",
|
||||
ShipperPhone = "(503) 555-9931",
|
||||
Freight = 69.53,
|
||||
Company = "Company A",
|
||||
ShipTo = "Company A, Obere Str. 57, Berlin, 12209, Germany",
|
||||
OrderTotal = 845.80,
|
||||
Status = "Closed",
|
||||
SymbolCode = 57737,
|
||||
SymbolName = "Audio",
|
||||
Details = new List<SampleOrderDetail>()
|
||||
{
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 59,
|
||||
ProductName = "Raclette Courdavault",
|
||||
Quantity = 15,
|
||||
Discount = 0,
|
||||
QuantityPerUnit = "5 kg pkg.",
|
||||
UnitPrice = 55.00,
|
||||
CategoryName = "Dairy Products",
|
||||
CategoryDescription = "Cheeses",
|
||||
Total = 825.00
|
||||
},
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 77,
|
||||
ProductName = "Original Frankfurter grüne Soße",
|
||||
Quantity = 2,
|
||||
Discount = 0.2,
|
||||
QuantityPerUnit = "12 boxes",
|
||||
UnitPrice = 13.0,
|
||||
CategoryName = "Condiments",
|
||||
CategoryDescription = "Sweet and savory sauces, relishes, spreads, and seasonings",
|
||||
Total = 20.80
|
||||
}
|
||||
}
|
||||
},
|
||||
new SampleOrder()
|
||||
{
|
||||
OrderID = 10952, // Symbol Calendar
|
||||
OrderDate = new DateTime(1998, 3, 16),
|
||||
RequiredDate = new DateTime(1998, 4, 27),
|
||||
ShippedDate = new DateTime(1998, 3, 24),
|
||||
ShipperName = "Speedy Express",
|
||||
ShipperPhone = "(503) 555-9831",
|
||||
Freight = 40.42,
|
||||
Company = "Company A",
|
||||
ShipTo = "Company A, Obere Str. 57, Berlin, 12209, Germany",
|
||||
OrderTotal = 471.20,
|
||||
Status = "Closed",
|
||||
SymbolCode = 57699,
|
||||
SymbolName = "Calendar",
|
||||
Details = new List<SampleOrderDetail>()
|
||||
{
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 6,
|
||||
ProductName = "Grandma's Boysenberry Spread",
|
||||
Quantity = 16,
|
||||
Discount = 0.05,
|
||||
QuantityPerUnit = "12 - 8 oz jars",
|
||||
UnitPrice = 25.0,
|
||||
CategoryName = "Condiments",
|
||||
CategoryDescription = "Sweet and savory sauces, relishes, spreads, and seasonings",
|
||||
Total = 380.00
|
||||
},
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 28,
|
||||
ProductName = "Rössle Sauerkraut",
|
||||
Quantity = 2,
|
||||
Discount = 0,
|
||||
QuantityPerUnit = "25 - 825 g cans",
|
||||
UnitPrice = 45.60,
|
||||
CategoryName = "Produce",
|
||||
CategoryDescription = "Dried fruit and bean curd",
|
||||
Total = 91.20
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
new SampleCompany()
|
||||
{
|
||||
CompanyID = "ANATR",
|
||||
CompanyName = "Company F",
|
||||
ContactName = "Ana Trujillo",
|
||||
ContactTitle = "Owner",
|
||||
Address = "Avda. de la Constitución 2222",
|
||||
City = "México D.F.",
|
||||
PostalCode = "05021",
|
||||
Country = "Mexico",
|
||||
Phone = "(5) 555-4729",
|
||||
Fax = "(5) 555-3745",
|
||||
Orders = new List<SampleOrder>()
|
||||
{
|
||||
new SampleOrder()
|
||||
{
|
||||
OrderID = 10625, // Symbol Camera
|
||||
OrderDate = new DateTime(1997, 8, 8),
|
||||
RequiredDate = new DateTime(1997, 9, 5),
|
||||
ShippedDate = new DateTime(1997, 8, 14),
|
||||
ShipperName = "Speedy Express",
|
||||
ShipperPhone = "(503) 555-9831",
|
||||
Freight = 43.90,
|
||||
Company = "Company F",
|
||||
ShipTo = "Company F, Avda. de la Constitución 2222, 05021, México D.F., Mexico",
|
||||
OrderTotal = 469.75,
|
||||
Status = "Shipped",
|
||||
SymbolCode = 57620,
|
||||
SymbolName = "Camera",
|
||||
Details = new List<SampleOrderDetail>()
|
||||
{
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 14,
|
||||
ProductName = "Tofu",
|
||||
Quantity = 3,
|
||||
Discount = 0,
|
||||
QuantityPerUnit = "40 - 100 g pkgs.",
|
||||
UnitPrice = 23.25,
|
||||
CategoryName = "Produce",
|
||||
CategoryDescription = "Dried fruit and bean curd",
|
||||
Total = 69.75
|
||||
},
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 42,
|
||||
ProductName = "Singaporean Hokkien Fried Mee",
|
||||
Quantity = 5,
|
||||
Discount = 0,
|
||||
QuantityPerUnit = "32 - 1 kg pkgs.",
|
||||
UnitPrice = 14.0,
|
||||
CategoryName = "Grains/Cereals",
|
||||
CategoryDescription = "Breads, crackers, pasta, and cereal",
|
||||
Total = 70.00
|
||||
},
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 60,
|
||||
ProductName = "Camembert Pierrot",
|
||||
Quantity = 10,
|
||||
Discount = 0,
|
||||
QuantityPerUnit = "15 - 300 g rounds",
|
||||
UnitPrice = 34.00,
|
||||
CategoryName = "Dairy Products",
|
||||
CategoryDescription = "Cheeses",
|
||||
Total = 340.00
|
||||
}
|
||||
}
|
||||
},
|
||||
new SampleOrder()
|
||||
{
|
||||
OrderID = 10926, // Symbol Clock
|
||||
OrderDate = new DateTime(1998, 3, 4),
|
||||
RequiredDate = new DateTime(1998, 4, 1),
|
||||
ShippedDate = new DateTime(1998, 3, 11),
|
||||
ShipperName = "Federal Shipping",
|
||||
ShipperPhone = "(503) 555-9931",
|
||||
Freight = 39.92,
|
||||
Company = "Company F",
|
||||
ShipTo = "Company F, Avda. de la Constitución 2222, 05021, México D.F., Mexico",
|
||||
OrderTotal = 507.20,
|
||||
Status = "Shipped",
|
||||
SymbolCode = 57633,
|
||||
SymbolName = "Clock",
|
||||
Details = new List<SampleOrderDetail>()
|
||||
{
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 11,
|
||||
ProductName = "Queso Cabrales",
|
||||
Quantity = 2,
|
||||
Discount = 0,
|
||||
QuantityPerUnit = "1 kg pkg.",
|
||||
UnitPrice = 21.0,
|
||||
CategoryName = "Dairy Products",
|
||||
CategoryDescription = "Cheeses",
|
||||
Total = 42.00
|
||||
},
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 13,
|
||||
ProductName = "Konbu",
|
||||
Quantity = 10,
|
||||
Discount = 0,
|
||||
QuantityPerUnit = "2 kg box",
|
||||
UnitPrice = 6.0,
|
||||
CategoryName = "Seafood",
|
||||
CategoryDescription = "Seaweed and fish",
|
||||
Total = 60.00
|
||||
},
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 19,
|
||||
ProductName = "Teatime Chocolate Biscuits",
|
||||
Quantity = 7,
|
||||
Discount = 0,
|
||||
QuantityPerUnit = "10 boxes x 12 pieces",
|
||||
UnitPrice = 9.20,
|
||||
CategoryName = "Confections",
|
||||
CategoryDescription = "Desserts, candies, and sweet breads",
|
||||
Total = 64.40
|
||||
},
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 72,
|
||||
ProductName = "Mozzarella di Giovanni",
|
||||
Quantity = 10,
|
||||
Discount = 0,
|
||||
QuantityPerUnit = "24 - 200 g pkgs.",
|
||||
UnitPrice = 34.80,
|
||||
CategoryName = "Dairy Products",
|
||||
CategoryDescription = "Cheeses",
|
||||
Total = 340.80
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
new SampleCompany()
|
||||
{
|
||||
CompanyID = "ANTON",
|
||||
CompanyName = "Company Z",
|
||||
ContactName = "Antonio Moreno",
|
||||
ContactTitle = "Owner",
|
||||
Address = "Mataderos 2312",
|
||||
City = "México D.F.",
|
||||
PostalCode = "05023",
|
||||
Country = "Mexico",
|
||||
Phone = "(5) 555-3932",
|
||||
Fax = string.Empty,
|
||||
Orders = new List<SampleOrder>()
|
||||
{
|
||||
new SampleOrder()
|
||||
{
|
||||
OrderID = 10507, // Symbol Contact
|
||||
OrderDate = new DateTime(1997, 4, 15),
|
||||
RequiredDate = new DateTime(1997, 5, 13),
|
||||
ShippedDate = new DateTime(1997, 4, 22),
|
||||
ShipperName = "Speedy Express",
|
||||
ShipperPhone = "(503) 555-9831",
|
||||
Freight = 47.45,
|
||||
Company = "Company Z",
|
||||
ShipTo = "Company Z, Mataderos 2312, 05023, México D.F., Mexico",
|
||||
OrderTotal = 978.50,
|
||||
Status = "Closed",
|
||||
SymbolCode = 57661,
|
||||
SymbolName = "Contact",
|
||||
Details = new List<SampleOrderDetail>()
|
||||
{
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 43,
|
||||
ProductName = "Ipoh Coffee",
|
||||
Quantity = 15,
|
||||
Discount = 0.15,
|
||||
QuantityPerUnit = "16 - 500 g tins",
|
||||
UnitPrice = 46.0,
|
||||
CategoryName = "Beverages",
|
||||
CategoryDescription = "Soft drinks, coffees, teas, beers, and ales",
|
||||
Total = 816.00
|
||||
},
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 48,
|
||||
ProductName = "Chocolade",
|
||||
Quantity = 15,
|
||||
Discount = 0.15,
|
||||
QuantityPerUnit = "10 pkgs.",
|
||||
UnitPrice = 12.75,
|
||||
CategoryName = "Confections",
|
||||
CategoryDescription = "Desserts, candies, and sweet breads",
|
||||
Total = 162.50
|
||||
}
|
||||
}
|
||||
},
|
||||
new SampleOrder()
|
||||
{
|
||||
OrderID = 10573, // Symbol Star
|
||||
OrderDate = new DateTime(1997, 6, 19),
|
||||
RequiredDate = new DateTime(1997, 7, 17),
|
||||
ShippedDate = new DateTime(1997, 6, 20),
|
||||
ShipperName = "Federal Shipping",
|
||||
ShipperPhone = "(503) 555-9931",
|
||||
Freight = 84.84,
|
||||
Company = "Company Z",
|
||||
ShipTo = "Company Z, Mataderos 2312, 05023, México D.F., Mexico",
|
||||
OrderTotal = 2082.00,
|
||||
Status = "Closed",
|
||||
SymbolCode = 57619,
|
||||
SymbolName = "Favorite",
|
||||
Details = new List<SampleOrderDetail>()
|
||||
{
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 17,
|
||||
ProductName = "Alice Mutton",
|
||||
Quantity = 18,
|
||||
Discount = 0,
|
||||
QuantityPerUnit = "20 - 1 kg tins",
|
||||
UnitPrice = 39.00,
|
||||
CategoryName = "Meat/Poultry",
|
||||
CategoryDescription = "Prepared meats",
|
||||
Total = 702.00
|
||||
},
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 34,
|
||||
ProductName = "Sasquatch Ale",
|
||||
Quantity = 40,
|
||||
Discount = 0,
|
||||
QuantityPerUnit = "24 - 12 oz bottles",
|
||||
UnitPrice = 14.0,
|
||||
CategoryName = "Beverages",
|
||||
CategoryDescription = "Soft drinks, coffees, teas, beers, and ales",
|
||||
Total = 560.00
|
||||
},
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 53,
|
||||
ProductName = "Perth Pasties",
|
||||
Quantity = 25,
|
||||
Discount = 0,
|
||||
QuantityPerUnit = "48 pieces",
|
||||
UnitPrice = 32.80,
|
||||
CategoryName = "Meat/Poultry",
|
||||
CategoryDescription = "Prepared meats",
|
||||
Total = 820.00
|
||||
}
|
||||
}
|
||||
},
|
||||
new SampleOrder()
|
||||
{
|
||||
OrderID = 10682, // Symbol Home
|
||||
OrderDate = new DateTime(1997, 9, 25),
|
||||
RequiredDate = new DateTime(1997, 10, 23),
|
||||
ShippedDate = new DateTime(1997, 10, 1),
|
||||
ShipperName = "United Package",
|
||||
ShipperPhone = "(503) 555-3199",
|
||||
Freight = 36.13,
|
||||
Company = "Company Z",
|
||||
ShipTo = "Company Z, Mataderos 2312, 05023, México D.F., Mexico",
|
||||
OrderTotal = 375.50,
|
||||
Status = "Closed",
|
||||
SymbolCode = 57615,
|
||||
SymbolName = "Home",
|
||||
Details = new List<SampleOrderDetail>()
|
||||
{
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 33,
|
||||
ProductName = "Geitost",
|
||||
Quantity = 30,
|
||||
Discount = 0,
|
||||
QuantityPerUnit = "500 g",
|
||||
UnitPrice = 2.50,
|
||||
CategoryName = "Dairy Products",
|
||||
CategoryDescription = "Cheeses",
|
||||
Total = 75.00
|
||||
},
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 66,
|
||||
ProductName = "Louisiana Hot Spiced Okra",
|
||||
Quantity = 4,
|
||||
Discount = 0,
|
||||
QuantityPerUnit = "24 - 8 oz jars",
|
||||
UnitPrice = 17.00,
|
||||
CategoryName = "Condiments",
|
||||
CategoryDescription = "Sweet and savory sauces, relishes, spreads, and seasonings",
|
||||
Total = 68.00
|
||||
},
|
||||
new SampleOrderDetail()
|
||||
{
|
||||
ProductID = 75,
|
||||
ProductName = "Rhönbräu Klosterbier",
|
||||
Quantity = 30,
|
||||
Discount = 0,
|
||||
QuantityPerUnit = "24 - 0.5 l bottles",
|
||||
UnitPrice = 7.75,
|
||||
CategoryName = "Beverages",
|
||||
CategoryDescription = "Soft drinks, coffees, teas, beers, and ales",
|
||||
Total = 232.50
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<SampleOrder>> GetContentGridDataAsync()
|
||||
{
|
||||
_allOrders ??= new List<SampleOrder>(AllOrders());
|
||||
|
||||
await Task.CompletedTask;
|
||||
return _allOrders;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<SampleOrder>> GetGridDataAsync()
|
||||
{
|
||||
_allOrders ??= new List<SampleOrder>(AllOrders());
|
||||
|
||||
await Task.CompletedTask;
|
||||
return _allOrders;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<SampleOrder>> GetListDetailsDataAsync()
|
||||
{
|
||||
_allOrders ??= new List<SampleOrder>(AllOrders());
|
||||
|
||||
await Task.CompletedTask;
|
||||
return _allOrders;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,157 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>16.0</VCProjectVersion>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectGuid>{e0bc6fde-61da-4acf-bade-332bdb54d1c9}</ProjectGuid>
|
||||
<RootNamespace>EstaraPatcher</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;ESTARAPATCHER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;ESTARAPATCHER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;ESTARAPATCHER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;ESTARAPATCHER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="framework.h" />
|
||||
<ClInclude Include="pch.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="dllmain.cpp" />
|
||||
<ClCompile Include="pch.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="framework.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="pch.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="dllmain.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="pch.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
// dllmain.cpp : Defines the entry point for the DLL application.
|
||||
#include "pch.h"
|
||||
|
||||
BOOL APIENTRY DllMain( HMODULE hModule,
|
||||
DWORD ul_reason_for_call,
|
||||
LPVOID lpReserved
|
||||
)
|
||||
{
|
||||
switch (ul_reason_for_call)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
case DLL_THREAD_ATTACH:
|
||||
// TODO: Add DLL patching code from @orcfoss/Lure.
|
||||
case DLL_THREAD_DETACH:
|
||||
case DLL_PROCESS_DETACH:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
||||
// Windows Header Files
|
||||
#include <windows.h>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
// pch.cpp: source file corresponding to the pre-compiled header
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
// When you are using pre-compiled headers, this source file is necessary for compilation to succeed.
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
// pch.h: This is a precompiled header file.
|
||||
// Files listed below are compiled only once, improving build performance for future builds.
|
||||
// This also affects IntelliSense performance, including code completion and many code browsing features.
|
||||
// However, files listed here are ALL re-compiled if any one of them is updated between builds.
|
||||
// Do not add files here that you will be updating frequently as this negates the performance advantage.
|
||||
|
||||
#ifndef PCH_H
|
||||
#define PCH_H
|
||||
|
||||
// add headers that you want to pre-compile here
|
||||
#include "framework.h"
|
||||
|
||||
#endif //PCH_H
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<Application x:Class="Estara.Tools.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:Estara.Tools"
|
||||
StartupUri="MainWindow.xaml">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
|
||||
namespace Estara.Tools;
|
||||
/// <summary>
|
||||
/// Interaction logic for App.xaml
|
||||
/// </summary>
|
||||
public partial class App : Application
|
||||
{
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
using System.Windows;
|
||||
|
||||
[assembly: ThemeInfo(
|
||||
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
||||
//(used if a resource is not found in the page,
|
||||
// or application resource dictionaries)
|
||||
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
|
||||
//(used if a resource is not found in the page,
|
||||
// app, or any theme specific resource dictionaries)
|
||||
)]
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net7.0-windows</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<UseWPF>true</UseWPF>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Estara.Core\Estara.Core.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<Window x:Class="Estara.Tools.MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:Estara.Tools"
|
||||
mc:Ignorable="d"
|
||||
Title="MainWindow" Height="450" Width="800">
|
||||
<Grid>
|
||||
|
||||
</Grid>
|
||||
</Window>
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace Estara.Tools;
|
||||
/// <summary>
|
||||
/// Interaction logic for MainWindow.xaml
|
||||
/// </summary>
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
// TODO: Add a basic toolset.
|
||||
}
|
||||
36
Estara.sln
36
Estara.sln
|
|
@ -7,6 +7,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Estara", "Estara\Estara.csp
|
|||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Estara.Core", "Estara.Core\Estara.Core.csproj", "{6FC83ED3-8060-4415-9B1C-1B7DA39D8AD4}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Estara.Patcher", "Estara.Patcher\Estara.Patcher.vcxproj", "{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Estara.Tools", "Estara.Tools\Estara.Tools.csproj", "{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
|
@ -59,6 +63,38 @@ Global
|
|||
{6FC83ED3-8060-4415-9B1C-1B7DA39D8AD4}.Release|x64.Build.0 = Release|x64
|
||||
{6FC83ED3-8060-4415-9B1C-1B7DA39D8AD4}.Release|x86.ActiveCfg = Release|x86
|
||||
{6FC83ED3-8060-4415-9B1C-1B7DA39D8AD4}.Release|x86.Build.0 = Release|x86
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Debug|arm64.ActiveCfg = Debug|x64
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Debug|arm64.Build.0 = Debug|x64
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Debug|x64.Build.0 = Debug|x64
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Debug|x86.Build.0 = Debug|Win32
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Release|Any CPU.Build.0 = Release|x64
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Release|arm64.ActiveCfg = Release|x64
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Release|arm64.Build.0 = Release|x64
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Release|x64.ActiveCfg = Release|x64
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Release|x64.Build.0 = Release|x64
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Release|x86.ActiveCfg = Release|Win32
|
||||
{E0BC6FDE-61DA-4ACF-BADE-332BDB54D1C9}.Release|x86.Build.0 = Release|Win32
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Debug|arm64.ActiveCfg = Debug|Any CPU
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Debug|arm64.Build.0 = Debug|Any CPU
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Release|arm64.ActiveCfg = Release|Any CPU
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Release|arm64.Build.0 = Release|Any CPU
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Release|x64.Build.0 = Release|Any CPU
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{AFF88B22-7CB0-4F5B-B707-EFCDAAAA204C}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ public class DefaultActivationHandler : ActivationHandler<LaunchActivatedEventAr
|
|||
|
||||
protected async override Task HandleInternalAsync(LaunchActivatedEventArgs args)
|
||||
{
|
||||
_navigationService.NavigateTo(typeof(MainViewModel).FullName!, args.Arguments);
|
||||
_navigationService.NavigateTo(typeof(PlayViewModel).FullName!, args.Arguments);
|
||||
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,24 +69,29 @@ public partial class App : Application
|
|||
services.AddSingleton<INavigationService, NavigationService>();
|
||||
|
||||
// Core Services
|
||||
services.AddSingleton<ISampleDataService, SampleDataService>();
|
||||
services.AddSingleton<IFileService, FileService>();
|
||||
|
||||
// Views and ViewModels
|
||||
services.AddTransient<SettingsViewModel>();
|
||||
services.AddTransient<SettingsPage>();
|
||||
services.AddTransient<DataGridViewModel>();
|
||||
services.AddTransient<DataGridPage>();
|
||||
services.AddTransient<ContentGridDetailViewModel>();
|
||||
services.AddTransient<ContentGridDetailPage>();
|
||||
services.AddTransient<ContentGridViewModel>();
|
||||
services.AddTransient<ContentGridPage>();
|
||||
services.AddTransient<ListDetailsViewModel>();
|
||||
services.AddTransient<ListDetailsPage>();
|
||||
services.AddTransient<MainViewModel>();
|
||||
services.AddTransient<MainPage>();
|
||||
services.AddTransient<ShellPage>();
|
||||
services.AddTransient<PlayViewModel>();
|
||||
services.AddTransient<PlayPage>();
|
||||
services.AddTransient<PlayViewModel>();
|
||||
services.AddTransient<PlayPage>();
|
||||
services.AddTransient<HostViewModel>();
|
||||
services.AddTransient<HostPage>();
|
||||
services.AddTransient<CharacterViewModel>();
|
||||
services.AddTransient<CharacterPage>();
|
||||
services.AddTransient<VersionsViewModel>();
|
||||
services.AddTransient<VersionsPage>();
|
||||
services.AddTransient<PlacesViewModel>();
|
||||
services.AddTransient<PlacesPage>();
|
||||
services.AddTransient<PackagesViewModel>();
|
||||
services.AddTransient<PackagesPage>();
|
||||
services.AddTransient<BookmarksViewModel>();
|
||||
services.AddTransient<BookmarksPage>();
|
||||
services.AddTransient<ShellViewModel>();
|
||||
services.AddTransient<ShellPage>();
|
||||
|
||||
// Configuration
|
||||
services.Configure<LocalSettingsOptions>(context.Configuration.GetSection(nameof(LocalSettingsOptions)));
|
||||
|
|
|
|||
|
|
@ -25,6 +25,10 @@
|
|||
<AppxBundle>Never</AppxBundle>
|
||||
<AppInstallerUri>https://kiseki.lol/estara</AppInstallerUri>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<None Remove="Views\BookmarksPage.xaml" />
|
||||
<None Remove="Views\CharacterPage.xaml" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Manifest Include="$(ApplicationManifest)" />
|
||||
|
|
@ -48,6 +52,12 @@
|
|||
<None Update="appsettings.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<Page Update="Views\CharacterPage.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Update="Views\BookmarksPage.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(DisableMsixProjectCapabilityAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
|
||||
|
|
|
|||
|
|
@ -1,27 +0,0 @@
|
|||
*Recommended Markdown Viewer: [Markdown Editor](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.MarkdownEditor2)*
|
||||
|
||||
## Getting Started
|
||||
|
||||
Browse and address `TODO:` comments in `View -> Task List` to learn the codebase and understand next steps for turning the generated code into production code.
|
||||
|
||||
Explore the [WinUI Gallery](https://www.microsoft.com/store/productId/9P3JFPWWDZRC) to learn about available controls and design patterns.
|
||||
|
||||
Relaunch Template Studio to modify the project by right-clicking on the project in `View -> Solution Explorer` then selecting `Add -> New Item (Template Studio)`.
|
||||
|
||||
## Publishing
|
||||
|
||||
For projects with MSIX packaging, right-click on the application project and select `Package and Publish -> Create App Packages...` to create an MSIX package.
|
||||
|
||||
For projects without MSIX packaging, follow the [deployment guide](https://docs.microsoft.com/windows/apps/windows-app-sdk/deploy-unpackaged-apps) or add the `Self-Contained` Feature to enable xcopy deployment.
|
||||
|
||||
## CI Pipelines
|
||||
|
||||
See [README.md](https://github.com/microsoft/TemplateStudio/blob/main/docs/WinUI/pipelines/README.md) for guidance on building and testing projects in CI pipelines.
|
||||
|
||||
## Changelog
|
||||
|
||||
See [releases](https://github.com/microsoft/TemplateStudio/releases) and [milestones](https://github.com/microsoft/TemplateStudio/milestones).
|
||||
|
||||
## Feedback
|
||||
|
||||
Bugs and feature requests should be filed at https://aka.ms/templatestudio.
|
||||
|
|
@ -14,11 +14,13 @@ public class PageService : IPageService
|
|||
|
||||
public PageService()
|
||||
{
|
||||
Configure<MainViewModel, MainPage>();
|
||||
Configure<ListDetailsViewModel, ListDetailsPage>();
|
||||
Configure<ContentGridViewModel, ContentGridPage>();
|
||||
Configure<ContentGridDetailViewModel, ContentGridDetailPage>();
|
||||
Configure<DataGridViewModel, DataGridPage>();
|
||||
Configure<PlayViewModel, PlayPage>();
|
||||
Configure<HostViewModel, HostPage>();
|
||||
Configure<CharacterViewModel, CharacterPage>();
|
||||
Configure<VersionsViewModel, VersionsPage>();
|
||||
Configure<PlacesViewModel, PlacesPage>();
|
||||
Configure<PackagesViewModel, PackagesPage>();
|
||||
Configure<BookmarksViewModel, BookmarksPage>();
|
||||
Configure<SettingsViewModel, SettingsPage>();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,64 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
|
|
@ -61,23 +120,32 @@
|
|||
<data name="AppDisplayName" xml:space="preserve">
|
||||
<value>Estara</value>
|
||||
</data>
|
||||
<data name="AppDescription" xml:space="preserve">
|
||||
<value>Estara</value>
|
||||
</data>
|
||||
<data name="AppDescription" xml:space="preserve">
|
||||
<value>Estara</value>
|
||||
</data>
|
||||
<data name="Shell_Main.Content" xml:space="preserve">
|
||||
<value>Main</value>
|
||||
</data>
|
||||
<data name="ListDetails_NoSelection.Text" xml:space="preserve">
|
||||
<value>Select an item from the list.</value>
|
||||
<data name="Shell_Play.Content" xml:space="preserve">
|
||||
<value>Play</value>
|
||||
</data>
|
||||
<data name="Shell_ListDetails.Content" xml:space="preserve">
|
||||
<value>ListDetails</value>
|
||||
<data name="Shell_Host.Content" xml:space="preserve">
|
||||
<value>Host</value>
|
||||
</data>
|
||||
<data name="Shell_ContentGrid.Content" xml:space="preserve">
|
||||
<value>ContentGrid</value>
|
||||
<data name="Shell_Character.Content" xml:space="preserve">
|
||||
<value>Character</value>
|
||||
</data>
|
||||
<data name="Shell_DataGrid.Content" xml:space="preserve">
|
||||
<value>DataGrid</value>
|
||||
<data name="Shell_Versions.Content" xml:space="preserve">
|
||||
<value>Versions</value>
|
||||
</data>
|
||||
<data name="Shell_Places.Content" xml:space="preserve">
|
||||
<value>Places</value>
|
||||
</data>
|
||||
<data name="Shell_Packages.Content" xml:space="preserve">
|
||||
<value>Packages</value>
|
||||
</data>
|
||||
<data name="Shell_Bookmarks.Content" xml:space="preserve">
|
||||
<value>Bookmarks</value>
|
||||
</data>
|
||||
<data name="Settings_Personalization.Text" xml:space="preserve">
|
||||
<value>Personalization</value>
|
||||
|
|
@ -98,13 +166,13 @@
|
|||
<value>About this application</value>
|
||||
</data>
|
||||
<data name="Settings_AboutDescription.Text" xml:space="preserve">
|
||||
<value>TODO: Replace with your app description.</value>
|
||||
<value>A Kiseki experiment</value>
|
||||
</data>
|
||||
<data name="SettingsPage_PrivacyTermsLink.Content" xml:space="preserve">
|
||||
<value>Privacy Statement</value>
|
||||
<data name="SettingsPage_SourceLink.Content" xml:space="preserve">
|
||||
<value>Source</value>
|
||||
</data>
|
||||
<data name="SettingsPage_PrivacyTermsLink.NavigateUri" xml:space="preserve">
|
||||
<value>https://YourPrivacyUrlGoesHere/</value>
|
||||
<data name="SettingsPage_SourceLink.NavigateUri" xml:space="preserve">
|
||||
<value>https://github.com/kiseki-lol/estara</value>
|
||||
</data>
|
||||
<data name="AppNotificationSamplePayload" xml:space="preserve">
|
||||
<value><toast launch="action=ToastClick">
|
||||
|
|
@ -120,4 +188,4 @@
|
|||
</actions>
|
||||
</toast></value>
|
||||
</data>
|
||||
</root>
|
||||
</root>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace Estara.ViewModels;
|
||||
|
||||
public partial class BookmarksViewModel : ObservableRecipient
|
||||
{
|
||||
public BookmarksViewModel()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace Estara.ViewModels;
|
||||
|
||||
public partial class CharacterViewModel : ObservableRecipient
|
||||
{
|
||||
public CharacterViewModel()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
using Estara.Contracts.ViewModels;
|
||||
using Estara.Core.Contracts.Services;
|
||||
using Estara.Core.Models;
|
||||
|
||||
namespace Estara.ViewModels;
|
||||
|
||||
public partial class ContentGridDetailViewModel : ObservableRecipient, INavigationAware
|
||||
{
|
||||
private readonly ISampleDataService _sampleDataService;
|
||||
|
||||
[ObservableProperty]
|
||||
private SampleOrder? item;
|
||||
|
||||
public ContentGridDetailViewModel(ISampleDataService sampleDataService)
|
||||
{
|
||||
_sampleDataService = sampleDataService;
|
||||
}
|
||||
|
||||
public async void OnNavigatedTo(object parameter)
|
||||
{
|
||||
if (parameter is long orderID)
|
||||
{
|
||||
var data = await _sampleDataService.GetContentGridDataAsync();
|
||||
Item = data.First(i => i.OrderID == orderID);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnNavigatedFrom()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
using System.Collections.ObjectModel;
|
||||
using System.Windows.Input;
|
||||
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
|
||||
using Estara.Contracts.Services;
|
||||
using Estara.Contracts.ViewModels;
|
||||
using Estara.Core.Contracts.Services;
|
||||
using Estara.Core.Models;
|
||||
|
||||
namespace Estara.ViewModels;
|
||||
|
||||
public partial class ContentGridViewModel : ObservableRecipient, INavigationAware
|
||||
{
|
||||
private readonly INavigationService _navigationService;
|
||||
private readonly ISampleDataService _sampleDataService;
|
||||
|
||||
public ObservableCollection<SampleOrder> Source { get; } = new ObservableCollection<SampleOrder>();
|
||||
|
||||
public ContentGridViewModel(INavigationService navigationService, ISampleDataService sampleDataService)
|
||||
{
|
||||
_navigationService = navigationService;
|
||||
_sampleDataService = sampleDataService;
|
||||
}
|
||||
|
||||
public async void OnNavigatedTo(object parameter)
|
||||
{
|
||||
Source.Clear();
|
||||
|
||||
// TODO: Replace with real data.
|
||||
var data = await _sampleDataService.GetContentGridDataAsync();
|
||||
foreach (var item in data)
|
||||
{
|
||||
Source.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnNavigatedFrom()
|
||||
{
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
private void OnItemClick(SampleOrder? clickedItem)
|
||||
{
|
||||
if (clickedItem != null)
|
||||
{
|
||||
_navigationService.SetListDataItemForNextConnectedAnimation(clickedItem);
|
||||
_navigationService.NavigateTo(typeof(ContentGridDetailViewModel).FullName!, clickedItem.OrderID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
using System.Collections.ObjectModel;
|
||||
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
using Estara.Contracts.ViewModels;
|
||||
using Estara.Core.Contracts.Services;
|
||||
using Estara.Core.Models;
|
||||
|
||||
namespace Estara.ViewModels;
|
||||
|
||||
public partial class DataGridViewModel : ObservableRecipient, INavigationAware
|
||||
{
|
||||
private readonly ISampleDataService _sampleDataService;
|
||||
|
||||
public ObservableCollection<SampleOrder> Source { get; } = new ObservableCollection<SampleOrder>();
|
||||
|
||||
public DataGridViewModel(ISampleDataService sampleDataService)
|
||||
{
|
||||
_sampleDataService = sampleDataService;
|
||||
}
|
||||
|
||||
public async void OnNavigatedTo(object parameter)
|
||||
{
|
||||
Source.Clear();
|
||||
|
||||
// TODO: Replace with real data.
|
||||
var data = await _sampleDataService.GetGridDataAsync();
|
||||
|
||||
foreach (var item in data)
|
||||
{
|
||||
Source.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnNavigatedFrom()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace Estara.ViewModels;
|
||||
|
||||
public partial class HostViewModel : ObservableRecipient
|
||||
{
|
||||
public HostViewModel()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
using System.Collections.ObjectModel;
|
||||
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
using Estara.Contracts.ViewModels;
|
||||
using Estara.Core.Contracts.Services;
|
||||
using Estara.Core.Models;
|
||||
|
||||
namespace Estara.ViewModels;
|
||||
|
||||
public partial class ListDetailsViewModel : ObservableRecipient, INavigationAware
|
||||
{
|
||||
private readonly ISampleDataService _sampleDataService;
|
||||
|
||||
[ObservableProperty]
|
||||
private SampleOrder? selected;
|
||||
|
||||
public ObservableCollection<SampleOrder> SampleItems { get; private set; } = new ObservableCollection<SampleOrder>();
|
||||
|
||||
public ListDetailsViewModel(ISampleDataService sampleDataService)
|
||||
{
|
||||
_sampleDataService = sampleDataService;
|
||||
}
|
||||
|
||||
public async void OnNavigatedTo(object parameter)
|
||||
{
|
||||
SampleItems.Clear();
|
||||
|
||||
// TODO: Replace with real data.
|
||||
var data = await _sampleDataService.GetListDetailsDataAsync();
|
||||
|
||||
foreach (var item in data)
|
||||
{
|
||||
SampleItems.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnNavigatedFrom()
|
||||
{
|
||||
}
|
||||
|
||||
public void EnsureItemSelected()
|
||||
{
|
||||
Selected ??= SampleItems.First();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace Estara.ViewModels;
|
||||
|
||||
public partial class MainViewModel : ObservableRecipient
|
||||
{
|
||||
public MainViewModel()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace Estara.ViewModels;
|
||||
|
||||
public partial class PackagesViewModel : ObservableRecipient
|
||||
{
|
||||
public PackagesViewModel()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace Estara.ViewModels;
|
||||
|
||||
public partial class PlacesViewModel : ObservableRecipient
|
||||
{
|
||||
public PlacesViewModel()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace Estara.ViewModels;
|
||||
|
||||
public partial class PlayViewModel : ObservableRecipient
|
||||
{
|
||||
public PlayViewModel()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace Estara.ViewModels;
|
||||
|
||||
public partial class VersionsViewModel : ObservableRecipient
|
||||
{
|
||||
public VersionsViewModel()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<Page
|
||||
x:Class="Estara.Views.MainPage"
|
||||
x:Class="Estara.Views.BookmarksPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
|
|
@ -7,6 +7,6 @@
|
|||
mc:Ignorable="d">
|
||||
|
||||
<Grid x:Name="ContentArea">
|
||||
|
||||
|
||||
</Grid>
|
||||
</Page>
|
||||
</Page>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
using Estara.ViewModels;
|
||||
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
|
||||
namespace Estara.Views;
|
||||
|
||||
public sealed partial class BookmarksPage : Page
|
||||
{
|
||||
public BookmarksViewModel ViewModel
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public BookmarksPage()
|
||||
{
|
||||
ViewModel = App.GetService<BookmarksViewModel>();
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<Page
|
||||
x:Class="Estara.Views.CharacterPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<Grid x:Name="ContentArea">
|
||||
|
||||
</Grid>
|
||||
</Page>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
using Estara.ViewModels;
|
||||
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
|
||||
namespace Estara.Views;
|
||||
|
||||
public sealed partial class CharacterPage : Page
|
||||
{
|
||||
public CharacterViewModel ViewModel
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public CharacterPage()
|
||||
{
|
||||
ViewModel = App.GetService<CharacterViewModel>();
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
<Page
|
||||
x:Class="Estara.Views.ContentGridDetailPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:controls="using:CommunityToolkit.WinUI.UI.Controls"
|
||||
xmlns:models="using:Estara.Core.Models"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<Grid x:Name="ContentArea">
|
||||
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup>
|
||||
<VisualState>
|
||||
<VisualState.StateTriggers>
|
||||
<!--641 is the default CompactModeThresholdWidth in NavigationView -->
|
||||
<AdaptiveTrigger MinWindowWidth="641" />
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="propertiesGroup1.(RelativePanel.RightOf)" Value="itemHero" />
|
||||
<Setter Target="propertiesGroup1.(RelativePanel.Below)" Value="title" />
|
||||
<Setter Target="propertiesGroup2.(RelativePanel.RightOf)" Value="propertiesGroup1" />
|
||||
<Setter Target="propertiesGroup2.(RelativePanel.Below)" Value="title" />
|
||||
<Setter Target="propertiesGroup1.Width" Value="200" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
|
||||
<ScrollViewer
|
||||
IsTabStop="True">
|
||||
<StackPanel
|
||||
x:Name="contentPanel">
|
||||
<RelativePanel>
|
||||
<Grid
|
||||
x:Name="itemHero"
|
||||
Width="200"
|
||||
Height="200"
|
||||
Margin="{StaticResource SmallRightMargin}"
|
||||
Padding="{StaticResource XSmallLeftTopRightBottomMargin}"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Top"
|
||||
RelativePanel.AlignTopWithPanel="True"
|
||||
RelativePanel.AlignLeftWithPanel="True">
|
||||
<FontIcon
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="70"
|
||||
Glyph="{x:Bind ViewModel.Item.Symbol}"
|
||||
AutomationProperties.Name="{x:Bind ViewModel.Item.SymbolName}" />
|
||||
</Grid>
|
||||
|
||||
<TextBlock
|
||||
x:Name="title"
|
||||
Margin="{StaticResource XXSmallTopMargin}"
|
||||
RelativePanel.AlignTopWithPanel="True"
|
||||
RelativePanel.RightOf="itemHero"
|
||||
Style="{ThemeResource TitleTextBlockStyle}"
|
||||
Text="{x:Bind ViewModel.Item.Company, Mode=OneWay}" />
|
||||
|
||||
<StackPanel x:Name="propertiesGroup1" RelativePanel.Below="itemHero">
|
||||
<StackPanel x:Name="statusGroup" Margin="{StaticResource SmallTopMargin}">
|
||||
<TextBlock Style="{ThemeResource SubtitleTextBlockStyle}" Text="Status" />
|
||||
<TextBlock Style="{ThemeResource BodyTextBlockStyle}" Text="{x:Bind ViewModel.Item.Status}" />
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel x:Name="orderDateGroup" Margin="{StaticResource SmallTopMargin}">
|
||||
<TextBlock Style="{ThemeResource SubtitleTextBlockStyle}" Text="Order date" />
|
||||
<TextBlock Style="{ThemeResource BodyTextBlockStyle}" Text="{x:Bind ViewModel.Item.OrderDate}" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel x:Name="propertiesGroup2" RelativePanel.Below="propertiesGroup1">
|
||||
<StackPanel x:Name="shipToGroup" Margin="{StaticResource SmallTopMargin}">
|
||||
<TextBlock Style="{ThemeResource SubtitleTextBlockStyle}" Text="Ship to" />
|
||||
<TextBlock Style="{ThemeResource BodyTextBlockStyle}" Text="{x:Bind ViewModel.Item.ShipTo}" />
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel x:Name="orderTotalGroup" Margin="{StaticResource SmallTopMargin}">
|
||||
<TextBlock Style="{ThemeResource SubtitleTextBlockStyle}" Text="Order total" />
|
||||
<TextBlock Style="{ThemeResource BodyTextBlockStyle}" Text="{x:Bind ViewModel.Item.OrderTotal}" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
</RelativePanel>
|
||||
|
||||
<TextBlock
|
||||
Margin="{StaticResource SmallTopMargin}"
|
||||
Style="{ThemeResource SubtitleTextBlockStyle}"
|
||||
Text="Note 1" />
|
||||
<TextBlock
|
||||
Style="{ThemeResource BodyTextBlockStyle}"
|
||||
Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis quis hendrerit nulla, vel molestie libero. In nec ultricies magna, ultricies molestie ipsum. Mauris non dignissim velit. Etiam malesuada blandit mauris eu maximus. Quisque ornare, felis nec scelerisque mollis, risus dolor posuere magna, in gravida quam mi id nisi. Nullam mattis consequat ex. Cras nulla neque, dictum ac urna et, vestibulum feugiat ex. Pellentesque malesuada accumsan ligula, vel fringilla lacus facilisis sit amet. Proin convallis tempor arcu, ac placerat libero pretium ut. Praesent hendrerit nisl at lobortis viverra. Fusce vitae velit odio. Nam ut tortor sed purus finibus sollicitudin quis at ante. Ut sodales dolor vel eros mollis suscipit. Donec eu nulla id urna ultricies consequat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;" />
|
||||
|
||||
<TextBlock
|
||||
Margin="{StaticResource SmallTopMargin}"
|
||||
Style="{ThemeResource SubtitleTextBlockStyle}"
|
||||
Text="Note 2" />
|
||||
<TextBlock
|
||||
Margin="{StaticResource MediumBottomMargin}"
|
||||
Style="{ThemeResource BodyTextBlockStyle}"
|
||||
Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis quis hendrerit nulla, vel molestie libero. In nec ultricies magna, ultricies molestie ipsum. Mauris non dignissim velit. Etiam malesuada blandit mauris eu maximus. Quisque ornare, felis nec scelerisque mollis, risus dolor posuere magna, in gravida quam mi id nisi. Nullam mattis consequat ex. Cras nulla neque, dictum ac urna et, vestibulum feugiat ex. Pellentesque malesuada accumsan ligula, vel fringilla lacus facilisis sit amet. Proin convallis tempor arcu, ac placerat libero pretium ut. Praesent hendrerit nisl at lobortis viverra. Fusce vitae velit odio. Nam ut tortor sed purus finibus sollicitudin quis at ante. Ut sodales dolor vel eros mollis suscipit. Donec eu nulla id urna ultricies consequat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;" />
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
</Page>
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
using CommunityToolkit.WinUI.UI.Animations;
|
||||
|
||||
using Estara.Contracts.Services;
|
||||
using Estara.ViewModels;
|
||||
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Microsoft.UI.Xaml.Navigation;
|
||||
|
||||
namespace Estara.Views;
|
||||
|
||||
public sealed partial class ContentGridDetailPage : Page
|
||||
{
|
||||
public ContentGridDetailViewModel ViewModel
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public ContentGridDetailPage()
|
||||
{
|
||||
ViewModel = App.GetService<ContentGridDetailViewModel>();
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
protected override void OnNavigatedTo(NavigationEventArgs e)
|
||||
{
|
||||
base.OnNavigatedTo(e);
|
||||
this.RegisterElementForConnectedAnimation("animationKeyContentGrid", itemHero);
|
||||
}
|
||||
|
||||
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
|
||||
{
|
||||
base.OnNavigatingFrom(e);
|
||||
if (e.NavigationMode == NavigationMode.Back)
|
||||
{
|
||||
var navigationService = App.GetService<INavigationService>();
|
||||
|
||||
if (ViewModel.Item != null)
|
||||
{
|
||||
navigationService.SetListDataItemForNextConnectedAnimation(ViewModel.Item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
<Page
|
||||
x:Class="Estara.Views.ContentGridPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:animations="using:CommunityToolkit.WinUI.UI.Animations"
|
||||
xmlns:controls="using:CommunityToolkit.WinUI.UI.Controls"
|
||||
xmlns:models="using:Estara.Core.Models"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<Grid x:Name="ContentArea">
|
||||
<controls:AdaptiveGridView
|
||||
animations:Connected.ListItemElementName="itemThumbnail"
|
||||
animations:Connected.ListItemKey="animationKeyContentGrid"
|
||||
DesiredWidth="180"
|
||||
ItemHeight="160"
|
||||
IsItemClickEnabled="True"
|
||||
ItemClickCommand="{x:Bind ViewModel.ItemClickCommand}"
|
||||
ItemsSource="{x:Bind ViewModel.Source,Mode=OneWay}"
|
||||
SelectionMode="None"
|
||||
StretchContentForSingleRow="False">
|
||||
<controls:AdaptiveGridView.ItemTemplate>
|
||||
<DataTemplate x:DataType="models:SampleOrder">
|
||||
<Grid
|
||||
x:Name="itemThumbnail"
|
||||
Padding="{StaticResource XSmallLeftTopRightBottomMargin}">
|
||||
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
|
||||
<FontIcon
|
||||
Glyph="{x:Bind Symbol}"
|
||||
AutomationProperties.Name="{x:Bind SymbolName}" />
|
||||
<TextBlock
|
||||
Margin="{StaticResource XXSmallTopMargin}"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{ThemeResource BodyTextStyle}"
|
||||
Text="{x:Bind Company}" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</controls:AdaptiveGridView.ItemTemplate>
|
||||
</controls:AdaptiveGridView>
|
||||
</Grid>
|
||||
</Page>
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
using Estara.ViewModels;
|
||||
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
|
||||
namespace Estara.Views;
|
||||
|
||||
public sealed partial class ContentGridPage : Page
|
||||
{
|
||||
public ContentGridViewModel ViewModel
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public ContentGridPage()
|
||||
{
|
||||
ViewModel = App.GetService<ContentGridViewModel>();
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
<Page
|
||||
x:Class="Estara.Views.DataGridPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:controls="using:CommunityToolkit.WinUI.UI.Controls"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<Grid x:Name="ContentArea">
|
||||
<controls:DataGrid
|
||||
AutoGenerateColumns="False"
|
||||
GridLinesVisibility="Horizontal"
|
||||
ItemsSource="{x:Bind ViewModel.Source, Mode=OneWay}">
|
||||
<controls:DataGrid.Resources>
|
||||
<SolidColorBrush x:Key="DataGridColumnHeaderBackgroundColor" Color="Transparent" />
|
||||
</controls:DataGrid.Resources>
|
||||
<controls:DataGrid.Columns>
|
||||
<!-- TODO: Replace column definitions to match real data. Consider adding Header values to Resources.resw. -->
|
||||
<controls:DataGridTextColumn Binding="{Binding OrderID}" Header="OrderID" />
|
||||
<controls:DataGridTextColumn Binding="{Binding OrderDate}" Header="OrderDate" />
|
||||
<controls:DataGridTextColumn Binding="{Binding Company}" Header="Company" />
|
||||
<controls:DataGridTextColumn Binding="{Binding ShipTo}" Header="ShipTo" />
|
||||
<controls:DataGridTextColumn Binding="{Binding OrderTotal}" Header="OrderTotal" />
|
||||
<controls:DataGridTextColumn Binding="{Binding Status}" Header="Status" />
|
||||
<controls:DataGridTemplateColumn Header="Symbol">
|
||||
<controls:DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<FontIcon
|
||||
HorizontalAlignment="Left"
|
||||
FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
Glyph="{Binding Symbol}"
|
||||
AutomationProperties.Name="{Binding SymbolName}" />
|
||||
</DataTemplate>
|
||||
</controls:DataGridTemplateColumn.CellTemplate>
|
||||
</controls:DataGridTemplateColumn>
|
||||
</controls:DataGrid.Columns>
|
||||
</controls:DataGrid>
|
||||
</Grid>
|
||||
</Page>
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
using Estara.ViewModels;
|
||||
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
|
||||
namespace Estara.Views;
|
||||
|
||||
// TODO: Change the grid as appropriate for your app. Adjust the column definitions on DataGridPage.xaml.
|
||||
// For more details, see the documentation at https://docs.microsoft.com/windows/communitytoolkit/controls/datagrid.
|
||||
public sealed partial class DataGridPage : Page
|
||||
{
|
||||
public DataGridViewModel ViewModel
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public DataGridPage()
|
||||
{
|
||||
ViewModel = App.GetService<DataGridViewModel>();
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<Page
|
||||
x:Class="Estara.Views.HostPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<Grid x:Name="ContentArea">
|
||||
|
||||
</Grid>
|
||||
</Page>
|
||||
|
|
@ -4,16 +4,16 @@ using Microsoft.UI.Xaml.Controls;
|
|||
|
||||
namespace Estara.Views;
|
||||
|
||||
public sealed partial class MainPage : Page
|
||||
public sealed partial class HostPage : Page
|
||||
{
|
||||
public MainViewModel ViewModel
|
||||
public HostViewModel ViewModel
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public MainPage()
|
||||
public HostPage()
|
||||
{
|
||||
ViewModel = App.GetService<MainViewModel>();
|
||||
ViewModel = App.GetService<HostViewModel>();
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
<UserControl
|
||||
x:Class="Estara.Views.ListDetailsDetailControl"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d">
|
||||
<ScrollViewer
|
||||
Name="ForegroundElement"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalScrollMode="Enabled"
|
||||
IsTabStop="True">
|
||||
<StackPanel HorizontalAlignment="Left">
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
|
||||
<FontIcon
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="48"
|
||||
Glyph="{x:Bind ListDetailsMenuItem.Symbol, Mode=OneWay}"
|
||||
AutomationProperties.Name="{x:Bind ListDetailsMenuItem.SymbolName, Mode=OneWay}" />
|
||||
<TextBlock
|
||||
Margin="{StaticResource SmallLeftMargin}"
|
||||
VerticalAlignment="Center"
|
||||
Text="{x:Bind ListDetailsMenuItem.Company, Mode=OneWay}"
|
||||
Style="{ThemeResource TitleTextBlockStyle}" />
|
||||
</StackPanel>
|
||||
<StackPanel Padding="0,15,0,0">
|
||||
<TextBlock Text="Status" Style="{StaticResource DetailSubTitleStyle}" />
|
||||
|
||||
<TextBlock Text="{x:Bind ListDetailsMenuItem.Status, Mode=OneWay}" Style="{StaticResource DetailBodyBaseMediumStyle}" />
|
||||
|
||||
<TextBlock
|
||||
Margin="{StaticResource SmallTopMargin}"
|
||||
Text="Order date"
|
||||
Style="{StaticResource DetailSubTitleStyle}" />
|
||||
<TextBlock Text="{x:Bind ListDetailsMenuItem.OrderDate, Mode=OneWay}" Style="{StaticResource DetailBodyBaseMediumStyle}" />
|
||||
<TextBlock
|
||||
Margin="{StaticResource SmallTopMargin}"
|
||||
Text="Company"
|
||||
Style="{StaticResource DetailSubTitleStyle}" />
|
||||
<TextBlock Text="{x:Bind ListDetailsMenuItem.Company, Mode=OneWay}" Style="{StaticResource DetailBodyBaseMediumStyle}" />
|
||||
|
||||
<TextBlock
|
||||
Margin="{StaticResource SmallTopMargin}"
|
||||
Text="Ship to"
|
||||
Style="{StaticResource DetailSubTitleStyle}" />
|
||||
<TextBlock Text="{x:Bind ListDetailsMenuItem.ShipTo, Mode=OneWay}" Style="{StaticResource DetailBodyBaseMediumStyle}" />
|
||||
<TextBlock
|
||||
Margin="{StaticResource SmallTopMargin}"
|
||||
Text="Order total"
|
||||
Style="{StaticResource DetailSubTitleStyle}" />
|
||||
<TextBlock Text="{x:Bind ListDetailsMenuItem.OrderTotal, Mode=OneWay}" Style="{StaticResource DetailBodyBaseMediumStyle}" />
|
||||
|
||||
<TextBlock
|
||||
Margin="{StaticResource MediumTopMargin}"
|
||||
Text="Note 1"
|
||||
Style="{StaticResource DetailSubTitleStyle}" />
|
||||
<TextBlock
|
||||
Style="{StaticResource DetailBodyStyle}"
|
||||
Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis quis hendrerit nulla, vel molestie libero. In nec ultricies magna, ultricies molestie ipsum. Mauris non dignissim velit. Etiam malesuada blandit mauris eu maximus. Quisque ornare, felis nec scelerisque mollis, risus dolor posuere magna, in gravida quam mi id nisi. Nullam mattis consequat ex. Cras nulla neque, dictum ac urna et, vestibulum feugiat ex. Pellentesque malesuada accumsan ligula, vel fringilla lacus facilisis sit amet. Proin convallis tempor arcu, ac placerat libero pretium ut. Praesent hendrerit nisl at lobortis viverra. Fusce vitae velit odio. Nam ut tortor sed purus finibus sollicitudin quis at ante. Ut sodales dolor vel eros mollis suscipit. Donec eu nulla id urna ultricies consequat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;" />
|
||||
|
||||
<TextBlock
|
||||
Margin="{StaticResource SmallTopMargin}"
|
||||
Text="Note 2"
|
||||
Style="{StaticResource DetailSubTitleStyle}" />
|
||||
<TextBlock
|
||||
Margin="{StaticResource MediumBottomMargin}"
|
||||
Style="{StaticResource DetailBodyStyle}"
|
||||
Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis quis hendrerit nulla, vel molestie libero. In nec ultricies magna, ultricies molestie ipsum. Mauris non dignissim velit. Etiam malesuada blandit mauris eu maximus. Quisque ornare, felis nec scelerisque mollis, risus dolor posuere magna, in gravida quam mi id nisi. Nullam mattis consequat ex. Cras nulla neque, dictum ac urna et, vestibulum feugiat ex. Pellentesque malesuada accumsan ligula, vel fringilla lacus facilisis sit amet. Proin convallis tempor arcu, ac placerat libero pretium ut. Praesent hendrerit nisl at lobortis viverra. Fusce vitae velit odio. Nam ut tortor sed purus finibus sollicitudin quis at ante. Ut sodales dolor vel eros mollis suscipit. Donec eu nulla id urna ultricies consequat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</UserControl>
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
using Estara.Core.Models;
|
||||
|
||||
using Microsoft.UI.Xaml;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
|
||||
namespace Estara.Views;
|
||||
|
||||
public sealed partial class ListDetailsDetailControl : UserControl
|
||||
{
|
||||
public SampleOrder? ListDetailsMenuItem
|
||||
{
|
||||
get => GetValue(ListDetailsMenuItemProperty) as SampleOrder;
|
||||
set => SetValue(ListDetailsMenuItemProperty, value);
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty ListDetailsMenuItemProperty = DependencyProperty.Register("ListDetailsMenuItem", typeof(SampleOrder), typeof(ListDetailsDetailControl), new PropertyMetadata(null, OnListDetailsMenuItemPropertyChanged));
|
||||
|
||||
public ListDetailsDetailControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private static void OnListDetailsMenuItemPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
if (d is ListDetailsDetailControl control)
|
||||
{
|
||||
control.ForegroundElement.ChangeView(0, 0, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,100 +0,0 @@
|
|||
<Page
|
||||
x:Class="Estara.Views.ListDetailsPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:controls="using:CommunityToolkit.WinUI.UI.Controls"
|
||||
xmlns:models="using:Estara.Core.Models"
|
||||
xmlns:views="using:Estara.Views"
|
||||
xmlns:behaviors="using:Estara.Behaviors"
|
||||
behaviors:NavigationViewHeaderBehavior.HeaderMode="Never"
|
||||
mc:Ignorable="d">
|
||||
<Page.Resources>
|
||||
<DataTemplate x:Key="ItemTemplate" x:DataType="models:SampleOrder">
|
||||
<Grid Height="60">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<FontIcon
|
||||
Grid.Column="0"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="32"
|
||||
Glyph="{x:Bind Symbol}"
|
||||
AutomationProperties.Name="{x:Bind SymbolName}" />
|
||||
<StackPanel
|
||||
Grid.Column="1"
|
||||
Margin="{StaticResource SmallLeftMargin}"
|
||||
VerticalAlignment="Center">
|
||||
<TextBlock Text="{x:Bind Company}" Style="{StaticResource ListTitleStyle}" />
|
||||
<TextBlock Text="{x:Bind Status}" Style="{StaticResource ListSubTitleStyle}" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
|
||||
<DataTemplate x:Key="DetailsTemplate">
|
||||
<Grid>
|
||||
<views:ListDetailsDetailControl ListDetailsMenuItem="{Binding}" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
|
||||
<DataTemplate x:Key="NoSelectionContentTemplate">
|
||||
<Grid>
|
||||
<TextBlock
|
||||
x:Uid="ListDetails_NoSelection"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
TextAlignment="Center"
|
||||
Style="{ThemeResource SubtitleTextBlockStyle}" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
|
||||
<DataTemplate x:Key="ListHeaderTemplate">
|
||||
<Grid Height="40">
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ListTitleStyle}"
|
||||
Text="{Binding}" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
<DataTemplate x:Key="MinimalListHeaderTemplate">
|
||||
<Grid Height="40">
|
||||
<TextBlock
|
||||
Margin="96,0,0,0"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ListTitleStyle}"
|
||||
Text="{Binding}" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</Page.Resources>
|
||||
|
||||
<Grid x:Name="ContentArea">
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup>
|
||||
<VisualState>
|
||||
<VisualState.StateTriggers>
|
||||
<!--641 is the default CompactModeThresholdWidth in NavigationView -->
|
||||
<AdaptiveTrigger MinWindowWidth="641" />
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ListDetailsViewControl.ListHeaderTemplate" Value="{StaticResource ListHeaderTemplate}" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
<controls:ListDetailsView
|
||||
x:Uid="ListDetails"
|
||||
x:Name="ListDetailsViewControl"
|
||||
BackButtonBehavior="Manual"
|
||||
Background="Transparent"
|
||||
BorderBrush="Transparent"
|
||||
DetailsTemplate="{StaticResource DetailsTemplate}"
|
||||
ItemsSource="{x:Bind ViewModel.SampleItems}"
|
||||
ItemTemplate="{StaticResource ItemTemplate}"
|
||||
ListHeaderTemplate="{StaticResource MinimalListHeaderTemplate}"
|
||||
NoSelectionContentTemplate="{StaticResource NoSelectionContentTemplate}"
|
||||
SelectedItem="{x:Bind ViewModel.Selected, Mode=TwoWay}"
|
||||
ViewStateChanged="OnViewStateChanged"/>
|
||||
</Grid>
|
||||
</Page>
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
using CommunityToolkit.WinUI.UI.Controls;
|
||||
|
||||
using Estara.ViewModels;
|
||||
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
|
||||
namespace Estara.Views;
|
||||
|
||||
public sealed partial class ListDetailsPage : Page
|
||||
{
|
||||
public ListDetailsViewModel ViewModel
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public ListDetailsPage()
|
||||
{
|
||||
ViewModel = App.GetService<ListDetailsViewModel>();
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void OnViewStateChanged(object sender, ListDetailsViewState e)
|
||||
{
|
||||
if (e == ListDetailsViewState.Both)
|
||||
{
|
||||
ViewModel.EnsureItemSelected();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<Page
|
||||
x:Class="Estara.Views.PackagesPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<Grid x:Name="ContentArea">
|
||||
|
||||
</Grid>
|
||||
</Page>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
using Estara.ViewModels;
|
||||
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
|
||||
namespace Estara.Views;
|
||||
|
||||
public sealed partial class PackagesPage : Page
|
||||
{
|
||||
public PackagesViewModel ViewModel
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public PackagesPage()
|
||||
{
|
||||
ViewModel = App.GetService<PackagesViewModel>();
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<Page
|
||||
x:Class="Estara.Views.PlacesPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<Grid x:Name="ContentArea">
|
||||
|
||||
</Grid>
|
||||
</Page>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
using Estara.ViewModels;
|
||||
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
|
||||
namespace Estara.Views;
|
||||
|
||||
public sealed partial class PlacesPage : Page
|
||||
{
|
||||
public PlacesViewModel ViewModel
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public PlacesPage()
|
||||
{
|
||||
ViewModel = App.GetService<PlacesViewModel>();
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<Page
|
||||
x:Class="Estara.Views.PlayPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<Grid x:Name="ContentArea">
|
||||
|
||||
</Grid>
|
||||
</Page>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
using Estara.ViewModels;
|
||||
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
|
||||
namespace Estara.Views;
|
||||
|
||||
public sealed partial class PlayPage : Page
|
||||
{
|
||||
public PlayViewModel ViewModel
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public PlayPage()
|
||||
{
|
||||
ViewModel = App.GetService<PlayViewModel>();
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
|
|
@ -60,7 +60,7 @@
|
|||
x:Uid="Settings_AboutDescription"
|
||||
Margin="{StaticResource XSmallTopMargin}"
|
||||
Style="{ThemeResource BodyTextBlockStyle}" />
|
||||
<HyperlinkButton x:Uid="SettingsPage_PrivacyTermsLink" Margin="{StaticResource SettingsPageHyperlinkButtonMargin}" />
|
||||
<HyperlinkButton x:Uid="SettingsPage_SourceLink" Margin="{StaticResource SettingsPageHyperlinkButtonMargin}" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ using Microsoft.UI.Xaml.Controls;
|
|||
|
||||
namespace Estara.Views;
|
||||
|
||||
// TODO: Set the URL for your privacy policy by updating SettingsPage_PrivacyTermsLink.NavigateUri in Resources.resw.
|
||||
public sealed partial class SettingsPage : Page
|
||||
{
|
||||
public SettingsViewModel ViewModel
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
<NavigationView
|
||||
x:Name="NavigationViewControl"
|
||||
Canvas.ZIndex="0"
|
||||
IsBackButtonVisible="Visible"
|
||||
IsBackButtonVisible="Collapsed"
|
||||
IsBackEnabled="{x:Bind ViewModel.IsBackEnabled, Mode=OneWay}"
|
||||
SelectedItem="{x:Bind ViewModel.Selected, Mode=OneWay}"
|
||||
IsSettingsVisible="True"
|
||||
|
|
@ -43,24 +43,39 @@
|
|||
TODO: Update item icons by updating FontIcon.Glyph properties.
|
||||
https://docs.microsoft.com/windows/apps/design/style/segoe-fluent-icons-font#icon-list
|
||||
-->
|
||||
<NavigationViewItem x:Uid="Shell_Main" helpers:NavigationHelper.NavigateTo="Estara.ViewModels.MainViewModel">
|
||||
<NavigationViewItem x:Uid="Shell_Play" helpers:NavigationHelper.NavigateTo="Estara.ViewModels.PlayViewModel">
|
||||
<NavigationViewItem.Icon>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph=""/>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph=""/>
|
||||
</NavigationViewItem.Icon>
|
||||
</NavigationViewItem>
|
||||
<NavigationViewItem x:Uid="Shell_ListDetails" helpers:NavigationHelper.NavigateTo="Estara.ViewModels.ListDetailsViewModel">
|
||||
<NavigationViewItem x:Uid="Shell_Host" helpers:NavigationHelper.NavigateTo="Estara.ViewModels.HostViewModel">
|
||||
<NavigationViewItem.Icon>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph=""/>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph=""/>
|
||||
</NavigationViewItem.Icon>
|
||||
</NavigationViewItem>
|
||||
<NavigationViewItem x:Uid="Shell_ContentGrid" helpers:NavigationHelper.NavigateTo="Estara.ViewModels.ContentGridViewModel">
|
||||
<NavigationViewItem x:Uid="Shell_Character" helpers:NavigationHelper.NavigateTo="Estara.ViewModels.CharacterViewModel">
|
||||
<NavigationViewItem.Icon>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph=""/>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph=""/>
|
||||
</NavigationViewItem.Icon>
|
||||
</NavigationViewItem>
|
||||
<NavigationViewItem x:Uid="Shell_DataGrid" helpers:NavigationHelper.NavigateTo="Estara.ViewModels.DataGridViewModel">
|
||||
<NavigationViewItem x:Uid="Shell_Versions" helpers:NavigationHelper.NavigateTo="Estara.ViewModels.VersionsViewModel">
|
||||
<NavigationViewItem.Icon>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph=""/>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph=""/>
|
||||
</NavigationViewItem.Icon>
|
||||
</NavigationViewItem>
|
||||
<NavigationViewItem x:Uid="Shell_Places" helpers:NavigationHelper.NavigateTo="Estara.ViewModels.PlacesViewModel">
|
||||
<NavigationViewItem.Icon>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph=""/>
|
||||
</NavigationViewItem.Icon>
|
||||
</NavigationViewItem>
|
||||
<NavigationViewItem x:Uid="Shell_Packages" helpers:NavigationHelper.NavigateTo="Estara.ViewModels.PackagesViewModel">
|
||||
<NavigationViewItem.Icon>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph=""/>
|
||||
</NavigationViewItem.Icon>
|
||||
</NavigationViewItem>
|
||||
<NavigationViewItem x:Uid="Shell_Bookmarks" helpers:NavigationHelper.NavigateTo="Estara.ViewModels.BookmarksViewModel">
|
||||
<NavigationViewItem.Icon>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph=""/>
|
||||
</NavigationViewItem.Icon>
|
||||
</NavigationViewItem>
|
||||
</NavigationView.MenuItems>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ using Windows.System;
|
|||
|
||||
namespace Estara.Views;
|
||||
|
||||
// TODO: Update NavigationViewItem titles and icons in ShellPage.xaml.
|
||||
public sealed partial class ShellPage : Page
|
||||
{
|
||||
public ShellViewModel ViewModel
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
<Page
|
||||
x:Class="Estara.Views.VersionsPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<Grid x:Name="ContentArea">
|
||||
|
||||
</Grid>
|
||||
</Page>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
using Estara.ViewModels;
|
||||
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
|
||||
namespace Estara.Views;
|
||||
|
||||
public sealed partial class VersionsPage : Page
|
||||
{
|
||||
public VersionsViewModel ViewModel
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public VersionsPage()
|
||||
{
|
||||
ViewModel = App.GetService<VersionsViewModel>();
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,13 @@
|
|||
# Estara
|
||||
A Kiseki experiment
|
||||
|
||||
# Notice
|
||||
We want to inform you that our project is currently a work in progress. While it is open source and available for developers to explore, please be aware that Estara is not intended for regular user consumption. Unless you are experienced in software development, we kindly advise against installing Estara in its current state. Thank you for your understanding.
|
||||
|
||||
# Requirements
|
||||
- 64-bit version of Windows build 17763 or greater (i.e., Version 1809 or greater)
|
||||
- .NET 7 runtime (download via `winget install Microsoft.DotNet.SDK.7`)
|
||||
|
||||
# License
|
||||
```
|
||||
Estara - A Kiseki experiment
|
||||
|
|
|
|||
Loading…
Reference in New Issue