Ejemplo n.º 1
0
        private void TryRestoreSelectedIndex(Activity activity, ActionBar actionBar)
        {
            if (actionBar.GetNavigationMode() == ActionBarNavigationMode.Standard)
            {
                return;
            }
            bool result;

            if (bool.TryParse(RestoreTabSelectedIndex, out result) && !result)
            {
                return;
            }
            var activityView = activity as IActivityView;

            if (activityView == null)
            {
                return;
            }
            if (_activityViewOnSaveInstanceStateDelegate == null)
            {
                _activityViewOnSaveInstanceStateDelegate = ActivityViewOnSaveInstanceState;
            }
            activityView.Mediator.SaveInstanceState += _activityViewOnSaveInstanceStateDelegate;

            var bundle = activityView.Mediator.Bundle;

            if (bundle != null)
            {
                var i = bundle.GetInt(SelectedTabIndexKey, int.MinValue);
                if (i != int.MinValue && i != actionBar.SelectedNavigationIndex)
                {
                    actionBar.SetSelectedNavigationItem(i);
                }
            }
        }
Ejemplo n.º 2
0
        private static void ActionBarSelectedItemChanged(ActionBar actionBar, AttachedMemberChangedEventArgs <object> args)
        {
            switch (actionBar.GetNavigationMode())
            {
            case ActionBarNavigationMode.List:
#if APPCOMPAT
                var adapter = actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceAdapter);
#else
                var adapter = actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceAdapter);
#endif

                if (adapter == null || adapter.ItemsSource == null)
                {
                    return;
                }
                if (args.NewValue == null)
                {
                    args.Member.SetSingleValue(actionBar, adapter.GetRawItem(actionBar.SelectedNavigationIndex));
                }
                else
                {
                    actionBar.SetSelectedNavigationItem(adapter.GetPosition(args.NewValue));
                }
                break;

            case ActionBarNavigationMode.Tabs:
#if APPCOMPAT
                var tabGenerator = actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceGenerator) as IItemsSourceGeneratorEx;
#else
                var tabGenerator = actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceGenerator) as IItemsSourceGeneratorEx;
#endif
                if (tabGenerator == null)
                {
                    var tabValue = args.NewValue as ActionBar.Tab;
                    if (tabValue != null && tabValue.Position != actionBar.SelectedNavigationIndex)
                    {
                        tabValue.Select();
                    }
                }
                else
                {
                    if (args.NewValue == null)
                    {
                        object ctx = actionBar.SelectedNavigationIndex < 0 ? null : actionBar.SelectedTab;
                        if (ctx != null)
                        {
                            ctx = ctx.DataContext();
                        }
                        args.Member.SetSingleValue(actionBar, ctx);
                    }
                    else
                    {
                        tabGenerator.SelectedItem = args.NewValue;
                    }
                }
                break;
            }
        }
Ejemplo n.º 3
0
        private static void ActionBarUpdateItemsSource(ActionBar actionBar)
        {
            switch (actionBar.GetNavigationMode())
            {
            case ActionBarNavigationMode.List:
#if APPCOMPAT
                IItemsSourceAdapter sourceAdapter = actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceAdapter);
#else
                IItemsSourceAdapter sourceAdapter = actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceAdapter);
#endif
                if (sourceAdapter == null)
                {
                    sourceAdapter = AndroidToolkitExtensions.ItemsSourceAdapterFactory(actionBar, actionBar.ThemedContext, DataContext.Empty);
#if APPCOMPAT
                    actionBar.SetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceAdapter, sourceAdapter);
#else
                    actionBar.SetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceAdapter, sourceAdapter);
#endif
                    actionBar.SetListNavigationCallbacks(sourceAdapter, new ActionBarNavigationListener(actionBar));
                }
#if APPCOMPAT
                sourceAdapter.ItemsSource = actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSource);
#else
                sourceAdapter.ItemsSource = actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSource);
#endif
                break;

            case ActionBarNavigationMode.Standard:
#if APPCOMPAT
                actionBar.SetBindingMemberValue(AttachedMembersCompat.ActionBar.SelectedItem, BindingExtensions.NullValue);
#else
                actionBar.SetBindingMemberValue(AttachedMembers.ActionBar.SelectedItem, BindingExtensions.NullValue);
#endif

                actionBar.SetListNavigationCallbacks(null, null);
#if APPCOMPAT
                actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceGenerator)?.SetItemsSource(null);
                var adapter = actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceAdapter);
#else
                actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceGenerator)?.SetItemsSource(null);
                var adapter = actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceAdapter);
#endif
                if (adapter != null)
                {
                    adapter.ItemsSource = null;
                }
                break;

            case ActionBarNavigationMode.Tabs:
#if APPCOMPAT
                actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceGenerator)?.SetItemsSource(actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSource));
#else
                actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceGenerator)?.SetItemsSource(actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSource));
#endif

                break;
            }
        }
        private void TryRestoreSelectedIndex(Activity activity, ActionBar actionBar)
        {
            if (actionBar.GetNavigationMode() == ActionBarNavigationMode.Standard)
                return;
            bool result;
            if (bool.TryParse(RestoreTabSelectedIndex, out result) && !result)
                return;
            var activityView = activity as IActivityView;
            if (activityView == null)
                return;
            activityView.Mediator.SaveInstanceState += ActivityViewOnSaveInstanceState;

            var bundle = activityView.Mediator.Bundle;
            if (bundle != null)
            {
                var i = bundle.GetInt(SelectedTabIndexKey, int.MinValue);
                if (i != int.MinValue && i != actionBar.SelectedNavigationIndex)
                    actionBar.SetSelectedNavigationItem(i);
            }
        }