Пример #1
0
        public void OnLevelChanged()
        {
            LayerList.BeginUpdate();
            LayerList.Clear();
            string active_layer = Program.engine.MainLevel.GetActiveLayer();

            for (int i = 0; i < Program.engine.MainLevel.GetLayerCount(); ++i)
            {
                string            text = Program.engine.MainLevel.GetLayerName(i);
                EXListViewItem    item = new EXImageListViewItem(NexusEditor.Properties.Resources.layer);
                EXListViewSubItem name = new EXListViewSubItem(text);
                name.OnItemValueChanged = this.OnLayerNameChanged; name.UserData = item;
                item.AddSubItem(name);
                EXBoolListViewSubItem active = new EXBoolListViewSubItem(active_layer == text);
                active.OnItemValueChanged = this.OnActiveLayer; active.UserData = item;
                item.AddSubItem(active);
                EXBoolListViewSubItem show = new EXBoolListViewSubItem(Program.engine.MainLevel.IsLayerVisible(text));
                show.OnItemValueChanged = this.OnShowLayer; show.UserData = item;
                item.AddSubItem(show);
                EXBoolListViewSubItem islock = new EXBoolListViewSubItem(Program.engine.MainLevel.IsLayerLocked(text));
                islock.OnItemValueChanged = this.OnLockLayer; islock.UserData = item;
                item.AddSubItem(islock);
                LayerList.AddItem(item);
            }
            LayerList.EndUpdate();
            //在右侧的列表中显示当前激活层中的所有actor
            UpdateActorList(Program.engine.MainLevel.GetActiveLayer());
            OperationTooltip.Text = "就绪";
        }
Пример #2
0
        //显示文件已有的共享权限
        private void AddDepAndUserToListView(List <File_Department> deps, List <ACL_File_User> users)
        {
            lvPermission.Items.Clear();
            foreach (File_Department fd in deps)
            {
                EXListViewItem item = new EXImageListViewItem(fd.DepartmentName, imageList1.Images["dep"]);
                item.Tag = fd;
                for (int i = 0; i < _accessArray_Values.Length; i++)
                {
                    EXBoolListViewSubItem sub = CreateBoolSubItem(_accessArray_Name[i], _accessArray_Values[i], (_accessArray_Values[i] & fd.FilePermission) == _accessArray_Values[i]);
                    item.SubItems.Add(sub);
                }
                lvPermission.Items.Add(item);
            }

            foreach (ACL_File_User fu in users)
            {
                EXListViewItem item = new EXImageListViewItem(fu.UserRealName, imageList1.Images["user"]);
                item.Tag = fu;
                for (int i = 0; i < _accessArray_Values.Length; i++)
                {
                    EXBoolListViewSubItem sub = CreateBoolSubItem(_accessArray_Name[i], _accessArray_Values[i], (_accessArray_Values[i] & fu.FilePermission) == _accessArray_Values[i]);
                    item.SubItems.Add(sub);
                }
                lvPermission.Items.Add(item);
            }
        }
Пример #3
0
 private void AddFoundConnections(IEnumerable <Info> iEnumerable)
 {
     try
     {
         var l = new List <EXImageListViewItem>();
         foreach (var info in iEnumerable)
         {
             var item = new EXImageListViewItem {
                 Tag = info
             };
             item.SubItems.Add(new EXBoolListViewSubItem(true));
             item.SubItems.Add(new EXImageListViewSubItem(Connection.Icon.FromString(info.Icon).ToBitmap()));
             item.SubItems.Add(info.Description);
             item.SubItems.Add(info.Protocol.ToString());
             item.SubItems.Add(info.Hostname);
             item.SubItems.Add(info.Port.ToString());
             l.Add(item);
         }
         if (lvFoundConections.InvokeRequired)
         {
             lvFoundConections.Invoke(new MethodInvoker(() =>
             {
                 lvFoundConections.Items.AddRange(l.ToArray());
             }));
         }
         else
         {
             lvFoundConections.Items.AddRange(l.ToArray());
         }
     }
     catch (Exception)
     {
     }
 }
Пример #4
0
 /*
  * Open (or re-focus) a CardForm for the currently selected reader
  * ---------------------------------------------------------------
  */
 void OpenCardForm(uint ShareMode, uint Protocol)
 {
     if (lvReaders.SelectedItems.Count == 1)
     {
         EXImageListViewItem item = (EXImageListViewItem)lvReaders.SelectedItems[0];
         OpenCardForm(item.MyValue, item.MyImage, ShareMode, Protocol);
     }
 }
