status_t BPartition::GetIcon(uint8** _data, size_t* _size, type_code* _type) const { if (_data == NULL || _size == NULL || _type == NULL) return B_BAD_VALUE; status_t error; if (IsMounted()) { // mounted: get the icon from the volume BVolume volume; error = GetVolume(&volume); if (error == B_OK) error = volume.GetIcon(_data, _size, _type); } else { // not mounted: retrieve the icon ourselves if (BDiskDevice* device = Device()) { BPath path; error = device->GetPath(&path); // get the icon if (error == B_OK) error = get_device_icon(path.Path(), _data, _size, _type); } else error = B_ERROR; } return error; }
/*! \brief Returns an icon for this partition. Note, that currently there are only per-device icons, i.e. the method returns the same icon for each partition of a device. But this may change in the future. \param icon Pointer to a pre-allocated BBitmap to be set to the icon of the partition. \param which Size of the icon to be retrieved. Can be \c B_MINI_ICON or \c B_LARGE_ICON. \return \c B_OK, if everything went fine, another error code otherwise. */ status_t BPartition::GetIcon(BBitmap* icon, icon_size which) const { if (icon == NULL) return B_BAD_VALUE; status_t error; if (IsMounted()) { // mounted: get the icon from the volume BVolume volume; error = GetVolume(&volume); if (error == B_OK) error = volume.GetIcon(icon, which); } else { // not mounted: retrieve the icon ourselves if (BDiskDevice* device = Device()) { BPath path; error = device->GetPath(&path); // get the icon if (error == B_OK) error = get_device_icon(path.Path(), icon, which); } else error = B_ERROR; } return error; }