コード例 #1
0
            public override View NewView(Context context, ICursor cursor, ViewGroup parent)
            {
                if (cursorInflater == null)
                {
                    cursorInflater = (LayoutInflater)context.GetSystemService(Context.LayoutInflaterService);
                }
                View view = cursorInflater.Inflate(Resource.Layout.file_row, parent, false);

                view.FindViewById(Resource.Id.group_name_vdots).Click += (sender, args) =>
                {
                    Handler handler = new Handler(Looper.MainLooper);
                    handler.Post(() =>
                    {
                        PopupMenu popupMenu = new PopupMenu(context, view.FindViewById(Resource.Id.group_name_vdots));

                        AccessManager.PreparePopup(popupMenu);
                        int remove = 0;
                        int edit   = 1;
                        popupMenu.Menu.Add(0, remove, 0, context.GetString(Resource.String.remove_from_filelist)).SetIcon(Resource.Drawable.ic_menu_delete_grey);

                        TextView textView = view.FindViewById <TextView>(Resource.Id.file_filename);

                        String filename      = (string)textView.Tag;
                        IOConnectionInfo ioc = new IOConnectionInfo {
                            Path = filename
                        };
                        if (FileSelectHelper.CanEditIoc(ioc))
                        {
                            popupMenu.Menu.Add(0, edit, 0, context.GetString(Resource.String.edit)).SetIcon(Resource.Drawable.ic_menu_edit_grey);
                        }


                        popupMenu.MenuItemClick += delegate(object sender2, PopupMenu.MenuItemClickEventArgs args2)
                        {
                            if (args2.Item.ItemId == remove)
                            {
                                App.Kp2a.FileDbHelper.DeleteFile(filename);

                                cursor.Requery();
                            }
                            if (args2.Item.ItemId == edit)
                            {
                                var fsh     = new FileSelectHelper(_activity, false, RequestCodeEditIoc);
                                fsh.OnOpen += (o, newConnectionInfo) =>
                                {
                                    _activity.EditFileEntry(filename, newConnectionInfo);
                                };
                                fsh.PerformManualFileSelect(filename);
                            }
                        };
                        popupMenu.Show();
                    });
                };

                return(view);
            }
コード例 #2
0
ファイル: EntryActivity.cs プロジェクト: ypid/keepass2android
        private void ShowPopup(View anchor, string popupKey)
        {
            //PopupMenu popupMenu = new PopupMenu(this, FindViewById(Resource.Id.entry_user_name));
            PopupMenu popupMenu = new PopupMenu(this, anchor);

            AccessManager.PreparePopup(popupMenu);
            int itemId = 0;

            foreach (IPopupMenuItem popupItem in _popupMenuItems[popupKey])
            {
                popupMenu.Menu.Add(0, itemId, 0, popupItem.Text)
                .SetIcon(popupItem.Icon);
                itemId++;
            }

            popupMenu.MenuItemClick += delegate(object sender, PopupMenu.MenuItemClickEventArgs args)
            {
                _popupMenuItems[popupKey][args.Item.ItemId].HandleClick();
            };
            popupMenu.Show();
        }