Пример #5
0
 void MiReaderInfoClick(object sender, EventArgs e)
 {
     if (lvReaders.SelectedItems.Count == 1)
     {
         EXImageListViewItem item = (EXImageListViewItem)lvReaders.SelectedItems[0];
         ReaderInfoForm      f    = new ReaderInfoForm(item.MyValue);
         f.ShowDialog();
     }
 }
Пример #6
0
 void MiAtrCopyClick(object sender, EventArgs e)
 {
     if (lvReaders.SelectedItems.Count == 1)
     {
         /* Copy the ATR to the clipboard */
         EXImageListViewItem item = (EXImageListViewItem)lvReaders.SelectedItems[0];
         if (!item.SubItems[4].Text.Equals(""))
         {
             Clipboard.SetText(item.SubItems[4].Text);
         }
     }
 }
Пример #7
0
 void MiAtrAnalysisClick(object sender, EventArgs e)
 {
     if (lvReaders.SelectedItems.Count == 1)
     {
         EXImageListViewItem item = (EXImageListViewItem)lvReaders.SelectedItems[0];
         if (!item.SubItems[4].Text.Equals(""))
         {
             CardInfoForm f = new CardInfoForm(smartcardList, item.MyValue, item.SubItems[4].Text);
             f.ShowDialog();
         }
     }
 }
Пример #8
0
        /// <summary>
        /// 初始化每列默认控件及数据
        /// </summary>
        private void AddItemText()
        {
            for (int i = 1; i < 2; i++)
            {
                exListView1.BeginUpdate();

                EXListViewItem item = new EXImageListViewItem(i.ToString());

                InitControls(item);

                exListView1.Items.Add(item);

                exListView1.EndUpdate();
            }
        }
Пример #9
0
        void LvReaderDoubleClicked(object sender, EventArgs e)
        {
            if (lvReaders.SelectedItems.Count == 1)
            {
                EXImageListViewItem item = (EXImageListViewItem)lvReaders.SelectedItems[0];

                if (item.SubItems[4].Text.Equals(""))
                {
                    /* No ATR --> can't connect to a card, must connect to the reader */
                    OpenCardForm(SCARD.SHARE_DIRECT, SCARD.PROTOCOL_NONE);
                }
                else
                {
                    /* Trying to connect to the card, not to the reader */
                    OpenCardForm(SCARD.SHARE_SHARED, (uint)(SCARD.PROTOCOL_T0 | SCARD.PROTOCOL_T1));
                }
            }
        }
Пример #10
0
 private void lstv_MouseClick(object sender, MouseEventArgs e)
 {
     if (e.Button == MouseButtons.Left)
     {
         // Check if click on the select column item
         ListViewHitTestInfo info = lvGCNListGroup.HitTest(e.X, e.Y);
         var item = info.Item;
         if (item is EXImageListViewItem)
         {
             // Ok user clicked on selection column
             EXImageListViewItem lvi = item as EXImageListViewItem;
             if (_dicoItemGCs.ContainsKey(lvi))
             {
                 List <GCNotification> gcns = _dicoItemGCs[lvi];
                 int itemindex = lvGCNListGroup.Items.IndexOf(item);
                 if (gcns.Count > 1)
                 {
                     if (gcns[0].Tag == false)
                     {
                         // On crée les fils
                         foreach (GCNotification gcn in gcns)
                         {
                             AddGCNToList(gcn, gcn.GetTypeKeyInEnglish(), new List <GCNotification>(new GCNotification[] { gcn }), true, itemindex);
                         }
                         gcns[0].Tag = true;
                     }
                     else
                     {
                         // on supprime les fils
                         for (int i = 1; i <= gcns.Count; i++)
                         {
                             EXImageListViewItem lvsub = (EXImageListViewItem)(lvGCNListGroup.Items[itemindex + 1]);
                             _dicoItemGCs.Remove(lvsub);
                             lvGCNListGroup.Items.Remove(lvsub);
                         }
                         gcns[0].Tag = false;
                     }
                 }
             }
         }
     }
 }
