示例#1
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.FileSelector);

            Acp.getInstance(this).request(new AcpOptions.Builder()
                                          .SetPermissions(Permission.WriteExternalStorage, Permission.ReadExternalStorage)
                                          .Build(), new AnonymousAcpListener(ps => Toast.MakeText(this, $"权限拒绝", ToastLength.Short).Show(), InitListView));

            var sureBtn = FindViewById <TextView>(Resource.Id.FolderSelector_btSure);

            sureBtn.Click += (s, e) => SureSelect();

            var cancelBtn = FindViewById <TextView>(Resource.Id.FolderSelector_btCancel);

            cancelBtn.Click += (s, e) => CancelSelect();

            var backBtn = FindViewById(Resource.Id.FolderSelector_Back);

            backBtn.Click += (s, e) => AdapterBackUp();

            OnCancelRequested += HandleCancelSelect;

            InitListView();
        }
示例#2
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.FileExpleror);

            OnCreateStart?.Invoke(this);

            Acp.getInstance(this).request(new AcpOptions.Builder()
                                          .SetPermissions(Permission.WriteExternalStorage, Permission.ReadExternalStorage)
                                          .Build(), new AnonymousAcpListener(ps => Toast.MakeText(this, $"权限拒绝", ToastLength.Short).Show(), InitListView));

            var backUpBtn = FindViewById(Resource.Id.FileExpleror_BackUp);

            backUpBtn.SetOnClickListener(new AnonymousOnClickListener(BackUpClick));

            var moreBtn = FindViewById(Resource.Id.FileExpleror_Menu);

            moreBtn.SetOnClickListener(new AnonymousOnClickListener(MoreClick));

            var closeBtn = FindViewById(Resource.Id.FileExpleror_Close);

            closeBtn.SetOnClickListener(new AnonymousOnClickListener(CloseClick));

            InitListView();
        }
示例#3
0
        public Acp.XHIE_tdfnEnumSpoCallback GetEnumNonGroupedSpoCallback(TreeNode parentNode)
        {
            return(spo =>
            {
                string spoName = Acp.XHIE_fn_szGetObjectName(spo, Acp.XHIE_OI_TYPE.TOI_INSTANCE) ??
                                 $"{spo->type} [{(int)spo:X8}]";

                if (objectNodeMap.TryGetValue(spoName, out ObjectNode objNode))
                {
                    if (objNode.ParentNode != parentNode)
                    {
                        objNode.Node.Remove();
                        parentNode.Nodes.Add(objNode.Node);
                        objNode.ParentNode = parentNode;
                    }

                    // update reference just in case
                    objNode.SuperObject = spo;
                    objNode.Node.Tag = (Pointer <SuperObject>)spo;
                    objNode.Invalidated = false;
                }
                else
                {
                    TreeNode node = NewTreeNode(spoName, IconId.Spo, spo);
                    parentNode.Nodes.Add(node);
                    objectNodeMap[spoName] = new ObjectNode(spo, node, parentNode);
                }
                return true;
            });
        }
