コード例 #1
0
        private void OnEmptyTab()
        {
#if APPCOMPAT
            _actionBar.SetBindingMemberValue(AttachedMembersCompat.ActionBar.SelectedItem, BindingExtensions.NullValue);
#else
            _actionBar.SetBindingMemberValue(AttachedMembers.ActionBar.SelectedItem, BindingExtensions.NullValue);
#endif
            var value = ActionBarTemplate.GetTabContentId(_actionBar);
            if (value == null)
            {
                return;
            }
            _actionBar.ThemedContext.GetActivity()?.FindViewById <FrameLayout>(value.Value)?.RemoveAllViews();
        }
コード例 #2
0
            public void OnTabSelected(ActionBar.Tab tab, FragmentTransaction ft)
            {
                if (_cleared)
                {
                    return;
                }
                var bar         = (ActionBar)tab.GetBindingMemberValue(AttachedMembers.Object.Parent);
                var placeHolder = ActionBarTemplate.GetTabContentId(bar);
                var activity    = bar.ThemedContext.GetActivity();

                SetContent(tab, ft, placeHolder, activity, bar);
                //Set selected item data context or tab
                var selectedItem = bar.GetBindingMemberValue(ItemsSourceGeneratorBase.MemberDescriptor) == null ? tab : tab.DataContext();

#if APPCOMPAT
                bar.SetBindingMemberValue(AttachedMembersCompat.ActionBar.SelectedItem, selectedItem);
#else
                bar.SetBindingMemberValue(AttachedMembers.ActionBar.SelectedItem, selectedItem);
#endif
            }
コード例 #3
0
        /// <summary>
        ///     Perform any final cleanup before an activity is destroyed.
        /// </summary>
        public override void OnDestroy(Action baseOnDestroy)
        {
            Tracer.Info("OnDestroy activity({0})", Target);
            var handler = Destroyed;

            if (handler != null)
            {
                handler(Activity, EventArgs.Empty);
            }
            if (_bindings != null)
            {
                foreach (IDataBinding dataBinding in _bindings)
                {
                    dataBinding.Dispose();
                }
                _bindings = null;
            }
            MenuTemplate.Clear(_menu);
#if !API8
            ActionBarTemplate.Clear(Activity);
#endif
            base.OnDestroy(baseOnDestroy);
        }
コード例 #4
0
 private static void ActivityViewOnDestroyed(Activity sender, EventArgs args)
 {
     ((IActivityView)sender).Mediator.Destroyed -= DestroyedHandler;
     ActionBarTemplate.Clear(sender);
 }
