|
|
1.1 ! root 1: /* ! 2: Copyright (c) 2008 TrueCrypt Foundation. All rights reserved. ! 3: ! 4: Governed by the TrueCrypt License 2.4 the full text of which is contained ! 5: in the file License.txt included in TrueCrypt binary and source code ! 6: distribution packages. ! 7: */ ! 8: ! 9: #include "System.h" ! 10: #include "Main/GraphicUserInterface.h" ! 11: #include "Main/Resources.h" ! 12: #include "DeviceSelectionDialog.h" ! 13: ! 14: namespace TrueCrypt ! 15: { ! 16: DeviceSelectionDialog::DeviceSelectionDialog (wxWindow* parent) ! 17: : DeviceSelectionDialogBase (parent) ! 18: { ! 19: wxBusyCursor busy; ! 20: ! 21: list <int> colPermilles; ! 22: ! 23: DeviceListCtrl->InsertColumn (ColumnDevice, LangString["DEVICE"], wxLIST_FORMAT_LEFT, 1); ! 24: colPermilles.push_back (447); ! 25: #ifdef TC_WINDOWS ! 26: DeviceListCtrl->InsertColumn (ColumnDrive, LangString["DRIVE"], wxLIST_FORMAT_LEFT, 1); ! 27: colPermilles.push_back (91); ! 28: #endif ! 29: DeviceListCtrl->InsertColumn (ColumnSize, LangString["SIZE"], wxLIST_FORMAT_RIGHT, 1); ! 30: colPermilles.push_back (153); ! 31: #ifdef TC_WINDOWS ! 32: DeviceListCtrl->InsertColumn (ColumnName, LangString["VOLUME_LABEL"], wxLIST_FORMAT_LEFT, 1); ! 33: colPermilles.push_back (307); ! 34: #else ! 35: DeviceListCtrl->InsertColumn (ColumnMountPoint, LangString["MOUNT_POINT"], wxLIST_FORMAT_LEFT, 1); ! 36: colPermilles.push_back (396); ! 37: #endif ! 38: ! 39: wxImageList *imageList = new wxImageList (16, 12, true); ! 40: imageList->Add (Resources::GetDriveIconBitmap(), Resources::GetDriveIconMaskBitmap()); ! 41: DeviceListCtrl->AssignImageList (imageList, wxIMAGE_LIST_SMALL); ! 42: ! 43: DeviceList = Core->GetHostDevices(); ! 44: ! 45: foreach_ref (HostDevice &device, DeviceList) ! 46: { ! 47: if (device.Size == 0) ! 48: continue; ! 49: ! 50: vector <wstring> fields (DeviceListCtrl->GetColumnCount()); ! 51: ! 52: if (DeviceListCtrl->GetItemCount() > 0) ! 53: Gui->AppendToListCtrl (DeviceListCtrl, fields); ! 54: ! 55: #ifdef TC_WINDOWS ! 56: fields[ColumnDevice] = StringFormatter (L"{0} {1}:", _("Harddisk"), device.SystemNumber); ! 57: fields[ColumnDrive] = device.MountPoint; ! 58: fields[ColumnName] = device.Name; ! 59: #else ! 60: fields[ColumnDevice] = wstring (device.Path) + L":"; ! 61: fields[ColumnMountPoint] = device.MountPoint; ! 62: #endif ! 63: fields[ColumnSize] = Gui->SizeToString (device.Size); ! 64: Gui->AppendToListCtrl (DeviceListCtrl, fields, 0, &device); ! 65: ! 66: foreach_ref (HostDevice &partition, device.Partitions) ! 67: { ! 68: fields[ColumnDevice] = ! 69: #ifndef TC_WINDOWS ! 70: wstring (L" ") + ! 71: #endif ! 72: wstring (partition.Path); ! 73: ! 74: #ifdef TC_WINDOWS ! 75: fields[ColumnDrive] = partition.MountPoint; ! 76: fields[ColumnName] = partition.Name; ! 77: #else ! 78: fields[ColumnMountPoint] = partition.MountPoint; ! 79: #endif ! 80: fields[ColumnSize] = Gui->SizeToString (partition.Size); ! 81: Gui->AppendToListCtrl (DeviceListCtrl, fields, -1, &partition); ! 82: } ! 83: } ! 84: ! 85: Gui->SetListCtrlWidth (DeviceListCtrl, 73); ! 86: Gui->SetListCtrlHeight (DeviceListCtrl, 16); ! 87: Gui->SetListCtrlColumnWidths (DeviceListCtrl, colPermilles); ! 88: ! 89: Fit(); ! 90: Layout(); ! 91: Center(); ! 92: ! 93: StdButtonsOK->Disable(); ! 94: StdButtonsOK->SetDefault(); ! 95: } ! 96: ! 97: void DeviceSelectionDialog::OnListItemActivated (wxListEvent& event) ! 98: { ! 99: if (StdButtonsOK->IsEnabled()) ! 100: EndModal (wxID_OK); ! 101: } ! 102: ! 103: void DeviceSelectionDialog::OnListItemDeselected (wxListEvent& event) ! 104: { ! 105: if (DeviceListCtrl->GetSelectedItemCount() == 0) ! 106: StdButtonsOK->Disable(); ! 107: } ! 108: ! 109: void DeviceSelectionDialog::OnListItemSelected (wxListEvent& event) ! 110: { ! 111: HostDevice *device = (HostDevice *) (event.GetItem().GetData()); ! 112: if (device) ! 113: { ! 114: SelectedDevice = *device; ! 115: StdButtonsOK->Enable(); ! 116: } ! 117: else ! 118: StdButtonsOK->Disable(); ! 119: } ! 120: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.