示例#4
0
        public Acp.XHIE_tdfnEnumSpoCallback GetEnumGroupedSpoCallback(TreeNode parentNode)
        {
            return(spo =>
            {
                string familyName = Acp.XHIE_fn_szGetObjectName(spo, Acp.XHIE_OI_TYPE.TOI_FAMILY) ??
                                    $"{spo->type} [{(int)spo:X8}]";
                string modelName = Acp.XHIE_fn_szGetObjectName(spo, Acp.XHIE_OI_TYPE.TOI_MODEL) ??
                                   $"{spo->type} [{(int)spo:X8}]";
                string spoName = Acp.XHIE_fn_szGetObjectName(spo, Acp.XHIE_OI_TYPE.TOI_INSTANCE) ??
                                 $"{spo->type} [{(int)spo:X8}]";

                ObjectNode objNode = null;

                if (objectNodeMap.TryGetValue(spoName, out objNode))
                {
                    objNode.Invalidated = false;
                    // update reference just in case
                    objNode.SuperObject = spo;
                    objNode.Node.Tag = (Pointer <SuperObject>)spo;

                    if (objNode.ParentNode != parentNode)
                    {
                        RemoveAndCleanUpGroups(objNode.Node);
                        objNode.ParentNode = parentNode;
                    }
                    else
                    {
                        // parent the same, can safely skip readding groups
                        return true;
                    }
                }
                else
                {
                    TreeNode node = NewTreeNode(spoName, IconId.Instance, spo);
                    objNode = new ObjectNode(spo, node, parentNode);
                    objectNodeMap[spoName] = objNode;
                }

                TreeNode familyNode = parentNode.Nodes[familyName];
                if (familyNode == null)
                {
                    familyNode = NewTreeNode(familyName, IconId.Family);
                    parentNode.Nodes.Add(familyNode);
                }

                TreeNode modelNode = familyNode.Nodes[modelName];
                if (modelNode == null)
                {
                    modelNode = NewTreeNode(modelName, IconId.Model);
                    familyNode.Nodes.Add(modelNode);
                }

                modelNode.Nodes.Add(objNode.Node);

                return true;
            });
        }
示例#5
0
 public Acp(Acp acp)
 {
     Start = acp.Start;
     End   = acp.End;
 }