Пример #11
0
        public void PopulateBuilds()
        {
            var builds = from x in Program.BuildsDB
                         where (x.Matchup.PlayerRace == _myRace)
                         select x;

            if (Configuration.Instance.AllowVsXBuilds)
            {
                builds = builds.Where(build => build.Matchup.OpponentRace == _opponentRace || build.Matchup.OpponentRace == Models.Matchup.Races.Random);
            }
            else
            {
                builds = builds.Where(build => build.Matchup.OpponentRace == _opponentRace);
            }

            if (Configuration.Instance.SelectRandomBuild)
            {
                Models.Build    build   = builds.Skip(new Random().Next(builds.Count())).FirstOrDefault();
                frmBuildOverlay overlay = new frmBuildOverlay(build, true);
                overlay.Show();

                Hide();
            }
            else
            {
                lvBuilds.Items.Clear();

                foreach (var build in builds)
                {
                    EXListViewItem item = new EXImageListViewItem(build.Name, Models.Matchup.ImageFromRace(build.Matchup.PlayerRace));
                    item.Tag = build;

                    item.SubItems.Add(
                        new EXControls.EXListViewSubItem(build.Matchup.ToString())
                        );

                    lvBuilds.Items.Add(item);
                }

                lvBuilds.Sort();
            }
        }
Пример #12
0
        public void PopulateBuilds()
        {
            lvBuilds.Items.Clear();
            var builds = from x in Program.BuildsDB
                         select x;

            string search = txtBuildName.Text.Trim().ToLower();

            if (search != "")
            {
                builds = builds.Where(build => build.LowercaseName.Contains(search));
            }

            if (cbRace.SelectedIndex > 0)
            {
                builds = builds.Where(build => build.Matchup.PlayerRace == Matchup.RaceFromString(cbRace.SelectedItem.ToString()));
            }

            if (cbVsRace.SelectedIndex > 0)
            {
                builds = builds.Where(build => build.Matchup.OpponentRace == Matchup.RaceFromString(cbVsRace.SelectedItem.ToString()));
            }


            foreach (var build in builds)
            {
                EXListViewItem item = new EXImageListViewItem(build.Name, Models.Matchup.ImageFromRace(build.Matchup.PlayerRace));
                item.Tag = build;

                item.SubItems.Add(
                    new EXControls.EXListViewSubItem(build.Matchup.ToString())
                    );

                lvBuilds.Items.Add(item);
            }

            lvBuilds.Sort();

            lvBuilds.Invalidate();
        }
Пример #13
0
        /// <summary>
        /// 点击添加用户菜单项需要向ListView中添加用户共享
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void UserItem_Click(object sender, EventArgs e)
        {
            //在ListView中添加一个用户项
            ToolStripMenuItem mi = sender as ToolStripMenuItem;

            if (mi == null || mi.Tag == null)
            {
                return;
            }
            User u = mi.Tag as User;

            if (u == null)
            {
                return;
            }
            //向ListView项中添加一个ACL_File_User对象,ListViewItem中保存2种对象,1:File_Department 2:ACL_File_User
            ACL_File_User fu = new ACL_File_User
            {
                UserID         = u.UserID,
                FileID         = _fileID,
                FilePermission = GetDefaultPermission()
            };
            EXListViewItem item = new EXImageListViewItem(u.UserRealName, imageList1.Images["user"]);

            item.Tag = fu;

            for (int i = 0; i < _accessArray_Values.Length; i++)
            {
                EXBoolListViewSubItem sub = CreateBoolSubItem(_accessArray_Name[i], _accessArray_Values[i], _accessArray_Default[i]);
                item.SubItems.Add(sub);
            }
            lvPermission.Items.Add(item);

            if (!_fileUsersPreAdd.Contains(fu) && !_fileUsersOriginal.Contains(fu))
            {
                _fileUsersPreAdd.Add(fu);
            }
            _fileUsersPreDelete.Remove(fu);
        }
