예제 #1
0
 public void OnNavigatedTo(INavigationParameters parameters)
 {
     if (Device.RuntimePlatform == Device.iOS)
     {
         Device.BeginInvokeOnMainThread(() =>
         {
             SemanticExtensions.SetSemanticFocus(this);
         });
     }
 }
예제 #2
0
 void SetSemanticFocusButton_Clicked(object sender, System.EventArgs e)
 {
     SemanticExtensions.SetSemanticFocus(semanticFocusLabel);
 }
예제 #3
0
 void Announce_Clicked(object sender, EventArgs e)
 {
     SemanticExtensions.Announce("This is the announcement text");
 }
예제 #4
0
        void AddTypeAndNamespace(ITypeSymbol typeSymbol)
        {
            if (typeSymbol.TypeKind == TypeKind.TypeParameter)
            {
                return;
            }
            else if (typeSymbol.TypeKind == TypeKind.Array)
            {
                AddTypeAndNamespace(((IArrayTypeSymbol)typeSymbol).ElementType);
            }
            else if (typeSymbol.TypeKind == TypeKind.Pointer)
            {
                AddTypeAndNamespace(((IPointerTypeSymbol)typeSymbol).PointedAtType);
            }
            else
            {
                bool importTypeSymbol;
                if (typeSymbol.ContainingType == null)
                {
                    importTypeSymbol = true;
                }
                else
                {
                    // do not import type symbol, because this symbol will need
                    // to be written as a dotted member of the parent type symbol
                    // ParentType.ThisType
                    // import ParentType;
                    importTypeSymbol = false;
                    AddTypeAndNamespace(typeSymbol.ContainingType);
                }

                //
                // Check if this type has already been added
                //
                if (importTypeSymbol)
                {
                    if (importTypesAlreadyAdded.Contains(typeSymbol))
                    {
                        Debug.Assert(typesAlreadyAdded.Contains(typeSymbol));
                        // if type was imported, it must have also been added
                        return;
                    }
                    importTypesAlreadyAdded.Add(typeSymbol);
                }
                else
                {
                    if (typesAlreadyAdded.Contains(typeSymbol))
                    {
                        return; // Type has already been added
                    }
                }
                typesAlreadyAdded.Add(typeSymbol);

                //
                // Add the type
                //
                INamedTypeSymbol namedTypeSymbol = typeSymbol as INamedTypeSymbol;
                uint             arity           = (namedTypeSymbol == null) ? 0 : (uint)namedTypeSymbol.Arity;
                if (String.IsNullOrEmpty(typeSymbol.Name))
                {
                    throw new InvalidOperationException();
                }

                String module = generator.GetModuleAndContainingType(typeSymbol);
                DType  dType  = SemanticExtensions.DotNetToD(TypeContext.Default,
                                                             module, typeSymbol.Name, arity);

                AddNewType(importTypeSymbol && !dType.isPrimitive, module, dType.name, arity);

                if (arity > 0)
                {
                    foreach (ITypeSymbol genericTypeArg in namedTypeSymbol.TypeArguments)
                    {
                        AddTypeAndNamespace(genericTypeArg);
                    }
                }
            }
        }