コード例 #5
0
        protected override void CreateChildControls()
        {
            Controls.Clear();

            var effectiveActionRowTemplate      = ActionRowTemplate ?? Page.LoadTemplate(DefaultActionRowPath);
            var effectiveFiltersTemplate        = FiltersTemplate ?? Page.LoadTemplate(DefaultFilterControlsPath);
            var effectivePagingControlsTemplate = PagingControlsTemplate ?? Page.LoadTemplate(DefaultPagingControlsPath);

            // Add upper action row
            if (ActionBarTemplate != null || EffectiveLocaleSelectionEnabled)
            {
                var upperActionRow = new ActionRowContainer(EffectiveLocaleSelectionEnabled, ActionBarTemplate != null, EffectiveDisplayLocale);
                Controls.Add(upperActionRow);
                upperActionRow.CssClass = "listing-action-row listing-action-row-upper";

                effectiveActionRowTemplate.InstantiateIn(upperActionRow);
                var upperActionBarPlaceholder = upperActionRow
                                                .FindControlRecursive("ActionBarPlaceholder")
                                                .FirstOrDefault();

                if (upperActionBarPlaceholder != null && ActionBarTemplate != null)
                {
                    ActionBarTemplate.InstantiateIn(upperActionBarPlaceholder);
                }
            }

            // Add filters
            if (Filters.Any() || ExpandableFilters.Any())
            {
                var filterContainer = new Panel();
                Controls.Add(filterContainer);
                filterContainer.CssClass = "listing-filters";
                effectiveFiltersTemplate.InstantiateIn(filterContainer);

                // Update filter contexts
                int controlIndex                   = 0;
                var displayLocaleParameter         = new Parameter(QueryBuilder.DisplayLocaleParameterName, DbType.String, EffectiveDisplayLocale);
                var currentCustomerLocaleParameter = new Parameter(QueryBuilder.CurrentCustomerLocaleParameterName, DbType.String, CurrentCustomerLocale);

                foreach (var filterControl in _Filters ?? Enumerable.Empty <FilterControl>())
                {
                    filterControl.SetContext(
                        new FilterControlContext(
                            displayLocaleParameter,
                            currentCustomerLocaleParameter,
                            controlIndex++));
                }

                foreach (var filterControl in _ExpandableFilters ?? Enumerable.Empty <FilterControl>())
                {
                    filterControl.SetContext(
                        new FilterControlContext(
                            displayLocaleParameter,
                            currentCustomerLocaleParameter,
                            controlIndex++));
                }

                // Find control placeholders
                var filterControlsPlaceholder = filterContainer
                                                .FindControlRecursive("FilterControlsPlaceholder", 64)
                                                .FirstOrDefault();

                var expandableFilterControlsPlaceholder = filterContainer
                                                          .FindControlRecursive("ExpandableFilterControlsPlaceholder", 64)
                                                          .FirstOrDefault();

                // Group filters for each placeholder
                var defaultFilterActionsTemplate = Page.LoadTemplate(DefaultFilterActionsPath);
                var upperFilterActionsContainer  = new PlaceHolder();
                var lowerFilterActionsContainer  = new PlaceHolder();
                defaultFilterActionsTemplate.InstantiateIn(upperFilterActionsContainer);
                defaultFilterActionsTemplate.InstantiateIn(lowerFilterActionsContainer);

                var normalFilters =
                    (expandableFilterControlsPlaceholder == null
                                                ? (_Filters ?? Enumerable.Empty <Control>()).Concat(_ExpandableFilters)
                                                : (_Filters ?? Enumerable.Empty <Control>()))
                    .Concat(new Control[] { upperFilterActionsContainer });

                var expandableFilters = expandableFilterControlsPlaceholder == null || _ExpandableFilters == null
                                        ? Enumerable.Empty <Control>()
                                        : _ExpandableFilters.Concat(new Control[] { lowerFilterActionsContainer });

                // Apply filters to placeholders
                if (filterControlsPlaceholder != null)
                {
                    PopulateContainerWithFilterControls(normalFilters, filterControlsPlaceholder);
                }

                if (expandableFilterControlsPlaceholder != null)
                {
                    PopulateContainerWithFilterControls(expandableFilters, expandableFilterControlsPlaceholder);
                }
            }

            // Initialize filter query
            var filterClauses = BuildFilterClauses(
                (_Filters ?? Enumerable.Empty <FilterControl>())
                .Concat(_ExpandableFilters ?? Enumerable.Empty <FilterControl>()));

            var parameterizedQuery = _QueryBuilder.BuildDataSourceQuery(
                templates: _QueryBuilderTemplates,
                queryContext: new QueryBuilder.QueryContext(SqlQuery, EffectiveSortExpression, EffectiveSortDirection, EffectivePageStart, EffectivePageSize, EffectiveDisplayLocale, CurrentCustomerLocale),
                filterClauses: filterClauses);

            _SqlDataSource.SelectParameters.Clear();
            foreach (var parameter in parameterizedQuery.Parameters)
            {
                _SqlDataSource.SelectParameters.Add(parameter);
            }

            foreach (Parameter parameter in SqlParameters)
            {
                _SqlDataSource.SelectParameters.Add(parameter);
            }

            // Setup SqlDataSource
            _SqlDataSource.ID = "FilteredListingDataSource";
            _SqlDataSource.ConnectionString            = DB.GetDBConn();
            _SqlDataSource.ProviderName                = "System.Data.SqlClient";
            _SqlDataSource.DataSourceMode              = SqlDataSourceMode.DataSet;
            _SqlDataSource.SelectCommandType           = SqlDataSourceCommandType.Text;
            _SqlDataSource.SelectCommand               = parameterizedQuery.Sql;
            _SqlDataSource.CancelSelectOnNullParameter = false;
            _SqlDataSource.EnableViewState             = false;
            _SqlDataSource.Selecting += SqlDataSource_Selecting;
            _SqlDataSource.Selected  += SqlDataSource_Selected;
            Controls.Add(_SqlDataSource);

            // Add upper paging controls
            _UpperPagingControls.Controls.Clear();
            Controls.Add(_UpperPagingControls);
            _UpperPagingControls.CssClass = "listing-paging listing-paging-upper";
            effectivePagingControlsTemplate.InstantiateIn(_UpperPagingControls);

            // Add listing template
            var listing = new NamingContainerPanel();

            Controls.Add(listing);
            listing.CssClass = "listing";
            if (ListingTemplate != null)
            {
                ListingTemplate.InstantiateIn(listing);

                if (ListingTemplateInstantiated != null)
                {
                    ListingTemplateInstantiated(this, EventArgs.Empty);
                }
            }

            // Add lower paging controls
            _LowerPagingControls.Controls.Clear();
            Controls.Add(_LowerPagingControls);
            _LowerPagingControls.CssClass = "listing-paging listing-paging-lower";
            effectivePagingControlsTemplate.InstantiateIn(_LowerPagingControls);

            // Add lower action bar
            if (ActionBarTemplate != null || EffectiveLocaleSelectionEnabled)
            {
                var lowerActionRow = new ActionRowContainer(EffectiveLocaleSelectionEnabled, ActionBarTemplate != null, EffectiveDisplayLocale);
                Controls.Add(lowerActionRow);
                lowerActionRow.CssClass = "listing-action-row listing-action-row-lower";

                effectiveActionRowTemplate.InstantiateIn(lowerActionRow);
                var lowerActionBarPlaceholder = lowerActionRow
                                                .FindControlRecursive("ActionBarPlaceholder")
                                                .FirstOrDefault();

                if (lowerActionBarPlaceholder != null && ActionBarTemplate != null)
                {
                    ActionBarTemplate.InstantiateIn(lowerActionBarPlaceholder);
                }
            }

            ClearChildViewState();
        }