Пример #14
0
        private void DepItem_Click(object sender, EventArgs e)
        {
            //在ListView中添加一个部门项
            ToolStripMenuItem mi = sender as ToolStripMenuItem;

            if (mi == null || mi.Tag == null)
            {
                return;
            }
            Department d = mi.Tag as Department;

            if (d == null)
            {
                return;
            }
            File_Department fd = new File_Department
            {
                FileID         = _fileID,
                DepartmentID   = d.DepartmentID,
                FilePermission = GetDefaultPermission()
            };
            EXListViewItem item = new EXImageListViewItem(d.DepartmentName, imageList1.Images["dep"]);

            item.Tag = fd;

            for (int i = 0; i < _accessArray_Values.Length; i++)
            {
                EXBoolListViewSubItem sub = CreateBoolSubItem(_accessArray_Name[i], _accessArray_Values[i], _accessArray_Default[i]);
                item.SubItems.Add(sub);
            }
            lvPermission.Items.Add(item);

            if (!_fileDepsPreAdd.Contains(fd) && !_fileDepsOriginal.Contains(fd))
            {
                _fileDepsPreAdd.Add(fd);
            }
            _fileDepsPreDelete.Remove(fd);
        }
Пример #15
0
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            //添加新层
            //确定可用的默认层名称
            string text;

            for (int i = 1;; ++i)
            {
                text = "新作业层" + i.ToString();
                if (!Program.engine.MainLevel.IsLayerExist(text))
                {
                    break;
                }
            }

            EXListViewItem    item = new EXImageListViewItem(NexusEditor.Properties.Resources.layer);
            EXListViewSubItem name = new EXListViewSubItem(text);

            name.OnItemValueChanged = this.OnLayerNameChanged; name.UserData = item;
            item.AddSubItem(name);
            EXBoolListViewSubItem active = new EXBoolListViewSubItem(false);

            active.OnItemValueChanged = this.OnActiveLayer; active.UserData = item;
            item.AddSubItem(active);
            EXBoolListViewSubItem show = new EXBoolListViewSubItem(true);

            show.OnItemValueChanged = this.OnShowLayer; show.UserData = item;
            item.AddSubItem(show);
            EXBoolListViewSubItem islock = new EXBoolListViewSubItem(true);

            islock.OnItemValueChanged = this.OnLockLayer; islock.UserData = item;
            item.AddSubItem(islock);
            LayerList.AddItem(item);
            // 在编辑器中对应的增加一层
            Program.engine.MainLevel.CreateNewLayer(text);
            OperationTooltip.Text = "就绪";
        }
Пример #16
0
        /*
         * Popup menu when the user right-clicks on a reader in the list
         * -------------------------------------------------------------
         */
        void ReaderPopupMenuOpening(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (lvReaders.SelectedItems.Count != 1)
            {
                /* The menu shall appear only when a reader is selected */
                e.Cancel = true;
                return;
            }

            EXImageListViewItem item = (EXImageListViewItem)lvReaders.SelectedItems[0];

            bool AtrEmpty = item.SubItems[4].Text.Equals("");             /* ATR empty -> No card in the reader */

            /* We could connect to the card only if there's one */
            miOpenShared.Enabled    = !AtrEmpty;
            miOpenExclusive.Enabled = !AtrEmpty;

            /* We could work on the ATR only if there's one */
            miAtrAnalysis.Enabled = !AtrEmpty;
            miAtrCopy.Enabled     = !AtrEmpty;

            /* Only SpringCard readers could provided informations */
            miReaderInfo.Enabled = (item.MyValue.Contains("SpringCard"));
        }
