public static DrawerListenerImpl GetOrAdd(DrawerLayout drawer) { return(ToolkitServiceProvider.AttachedValueProvider.GetOrAdd(drawer, "!@!@dralist", (layout, o) => { var listenerImpl = new DrawerListenerImpl(); layout.AddDrawerListener(listenerImpl); return listenerImpl; }, null)); }
public bool TryHandle(object sender, object message) { DrawerLayout drawer = FindDrawer(sender as View); if (drawer == null) { return(true); } DrawerListenerImpl.GetOrAdd(drawer); return(false); }
private static bool ViewDrawerIsOpenedGetDefaultValue(View view, IBindingMemberInfo bindingMemberInfo) { DrawerLayout drawer = FindDrawer(view); if (drawer == null) { BindingServiceProvider.VisualTreeManager.GetRootMember(view.GetType())?.TryObserve(view, DrawerInitializer.Instance); return(false); } DrawerListenerImpl.GetOrAdd(drawer); return(drawer.IsDrawerOpen(view)); }
public static void RegisterDrawerLayoutMembers() { MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.View.DrawerIsOpened, ViewDrawerIsOpenedChanged, getDefaultValue: ViewDrawerIsOpenedGetDefaultValue)); INotifiableAttachedBindingMemberInfo <DrawerLayout, bool> actionBarDrawerToggleEnabledMember = AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.DrawerLayout.ActionBarDrawerToggleEnabled, (layout, args) => { if (!args.NewValue) { return; } Activity activity = layout.Context.GetActivity(); if (activity != null) { DrawerListenerImpl .GetOrAdd(layout) .SetListener(activity, new ActionBarDrawerToggle(activity, layout, Resource.String.Empty, Resource.String.Empty)); } }); MemberProvider.Register(actionBarDrawerToggleEnabledMember); MemberProvider.Register(typeof(DrawerLayout), "ActionBarDrawerEnabled", actionBarDrawerToggleEnabledMember, true); MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.DrawerLayout.DrawerListener, (layout, args) => { var listener = args.NewValue as DrawerLayout.IDrawerListener; if (listener == null) { var func = args.NewValue as Func <DrawerLayout, DrawerLayout.IDrawerListener>; if (func != null) { listener = func(layout); } } if (listener == null) { Tracer.Warn("The DrawerListener '{0}' is not supported", args.NewValue); } DrawerListenerImpl.GetOrAdd(layout).SetListener(layout.Context, listener); })); }
public static DrawerListenerImpl GetOrAdd(DrawerLayout drawer) { return ServiceProvider.AttachedValueProvider.GetOrAdd(drawer, "!@!@dralist", (layout, o) => { var listenerImpl = new DrawerListenerImpl(); layout.SetDrawerListener(listenerImpl); return listenerImpl; }, null); }
protected override bool LoadInternal() { PlatformExtensions.LayoutInflaterFactory = (context, dataContext, factory, inflater) => { if (factory == null && !ServiceProvider.TryGet(out factory)) { factory = new ViewFactory(); } if (inflater == null) { return(new BindableLayoutInflaterCompat(factory, context)); } return(new BindableLayoutInflaterCompat(factory, inflater, context)); }; IBindingMemberProvider memberProvider = BindingServiceProvider.MemberProvider; //View memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.View.DrawerIsOpened, ViewDrawerIsOpenedChanged, getDefaultValue: ViewDrawerIsOpenedGetDefaultValue)); //Toolbar memberProvider.Register( AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.Toolbar.MenuTemplate, ToolbarMenuTemplateChanged)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.Toolbar.IsActionBar, ToolbarIsActionBarChanged)); //DrawerLayout INotifiableAttachedBindingMemberInfo <DrawerLayout, bool> actionBarDrawerToggleEnabledMember = AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.DrawerLayout.ActionBarDrawerToggleEnabled, (layout, args) => { if (!args.NewValue) { return; } Activity activity = layout.Context.GetActivity(); if (activity != null) { DrawerListenerImpl .GetOrAdd(layout) .SetListener(activity, new ActionBarDrawerToggle(activity, layout, Resource.String.Empty, Resource.String.Empty)); } }); memberProvider.Register(actionBarDrawerToggleEnabledMember); memberProvider.Register(typeof(DrawerLayout), "ActionBarDrawerEnabled", actionBarDrawerToggleEnabledMember, true); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.DrawerLayout.DrawerListener, (layout, args) => { var listener = args.NewValue as DrawerLayout.IDrawerListener; if (listener == null) { var func = args.NewValue as Func <DrawerLayout, DrawerLayout.IDrawerListener>; if (func != null) { listener = func(layout); } } if (listener == null) { Tracer.Warn("The DrawerListener '{0}' is not supported", args.NewValue); } DrawerListenerImpl.GetOrAdd(layout).SetListener(layout.Context, listener); })); //ViewPager memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.ViewPager.SelectedItem, ViewPagerSelectedItemChanged)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.ViewPager.GetPageTitleDelegate)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.ViewPager.RestoreSelectedIndex)); var itemMember = AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.ViewPager.CurrentItem, ViewPagerCurrentItemChanged, AdapterViewCurrentItemAttached, (pager, info) => pager.CurrentItem); memberProvider.Register(itemMember); memberProvider.Register(typeof(ViewPager), "SelectedIndex", itemMember, true); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.ViewGroup.ItemsSource.Override <ViewPager>(), (pager, args) => { var pagerAdapter = pager.Adapter as ItemsSourcePagerAdapter; if (pagerAdapter == null) { pagerAdapter = new ItemsSourcePagerAdapter(pager); pager.Adapter = pagerAdapter; } pagerAdapter.ItemsSource = args.NewValue; })); return(true); }