MonoMobile.Views.ViewParser.CheckForToolbarItems C# (CSharp) Method

CheckForToolbarItems() public method

public CheckForToolbarItems ( object view ) : List
view object
return List
		public List<CommandBarButtonItem> CheckForToolbarItems(object view)
		{
			var buttonList = new List<CommandBarButtonItem>();
			var members = GetMethods(view);

			foreach(var member in members)
			{
				var buttonAttribute = member.GetCustomAttribute<ToolbarButtonAttribute>();
				var captionAttribute = member.GetCustomAttribute<CaptionAttribute>();

				if (buttonAttribute != null)
				{
					var caption = captionAttribute != null ? captionAttribute.Caption : !buttonAttribute.ButtonType.HasValue && buttonAttribute.CellViewType == null ? member.Name.Capitalize() : null;
					
					UIView buttonView = null;
					var title = caption;
					if (buttonAttribute.CellViewType != null)
					{	
						buttonView = Activator.CreateInstance(buttonAttribute.CellViewType) as UIView;
						
						CheckForInstanceProperties(view, member, buttonView);

						var tappable = buttonView as ICommandButton;
						if (tappable != null)
						{
							tappable.Command = GetCommandForMember(view, member); 
							tappable.Command.CanExecuteChanged += HandleCanExecuteChanged;
						}
					}

					var button = CreateCommandBarButton(view, member, title, buttonView, buttonAttribute.Style, buttonAttribute.ButtonType, buttonAttribute.Location);
					
					if (button != null)
					{		
						if (button.Command != null)
						{
							button.Command.CanExecuteChanged += HandleCanExecuteChanged;
						}

						if (button.Location == BarButtonLocation.Center)
							buttonList.Add(_LeftFlexibleSpace);

						buttonList.Add(button);

						if (button.Location == BarButtonLocation.Center)
							buttonList.Add(_RightFlexibleSpace);
					}
				}
			}
			
			if (buttonList.Count > 0)
			{
				var sortedList = buttonList.OrderBy(button=>button.Order).Distinct().ToList();
				return sortedList;
			}	

			return null;
		}