diff --git a/Billing.Shared/Billing.Shared.projitems b/Billing.Shared/Billing.Shared.projitems index e9c4261..cab1ba6 100644 --- a/Billing.Shared/Billing.Shared.projitems +++ b/Billing.Shared/Billing.Shared.projitems @@ -52,6 +52,7 @@ SettingPage.xaml + diff --git a/Billing.Shared/Themes/BaseTheme.cs b/Billing.Shared/Themes/BaseTheme.cs index fec3db4..c82218b 100644 --- a/Billing.Shared/Themes/BaseTheme.cs +++ b/Billing.Shared/Themes/BaseTheme.cs @@ -55,6 +55,14 @@ namespace Billing.Themes new Setter { Property = Entry.FontFamilyProperty, Value = robotoRegularFontFamily } } }); + Add(new Style(typeof(OptionEditor)) + { + Setters = + { + new Setter { Property = Editor.FontSizeProperty, Value = Device.GetNamedSize(NamedSize.Small, typeof(Entry)) }, + new Setter { Property = Editor.FontFamilyProperty, Value = robotoRegularFontFamily } + } + }); Add(new Style(typeof(Button)) { Setters = diff --git a/Billing.Shared/UI/BillingDate.xaml b/Billing.Shared/UI/BillingDate.xaml index 385ceeb..9ab73a0 100644 --- a/Billing.Shared/UI/BillingDate.xaml +++ b/Billing.Shared/UI/BillingDate.xaml @@ -17,7 +17,7 @@ - + @@ -32,7 +32,7 @@ - + diff --git a/Billing.Shared/UI/Converters.cs b/Billing.Shared/UI/Converters.cs index e5dfbdb..766533c 100644 --- a/Billing.Shared/UI/Converters.cs +++ b/Billing.Shared/UI/Converters.cs @@ -38,4 +38,17 @@ namespace Billing.UI return value; } } + + public class NotNullConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + return value != null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return value; + } + } } \ No newline at end of file diff --git a/Billing.Shared/UI/CustomControl.cs b/Billing.Shared/UI/CustomControl.cs index e92985a..3e72352 100644 --- a/Billing.Shared/UI/CustomControl.cs +++ b/Billing.Shared/UI/CustomControl.cs @@ -1,5 +1,4 @@ -using Billing.Themes; -using System; +using System; using Xamarin.Forms; namespace Billing.UI @@ -30,126 +29,4 @@ namespace Billing.UI LongPressed?.Invoke(this, EventArgs.Empty); } } - - public class OptionEntry : Entry { } - - public abstract class OptionCell : ViewCell - { - public static readonly BindableProperty TitleProperty = BindableProperty.Create(nameof(Title), typeof(string), typeof(OptionCell)); - public static readonly BindableProperty BackgroundColorProperty = BindableProperty.Create(nameof(BackgroundColor), typeof(Color), typeof(OptionCell)); - - public string Title - { - get => (string)GetValue(TitleProperty); - set => SetValue(TitleProperty, value); - } - public Color BackgroundColor - { - get => (Color)GetValue(BackgroundColorProperty); - set => SetValue(BackgroundColorProperty, value); - } - - protected abstract View Content { get; } - - public OptionCell() - { - View = new Grid - { - BindingContext = this, - Padding = new Thickness(20, 0), - ColumnDefinitions = - { - new ColumnDefinition { Width = new GridLength(.3, GridUnitType.Star) }, - new ColumnDefinition { Width = new GridLength(.7, GridUnitType.Star) } - }, - Children = - { - new Label - { - LineBreakMode = LineBreakMode.TailTruncation, - VerticalOptions = LayoutOptions.Center - } - .Binding(Label.TextProperty, nameof(Title)) - .DynamicResource(Label.TextColorProperty, BaseTheme.TextColor), - - Content.GridColumn(1) - } - } - .DynamicResource(VisualElement.BackgroundColorProperty, BaseTheme.OptionTintColor); - } - } - - public class OptionTextCell : OptionCell - { - public static readonly BindableProperty DetailProperty = BindableProperty.Create(nameof(Detail), typeof(string), typeof(OptionTextCell)); - - public string Detail - { - get => (string)GetValue(DetailProperty); - set => SetValue(DetailProperty, value); - } - - protected override View Content => new Label - { - HorizontalOptions = LayoutOptions.End, - VerticalOptions = LayoutOptions.Center - } - .Binding(Label.TextProperty, nameof(Detail)) - .DynamicResource(Label.TextColorProperty, BaseTheme.SecondaryTextColor); - } - - public class OptionSwitchCell : OptionCell - { - public static readonly BindableProperty IsToggledProperty = BindableProperty.Create(nameof(IsToggled), typeof(bool), typeof(OptionSwitchCell)); - - public bool IsToggled - { - get => (bool)GetValue(IsToggledProperty); - set => SetValue(IsToggledProperty, value); - } - - protected override View Content => new Switch - { - HorizontalOptions = LayoutOptions.End, - VerticalOptions = LayoutOptions.Center - } - .Binding(Switch.IsToggledProperty, nameof(IsToggled), BindingMode.TwoWay); - } - - public class OptionEntryCell : OptionCell - { - public static readonly BindableProperty TextProperty = BindableProperty.Create(nameof(Text), typeof(string), typeof(OptionEntryCell)); - public static readonly BindableProperty KeyboardProperty = BindableProperty.Create(nameof(Keyboard), typeof(Keyboard), typeof(OptionEntryCell)); - public static readonly BindableProperty PlaceholderProperty = BindableProperty.Create(nameof(Placeholder), typeof(string), typeof(OptionEntryCell)); - - public string Text - { - get => (string)GetValue(TextProperty); - set => SetValue(TextProperty, value); - } - public Keyboard Keyboard - { - get => (Keyboard)GetValue(KeyboardProperty); - set => SetValue(KeyboardProperty, value); - } - public string Placeholder - { - get => (string)GetValue(PlaceholderProperty); - set => SetValue(PlaceholderProperty, value); - } - - protected override View Content => new OptionEntry - { - HorizontalOptions = LayoutOptions.Fill, - HorizontalTextAlignment = TextAlignment.End, - VerticalOptions = LayoutOptions.Center, - ReturnType = ReturnType.Next - } - .Binding(Entry.TextProperty, nameof(Text), BindingMode.TwoWay) - .Binding(InputView.KeyboardProperty, nameof(Keyboard)) - .Binding(Entry.PlaceholderProperty, nameof(Placeholder)) - .DynamicResource(Entry.TextColorProperty, BaseTheme.TextColor) - .DynamicResource(Entry.PlaceholderColorProperty, BaseTheme.SecondaryTextColor) - .DynamicResource(VisualElement.BackgroundColorProperty, BaseTheme.OptionTintColor); - } } \ No newline at end of file diff --git a/Billing.Shared/UI/Definition.cs b/Billing.Shared/UI/Definition.cs index 9fc42e5..b4556fb 100644 --- a/Billing.Shared/UI/Definition.cs +++ b/Billing.Shared/UI/Definition.cs @@ -13,10 +13,10 @@ namespace Billing.UI public static class ExtensionHelper { - public static View Binding(this View view, BindableProperty property, string path, BindingMode mode = BindingMode.Default, IValueConverter converter = null) + public static T Binding(this T obj, BindableProperty property, string path, BindingMode mode = BindingMode.Default, IValueConverter converter = null) where T : BindableObject { - view.SetBinding(property, path, mode, converter); - return view; + obj.SetBinding(property, path, mode, converter); + return obj; } public static View DynamicResource(this View view, BindableProperty property, string key) @@ -36,6 +36,24 @@ namespace Billing.UI Grid.SetRow(view, row); return view; } + + public static View GridColumnSpan(this View view, int columnSpan) + { + Grid.SetColumnSpan(view, columnSpan); + return view; + } + + public static View GridRowSpan(this View view, int rowSpan) + { + Grid.SetRowSpan(view, rowSpan); + return view; + } + + public static View Margin(this View view, Thickness margin) + { + view.Margin = margin; + return view; + } } public class Tap : IDisposable diff --git a/Billing.Shared/UI/OptionsCells.cs b/Billing.Shared/UI/OptionsCells.cs new file mode 100644 index 0000000..a3e9efd --- /dev/null +++ b/Billing.Shared/UI/OptionsCells.cs @@ -0,0 +1,286 @@ +using Billing.Themes; +using Xamarin.Forms; + +namespace Billing.UI +{ + + public class OptionEntry : Entry { } + public class OptionEditor : Editor { } + + public abstract class OptionCell : ViewCell + { + public static readonly BindableProperty TitleProperty = BindableProperty.Create(nameof(Title), typeof(string), typeof(OptionCell)); + public static readonly BindableProperty BackgroundColorProperty = BindableProperty.Create(nameof(BackgroundColor), typeof(Color), typeof(OptionCell)); + public static readonly BindableProperty IconProperty = BindableProperty.Create(nameof(Icon), typeof(ImageSource), typeof(OptionCell)); + + public string Title + { + get => (string)GetValue(TitleProperty); + set => SetValue(TitleProperty, value); + } + public Color BackgroundColor + { + get => (Color)GetValue(BackgroundColorProperty); + set => SetValue(BackgroundColorProperty, value); + } + [TypeConverter(typeof(ImageSourceConverter))] + public ImageSource Icon + { + get => (ImageSource)GetValue(IconProperty); + set => SetValue(IconProperty, value); + } + + protected abstract View Content { get; } + + public OptionCell() + { + View = new Grid + { + BindingContext = this, + Padding = new Thickness(20, 0), + ColumnDefinitions = + { + new ColumnDefinition { Width = GridLength.Auto }, + new ColumnDefinition { Width = new GridLength(.3, GridUnitType.Star) }, + new ColumnDefinition { Width = new GridLength(.7, GridUnitType.Star) } + }, + Children = + { + new Image + { + WidthRequest = 20, + HeightRequest = 20, + Aspect = Aspect.AspectFit, + VerticalOptions = LayoutOptions.Center, + Margin = new Thickness(6, 0) + } + .Binding(VisualElement.IsVisibleProperty, nameof(Icon), converter: new NotNullConverter()) + .Binding(Image.SourceProperty, nameof(Icon)), + + new Label + { + LineBreakMode = LineBreakMode.TailTruncation, + VerticalOptions = LayoutOptions.Center + } + .GridColumn(1) + .Binding(Label.TextProperty, nameof(Title)) + .DynamicResource(Label.TextColorProperty, BaseTheme.TextColor), + + Content.GridColumn(2) + } + } + .DynamicResource(VisualElement.BackgroundColorProperty, BaseTheme.OptionTintColor); + } + } + + public abstract class OptionVerticalCell : OptionCell + { + public OptionVerticalCell() + { + View = new Grid + { + BindingContext = this, + Padding = new Thickness(20, 0), + ColumnDefinitions = + { + new ColumnDefinition { Width = GridLength.Auto }, + new ColumnDefinition { Width = GridLength.Star } + }, + RowDefinitions = + { + new RowDefinition { Height = new GridLength(40) }, + new RowDefinition { Height = GridLength.Star } + }, + Children = + { + new Image + { + WidthRequest = 20, + HeightRequest = 20, + Aspect = Aspect.AspectFit, + VerticalOptions = LayoutOptions.Center, + Margin = new Thickness(6, 0) + } + .Binding(VisualElement.IsVisibleProperty, nameof(Icon), converter: new NotNullConverter()) + .Binding(Image.SourceProperty, nameof(Icon)), + + new Label + { + LineBreakMode = LineBreakMode.TailTruncation, + VerticalOptions = LayoutOptions.Center + } + .GridColumn(1) + .Binding(Label.TextProperty, nameof(Title)) + .DynamicResource(Label.TextColorProperty, BaseTheme.TextColor), + + Content.GridRow(1).GridColumnSpan(2) + } + } + .DynamicResource(VisualElement.BackgroundColorProperty, BaseTheme.OptionTintColor); + } + } + + public class OptionTextCell : OptionCell + { + public static readonly BindableProperty DetailProperty = BindableProperty.Create(nameof(Detail), typeof(string), typeof(OptionTextCell)); + + public string Detail + { + get => (string)GetValue(DetailProperty); + set => SetValue(DetailProperty, value); + } + + protected override View Content => new Label + { + HorizontalOptions = LayoutOptions.End, + VerticalOptions = LayoutOptions.Center + } + .Binding(Label.TextProperty, nameof(Detail)) + .DynamicResource(Label.TextColorProperty, BaseTheme.SecondaryTextColor); + } + + public class OptionSelectCell : OptionTextCell + { + public static readonly BindableProperty CommandProperty = BindableProperty.Create(nameof(Command), typeof(Command), typeof(OptionSelectCell)); + public static readonly BindableProperty CommandParameterProperty = BindableProperty.Create(nameof(CommandParameter), typeof(object), typeof(OptionSelectCell)); + + public Command Command + { + get => (Command)GetValue(CommandProperty); + set => SetValue(CommandProperty, value); + } + public object CommandParameter + { + get => GetValue(CommandParameterProperty); + set => SetValue(CommandParameterProperty, value); + } + + protected override View Content => new StackLayout + { + Orientation = StackOrientation.Horizontal, + HorizontalOptions = LayoutOptions.End, + Children = + { + new Label + { + HorizontalOptions = LayoutOptions.End, + VerticalOptions = LayoutOptions.Center + } + .Binding(Label.TextProperty, nameof(Detail)) + .DynamicResource(Label.TextColorProperty, BaseTheme.SecondaryTextColor), + + new TintImage + { + HeightRequest = 20, + VerticalOptions = LayoutOptions.Center, + Margin = new Thickness(6, 0), + Source = "right.png" + } + }, + GestureRecognizers = + { + new TapGestureRecognizer() + .Binding(TapGestureRecognizer.CommandProperty, nameof(Command)) + .Binding(TapGestureRecognizer.CommandParameterProperty, nameof(CommandParameter)) + } + }; + } + + public class OptionSwitchCell : OptionCell + { + public static readonly BindableProperty IsToggledProperty = BindableProperty.Create(nameof(IsToggled), typeof(bool), typeof(OptionSwitchCell)); + + public bool IsToggled + { + get => (bool)GetValue(IsToggledProperty); + set => SetValue(IsToggledProperty, value); + } + + protected override View Content => new Switch + { + HorizontalOptions = LayoutOptions.End, + VerticalOptions = LayoutOptions.Center + } + .Binding(Switch.IsToggledProperty, nameof(IsToggled), BindingMode.TwoWay); + } + + public class OptionEntryCell : OptionCell + { + public static readonly BindableProperty TextProperty = BindableProperty.Create(nameof(Text), typeof(string), typeof(OptionEntryCell)); + public static readonly BindableProperty KeyboardProperty = BindableProperty.Create(nameof(Keyboard), typeof(Keyboard), typeof(OptionEntryCell)); + public static readonly BindableProperty PlaceholderProperty = BindableProperty.Create(nameof(Placeholder), typeof(string), typeof(OptionEntryCell)); + + public string Text + { + get => (string)GetValue(TextProperty); + set => SetValue(TextProperty, value); + } + public Keyboard Keyboard + { + get => (Keyboard)GetValue(KeyboardProperty); + set => SetValue(KeyboardProperty, value); + } + public string Placeholder + { + get => (string)GetValue(PlaceholderProperty); + set => SetValue(PlaceholderProperty, value); + } + + protected override View Content => new OptionEntry + { + HorizontalOptions = LayoutOptions.Fill, + HorizontalTextAlignment = TextAlignment.End, + VerticalOptions = LayoutOptions.Center, + ReturnType = ReturnType.Next + } + .Binding(Entry.TextProperty, nameof(Text), BindingMode.TwoWay) + .Binding(InputView.KeyboardProperty, nameof(Keyboard)) + .Binding(Entry.PlaceholderProperty, nameof(Placeholder)) + .DynamicResource(Entry.TextColorProperty, BaseTheme.TextColor) + .DynamicResource(Entry.PlaceholderColorProperty, BaseTheme.SecondaryTextColor) + .DynamicResource(VisualElement.BackgroundColorProperty, BaseTheme.OptionTintColor); + } + + public class OptionEditorCell : OptionVerticalCell + { + public static readonly BindableProperty TextProperty = BindableProperty.Create(nameof(Text), typeof(string), typeof(OptionEditorCell)); + public static readonly BindableProperty FontSizeProperty = BindableProperty.Create(nameof(FontSize), typeof(double), typeof(OptionEditorCell), defaultValue: Device.GetNamedSize(NamedSize.Default, typeof(Editor))); + public static readonly BindableProperty KeyboardProperty = BindableProperty.Create(nameof(Keyboard), typeof(Keyboard), typeof(OptionEditorCell), defaultValue: Keyboard.Default); + public static readonly BindableProperty PlaceholderProperty = BindableProperty.Create(nameof(Placeholder), typeof(string), typeof(OptionEditorCell)); + + public string Text + { + get => (string)GetValue(TextProperty); + set => SetValue(TextProperty, value); + } + [TypeConverter(typeof(FontSizeConverter))] + public double FontSize + { + get => (double)GetValue(FontSizeProperty); + set => SetValue(FontSizeProperty, value); + } + public Keyboard Keyboard + { + get => (Keyboard)GetValue(KeyboardProperty); + set => SetValue(KeyboardProperty, value); + } + public string Placeholder + { + get => (string)GetValue(PlaceholderProperty); + set => SetValue(PlaceholderProperty, value); + } + + protected override View Content => new OptionEditor + { + HorizontalOptions = LayoutOptions.Fill, + VerticalOptions = LayoutOptions.Fill + } + .Binding(Editor.TextProperty, nameof(Text), BindingMode.TwoWay) + .Binding(Editor.FontSizeProperty, nameof(FontSize)) + .Binding(InputView.KeyboardProperty, nameof(Keyboard)) + .Binding(Editor.PlaceholderProperty, nameof(Placeholder)) + .DynamicResource(Editor.TextColorProperty, BaseTheme.TextColor) + .DynamicResource(Editor.PlaceholderColorProperty, BaseTheme.SecondaryTextColor) + .DynamicResource(VisualElement.BackgroundColorProperty, BaseTheme.OptionTintColor); + } +} diff --git a/Billing.Shared/Views/AddAccountPage.xaml b/Billing.Shared/Views/AddAccountPage.xaml index 9f1905f..0cae955 100644 --- a/Billing.Shared/Views/AddAccountPage.xaml +++ b/Billing.Shared/Views/AddAccountPage.xaml @@ -15,25 +15,34 @@ - - - - + + + + + - + + + - - + + + + diff --git a/Billing.Shared/Views/AddAccountPage.xaml.cs b/Billing.Shared/Views/AddAccountPage.xaml.cs index 0caa427..76c4a6d 100644 --- a/Billing.Shared/Views/AddAccountPage.xaml.cs +++ b/Billing.Shared/Views/AddAccountPage.xaml.cs @@ -42,12 +42,16 @@ namespace Billing.Views private readonly Account account; public Command CheckAccount { get; } + public Command SelectIcon { get; } + public Command SelectCategory { get; } public event EventHandler AccountChecked; public AddAccountPage() { CheckAccount = new Command(OnCheckAccount); + SelectIcon = new Command(OnSelectIcon); + SelectCategory = new Command(OnSelectCategory); InitializeComponent(); } @@ -78,6 +82,16 @@ namespace Billing.Views } }); } + + private void OnSelectIcon() + { + + } + + private void OnSelectCategory() + { + + } } public class AccountEventArgs : EventArgs diff --git a/Billing.sln b/Billing.sln index ea1e6c2..a737a6b 100644 --- a/Billing.sln +++ b/Billing.sln @@ -9,6 +9,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Billing.iOS", "Billing\Bill EndProject Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Billing.Shared", "Billing.Shared\Billing.Shared.shproj", "{6AC75D01-70D6-4A07-8685-BC52AFD97A7A}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Svg2Png", "Svg2Png\Svg2Png.csproj", "{43BB5B21-61E0-42BB-ADF1-DBCD662E61E1}" +EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution Billing.Shared\Billing.Shared.projitems*{5c4f1c35-6f66-4063-9605-a9f37fcabba8}*SharedItemsImports = 4 @@ -60,6 +62,18 @@ Global {5C4F1C35-6F66-4063-9605-A9F37FCABBA8}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator {5C4F1C35-6F66-4063-9605-A9F37FCABBA8}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator {5C4F1C35-6F66-4063-9605-A9F37FCABBA8}.Release|iPhoneSimulator.Deploy.0 = Release|iPhoneSimulator + {43BB5B21-61E0-42BB-ADF1-DBCD662E61E1}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator + {43BB5B21-61E0-42BB-ADF1-DBCD662E61E1}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator + {43BB5B21-61E0-42BB-ADF1-DBCD662E61E1}.Debug|iPhone.ActiveCfg = Debug|iPhoneSimulator + {43BB5B21-61E0-42BB-ADF1-DBCD662E61E1}.Debug|iPhone.Build.0 = Debug|iPhoneSimulator + {43BB5B21-61E0-42BB-ADF1-DBCD662E61E1}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {43BB5B21-61E0-42BB-ADF1-DBCD662E61E1}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {43BB5B21-61E0-42BB-ADF1-DBCD662E61E1}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator + {43BB5B21-61E0-42BB-ADF1-DBCD662E61E1}.Release|Any CPU.Build.0 = Release|iPhoneSimulator + {43BB5B21-61E0-42BB-ADF1-DBCD662E61E1}.Release|iPhone.ActiveCfg = Release|iPhoneSimulator + {43BB5B21-61E0-42BB-ADF1-DBCD662E61E1}.Release|iPhone.Build.0 = Release|iPhoneSimulator + {43BB5B21-61E0-42BB-ADF1-DBCD662E61E1}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {43BB5B21-61E0-42BB-ADF1-DBCD662E61E1}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Billing/Billing.Android/Billing.Android.csproj b/Billing/Billing.Android/Billing.Android.csproj index 2d5dae2..9671b07 100644 --- a/Billing/Billing.Android/Billing.Android.csproj +++ b/Billing/Billing.Android/Billing.Android.csproj @@ -78,6 +78,7 @@ + @@ -104,6 +105,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Billing/Billing.Android/Renderers/OptionEditorRenderer.cs b/Billing/Billing.Android/Renderers/OptionEditorRenderer.cs new file mode 100644 index 0000000..d413512 --- /dev/null +++ b/Billing/Billing.Android/Renderers/OptionEditorRenderer.cs @@ -0,0 +1,28 @@ +using Android.Content; +using Android.Graphics.Drawables; +using Billing.Droid.Renderers; +using Billing.UI; +using Xamarin.Forms; +using Xamarin.Forms.Platform.Android; + +[assembly: ExportRenderer(typeof(OptionEditor), typeof(OptionEditorRenderer))] +namespace Billing.Droid.Renderers +{ + public class OptionEditorRenderer : EditorRenderer + { + public OptionEditorRenderer(Context context) : base(context) + { + } + + protected override void OnElementChanged(ElementChangedEventArgs e) + { + base.OnElementChanged(e); + + if (e.NewElement != null) + { + var drawable = new ColorDrawable(e.NewElement.BackgroundColor.ToAndroid()); + Control.SetBackground(drawable); + } + } + } +} \ No newline at end of file diff --git a/Billing/Billing.Android/Resources/Resource.designer.cs b/Billing/Billing.Android/Resources/Resource.designer.cs index dc11e03..09f20b5 100644 --- a/Billing/Billing.Android/Resources/Resource.designer.cs +++ b/Billing/Billing.Android/Resources/Resource.designer.cs @@ -16544,154 +16544,172 @@ namespace Billing.Droid public const int design_snackbar_background = 2131165287; // aapt resource value: 0x7F070068 - public const int ic_arrow_down_24dp = 2131165288; + public const int dollar = 2131165288; // aapt resource value: 0x7F070069 - public const int ic_clock_black_24dp = 2131165289; + public const int face = 2131165289; // aapt resource value: 0x7F07006A - public const int ic_default = 2131165290; + public const int ic_arrow_down_24dp = 2131165290; // aapt resource value: 0x7F07006B - public const int ic_keyboard_black_24dp = 2131165291; + public const int ic_clock_black_24dp = 2131165291; // aapt resource value: 0x7F07006C - public const int ic_mtrl_checked_circle = 2131165292; + public const int ic_default = 2131165292; // aapt resource value: 0x7F07006D - public const int ic_mtrl_chip_checked_black = 2131165293; + public const int ic_keyboard_black_24dp = 2131165293; // aapt resource value: 0x7F07006E - public const int ic_mtrl_chip_checked_circle = 2131165294; + public const int ic_mtrl_checked_circle = 2131165294; // aapt resource value: 0x7F07006F - public const int ic_mtrl_chip_close_circle = 2131165295; + public const int ic_mtrl_chip_checked_black = 2131165295; // aapt resource value: 0x7F070070 - public const int material_cursor_drawable = 2131165296; + public const int ic_mtrl_chip_checked_circle = 2131165296; // aapt resource value: 0x7F070071 - public const int material_ic_calendar_black_24dp = 2131165297; + public const int ic_mtrl_chip_close_circle = 2131165297; // aapt resource value: 0x7F070072 - public const int material_ic_clear_black_24dp = 2131165298; + public const int material_cursor_drawable = 2131165298; // aapt resource value: 0x7F070073 - public const int material_ic_edit_black_24dp = 2131165299; + public const int material_ic_calendar_black_24dp = 2131165299; // aapt resource value: 0x7F070074 - public const int material_ic_keyboard_arrow_left_black_24dp = 2131165300; + public const int material_ic_clear_black_24dp = 2131165300; // aapt resource value: 0x7F070075 - public const int material_ic_keyboard_arrow_next_black_24dp = 2131165301; + public const int material_ic_edit_black_24dp = 2131165301; // aapt resource value: 0x7F070076 - public const int material_ic_keyboard_arrow_previous_black_24dp = 2131165302; + public const int material_ic_keyboard_arrow_left_black_24dp = 2131165302; // aapt resource value: 0x7F070077 - public const int material_ic_keyboard_arrow_right_black_24dp = 2131165303; + public const int material_ic_keyboard_arrow_next_black_24dp = 2131165303; // aapt resource value: 0x7F070078 - public const int material_ic_menu_arrow_down_black_24dp = 2131165304; + public const int material_ic_keyboard_arrow_previous_black_24dp = 2131165304; // aapt resource value: 0x7F070079 - public const int material_ic_menu_arrow_up_black_24dp = 2131165305; + public const int material_ic_keyboard_arrow_right_black_24dp = 2131165305; // aapt resource value: 0x7F07007A - public const int mtrl_dialog_background = 2131165306; + public const int material_ic_menu_arrow_down_black_24dp = 2131165306; // aapt resource value: 0x7F07007B - public const int mtrl_dropdown_arrow = 2131165307; + public const int material_ic_menu_arrow_up_black_24dp = 2131165307; // aapt resource value: 0x7F07007C - public const int mtrl_ic_arrow_drop_down = 2131165308; + public const int mtrl_dialog_background = 2131165308; // aapt resource value: 0x7F07007D - public const int mtrl_ic_arrow_drop_up = 2131165309; + public const int mtrl_dropdown_arrow = 2131165309; // aapt resource value: 0x7F07007E - public const int mtrl_ic_cancel = 2131165310; + public const int mtrl_ic_arrow_drop_down = 2131165310; // aapt resource value: 0x7F07007F - public const int mtrl_ic_error = 2131165311; + public const int mtrl_ic_arrow_drop_up = 2131165311; // aapt resource value: 0x7F070080 - public const int mtrl_navigation_bar_item_background = 2131165312; + public const int mtrl_ic_cancel = 2131165312; // aapt resource value: 0x7F070081 - public const int mtrl_popupmenu_background = 2131165313; + public const int mtrl_ic_error = 2131165313; // aapt resource value: 0x7F070082 - public const int mtrl_popupmenu_background_dark = 2131165314; + public const int mtrl_navigation_bar_item_background = 2131165314; // aapt resource value: 0x7F070083 - public const int mtrl_tabs_default_indicator = 2131165315; + public const int mtrl_popupmenu_background = 2131165315; // aapt resource value: 0x7F070084 - public const int navigation_empty_icon = 2131165316; + public const int mtrl_popupmenu_background_dark = 2131165316; // aapt resource value: 0x7F070085 - public const int notification_action_background = 2131165317; + public const int mtrl_tabs_default_indicator = 2131165317; // aapt resource value: 0x7F070086 - public const int notification_bg = 2131165318; + public const int navigation_empty_icon = 2131165318; // aapt resource value: 0x7F070087 - public const int notification_bg_low = 2131165319; + public const int note = 2131165319; // aapt resource value: 0x7F070088 - public const int notification_bg_low_normal = 2131165320; + public const int notification_action_background = 2131165320; // aapt resource value: 0x7F070089 - public const int notification_bg_low_pressed = 2131165321; + public const int notification_bg = 2131165321; // aapt resource value: 0x7F07008A - public const int notification_bg_normal = 2131165322; + public const int notification_bg_low = 2131165322; // aapt resource value: 0x7F07008B - public const int notification_bg_normal_pressed = 2131165323; + public const int notification_bg_low_normal = 2131165323; // aapt resource value: 0x7F07008C - public const int notification_icon_background = 2131165324; + public const int notification_bg_low_pressed = 2131165324; // aapt resource value: 0x7F07008D - public const int notification_template_icon_bg = 2131165325; + public const int notification_bg_normal = 2131165325; // aapt resource value: 0x7F07008E - public const int notification_template_icon_low_bg = 2131165326; + public const int notification_bg_normal_pressed = 2131165326; // aapt resource value: 0x7F07008F - public const int notification_tile_bg = 2131165327; + public const int notification_icon_background = 2131165327; // aapt resource value: 0x7F070090 - public const int notify_panel_notification_icon_bg = 2131165328; + public const int notification_template_icon_bg = 2131165328; // aapt resource value: 0x7F070091 - public const int plus = 2131165329; + public const int notification_template_icon_low_bg = 2131165329; // aapt resource value: 0x7F070092 - public const int preference_list_divider_material = 2131165330; + public const int notification_tile_bg = 2131165330; // aapt resource value: 0x7F070093 - public const int right = 2131165331; + public const int notify_panel_notification_icon_bg = 2131165331; // aapt resource value: 0x7F070094 - public const int settings = 2131165332; + public const int pencil = 2131165332; // aapt resource value: 0x7F070095 - public const int test_custom_background = 2131165333; + public const int plus = 2131165333; // aapt resource value: 0x7F070096 - public const int tooltip_frame_dark = 2131165334; + public const int preference_list_divider_material = 2131165334; // aapt resource value: 0x7F070097 - public const int tooltip_frame_light = 2131165335; + public const int project = 2131165335; // aapt resource value: 0x7F070098 - public const int wallet = 2131165336; + public const int right = 2131165336; // aapt resource value: 0x7F070099 - public const int xamarin_logo = 2131165337; + public const int sackdollar = 2131165337; + + // aapt resource value: 0x7F07009A + public const int settings = 2131165338; + + // aapt resource value: 0x7F07009B + public const int test_custom_background = 2131165339; + + // aapt resource value: 0x7F07009C + public const int tooltip_frame_dark = 2131165340; + + // aapt resource value: 0x7F07009D + public const int tooltip_frame_light = 2131165341; + + // aapt resource value: 0x7F07009E + public const int wallet = 2131165342; + + // aapt resource value: 0x7F07009F + public const int xamarin_logo = 2131165343; static Drawable() { diff --git a/Billing/Billing.Android/Resources/drawable-mdpi/dollar.png b/Billing/Billing.Android/Resources/drawable-mdpi/dollar.png new file mode 100644 index 0000000..cd8e682 Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-mdpi/dollar.png differ diff --git a/Billing/Billing.Android/Resources/drawable-mdpi/face.png b/Billing/Billing.Android/Resources/drawable-mdpi/face.png new file mode 100644 index 0000000..abac410 Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-mdpi/face.png differ diff --git a/Billing/Billing.Android/Resources/drawable-mdpi/note.png b/Billing/Billing.Android/Resources/drawable-mdpi/note.png new file mode 100644 index 0000000..f8bf83c Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-mdpi/note.png differ diff --git a/Billing/Billing.Android/Resources/drawable-mdpi/pencil.png b/Billing/Billing.Android/Resources/drawable-mdpi/pencil.png new file mode 100644 index 0000000..198c9fc Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-mdpi/pencil.png differ diff --git a/Billing/Billing.Android/Resources/drawable-mdpi/project.png b/Billing/Billing.Android/Resources/drawable-mdpi/project.png new file mode 100644 index 0000000..3b7ea20 Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-mdpi/project.png differ diff --git a/Billing/Billing.Android/Resources/drawable-mdpi/sackdollar.png b/Billing/Billing.Android/Resources/drawable-mdpi/sackdollar.png new file mode 100644 index 0000000..cf79b5c Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-mdpi/sackdollar.png differ diff --git a/Billing/Billing.Android/Resources/drawable-xhdpi/dollar.png b/Billing/Billing.Android/Resources/drawable-xhdpi/dollar.png new file mode 100644 index 0000000..33cc63c Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-xhdpi/dollar.png differ diff --git a/Billing/Billing.Android/Resources/drawable-xhdpi/face.png b/Billing/Billing.Android/Resources/drawable-xhdpi/face.png new file mode 100644 index 0000000..c357fd4 Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-xhdpi/face.png differ diff --git a/Billing/Billing.Android/Resources/drawable-xhdpi/note.png b/Billing/Billing.Android/Resources/drawable-xhdpi/note.png new file mode 100644 index 0000000..4d8600a Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-xhdpi/note.png differ diff --git a/Billing/Billing.Android/Resources/drawable-xhdpi/pencil.png b/Billing/Billing.Android/Resources/drawable-xhdpi/pencil.png new file mode 100644 index 0000000..38cbc68 Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-xhdpi/pencil.png differ diff --git a/Billing/Billing.Android/Resources/drawable-xhdpi/project.png b/Billing/Billing.Android/Resources/drawable-xhdpi/project.png new file mode 100644 index 0000000..4130c0d Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-xhdpi/project.png differ diff --git a/Billing/Billing.Android/Resources/drawable-xhdpi/sackdollar.png b/Billing/Billing.Android/Resources/drawable-xhdpi/sackdollar.png new file mode 100644 index 0000000..97f90c3 Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-xhdpi/sackdollar.png differ diff --git a/Billing/Billing.Android/Resources/drawable-xxhdpi/dollar.png b/Billing/Billing.Android/Resources/drawable-xxhdpi/dollar.png new file mode 100644 index 0000000..d2ecf12 Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-xxhdpi/dollar.png differ diff --git a/Billing/Billing.Android/Resources/drawable-xxhdpi/face.png b/Billing/Billing.Android/Resources/drawable-xxhdpi/face.png new file mode 100644 index 0000000..68ea618 Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-xxhdpi/face.png differ diff --git a/Billing/Billing.Android/Resources/drawable-xxhdpi/note.png b/Billing/Billing.Android/Resources/drawable-xxhdpi/note.png new file mode 100644 index 0000000..4730a66 Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-xxhdpi/note.png differ diff --git a/Billing/Billing.Android/Resources/drawable-xxhdpi/pencil.png b/Billing/Billing.Android/Resources/drawable-xxhdpi/pencil.png new file mode 100644 index 0000000..95df01d Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-xxhdpi/pencil.png differ diff --git a/Billing/Billing.Android/Resources/drawable-xxhdpi/project.png b/Billing/Billing.Android/Resources/drawable-xxhdpi/project.png new file mode 100644 index 0000000..a386e08 Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-xxhdpi/project.png differ diff --git a/Billing/Billing.Android/Resources/drawable-xxhdpi/sackdollar.png b/Billing/Billing.Android/Resources/drawable-xxhdpi/sackdollar.png new file mode 100644 index 0000000..596e2d4 Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable-xxhdpi/sackdollar.png differ diff --git a/Billing/Billing.Android/Resources/drawable/dollar.png b/Billing/Billing.Android/Resources/drawable/dollar.png new file mode 100644 index 0000000..4dc3787 Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable/dollar.png differ diff --git a/Billing/Billing.Android/Resources/drawable/face.png b/Billing/Billing.Android/Resources/drawable/face.png new file mode 100644 index 0000000..25b69dc Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable/face.png differ diff --git a/Billing/Billing.Android/Resources/drawable/note.png b/Billing/Billing.Android/Resources/drawable/note.png new file mode 100644 index 0000000..a0cb5bf Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable/note.png differ diff --git a/Billing/Billing.Android/Resources/drawable/pencil.png b/Billing/Billing.Android/Resources/drawable/pencil.png new file mode 100644 index 0000000..cb5e735 Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable/pencil.png differ diff --git a/Billing/Billing.Android/Resources/drawable/project.png b/Billing/Billing.Android/Resources/drawable/project.png new file mode 100644 index 0000000..48747a7 Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable/project.png differ diff --git a/Billing/Billing.Android/Resources/drawable/sackdollar.png b/Billing/Billing.Android/Resources/drawable/sackdollar.png new file mode 100644 index 0000000..583cd28 Binary files /dev/null and b/Billing/Billing.Android/Resources/drawable/sackdollar.png differ diff --git a/Billing/Billing.iOS/Billing.iOS.csproj b/Billing/Billing.iOS/Billing.iOS.csproj index 481de8d..aa89e9d 100644 --- a/Billing/Billing.iOS/Billing.iOS.csproj +++ b/Billing/Billing.iOS/Billing.iOS.csproj @@ -79,6 +79,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/Billing/Billing.iOS/Resources/dollar.png b/Billing/Billing.iOS/Resources/dollar.png new file mode 100644 index 0000000..cd8e682 Binary files /dev/null and b/Billing/Billing.iOS/Resources/dollar.png differ diff --git a/Billing/Billing.iOS/Resources/dollar@2x.png b/Billing/Billing.iOS/Resources/dollar@2x.png new file mode 100644 index 0000000..33cc63c Binary files /dev/null and b/Billing/Billing.iOS/Resources/dollar@2x.png differ diff --git a/Billing/Billing.iOS/Resources/dollar@3x.png b/Billing/Billing.iOS/Resources/dollar@3x.png new file mode 100644 index 0000000..d2ecf12 Binary files /dev/null and b/Billing/Billing.iOS/Resources/dollar@3x.png differ diff --git a/Billing/Billing.iOS/Resources/face.png b/Billing/Billing.iOS/Resources/face.png new file mode 100644 index 0000000..abac410 Binary files /dev/null and b/Billing/Billing.iOS/Resources/face.png differ diff --git a/Billing/Billing.iOS/Resources/face@2x.png b/Billing/Billing.iOS/Resources/face@2x.png new file mode 100644 index 0000000..c357fd4 Binary files /dev/null and b/Billing/Billing.iOS/Resources/face@2x.png differ diff --git a/Billing/Billing.iOS/Resources/face@3x.png b/Billing/Billing.iOS/Resources/face@3x.png new file mode 100644 index 0000000..68ea618 Binary files /dev/null and b/Billing/Billing.iOS/Resources/face@3x.png differ diff --git a/Billing/Billing.iOS/Resources/note.png b/Billing/Billing.iOS/Resources/note.png new file mode 100644 index 0000000..f8bf83c Binary files /dev/null and b/Billing/Billing.iOS/Resources/note.png differ diff --git a/Billing/Billing.iOS/Resources/note@2x.png b/Billing/Billing.iOS/Resources/note@2x.png new file mode 100644 index 0000000..4d8600a Binary files /dev/null and b/Billing/Billing.iOS/Resources/note@2x.png differ diff --git a/Billing/Billing.iOS/Resources/note@3x.png b/Billing/Billing.iOS/Resources/note@3x.png new file mode 100644 index 0000000..4730a66 Binary files /dev/null and b/Billing/Billing.iOS/Resources/note@3x.png differ diff --git a/Billing/Billing.iOS/Resources/pencil.png b/Billing/Billing.iOS/Resources/pencil.png new file mode 100644 index 0000000..198c9fc Binary files /dev/null and b/Billing/Billing.iOS/Resources/pencil.png differ diff --git a/Billing/Billing.iOS/Resources/pencil@2x.png b/Billing/Billing.iOS/Resources/pencil@2x.png new file mode 100644 index 0000000..38cbc68 Binary files /dev/null and b/Billing/Billing.iOS/Resources/pencil@2x.png differ diff --git a/Billing/Billing.iOS/Resources/pencil@3x.png b/Billing/Billing.iOS/Resources/pencil@3x.png new file mode 100644 index 0000000..95df01d Binary files /dev/null and b/Billing/Billing.iOS/Resources/pencil@3x.png differ diff --git a/Billing/Billing.iOS/Resources/project.png b/Billing/Billing.iOS/Resources/project.png new file mode 100644 index 0000000..3b7ea20 Binary files /dev/null and b/Billing/Billing.iOS/Resources/project.png differ diff --git a/Billing/Billing.iOS/Resources/project@2x.png b/Billing/Billing.iOS/Resources/project@2x.png new file mode 100644 index 0000000..4130c0d Binary files /dev/null and b/Billing/Billing.iOS/Resources/project@2x.png differ diff --git a/Billing/Billing.iOS/Resources/project@3x.png b/Billing/Billing.iOS/Resources/project@3x.png new file mode 100644 index 0000000..a386e08 Binary files /dev/null and b/Billing/Billing.iOS/Resources/project@3x.png differ diff --git a/Billing/Billing.iOS/Resources/sackdollar.png b/Billing/Billing.iOS/Resources/sackdollar.png new file mode 100644 index 0000000..cf79b5c Binary files /dev/null and b/Billing/Billing.iOS/Resources/sackdollar.png differ diff --git a/Billing/Billing.iOS/Resources/sackdollar@2x.png b/Billing/Billing.iOS/Resources/sackdollar@2x.png new file mode 100644 index 0000000..97f90c3 Binary files /dev/null and b/Billing/Billing.iOS/Resources/sackdollar@2x.png differ diff --git a/Billing/Billing.iOS/Resources/sackdollar@3x.png b/Billing/Billing.iOS/Resources/sackdollar@3x.png new file mode 100644 index 0000000..596e2d4 Binary files /dev/null and b/Billing/Billing.iOS/Resources/sackdollar@3x.png differ