[Shell][Tizen] Add the MaterialShellRenderer on Tizen (#6196)
* [Shell][Tizen] Add the MaterialShellRenderer on Tizen * Fixed the build fail * Update namespace
После Ширина: | Высота: | Размер: 1.2 KiB |
После Ширина: | Высота: | Размер: 629 B |
После Ширина: | Высота: | Размер: 629 B |
После Ширина: | Высота: | Размер: 480 B |
После Ширина: | Высота: | Размер: 923 B |
После Ширина: | Высота: | Размер: 923 B |
После Ширина: | Высота: | Размер: 1.1 KiB |
После Ширина: | Высота: | Размер: 1.1 KiB |
После Ширина: | Высота: | Размер: 320 B |
После Ширина: | Высота: | Размер: 1.2 KiB |
После Ширина: | Высота: | Размер: 1.2 KiB |
После Ширина: | Высота: | Размер: 544 B |
После Ширина: | Высота: | Размер: 1.1 KiB |
После Ширина: | Высота: | Размер: 1.1 KiB |
После Ширина: | Высота: | Размер: 484 B |
После Ширина: | Высота: | Размер: 484 B |
После Ширина: | Высота: | Размер: 708 B |
После Ширина: | Высота: | Размер: 671 B |
После Ширина: | Высота: | Размер: 16 KiB |
|
@ -0,0 +1,19 @@
|
|||
using ElmSharp;
|
||||
using Tizen.NET.MaterialComponents;
|
||||
using Xamarin.Forms.Platform.Tizen;
|
||||
|
||||
namespace Xamarin.Forms.Material.Tizen
|
||||
{
|
||||
public class MaterialNavigationDrawer : MNavigationDrawer, INavigationDrawer
|
||||
{
|
||||
public MaterialNavigationDrawer(EvasObject parent) : base(parent)
|
||||
{
|
||||
}
|
||||
|
||||
EvasObject INavigationDrawer.NavigationView
|
||||
{
|
||||
get => NavigationView;
|
||||
set => NavigationView = value as MNavigationView;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ElmSharp;
|
||||
using Tizen.NET.MaterialComponents;
|
||||
using Xamarin.Forms.Platform.Tizen;
|
||||
|
||||
namespace Xamarin.Forms.Material.Tizen
|
||||
{
|
||||
public class MaterialNavigationView : MNavigationView, INavigationView
|
||||
{
|
||||
IDictionary<MItem, Element> _flyoutMenu = new Dictionary<MItem, Element>();
|
||||
|
||||
public MaterialNavigationView(EvasObject parent) : base(parent)
|
||||
{
|
||||
MenuItemSelected += OnSelectedItemChanged;
|
||||
}
|
||||
|
||||
public event EventHandler<SelectedItemChangedEventArgs> SelectedItemChanged;
|
||||
|
||||
public void BuildMenu(List<List<Element>> flyoutGroups)
|
||||
{
|
||||
var groups = new List<MGroup>();
|
||||
_flyoutMenu.Clear();
|
||||
|
||||
for (int i = 0; i < flyoutGroups.Count; i++)
|
||||
{
|
||||
var flyoutGroup = flyoutGroups[i];
|
||||
var items = new List<MItem>();
|
||||
for (int j = 0; j < flyoutGroup.Count; j++)
|
||||
{
|
||||
string title = null;
|
||||
string icon = null;
|
||||
if (flyoutGroup[j] is BaseShellItem shellItem)
|
||||
{
|
||||
title = shellItem.Title;
|
||||
|
||||
if (shellItem.FlyoutIcon is FileImageSource flyoutIcon)
|
||||
{
|
||||
icon = flyoutIcon.File;
|
||||
}
|
||||
}
|
||||
else if (flyoutGroup[j] is MenuItem menuItem)
|
||||
{
|
||||
title = menuItem.Text;
|
||||
if (menuItem.IconImageSource != null && menuItem.IconImageSource is FileImageSource fileImageSource)
|
||||
{
|
||||
icon = fileImageSource.File;
|
||||
}
|
||||
}
|
||||
MItem item = new MItem(title, icon);
|
||||
items.Add(item);
|
||||
|
||||
_flyoutMenu.Add(item, flyoutGroup[j]);
|
||||
}
|
||||
var group = new MGroup(items);
|
||||
groups.Add(group);
|
||||
}
|
||||
GroupMenu = groups;
|
||||
}
|
||||
|
||||
void OnSelectedItemChanged(object sender, GenListItemEventArgs e)
|
||||
{
|
||||
_flyoutMenu.TryGetValue(e.Item.Data as MItem, out Element element);
|
||||
|
||||
SelectedItemChanged?.Invoke(this, new SelectedItemChangedEventArgs(element, -1));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
using Xamarin.Forms.Platform.Tizen;
|
||||
|
||||
namespace Xamarin.Forms.Material.Tizen
|
||||
{
|
||||
public class MaterialShellItemRenderer : ShellItemRenderer
|
||||
{
|
||||
public MaterialShellItemRenderer(IFlyoutController flyoutController, ShellItem item) : base(flyoutController, item)
|
||||
{
|
||||
}
|
||||
|
||||
protected override IShellTabs CreateTabs()
|
||||
{
|
||||
return new MaterialShellTabs(Forms.NativeParent);
|
||||
}
|
||||
|
||||
protected override ShellSectionNavigation CreateShellSectionNavigation(IFlyoutController flyoutController, ShellSection section)
|
||||
{
|
||||
return new MaterialShellSectionNavigation(flyoutController, section);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Material.Tizen;
|
||||
using Xamarin.Forms.Platform.Tizen;
|
||||
|
||||
[assembly: ExportRenderer(typeof(Shell), typeof(MaterialShellRenderer), new[] { typeof(VisualMarker.MaterialVisual) })]
|
||||
namespace Xamarin.Forms.Material.Tizen
|
||||
{
|
||||
public class MaterialShellRenderer : ShellRenderer
|
||||
{
|
||||
protected override INavigationDrawer CreateNavigationDrawer()
|
||||
{
|
||||
return new MaterialNavigationDrawer(Forms.NativeParent);
|
||||
}
|
||||
|
||||
protected override INavigationView CreateNavigationView()
|
||||
{
|
||||
return new MaterialNavigationView(Forms.NativeParent);
|
||||
}
|
||||
|
||||
protected override ShellItemRenderer CreateShellItem(ShellItem item)
|
||||
{
|
||||
return new MaterialShellItemRenderer(this, item);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
using Xamarin.Forms.Platform.Tizen;
|
||||
|
||||
namespace Xamarin.Forms.Material.Tizen
|
||||
{
|
||||
public class MaterialShellSectionNavigation : ShellSectionNavigation
|
||||
{
|
||||
public MaterialShellSectionNavigation(IFlyoutController flyoutController, ShellSection section) : base(flyoutController, section)
|
||||
{
|
||||
}
|
||||
|
||||
protected override ShellSectionRenderer CreateShellSection(ShellSection section)
|
||||
{
|
||||
return new MaterialShellSectionRenderer(section);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
using Xamarin.Forms.Platform.Tizen;
|
||||
|
||||
namespace Xamarin.Forms.Material.Tizen
|
||||
{
|
||||
public class MaterialShellSectionRenderer : ShellSectionRenderer
|
||||
{
|
||||
public MaterialShellSectionRenderer(ShellSection section) : base(section)
|
||||
{
|
||||
}
|
||||
|
||||
protected override IShellTabs CreateToolbar()
|
||||
{
|
||||
return new MaterialShellTabs(Forms.NativeParent);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
using System;
|
||||
using ElmSharp;
|
||||
using Tizen.NET.MaterialComponents;
|
||||
|
||||
namespace Xamarin.Forms.Platform.Tizen
|
||||
{
|
||||
public class MaterialShellTabs : MTabs, IShellTabs
|
||||
{
|
||||
public MaterialShellTabs(EvasObject parent) : base(parent)
|
||||
{
|
||||
}
|
||||
|
||||
ShellTabsType IShellTabs.Type
|
||||
{
|
||||
get => (ShellTabsType)Type;
|
||||
set
|
||||
{
|
||||
Type = (MTabsType)value;
|
||||
}
|
||||
}
|
||||
|
||||
public EvasObject TargetView
|
||||
{
|
||||
get
|
||||
{
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
using System;
|
||||
using ElmSharp;
|
||||
|
||||
namespace Xamarin.Forms.Platform.Tizen
|
||||
{
|
||||
public interface INavigationDrawer
|
||||
{
|
||||
event EventHandler Toggled;
|
||||
|
||||
EvasObject NavigationView { get; set; }
|
||||
|
||||
EvasObject Main { get; set; }
|
||||
|
||||
bool IsOpen { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using ElmSharp;
|
||||
using EColor = ElmSharp.Color;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace Xamarin.Forms.Platform.Tizen
|
||||
{
|
||||
public interface INavigationView
|
||||
{
|
||||
EvasObject Header { get; set; }
|
||||
|
||||
EColor BackgroundColor { get; set; }
|
||||
|
||||
void BuildMenu(List<List<Element>> flyout);
|
||||
|
||||
event EventHandler<SelectedItemChangedEventArgs> SelectedItemChanged;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
using System;
|
||||
using ElmSharp;
|
||||
using EColor = ElmSharp.Color;
|
||||
using EToolbarItem = ElmSharp.ToolbarItem;
|
||||
|
||||
namespace Xamarin.Forms.Platform.Tizen
|
||||
{
|
||||
public interface IShellTabs
|
||||
{
|
||||
ShellTabsType Type { get; set; }
|
||||
|
||||
EvasObject TargetView { get; }
|
||||
|
||||
EColor BackgroundColor { get; set; }
|
||||
|
||||
EToolbarItem SelectedItem { get; }
|
||||
|
||||
event EventHandler<ToolbarItemEventArgs> Selected;
|
||||
|
||||
EToolbarItem Append(string label, string icon);
|
||||
|
||||
EToolbarItem InsertBefore(EToolbarItem before, string label, string icon);
|
||||
}
|
||||
|
||||
public enum ShellTabsType
|
||||
{
|
||||
Fixed,
|
||||
Scrollable
|
||||
}
|
||||
}
|
|
@ -1,11 +1,12 @@
|
|||
using System;
|
||||
using ElmSharp;
|
||||
using EBox = ElmSharp.Box;
|
||||
|
||||
namespace Xamarin.Forms.Platform.Tizen
|
||||
{
|
||||
public class NavigationDrawer : Native.Box
|
||||
public class NavigationDrawer : Native.Box, INavigationDrawer
|
||||
{
|
||||
NavigationView _navigationView;
|
||||
EvasObject _navigationView;
|
||||
Box _mainContainer;
|
||||
Box _dimArea;
|
||||
EvasObject _main;
|
||||
|
@ -25,16 +26,10 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
|
||||
public event EventHandler Toggled;
|
||||
|
||||
public NavigationView NavigationView
|
||||
public EvasObject NavigationView
|
||||
{
|
||||
get
|
||||
{
|
||||
return _navigationView;
|
||||
}
|
||||
set
|
||||
{
|
||||
UpdateNavigationView(value);
|
||||
}
|
||||
get => _navigationView;
|
||||
set => UpdateNavigationView(value);
|
||||
}
|
||||
|
||||
public EvasObject Main
|
||||
|
@ -113,7 +108,7 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
PackEnd(_drawer);
|
||||
}
|
||||
|
||||
void UpdateNavigationView(NavigationView navigationView)
|
||||
void UpdateNavigationView(EvasObject navigationView)
|
||||
{
|
||||
if (_navigationView != null)
|
||||
{
|
||||
|
|
|
@ -1,19 +1,21 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using ElmSharp;
|
||||
using EColor = ElmSharp.Color;
|
||||
|
||||
namespace Xamarin.Forms.Platform.Tizen
|
||||
{
|
||||
public class NavigationView : Native.Box
|
||||
public class NavigationView : Native.Box, INavigationView
|
||||
{
|
||||
EvasObject _header;
|
||||
GenList _menu;
|
||||
GenItemClass _defaultClass;
|
||||
EColor _backgroundColor;
|
||||
EColor _defaultBackgroundColor = EColor.White;
|
||||
|
||||
IList<Group> _groups;
|
||||
GenItemClass _defaultClass;
|
||||
List<Group> _groups;
|
||||
IDictionary<Item, Element> _flyoutMenu = new Dictionary<Item, Element>();
|
||||
|
||||
public NavigationView(EvasObject parent) : base(parent)
|
||||
{
|
||||
|
@ -26,7 +28,7 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
_menu.BackgroundColor = _defaultBackgroundColor;
|
||||
}
|
||||
|
||||
public event EventHandler<GenListItemEventArgs> MenuItemSelected;
|
||||
public event EventHandler<SelectedItemChangedEventArgs> SelectedItemChanged;
|
||||
|
||||
public override EColor BackgroundColor
|
||||
{
|
||||
|
@ -72,17 +74,46 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
}
|
||||
}
|
||||
|
||||
public IList<Group> Menu
|
||||
public void BuildMenu(List<List<Element>> flyoutGroups)
|
||||
{
|
||||
get
|
||||
var groups = new List<Group>();
|
||||
_flyoutMenu.Clear();
|
||||
|
||||
for (int i = 0; i < flyoutGroups.Count; i++)
|
||||
{
|
||||
return _groups;
|
||||
}
|
||||
set
|
||||
{
|
||||
_groups = value;
|
||||
UpdateMenu();
|
||||
var flyoutGroup = flyoutGroups[i];
|
||||
var items = new List<Item>();
|
||||
for (int j = 0; j < flyoutGroup.Count; j++)
|
||||
{
|
||||
string title = null;
|
||||
ImageSource icon = null;
|
||||
if (flyoutGroup[j] is BaseShellItem shellItem)
|
||||
{
|
||||
title = shellItem.Title;
|
||||
|
||||
if (shellItem.FlyoutIcon is FileImageSource flyoutIcon)
|
||||
{
|
||||
icon = flyoutIcon;
|
||||
}
|
||||
}
|
||||
else if (flyoutGroup[j] is MenuItem menuItem)
|
||||
{
|
||||
title = menuItem.Text;
|
||||
if (menuItem.IconImageSource != null)
|
||||
{
|
||||
icon = menuItem.IconImageSource;
|
||||
}
|
||||
}
|
||||
Item item = new Item(title, icon);
|
||||
items.Add(item);
|
||||
|
||||
_flyoutMenu.Add(item, flyoutGroup[j]);
|
||||
}
|
||||
var group = new Group(items);
|
||||
groups.Add(group);
|
||||
}
|
||||
_groups = groups;
|
||||
UpdateMenu();
|
||||
}
|
||||
|
||||
void Initialize(EvasObject parent)
|
||||
|
@ -95,7 +126,9 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
|
||||
_menu.ItemSelected += (s, e) =>
|
||||
{
|
||||
MenuItemSelected?.Invoke(this, e);
|
||||
_flyoutMenu.TryGetValue(e.Item.Data as Item, out Element element);
|
||||
|
||||
SelectedItemChanged?.Invoke(this, new SelectedItemChangedEventArgs(element, -1));
|
||||
};
|
||||
|
||||
_menu.Show();
|
||||
|
@ -119,15 +152,14 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
if (part == "elm.swallow.icon")
|
||||
{
|
||||
var icon = ((Item)obj).Icon;
|
||||
|
||||
if (icon != null)
|
||||
{
|
||||
var image = new ElmSharp.Image(parent)
|
||||
var image = new Native.Image(parent)
|
||||
{
|
||||
MinimumWidth = Forms.ConvertToScaledPixel(24),
|
||||
MinimumHeight = Forms.ConvertToScaledPixel(24)
|
||||
};
|
||||
var result = image.Load(ResourcePath.GetPath(icon));
|
||||
var result = image.LoadFromImageSourceAsync(icon);
|
||||
return image;
|
||||
}
|
||||
else
|
||||
|
@ -181,9 +213,9 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
{
|
||||
public string Title { get; set; }
|
||||
|
||||
public string Icon { get; set; }
|
||||
public ImageSource Icon { get; set; }
|
||||
|
||||
public Item(string title, string icon = null)
|
||||
public Item(string title, ImageSource icon = null)
|
||||
{
|
||||
Title = title;
|
||||
Icon = icon;
|
||||
|
|
|
@ -13,25 +13,25 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
{
|
||||
public class ShellItemRenderer : IAppearanceObserver, IDisposable
|
||||
{
|
||||
IShellTabs _tabs = null;
|
||||
IFlyoutController _flyoutController = null;
|
||||
ShellItem _shellItem = null;
|
||||
|
||||
Native.Box _box = null;
|
||||
Toolbar _toolbar = null;
|
||||
Panel _drawer = null;
|
||||
ShellMoreToolbar _more = null;
|
||||
EToolbarItem _moreToolbarItem = null;
|
||||
|
||||
IFlyoutController _flyoutController = null;
|
||||
ShellSectionNavigation _currentSection = null;
|
||||
|
||||
Dictionary<EToolbarItem, ShellSection> _itemToSection = new Dictionary<EToolbarItem, ShellSection>();
|
||||
Dictionary<ShellSection, EToolbarItem> _sectionToitem = new Dictionary<ShellSection, EToolbarItem>();
|
||||
Dictionary<ShellSection, ShellSectionNavigation> _sectionToPage = new Dictionary<ShellSection, ShellSectionNavigation>();
|
||||
LinkedList<EToolbarItem> _toolbarItemList = new LinkedList<EToolbarItem>();
|
||||
|
||||
EColor _backgroudColor = ShellRenderer.DefaultBackgroundColor.ToNative();
|
||||
|
||||
ShellItem _shellItem = null;
|
||||
ShellSectionNavigation _currentSection = null;
|
||||
|
||||
bool _disposed = false;
|
||||
EColor _backgroudColor = ShellRenderer.DefaultBackgroundColor.ToNative();
|
||||
// The source of icon resources is https://materialdesignicons.com/
|
||||
const string _dotsIcon = "Xamarin.Forms.Platform.Tizen.Resource.dots_horizontal.png";
|
||||
|
||||
public ShellItemRenderer(IFlyoutController flyoutController, ShellItem item)
|
||||
{
|
||||
|
@ -44,8 +44,21 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
_box.LayoutUpdated += OnLayoutUpdated;
|
||||
_box.Show();
|
||||
|
||||
CreateToolbar();
|
||||
CreateMoreToolbar();
|
||||
// Create Tabs
|
||||
_tabs = CreateTabs();
|
||||
_tabs.TargetView.Show();
|
||||
Control.PackEnd(_tabs as EvasObject);
|
||||
InitializeTabs();
|
||||
|
||||
// Create More Tabs
|
||||
_more = CreateMoreToolbar();
|
||||
_more.Show();
|
||||
|
||||
_drawer = CreateDrawer();
|
||||
_drawer.Show();
|
||||
Control.PackEnd(_drawer);
|
||||
InitialzeDrawer(_more);
|
||||
|
||||
ResetToolbarItems();
|
||||
|
||||
UpdateCurrentShellSection(_shellItem.CurrentItem);
|
||||
|
@ -136,9 +149,9 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
navi.Dispose();
|
||||
}
|
||||
|
||||
if (_toolbar != null)
|
||||
if (_tabs != null)
|
||||
{
|
||||
_toolbar.Selected -= OnTabsSelected;
|
||||
_tabs.Selected -= OnTabsSelected;
|
||||
}
|
||||
_itemToSection.Clear();
|
||||
_sectionToitem.Clear();
|
||||
|
@ -150,6 +163,16 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
_disposed = true;
|
||||
}
|
||||
|
||||
protected virtual IShellTabs CreateTabs()
|
||||
{
|
||||
return new ShellTabs(Forms.NativeParent);
|
||||
}
|
||||
|
||||
protected virtual ShellSectionNavigation CreateShellSectionNavigation(IFlyoutController flyoutController, ShellSection section)
|
||||
{
|
||||
return new ShellSectionNavigation(flyoutController, section);
|
||||
}
|
||||
|
||||
void OnShellItemPropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
if (e.PropertyName == "CurrentItem")
|
||||
|
@ -175,39 +198,30 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
}
|
||||
}
|
||||
|
||||
void CreateMoreToolbar()
|
||||
Panel CreateDrawer()
|
||||
{
|
||||
if (_more != null)
|
||||
return;
|
||||
return new Panel(Forms.NativeParent);
|
||||
}
|
||||
|
||||
_more = new ShellMoreToolbar(this);
|
||||
_more.Show();
|
||||
_drawer = new Panel(Forms.NativeParent);
|
||||
void InitialzeDrawer(EvasObject content)
|
||||
{
|
||||
_drawer.SetScrollable(true);
|
||||
_drawer.SetScrollableArea(1.0);
|
||||
_drawer.Direction = PanelDirection.Bottom;
|
||||
_drawer.IsOpen = false;
|
||||
_drawer.SetContent(_more, true);
|
||||
_drawer.Show();
|
||||
Control.PackEnd(_drawer);
|
||||
_drawer.SetContent(content, true);
|
||||
}
|
||||
|
||||
void CreateToolbar()
|
||||
ShellMoreToolbar CreateMoreToolbar()
|
||||
{
|
||||
if (_toolbar != null)
|
||||
return;
|
||||
return new ShellMoreToolbar(this);
|
||||
}
|
||||
|
||||
_toolbar = new Toolbar(Forms.NativeParent)
|
||||
{
|
||||
AlignmentX = -1,
|
||||
WeightX = 1,
|
||||
BackgroundColor = _backgroudColor,
|
||||
ShrinkMode = ToolbarShrinkMode.Expand,
|
||||
Style = "material"
|
||||
};
|
||||
_toolbar.Show();
|
||||
_toolbar.Selected += OnTabsSelected;
|
||||
Control.PackEnd(_toolbar);
|
||||
void InitializeTabs()
|
||||
{
|
||||
_tabs.BackgroundColor = _backgroudColor;
|
||||
_tabs.Type = ShellTabsType.Fixed;
|
||||
_tabs.Selected += OnTabsSelected;
|
||||
}
|
||||
|
||||
void ResetToolbarItems()
|
||||
|
@ -303,9 +317,9 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
{
|
||||
EToolbarItem item = null;
|
||||
if (_moreToolbarItem == null)
|
||||
item = _toolbar.Append(section.Title, GetIconPath(section.Icon));
|
||||
item = _tabs.Append(section.Title, GetIconPath(section.Icon));
|
||||
else
|
||||
item = _toolbar.InsertBefore(_moreToolbarItem, section.Title, GetIconPath(section.Icon));
|
||||
item = _tabs.InsertBefore(_moreToolbarItem, section.Title, GetIconPath(section.Icon));
|
||||
|
||||
if (item != null)
|
||||
{
|
||||
|
@ -327,7 +341,9 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
_sectionToitem.Remove(lastSection);
|
||||
last.Delete();
|
||||
|
||||
CreateMoreToolbarItem();
|
||||
_moreToolbarItem = CreateTabsItem("More");
|
||||
_toolbarItemList.AddLast(_moreToolbarItem);
|
||||
InitializeTabsItem(_moreToolbarItem, _dotsIcon);
|
||||
|
||||
_more.AddItem(lastSection);
|
||||
_more.AddItem(section);
|
||||
|
@ -338,21 +354,21 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
}
|
||||
}
|
||||
|
||||
void CreateMoreToolbarItem()
|
||||
void InitializeTabsItem(EToolbarItem item, string resource)
|
||||
{
|
||||
if (_moreToolbarItem != null)
|
||||
return;
|
||||
|
||||
//The source of icon resources is https://materialdesignicons.com/
|
||||
ImageSource src = ImageSource.FromResource("Xamarin.Forms.Platform.Tizen.Resource.dots_horizontal.png", typeof(ShellItemRenderer).GetTypeInfo().Assembly);
|
||||
ImageSource src = ImageSource.FromResource(resource, typeof(ShellItemRenderer).GetTypeInfo().Assembly);
|
||||
Native.Image icon = new Native.Image(Forms.NativeParent);
|
||||
var task = icon.LoadFromImageSourceAsync(src);
|
||||
|
||||
_moreToolbarItem = _toolbar.Append("More", null);
|
||||
_moreToolbarItem.SetPartContent("elm.swallow.icon", icon);
|
||||
_moreToolbarItem.SetPartColor("bg", _backgroudColor);
|
||||
_moreToolbarItem.SetPartColor("underline", EColor.Transparent);
|
||||
_toolbarItemList.AddLast(_moreToolbarItem);
|
||||
item.SetPartContent("elm.swallow.icon", icon);
|
||||
item.SetPartColor("bg", _backgroudColor);
|
||||
item.SetPartColor("underline", EColor.Transparent);
|
||||
}
|
||||
|
||||
EToolbarItem CreateTabsItem(string text)
|
||||
{
|
||||
return _tabs.Append(text, null);
|
||||
}
|
||||
|
||||
void UpdateCurrentShellSection(ShellSection section)
|
||||
|
@ -372,7 +388,7 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
}
|
||||
else
|
||||
{
|
||||
native = new ShellSectionNavigation(_flyoutController, section);
|
||||
native = CreateShellSectionNavigation(_flyoutController, section);
|
||||
_sectionToPage[section] = native;
|
||||
Control.PackEnd(native);
|
||||
}
|
||||
|
@ -383,7 +399,7 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
|
||||
void OnTabsSelected(object sender, ToolbarItemEventArgs e)
|
||||
{
|
||||
if (_toolbar.SelectedItem == null)
|
||||
if (_tabs.SelectedItem == null)
|
||||
return;
|
||||
|
||||
if (e.Item == _moreToolbarItem)
|
||||
|
@ -392,7 +408,7 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
}
|
||||
else
|
||||
{
|
||||
ShellSection section = _itemToSection[_toolbar.SelectedItem];
|
||||
ShellSection section = _itemToSection[_tabs.SelectedItem];
|
||||
SetCurrentItem(section);
|
||||
}
|
||||
}
|
||||
|
@ -404,11 +420,11 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
|
||||
void OnLayoutUpdated(object sender, LayoutEventArgs e)
|
||||
{
|
||||
int toolbarHeight = _toolbar.MinimumHeight;
|
||||
int toolbarHeight = _tabs.TargetView.MinimumHeight;
|
||||
if (_shellItem.Items.Count <= 1)
|
||||
{
|
||||
toolbarHeight = 0;
|
||||
_toolbar?.Hide();
|
||||
_tabs?.TargetView.Hide();
|
||||
_drawer?.Hide();
|
||||
}
|
||||
|
||||
|
@ -416,9 +432,9 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
_currentSection?.Resize(e.Geometry.Width, e.Geometry.Height - toolbarHeight);
|
||||
if (_shellItem.Items.Count > 1)
|
||||
{
|
||||
_toolbar.Show();
|
||||
_toolbar.Move(e.Geometry.X, e.Geometry.Y + e.Geometry.Height - toolbarHeight);
|
||||
_toolbar.Resize(e.Geometry.Width, toolbarHeight);
|
||||
_tabs.TargetView.Show();
|
||||
_tabs.TargetView.Move(e.Geometry.X, e.Geometry.Y + e.Geometry.Height - toolbarHeight);
|
||||
_tabs.TargetView.Resize(e.Geometry.Width, toolbarHeight);
|
||||
if (_drawer != null)
|
||||
{
|
||||
_drawer.Show();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ElmSharp;
|
||||
|
||||
|
@ -6,11 +6,10 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
{
|
||||
public class ShellRenderer : VisualElementRenderer<Shell>, IFlyoutController
|
||||
{
|
||||
NavigationDrawer _native;
|
||||
INavigationDrawer _native;
|
||||
INavigationView _navigationView;
|
||||
ShellItemRenderer _shellItem;
|
||||
|
||||
IDictionary<int, Element> _flyoutMenu = new Dictionary<int, Element>();
|
||||
|
||||
public static readonly Color DefaultBackgroundColor = Color.FromRgb(33, 150, 243);
|
||||
public static readonly Color DefaultForegroundColor = Color.White;
|
||||
public static readonly Color DefaultTitleColor = Color.White;
|
||||
|
@ -34,17 +33,14 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
{
|
||||
if (_native == null)
|
||||
{
|
||||
_native = new NavigationDrawer(Forms.NativeParent)
|
||||
{
|
||||
NavigationView = new NavigationView(Forms.NativeParent)
|
||||
};
|
||||
SetNativeView(_native);
|
||||
|
||||
_native = CreateNavigationDrawer();
|
||||
_navigationView = CreateNavigationView();
|
||||
_native.NavigationView = _navigationView as ElmSharp.EvasObject;
|
||||
_native.Toggled += OnFlyoutIsPresentedChanged;
|
||||
SetNativeView(_native as ElmSharp.EvasObject);
|
||||
|
||||
InitializeFlyout();
|
||||
}
|
||||
|
||||
base.OnElementChanged(e);
|
||||
}
|
||||
|
||||
|
@ -56,13 +52,13 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
if (_native != null)
|
||||
{
|
||||
_native.Toggled -= OnFlyoutIsPresentedChanged;
|
||||
_native.NavigationView.MenuItemSelected -= OnItemSelected;
|
||||
_navigationView.SelectedItemChanged -= OnItemSelected;
|
||||
}
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
void InitializeFlyout()
|
||||
protected void InitializeFlyout()
|
||||
{
|
||||
((IShellController)Element).StructureChanged += OnShellStructureChanged;
|
||||
|
||||
|
@ -72,14 +68,34 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
var headerView = Platform.GetOrCreateRenderer(flyoutHeader);
|
||||
(headerView as LayoutRenderer)?.RegisterOnLayoutUpdated();
|
||||
|
||||
Size request = flyoutHeader.Measure(Forms.ConvertToScaledDP(_native.NavigationView.MinimumWidth), Forms.ConvertToScaledDP(_native.NavigationView.MinimumHeight)).Request;
|
||||
Size request = flyoutHeader.Measure(Forms.ConvertToScaledDP(_native.NavigationView.MinimumWidth),
|
||||
Forms.ConvertToScaledDP(_native.NavigationView.MinimumHeight)).Request;
|
||||
headerView.NativeView.MinimumHeight = Forms.ConvertToScaledPixel(request.Height);
|
||||
|
||||
_native.NavigationView.Header = headerView.NativeView;
|
||||
_navigationView.Header = headerView.NativeView;
|
||||
}
|
||||
_navigationView.BuildMenu(((IShellController)Element).GenerateFlyoutGrouping());
|
||||
_navigationView.SelectedItemChanged += OnItemSelected;
|
||||
}
|
||||
|
||||
BuildMenu();
|
||||
_native.NavigationView.MenuItemSelected += OnItemSelected;
|
||||
protected void OnFlyoutIsPresentedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Element.SetValueFromRenderer(Shell.FlyoutIsPresentedProperty, _native.IsOpen);
|
||||
}
|
||||
|
||||
protected virtual ShellItemRenderer CreateShellItem(ShellItem item)
|
||||
{
|
||||
return new ShellItemRenderer(this, item);
|
||||
}
|
||||
|
||||
protected virtual INavigationDrawer CreateNavigationDrawer()
|
||||
{
|
||||
return new NavigationDrawer(Forms.NativeParent);
|
||||
}
|
||||
|
||||
protected virtual INavigationView CreateNavigationView()
|
||||
{
|
||||
return new NavigationView(Forms.NativeParent);
|
||||
}
|
||||
|
||||
void UpdateCurrentItem()
|
||||
|
@ -87,7 +103,7 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
_shellItem?.Dispose();
|
||||
if (Element.CurrentItem != null)
|
||||
{
|
||||
_shellItem = new ShellItemRenderer(this, Element.CurrentItem);
|
||||
_shellItem = CreateShellItem(Element.CurrentItem);
|
||||
_shellItem.Control.SetAlignment(-1, -1);
|
||||
_shellItem.Control.SetWeight(1, 1);
|
||||
_native.Main = _shellItem.Control;
|
||||
|
@ -100,7 +116,7 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
|
||||
void UpdateFlyoutBackgroundColor()
|
||||
{
|
||||
_native.NavigationView.BackgroundColor = Element.FlyoutBackgroundColor.ToNative();
|
||||
_navigationView.BackgroundColor = Element.FlyoutBackgroundColor.ToNative();
|
||||
}
|
||||
|
||||
void UpdateFlyoutIsPresented()
|
||||
|
@ -108,71 +124,14 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
_native.IsOpen = Element.FlyoutIsPresented;
|
||||
}
|
||||
|
||||
void OnFlyoutIsPresentedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Element.SetValueFromRenderer(Shell.FlyoutIsPresentedProperty, _native.IsOpen);
|
||||
}
|
||||
|
||||
void OnItemSelected(object sender, GenListItemEventArgs e)
|
||||
{
|
||||
_flyoutMenu.TryGetValue(e.Item.Index - 1, out Element element);
|
||||
|
||||
if (element != null)
|
||||
{
|
||||
((IShellController)Element).OnFlyoutItemSelected(element);
|
||||
}
|
||||
}
|
||||
|
||||
void OnShellStructureChanged(object sender, EventArgs e)
|
||||
{
|
||||
BuildMenu();
|
||||
_navigationView.BuildMenu(((IShellController)Element).GenerateFlyoutGrouping());
|
||||
}
|
||||
|
||||
void BuildMenu()
|
||||
void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
|
||||
{
|
||||
var groups = new List<Group>();
|
||||
var flyoutGroups = ((IShellController)Element).GenerateFlyoutGrouping();
|
||||
|
||||
_flyoutMenu.Clear();
|
||||
|
||||
int index = 0;
|
||||
for (int i = 0; i < flyoutGroups.Count; i++)
|
||||
{
|
||||
var flyoutGroup = flyoutGroups[i];
|
||||
var items = new List<Item>();
|
||||
for (int j = 0; j < flyoutGroup.Count; j++)
|
||||
{
|
||||
string title = null;
|
||||
string icon = null;
|
||||
if (flyoutGroup[j] is BaseShellItem shellItem)
|
||||
{
|
||||
title = shellItem.Title;
|
||||
|
||||
if (shellItem.FlyoutIcon is FileImageSource flyoutIcon)
|
||||
{
|
||||
icon = flyoutIcon.File;
|
||||
}
|
||||
}
|
||||
else if (flyoutGroup[j] is MenuItem menuItem)
|
||||
{
|
||||
title = menuItem.Text;
|
||||
if (menuItem.IconImageSource is FileImageSource source)
|
||||
{
|
||||
icon = source.File;
|
||||
}
|
||||
}
|
||||
|
||||
items.Add(new Item(title, icon));
|
||||
|
||||
_flyoutMenu.Add(index, flyoutGroup[j]);
|
||||
index++;
|
||||
}
|
||||
|
||||
var group = new Group(items);
|
||||
groups.Add(group);
|
||||
}
|
||||
|
||||
_native.NavigationView.Menu = groups;
|
||||
((IShellController)Element).OnFlyoutItemSelected(e.SelectedItem as Element);
|
||||
}
|
||||
|
||||
void IFlyoutController.Open()
|
||||
|
@ -180,4 +139,4 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
_native.IsOpen = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -33,7 +33,7 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
_navBar = new ShellNavBar(flyoutController, this);
|
||||
_navBar.Show();
|
||||
|
||||
var renderer = new ShellSectionRenderer(section);
|
||||
var renderer = CreateShellSection(section);
|
||||
renderer.Control.Show();
|
||||
_navigationStack.AddLast(renderer.Control);
|
||||
_pageToNative[_rootPage] = renderer.Control;
|
||||
|
@ -106,6 +106,11 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
_disposed = true;
|
||||
}
|
||||
|
||||
protected virtual ShellSectionRenderer CreateShellSection(ShellSection section)
|
||||
{
|
||||
return new ShellSectionRenderer(section);
|
||||
}
|
||||
|
||||
void UpdateDisplayedPage(Page page)
|
||||
{
|
||||
if (_currentPage != null)
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using ElmSharp;
|
||||
using EToolbarItem = ElmSharp.ToolbarItem;
|
||||
using EColor = ElmSharp.Color;
|
||||
using Xamarin.Forms.Platform.Tizen.Native;
|
||||
using System.Collections.Specialized;
|
||||
|
||||
namespace Xamarin.Forms.Platform.Tizen
|
||||
{
|
||||
public class ShellSectionRenderer : IAppearanceObserver
|
||||
{
|
||||
Native.Box _box = null;
|
||||
Toolbar _toolbar = null;
|
||||
IShellTabs _tabs = null;
|
||||
Native.Page _currentContent = null;
|
||||
ShellSection _section = null;
|
||||
|
||||
|
@ -35,7 +35,12 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
_box = new Native.Box(Forms.NativeParent);
|
||||
_box.LayoutUpdated += OnLayoutUpdated;
|
||||
|
||||
CreateToolbar();
|
||||
_tabs = CreateToolbar();
|
||||
_tabs.TargetView.Show();
|
||||
Control.PackEnd(_tabs as EvasObject);
|
||||
InitializeTabs();
|
||||
|
||||
ResetToolbarItem();
|
||||
UpdateCurrentShellContent(_section.CurrentItem);
|
||||
|
||||
((IShellController)_section.Parent.Parent).AddAppearanceObserver(this, _section);
|
||||
|
@ -60,6 +65,32 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
}
|
||||
}
|
||||
|
||||
public EColor BackgroundColor
|
||||
{
|
||||
get
|
||||
{
|
||||
return _backgroundColor;
|
||||
}
|
||||
set
|
||||
{
|
||||
_backgroundColor = value;
|
||||
UpdateToolbarBackgroudColor(_backgroundColor);
|
||||
}
|
||||
}
|
||||
|
||||
public EColor ForegroundColor
|
||||
{
|
||||
get
|
||||
{
|
||||
return _foregroundCollor;
|
||||
}
|
||||
set
|
||||
{
|
||||
_foregroundCollor = value;
|
||||
UpdateToolbarForegroundColor(_foregroundCollor);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void Dispose(bool disposing)
|
||||
{
|
||||
if (_disposed)
|
||||
|
@ -80,9 +111,9 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
content.Unrealize();
|
||||
}
|
||||
|
||||
if (_toolbar != null)
|
||||
if (_tabs != null)
|
||||
{
|
||||
_toolbar.Selected -= OnTabsSelected;
|
||||
_tabs.Selected -= OnTabsSelected;
|
||||
}
|
||||
_contentToPage.Clear();
|
||||
_contentToItem.Clear();
|
||||
|
@ -94,6 +125,18 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
_disposed = true;
|
||||
}
|
||||
|
||||
protected virtual IShellTabs CreateToolbar()
|
||||
{
|
||||
return new ShellTabs(Forms.NativeParent);
|
||||
}
|
||||
|
||||
void InitializeTabs()
|
||||
{
|
||||
_tabs.BackgroundColor = _backgroundColor;
|
||||
_tabs.Type = ShellTabsType.Fixed;
|
||||
_tabs.Selected += OnTabsSelected;
|
||||
}
|
||||
|
||||
void OnSectionPropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
if (e.PropertyName == "CurrentItem")
|
||||
|
@ -136,32 +179,6 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
}
|
||||
}
|
||||
|
||||
public EColor BackgroundColor
|
||||
{
|
||||
get
|
||||
{
|
||||
return _backgroundColor;
|
||||
}
|
||||
set
|
||||
{
|
||||
_backgroundColor = value;
|
||||
UpdateToolbarBackgroudColor(_backgroundColor);
|
||||
}
|
||||
}
|
||||
|
||||
public EColor ForegroundColor
|
||||
{
|
||||
get
|
||||
{
|
||||
return _foregroundCollor;
|
||||
}
|
||||
set
|
||||
{
|
||||
_foregroundCollor = value;
|
||||
UpdateToolbarForegroundColor(_foregroundCollor);
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateToolbarBackgroudColor(EColor color)
|
||||
{
|
||||
foreach (EToolbarItem item in _toolbarItemList)
|
||||
|
@ -174,7 +191,7 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
{
|
||||
foreach (EToolbarItem item in _toolbarItemList)
|
||||
{
|
||||
if (item != _toolbar.SelectedItem)
|
||||
if (item != _tabs.SelectedItem)
|
||||
{
|
||||
item.SetPartColor("underline", EColor.Transparent);
|
||||
}
|
||||
|
@ -185,24 +202,6 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
}
|
||||
}
|
||||
|
||||
void CreateToolbar()
|
||||
{
|
||||
if (_toolbar != null)
|
||||
return;
|
||||
|
||||
_toolbar = new Toolbar(Forms.NativeParent)
|
||||
{
|
||||
BackgroundColor = _backgroundColor,
|
||||
ShrinkMode = ToolbarShrinkMode.Expand,
|
||||
Style = "material"
|
||||
};
|
||||
_toolbar.Show();
|
||||
_toolbar.Selected += OnTabsSelected;
|
||||
Control.PackEnd(_toolbar);
|
||||
|
||||
ResetToolbarItem();
|
||||
}
|
||||
|
||||
void ResetToolbarItem()
|
||||
{
|
||||
foreach (ShellContent content in _section.Items)
|
||||
|
@ -211,13 +210,13 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
}
|
||||
if (_section.Items.Count > 3)
|
||||
{
|
||||
_toolbar.ShrinkMode = ToolbarShrinkMode.Scroll;
|
||||
_tabs.Type = ShellTabsType.Scrollable;
|
||||
}
|
||||
}
|
||||
|
||||
EToolbarItem InsertToolbarItem(ShellContent content)
|
||||
{
|
||||
EToolbarItem item = _toolbar.Append(content.Title, null);
|
||||
EToolbarItem item = _tabs.Append(content.Title, null);
|
||||
item.SetPartColor("bg", _backgroundColor);
|
||||
|
||||
_toolbarItemList.AddLast(item);
|
||||
|
@ -276,12 +275,12 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
|
||||
void OnTabsSelected(object sender, ToolbarItemEventArgs e)
|
||||
{
|
||||
if (_toolbar.SelectedItem == null)
|
||||
if (_tabs.SelectedItem == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ShellContent content = _itemToContent[_toolbar.SelectedItem];
|
||||
ShellContent content = _itemToContent[_tabs.SelectedItem];
|
||||
if (_section.CurrentItem != content)
|
||||
{
|
||||
_section.SetValueFromRenderer(ShellSection.CurrentItemProperty, content);
|
||||
|
@ -336,10 +335,10 @@ namespace Xamarin.Forms.Platform.Tizen
|
|||
}
|
||||
else
|
||||
{
|
||||
toolbarHeight = _toolbar.MinimumHeight;
|
||||
toolbarHeight = _tabs.TargetView.MinimumHeight;
|
||||
}
|
||||
_toolbar.Move(e.Geometry.X, e.Geometry.Y);
|
||||
_toolbar.Resize(e.Geometry.Width, toolbarHeight);
|
||||
_tabs.TargetView.Move(e.Geometry.X, e.Geometry.Y);
|
||||
_tabs.TargetView.Resize(e.Geometry.Width, toolbarHeight);
|
||||
_currentContent?.Move(e.Geometry.X, e.Geometry.Y + toolbarHeight);
|
||||
_currentContent?.Resize(e.Geometry.Width, e.Geometry.Height - toolbarHeight);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
using System;
|
||||
using ElmSharp;
|
||||
|
||||
namespace Xamarin.Forms.Platform.Tizen
|
||||
{
|
||||
public class ShellTabs : Toolbar, IShellTabs
|
||||
{
|
||||
ShellTabsType _type;
|
||||
public ShellTabs(EvasObject parent) : base(parent)
|
||||
{
|
||||
Style = "material";
|
||||
}
|
||||
|
||||
public ShellTabsType Type
|
||||
{
|
||||
get => _type;
|
||||
set
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case ShellTabsType.Fixed:
|
||||
this.ShrinkMode = ToolbarShrinkMode.Expand;
|
||||
break;
|
||||
case ShellTabsType.Scrollable:
|
||||
this.ShrinkMode = ToolbarShrinkMode.Scroll;
|
||||
break;
|
||||
}
|
||||
_type = value;
|
||||
}
|
||||
}
|
||||
|
||||
public EvasObject TargetView
|
||||
{
|
||||
get
|
||||
{
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -7,6 +7,16 @@
|
|||
<TargetFrameworkIdentifier>Tizen</TargetFrameworkIdentifier>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<None Remove="Resource\arrow_left.png" />
|
||||
<None Remove="Resource\dots_horizontal.png" />
|
||||
<None Remove="Resource\menu.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Resource\arrow_left.png" />
|
||||
<EmbeddedResource Include="Resource\dots_horizontal.png" />
|
||||
<EmbeddedResource Include="Resource\menu.png" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Tizen.NET" Version="4.0.0" />
|
||||
|
@ -15,4 +25,5 @@
|
|||
<ItemGroup>
|
||||
<ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|