示例#6
0
        private static IntPtr HookProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam)
        {
            IntPtr returnCode = KeyboardInput.CallWindowProc(KeyboardInput.prevWndProc, hWnd, msg, wParam, lParam);;

            switch (msg)
            {
            case WM_GETDLGCODE:
                returnCode = (IntPtr)DLGC_WANTALLKEYS;
                break;

            case WM_CHAR:
                CharEntered?.Invoke(null, new CharacterEventArgs((char)wParam, (int)lParam));
                break;

            case WM_KEYDOWN:
                KeyDown?.Invoke(null, new KeyEventArgs((Keys)wParam));
                break;

            case WM_KEYUP:
                KeyUp?.Invoke(null, new KeyEventArgs((Keys)wParam));
                break;

            case WM_LBUTTONDOWN:
                MouseSelection.left   = (int)lParam & 0xffff;
                MouseSelection.top    = (int)lParam >> 16;
                MouseSelection.right  = MouseSelection.left;
                MouseSelection.bottom = MouseSelection.top;
                if (Game1.keyboardDispatcher.Subscriber is ITextBox)
                {
                    ITextBox textBox = Game1.keyboardDispatcher.Subscriber as ITextBox;
                    Acp      acp     = textBox.GetAcpByRange(MouseSelection);
                    if (acp.Start >= 0)
                    {
                        textBox.SetSelection(acp.Start, acp.End);
                        Console.WriteLine("ACPStart:{0},ACPEnd:{1}", acp.Start, acp.End);
                        Console.WriteLine("MouseDown:Left:{0},TOP:{1}RIGHT:{2}BOTTOM:{3}", MouseSelection.left, MouseSelection.top, MouseSelection.right, MouseSelection.bottom);
                        Selecting = true;
                    }
                }
                break;

            case WM_MOUSEMOVE:
                MouseSelection.right  = (int)lParam & 0xffff;
                MouseSelection.bottom = (int)lParam >> 16;
                if (Selecting && Game1.keyboardDispatcher.Subscriber is ITextBox)
                {
                    RECT range = new RECT();
                    range.left   = Math.Min(MouseSelection.left, MouseSelection.right);
                    range.top    = Math.Max(MouseSelection.top, MouseSelection.bottom);
                    range.right  = Math.Max(MouseSelection.left, MouseSelection.right);
                    range.bottom = Math.Min(MouseSelection.top, MouseSelection.bottom);
                    ITextBox textBox = Game1.keyboardDispatcher.Subscriber as ITextBox;
                    Acp      acp     = textBox.GetAcpByRange(range);
                    if (acp.Start >= 0)
                    {
                        textBox.SetSelection(acp.Start, acp.End);
                        textBox.SetSelState(MouseSelection.left > MouseSelection.right ? SelState.SEL_AE_END : SelState.SEL_AE_START);
                        Console.WriteLine("ACPStart:{0},ACPEnd:{1}", acp.Start, acp.End);
                        Console.WriteLine("MouseMove:Left:{0},TOP:{1}RIGHT:{2}BOTTOM:{3}", MouseSelection.left, MouseSelection.top, MouseSelection.right, MouseSelection.bottom);
                    }
                }
                //handle IsMouseVisable
                returnCode = KeyboardInput.CallWindowProc(KeyboardInput.prevWndProc, hWnd, msg, wParam, lParam);
                break;

            case WM_LBUTTONUP:
                Selecting = false;
                break;

#if TSF
            case EM_GETSEL:
                if (Game1.keyboardDispatcher.Subscriber is ITextBox)
                {
                    ITextBox textBox = Game1.keyboardDispatcher.Subscriber as ITextBox;
                    Acp      acp     = textBox.GetSelection();
                    Marshal.WriteInt32(wParam, acp.Start);
                    Marshal.WriteInt32(lParam, acp.End);
                }
                break;

            case EM_SETSEL:
                if (Game1.keyboardDispatcher.Subscriber is ITextBox)
                {
                    ITextBox textBox = Game1.keyboardDispatcher.Subscriber as ITextBox;
                    textBox.SetSelection((int)wParam, (int)lParam);
                }
                break;

            case EM_REPLACESEL:
                if (Game1.keyboardDispatcher.Subscriber is ITextBox)
                {
                    ITextBox textBox = Game1.keyboardDispatcher.Subscriber as ITextBox;
                    textBox.ReplaceSelection(Marshal.PtrToStringAuto(lParam));
                }
                break;

            case TF_GETSELSTATE:
                if (Game1.keyboardDispatcher.Subscriber is ITextBox)
                {
                    ITextBox textBox = Game1.keyboardDispatcher.Subscriber as ITextBox;
                    returnCode = (IntPtr)textBox.GetSelState();
                }
                break;

            case TF_GETTEXT:
                if (Game1.keyboardDispatcher.Subscriber is ITextBox)
                {
                    ITextBox textBox = Game1.keyboardDispatcher.Subscriber as ITextBox;
                    var      text    = textBox.GetText();
                    Marshal.Copy(text.ToCharArray(), 0, wParam, Math.Min(text.Length, (int)lParam));
                }
                break;

            case TF_GETTEXTLENGTH:
                if (Game1.keyboardDispatcher.Subscriber is ITextBox)
                {
                    ITextBox textBox = Game1.keyboardDispatcher.Subscriber as ITextBox;
                    returnCode = (IntPtr)textBox.GetTextLength();
                }
                break;

            case TF_GETTEXTEXT:
                if (Game1.keyboardDispatcher.Subscriber is ITextBox)
                {
                    ITextBox textBox = Game1.keyboardDispatcher.Subscriber as ITextBox;
                    Acp      acp     = (Acp)Marshal.PtrToStructure(lParam, typeof(Acp));
                    RECT     rect    = textBox.GetTextExt(acp);
                    MapWindowPoints(Game1.game1.Window.Handle, (IntPtr)0, ref rect, 2); //to screen coord
                    Marshal.StructureToPtr(rect, wParam, false);                        //text ext

                    returnCode = (IntPtr)0;                                             //if the rect clipped
                }
                break;

            case TF_QUERYINSERT:
                if (Game1.keyboardDispatcher.Subscriber is ITextBox)
                {
                    ITextBox textBox = Game1.keyboardDispatcher.Subscriber as ITextBox;
                    Acp      acp     = (Acp)Marshal.PtrToStructure(wParam, typeof(Acp));
                    textBox.QueryInsert(acp, (uint)lParam);
                    Marshal.StructureToPtr(acp, wParam, false);
                }
                break;

            case WM_KILLFOCUS:
                Game1.tsf.TerminateComposition();
                break;
#endif
            default:
                break;
            }
            return(returnCode);
        }