| // Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "cros-disks/disk.h" |
| |
| #include <algorithm> |
| |
| using std::string; |
| |
| namespace { |
| |
| const char kUSBDriveName[] = "USB Drive"; |
| const char kSDCardName[] = "SD Card"; |
| const char kOpticalDiscName[] = "Optical Disc"; |
| const char kMobileDeviceName[] = "Mobile Device"; |
| const char kDVDName[] = "DVD"; |
| const char kFallbackPresentationName[] = "External Drive"; |
| |
| } // namespace |
| |
| namespace cros_disks { |
| |
| Disk::Disk() |
| : is_drive_(false), |
| is_hidden_(false), |
| is_auto_mountable_(false), |
| is_mounted_(false), |
| is_media_available_(false), |
| is_on_boot_device_(true), |
| is_on_removable_device_(false), |
| is_rotational_(false), |
| is_read_only_(false), |
| is_virtual_(true), |
| media_type_(DEVICE_MEDIA_UNKNOWN), |
| device_capacity_(0), |
| bytes_remaining_(0) { |
| } |
| |
| string Disk::GetPresentationName() const { |
| if (!label_.empty()) { |
| string name = label_; |
| std::replace(name.begin(), name.end(), '/', '_'); |
| return name; |
| } |
| |
| switch (media_type_) { |
| case DEVICE_MEDIA_USB: |
| return kUSBDriveName; |
| case DEVICE_MEDIA_SD: |
| return kSDCardName; |
| case DEVICE_MEDIA_OPTICAL_DISC: |
| return kOpticalDiscName; |
| case DEVICE_MEDIA_MOBILE: |
| return kMobileDeviceName; |
| case DEVICE_MEDIA_DVD: |
| return kDVDName; |
| default: |
| return kFallbackPresentationName; |
| } |
| } |
| |
| DBusDisk Disk::ToDBusFormat() const { |
| DBusDisk disk; |
| disk[kDeviceIsDrive].writer().append_bool(is_drive()); |
| disk[kDevicePresentationHide].writer().append_bool(is_hidden()); |
| disk[kDeviceIsMounted].writer().append_bool(is_mounted()); |
| disk[kDeviceIsMediaAvailable].writer().append_bool(is_media_available()); |
| disk[kDeviceIsOnBootDevice].writer().append_bool(is_on_boot_device()); |
| disk[kDeviceIsOnRemovableDevice].writer().append_bool( |
| is_on_removable_device()); |
| disk[kDeviceIsVirtual].writer().append_bool(is_virtual()); |
| disk[kNativePath].writer().append_string(native_path().c_str()); |
| disk[kDeviceFile].writer().append_string(device_file().c_str()); |
| disk[kIdUuid].writer().append_string(uuid().c_str()); |
| disk[kIdLabel].writer().append_string(label().c_str()); |
| disk[kVendorId].writer().append_string(vendor_id().c_str()); |
| disk[kVendorName].writer().append_string(vendor_name().c_str()); |
| disk[kProductId].writer().append_string(product_id().c_str()); |
| disk[kProductName].writer().append_string(product_name().c_str()); |
| disk[kDriveModel].writer().append_string(drive_model().c_str()); |
| disk[kDriveIsRotational].writer().append_bool(is_rotational()); |
| disk[kDeviceMediaType].writer().append_uint32(media_type()); |
| disk[kDeviceSize].writer().append_uint64(device_capacity()); |
| disk[kDeviceIsReadOnly].writer().append_bool(is_read_only()); |
| DBus::MessageIter iter = disk[kDeviceMountPaths].writer(); |
| iter << mount_paths(); |
| return disk; |
| } |
| |
| } // namespace cros_disks |