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 = "就绪"; }
//显示文件已有的共享权限 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); } }
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) { } }
/* * 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); } }
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(); } }
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); } } }
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(); } } }
/// <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(); } }
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)); } } }
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; } } } } } }
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(); } }
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(); }
/// <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); }
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); }
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 = "就绪"; }
/* * 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")); }
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); }
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); }
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); } }
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); } }
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"); } } }
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 */ } }
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; } } }