private void refreshDrives() { VbdCombiItem prevSelection = comboBoxDrive.SelectedItem as VbdCombiItem; inRefresh = true; foreach (object o in comboBoxDrive.Items) { VbdCombiItem v = o as VbdCombiItem; v.vbd.PropertyChanged -= new PropertyChangedEventHandler(vbd_PropertyChanged); } comboBoxDrive.Items.Clear(); if (VM != null) { List <VBD> vbds = VM.Connection.ResolveAll(VM.VBDs); if (vbds == null) { // let's come back when the cache is populated VM.Connection.CachePopulated += new EventHandler <EventArgs>(CachePopulatedMethod); return; } vbds.RemoveAll(delegate(VBD vbd) { return(!vbd.IsCDROM && !vbd.IsFloppyDrive); }); vbds.Sort(); int dvdCount = 0; int floppyCount = 0; foreach (VBD vbd in vbds) { vbd.PropertyChanged += new PropertyChangedEventHandler(vbd_PropertyChanged); if (vbd.IsCDROM) { dvdCount++; VbdCombiItem i = new VbdCombiItem(); i.name = string.Format(Messages.DVD_DRIVE_LABEL_NUMBERED, dvdCount); i.vbd = vbd; comboBoxDrive.Items.Add(i); } else { floppyCount++; VbdCombiItem i = new VbdCombiItem(); i.name = string.Format(Messages.FLOPPY_DRIVE_LABEL_NUMBERED, floppyCount); i.vbd = vbd; comboBoxDrive.Items.Add(i); } } } if (comboBoxDrive.Items.Count == 0) { comboBoxDrive.Visible = false; cdChanger1.Visible = false; labelSingleDvd.Visible = false; linkLabel1.Visible = false; panel1.Visible = false; newCDLabel.Visible = vm != null && !vm.is_control_domain; } else if (comboBoxDrive.Items.Count == 1) { comboBoxDrive.Visible = false; cdChanger1.Visible = true; labelSingleDvd.Text = comboBoxDrive.Items[0].ToString(); labelSingleDvd.Visible = true; tableLayoutPanel1.ColumnStyles[0].Width = labelSingleDvd.Width; newCDLabel.Visible = false; panel1.Visible = true; linkLabel1.Visible = true; } else { comboBoxDrive.Visible = true; cdChanger1.Visible = true; labelSingleDvd.Visible = false; panel1.Visible = true; newCDLabel.Visible = false; linkLabel1.Visible = true; } inRefresh = false; // Restore prev selection or select the top item by default if (prevSelection != null) { foreach (object o in comboBoxDrive.Items) { VbdCombiItem v = o as VbdCombiItem; if (v.vbd.uuid == prevSelection.vbd.uuid) { comboBoxDrive.SelectedItem = o; return; } } } if (comboBoxDrive.Items.Count == 0) { comboBoxDrive.SelectedItem = null; } else { comboBoxDrive.SelectedItem = comboBoxDrive.Items[0]; } }
private void refreshDrives() { VbdCombiItem prevSelection = comboBoxDrive.SelectedItem as VbdCombiItem; inRefresh = true; foreach (object o in comboBoxDrive.Items) { VbdCombiItem v = o as VbdCombiItem; v.vbd.PropertyChanged -= new PropertyChangedEventHandler(vbd_PropertyChanged); } comboBoxDrive.Items.Clear(); if (VM != null) { List<VBD> vbds = VM.Connection.ResolveAll(VM.VBDs); if (vbds == null) { // let's come back when the cache is populated VM.Connection.CachePopulated += new EventHandler<EventArgs>(CachePopulatedMethod); return; } vbds.RemoveAll(delegate(VBD vbd) { return !vbd.IsCDROM && !vbd.IsFloppyDrive; }); vbds.Sort(); int dvdCount = 0; int floppyCount = 0; foreach (VBD vbd in vbds) { vbd.PropertyChanged +=new PropertyChangedEventHandler(vbd_PropertyChanged); if (vbd.IsCDROM) { dvdCount++; VbdCombiItem i = new VbdCombiItem(); i.name = string.Format(Messages.DVD_DRIVE_LABEL_NUMBERED, dvdCount); i.vbd = vbd; comboBoxDrive.Items.Add(i); } else { floppyCount++; VbdCombiItem i = new VbdCombiItem(); i.name = string.Format(Messages.FLOPPY_DRIVE_LABEL_NUMBERED, floppyCount); i.vbd = vbd; comboBoxDrive.Items.Add(i); } } } if (comboBoxDrive.Items.Count == 0) { comboBoxDrive.Visible = false; cdChanger1.Visible = false; labelSingleDvd.Visible = false; linkLabel1.Visible = false; panel1.Visible = false; newCDLabel.Visible = vm != null && !vm.is_control_domain; } else if (comboBoxDrive.Items.Count == 1) { comboBoxDrive.Visible = false; cdChanger1.Visible = true; labelSingleDvd.Text = comboBoxDrive.Items[0].ToString(); labelSingleDvd.Visible = true; tableLayoutPanel1.ColumnStyles[0].Width = labelSingleDvd.Width; newCDLabel.Visible = false; panel1.Visible = true; linkLabel1.Visible = true; } else { comboBoxDrive.Visible = true; cdChanger1.Visible = true; labelSingleDvd.Visible = false; panel1.Visible = true; newCDLabel.Visible = false; linkLabel1.Visible = true; } inRefresh = false; // Restore prev selection or select the top item by default if (prevSelection != null) { foreach (object o in comboBoxDrive.Items) { VbdCombiItem v = o as VbdCombiItem; if (v.vbd.uuid == prevSelection.vbd.uuid) { comboBoxDrive.SelectedItem = o; return; } } } if (comboBoxDrive.Items.Count == 0) comboBoxDrive.SelectedItem = null; else comboBoxDrive.SelectedItem = comboBoxDrive.Items[0]; }