Пример #17
0
        void UpdateReaderList()
        {
            Console.WriteLine(DateTime.Now.ToString(NowFormat));
            Console.WriteLine("\tThe list of reader(s) has changed");

            lvReaders.BeginUpdate();
            lvReaders.Groups.Clear();
            lvReaders.Items.Clear();
            string[] readers = reader_list.Readers;

            if (readers != null)
            {
                if (readers.Length == 0)
                {
                    lbReaders.Text = "No PC/SC reader";
                }
                else
                if (readers.Length == 1)
                {
                    lbReaders.Text = "1 PC/SC reader";
                }
                else
                {
                    lbReaders.Text = String.Format("{0} PC/SC readers", readers.Length);
                }

                Array.Sort(readers, new ReaderComparer());

                ListViewGroup non_springcard_readers_group = null;
                ListViewGroup this_springcard_reader_group = null;
                int           last_reader_number           = -1;

                for (int i = 0; i < readers.Length; i++)
                {
                    string reader_name = readers[i];

                    Console.WriteLine("\t\t" + reader_name);

                    int reader_number = ReaderComparer.ReaderNumber(reader_name);
                    if (last_reader_number != reader_number)
                    {
                        this_springcard_reader_group = null;
                        last_reader_number           = reader_number;
                    }

                    ListViewGroup reader_group;
                    int           reader_image = ReaderImageGeneric;

                    if (reader_name.StartsWith("SpringCard"))
                    {
                        if (reader_name.Contains(" Contactless"))
                        {
                            reader_image = ReaderImageContactless;
                        }
                        else
                        if (reader_name.Contains(" Nfc"))
                        {
                            reader_image = ReaderImageContactless;
                        }
                        else
                        if (reader_name.Contains(" Rfid"))
                        {
                            reader_image = ReaderImageContactless;
                        }
                        else
                        if (reader_name.Contains(" Contact"))
                        {
                            reader_image = ReaderImageContact;
                        }
                        else
                        if (reader_name.Contains(" SAM"))
                        {
                            reader_image = ReaderImageSimSam;
                        }

                        if (this_springcard_reader_group == null)
                        {
                            this_springcard_reader_group = new ListViewGroup("", ReaderComparer.ReaderName(reader_name) + " " + reader_number);
                            lvReaders.Groups.Add(this_springcard_reader_group);
                        }
                        reader_group = this_springcard_reader_group;
                    }
                    else
                    {
                        if (non_springcard_readers_group == null)
                        {
                            non_springcard_readers_group = new ListViewGroup("", "Other readers");
                            lvReaders.Groups.Add(non_springcard_readers_group);
                        }
                        reader_group = non_springcard_readers_group;
                    }

                    EXImageListViewItem item = new EXImageListViewItem(readerImages.Images[reader_image]);

                    item.MyValue = reader_name;
                    item.UseItemStyleForSubItems = false;

                    item.SubItems.Add(new EXImageListViewSubItem(reader_name));
                    item.SubItems.Add(new EXImageListViewSubItem(""));
                    item.SubItems.Add(new EXImageListViewSubItem(""));
                    item.SubItems.Add(new EXImageListViewSubItem(""));
                    item.SubItems[4].Font = new Font("Consolas", 9F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(0)));

                    reader_group.Items.Add(item);

                    lvReaders.Items.Add(item);
                }
            }
            else
            {
                lbReaders.Text = "No PC/SC reader";
            }
            lvReaders.EndUpdate();
            LvReaderSelectedIndexChanged(null, null);
        }
Пример #18
0
        private void AddGCNToList(GCNotification gcn, String keyIcon, List <GCNotification> lst, bool special = false, int index = -1)
        {
            String sLat2  = CoordConvHMI.ConvertDegreesToDDMM(gcn.dlat, true);
            String sLon2  = CoordConvHMI.ConvertDegreesToDDMM(gcn.dlon, false);
            String coord  = /*"DD° MM.MMM: " + */ sLat2 + " " + sLon2 + "\r\n";
            String radius = gcn.distance.ToString() + " Km";

            String lbl = gcn.name;

            if (special)
            {
                lbl = gcn.GetTypeKeyInEnglish();
            }

            EXImageListViewItem lvi = null;

            if (special)
            {
                lvi = new EXImageListViewItem(lbl, _daddy.GetImageSized("Nothing"));
                EXImageListViewSubItem svi2 = new EXImageListViewSubItem(_daddy.GetImageSized(keyIcon));
                lvi.SubItems.Add(svi2);
            }
            else
            {
                lvi = new EXImageListViewItem(lbl, _daddy.GetImageSized(keyIcon));
                EXImageListViewSubItem svi2 = new EXImageListViewSubItem("");
                lvi.SubItems.Add(svi2);
            }
            if (lst.Count != 1)
            {
                lvi.Font = MyTools.ChangeFontStyle(lvi.Font, true, false);

                EXImageListViewSubItem svi2 = new EXImageListViewSubItem("");
                lvi.SubItems.Add(svi2);
            }
            else
            {
                if (gcn.checknotif)
                {
                    EXImageListViewSubItem svi2 = new EXImageListViewSubItem(_daddy.GetImageSized("bulletgreen"));
                    lvi.SubItems.Add(svi2);
                }
                else
                {
                    EXImageListViewSubItem svi2 = new EXImageListViewSubItem(_daddy.GetImageSized("bulletred"));
                    lvi.SubItems.Add(svi2);
                }
            }

            EXListViewSubItem svi = null;

            if (special)
            {
                svi = new EXListViewSubItem("");
                lvi.SubItems.Add(svi);
                svi = new EXListViewSubItem("");
                lvi.SubItems.Add(svi);
            }
            else
            {
                svi = new EXListViewSubItem(coord);
                lvi.SubItems.Add(svi);
                svi = new EXListViewSubItem(radius);
                lvi.SubItems.Add(svi);
            }
            String kind = "";

            if (lst.Count == 1)
            {
                foreach (String k in gcn.kindofnotifnames)
                {
                    kind += k + " - ";
                }
            }
            svi = new EXListViewSubItem(kind);
            lvi.SubItems.Add(svi);

            if (special)
            {
                lvGCNListGroup.Items.Insert(index + 1, lvi);
            }
            else
            {
                lvGCNListGroup.Items.Add(lvi);
            }

            _dicoItemGCs.Add(lvi, lst);
        }
Пример #19
0
                private void button1_Click(object sender, EventArgs e)
                {
                    try
                    {
                        /*if (AllFieldsSet() == false)
                        {
                            Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg,
                                                                Language.strPleaseFillAllFields);
                            return;
                        }*/

                        lvSSHFileBrowser.Items.Clear();
                        var ssh = new SftpClient(txtHost.Text, int.Parse(this.txtPort.Text), txtUser.Text, txtPassword.Text);
                        ssh.Connect();
                        var res = ssh.ListDirectory(txtRemoteFolderPath.Text).ToList().OrderBy(file => !file.IsDirectory).ThenBy(file => file.Name);
                        var l = new List<EXImageListViewItem>();
                        foreach (var item in res)
                        {
                            if (item.Name==".")
                            {
                                continue;
                            }
                            EXImageListViewItem imglstvitem = new EXImageListViewItem();
                            imglstvitem.MyImage = item.IsDirectory ? global::My.Resources.Resources.Folder : global::My.Resources.Resources.File;
                            imglstvitem.MyValue = item.FullName;
                            imglstvitem.Tag = item;
                            imglstvitem.SubItems.Add(item.Name);
                            imglstvitem.SubItems.Add(item.IsDirectory ? "" : Tools.Misc.LengthToHumanReadable(item.Length));
                            l.Add(imglstvitem);
                        }
                        ssh.Disconnect();
                        lvSSHFileBrowser.Items.AddRange(l.ToArray());
                        lvSSHFileBrowser.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
Пример #20
0
                private void btnLocalBrowserGo_Click(object sender, EventArgs e)
                {
                    try
                    {
                        var l = new List<EXImageListViewItem>();
                        lvLocalBrowser.Items.Clear();
                        if (txtLocalBrowserPath.Text == "")
                        {
                            foreach (string str in Directory.GetLogicalDrives())
                            {
                                EXImageListViewItem imglstvitem = new EXImageListViewItem();
                                imglstvitem.MyImage = global::My.Resources.Resources.Folder;
                                imglstvitem.MyValue = str;
                                imglstvitem.Tag = "Folder";
                                imglstvitem.SubItems.Add(str);
                                imglstvitem.SubItems.Add("");
                                lvLocalBrowser.Items.Add(imglstvitem);
                            }
                            return;
                        }
                        EXImageListViewItem li = new EXImageListViewItem();
                        li.MyValue = txtLocalBrowserPath.Text;
                        li.Tag = "[..]";
                        li.SubItems.Add("[..]");
                        li.SubItems.Add("");
                        l.Add(li);
                        var d = Directory.GetDirectories(txtLocalBrowserPath.Text);
                        foreach (var s1 in d)
                        {
                            EXImageListViewItem imglstvitem = new EXImageListViewItem();
                            imglstvitem.MyImage = global::My.Resources.Resources.Folder;
                            imglstvitem.MyValue = s1;
                            imglstvitem.Tag = "Folder";
                            imglstvitem.SubItems.Add(Path.GetFileName(s1));
                            imglstvitem.SubItems.Add("");
                            l.Add(imglstvitem);
                        }
                        var s = Directory.GetFiles(txtLocalBrowserPath.Text);

                        foreach (var s1 in s)
                        {
                            EXImageListViewItem imglstvitem = new EXImageListViewItem();
                            imglstvitem.MyImage = global::My.Resources.Resources.File;
                            imglstvitem.MyValue = s1;
                            imglstvitem.Tag = "File";
                            imglstvitem.SubItems.Add(Path.GetFileName(s1));
                            imglstvitem.SubItems.Add(Tools.Misc.LengthToHumanReadable(new FileInfo(s1).Length));
                            /*li.SubItems.Add()*/
                            l.Add(imglstvitem);
                        }

                        lvLocalBrowser.Items.AddRange(l.ToArray());
                        lvLocalBrowser.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
                        lvLocalBrowser.Refresh();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
Пример #21
0
        void MiATRRegistryClick(object sender, EventArgs e)
        {
            EXImageListViewItem item = (EXImageListViewItem)lvReaders.SelectedItems[0];

            if (!item.SubItems[4].Text.Equals(""))
            {
                IntPtr hContext    = IntPtr.Zero;
                uint   _last_error = SCARD.EstablishContext(SCARD.SCOPE_SYSTEM, IntPtr.Zero, IntPtr.Zero, ref hContext);
                if (_last_error != SCARD.S_SUCCESS)
                {
                    MessageBox.Show("Error: can't establish context");
                    return;
                }

                CardBuffer cardBufAtr = new CardBuffer(item.SubItems[4].Text);
                byte[]     atr        = cardBufAtr.GetBytes();

                byte[] dummy    = new byte[99];
                int    cchCards = -1;              /*	SCARD_AUTOALLOCATE */
                _last_error = SCardListCards(hContext,
                                             atr,
                                             null,
                                             0,
                                             null,
                                             ref cchCards);

                if (_last_error != SCARD.S_SUCCESS)
                {
                    MessageBox.Show("Error: can't list cards");
                    return;
                }

                if (cchCards <= 1)
                {
                    /* Card not found. We need to add it. */
                    string name = "NoMinidriver-" + item.SubItems[4].Text;
                    _last_error = SCardIntroduceCardType(hContext,
                                                         name,
                                                         null,
                                                         null,
                                                         0,
                                                         atr,
                                                         null,
                                                         (uint)atr.Length);

                    if (_last_error != SCARD.S_SUCCESS)
                    {
                        MessageBox.Show("Error: can't introduce card type");
                        return;
                    }

                    _last_error = SCardSetCardTypeProviderName(hContext,
                                                               name,
                                                               2, /*	SCARD_PROVIDER_CSP	*/
                                                               "$DisableSCPnP$");

                    if (_last_error != SCARD.S_SUCCESS)
                    {
                        MessageBox.Show("Error: can't set card type provider name");
                        return;
                    }
                    else
                    {
                        MessageBox.Show("This card will now be recognized by the system");
                    }
                }
                else
                {
                    MessageBox.Show("This card is already recognized by the system");
                }
            }
        }
Пример #22
0
        void UpdateReaderState(string ReaderName, uint ReaderState, CardBuffer CardAtr)
        {
            Console.WriteLine(DateTime.Now.ToString(NowFormat));
            Console.WriteLine("\tStatus changed for '" + ReaderName + "'");
            Console.WriteLine("\t\tState: " + SCARD.ReaderStatusToString(ReaderState));
            if (CardAtr != null)
            {
                Console.WriteLine("\t\tATR: " + CardAtr.AsString(" "));
            }

            for (int i = 0; i < lvReaders.Items.Count; i++)
            {
                EXImageListViewItem item = (EXImageListViewItem)lvReaders.Items[i];

                if (item.MyValue.Equals(ReaderName))
                {
                    /* Reader found in the list */
                    /* ------------------------ */

                    lvReaders.BeginUpdate();

                    /* Set status image */
                    int    statusImage;
                    string statusText;

                    if ((ReaderState & SCARD.STATE_PRESENT) != 0)
                    {
                        /* Card is present */
                        if ((ReaderState & SCARD.STATE_INUSE) != 0)
                        {
                            /* Card in use */
                            if ((ReaderState & SCARD.STATE_EXCLUSIVE) != 0)
                            {
                                /* Card in exclusive use */
                                statusText  = "In use (exclusive)";
                                statusImage = StatusImageExclusive;
                            }
                            else
                            {
                                statusText  = "In use (shared)";
                                statusImage = StatusImageInUse;
                            }
                        }
                        else
                        if ((ReaderState & SCARD.STATE_MUTE) != 0)
                        {
                            /* Card is mute */
                            statusText  = "Mute";
                            statusImage = StatusImageMute;
                        }
                        else
                        if ((ReaderState & SCARD.STATE_UNPOWERED) != 0)
                        {
                            /* Card is not powered */
                            statusText  = "Present, not powered";
                            statusImage = StatusImagePresent;
                        }
                        else
                        {
                            /* Card is powered */
                            statusText  = "Present, powered";
                            statusImage = StatusImagePresent;
                        }
                    }
                    else
                    if ((ReaderState & SCARD.STATE_UNAVAILABLE) != 0)
                    {
                        /* Problem */
                        statusText  = "Reserved (direct)";
                        statusImage = StatusImageUnavailable;
                    }
                    else
                    if ((ReaderState & SCARD.STATE_IGNORE) != 0)
                    {
                        /* Problem */
                        statusText  = "Error (ignore)";
                        statusImage = StatusImageError;
                    }
                    else
                    if ((ReaderState & SCARD.STATE_UNKNOWN) != 0)
                    {
                        /* Problem */
                        statusText  = "Error (status unknown)";
                        statusImage = StatusImageUnknown;
                    }
                    else
                    if ((ReaderState & SCARD.STATE_EMPTY) != 0)
                    {
                        /* No card */
                        statusText  = "Absent";
                        statusImage = StatusImageAbsent;
                    }
                    else
                    {
                        /* Problem */
                        statusText  = "Bad status";
                        statusImage = StatusImageError;
                    }

                    EXImageListViewSubItem subitem = (EXImageListViewSubItem)item.SubItems[2];
                    subitem.MyImage       = statusImages.Images[statusImage];
                    item.SubItems[3].Text = statusText;

                    if (CardAtr != null)
                    {
                        item.SubItems[4].Text = CardAtr.AsString("");
                    }
                    else
                    {
                        item.SubItems[4].Text = "";
                    }

                    lvReaders.EndUpdate();
                    break;
                }
                /* NB : we ignore the event in case the reader is not already listed */
            }
        }
Пример #23
0
        void LvReaderKeyPress(object sender, KeyPressEventArgs e)
        {
            if (lvReaders.SelectedItems.Count == 1)
            {
                /* A reader is selected */
                EXImageListViewItem item = (EXImageListViewItem)lvReaders.SelectedItems[0];

                bool AtrEmpty = item.SubItems[4].Text.Equals("");

                switch (e.KeyChar)
                {
                case (char)Keys.Return:

                    /* Enter key -> open the CardForm */
                    if (AtrEmpty)
                    {
                        /* ATR empty -> No card in the reader -> DIRECT mode */
                        OpenCardForm(SCARD.SHARE_DIRECT, SCARD.PROTOCOL_NONE);
                    }
                    else
                    {
                        /* Connect to the card (default is SHARED mode) */
                        OpenCardForm(SCARD.SHARE_SHARED, (uint)(SCARD.PROTOCOL_T0 | SCARD.PROTOCOL_T1));
                    }

                    e.Handled = true;
                    break;

                case 'S':
                case 's':

                    /* Shared */
                    if (!AtrEmpty)
                    {
                        OpenCardForm(SCARD.SHARE_SHARED, (uint)(SCARD.PROTOCOL_T0 | SCARD.PROTOCOL_T1));
                        e.Handled = true;
                    }
                    break;

                case 'X':
                case 'x':

                    /* Exclusive */
                    if (!AtrEmpty)
                    {
                        OpenCardForm(SCARD.SHARE_EXCLUSIVE, (uint)(SCARD.PROTOCOL_T0 | SCARD.PROTOCOL_T1));
                        e.Handled = true;
                    }
                    break;

                case 'D':
                case 'd':

                    /* Direct */
                    OpenCardForm(SCARD.SHARE_DIRECT, SCARD.PROTOCOL_NONE);
                    e.Handled = true;
                    break;

                case 'A':
                case 'a':

                    /* ATR analysis */
                    if (!AtrEmpty)
                    {
                        e.Handled = true;
                    }
                    break;

                case 'C':
                case 'c':

                    /* ATR copy */
                    if (!AtrEmpty)
                    {
                        Clipboard.SetText(item.SubItems[4].Text);
                        e.Handled = true;
                    }
                    break;

                case 'R':
                case 'r':

                    /* Reader info */
                    if (item.MyValue.Contains("SpringCard"))
                    {
                        e.Handled = true;
                    }
                    break;

                default:
                    break;
                }
            }
        }