void SelectorControl::GetPropertyData(const CMIOObjectPropertyAddress& address, UInt32 qualifierDataSize, const void* qualifierData, UInt32 dataSize, UInt32& dataUsed, void* data) const { switch (address.mSelector) { case kCMIOSelectorControlPropertyCurrentItem: ThrowIf(dataSize != GetPropertyDataSize(address, qualifierDataSize, qualifierData), CAException(kCMIOHardwareBadPropertySizeError), "CMIO::DP::SelectorControl::GetPropertyData: wrong data size for kCMIOSelectorControlPropertyCurrentItem"); *static_cast<UInt32*>(data) = GetCurrentItemID(); dataUsed = sizeof(UInt32); break; case kCMIOSelectorControlPropertyAvailableItems: { UInt32 numberItemsToGet = std::min((UInt32)(dataSize / sizeof(UInt32)), GetNumberItems()); UInt32* itemIDs = static_cast<UInt32*>(data); for(UInt32 index = 0; index < numberItemsToGet; ++index) { itemIDs[index] = GetItemIDForIndex(index); } dataUsed = numberItemsToGet * sizeof(UInt32); } break; case kCMIOSelectorControlPropertyItemName: ThrowIf(dataSize != GetPropertyDataSize(address, qualifierDataSize, qualifierData), CAException(kCMIOHardwareBadPropertySizeError), "CMIO::DP::SelectorControl::GetPropertyData: wrong data size for kCMIOSelectorControlPropertyItemName"); ThrowIf(qualifierDataSize != sizeof(UInt32), CAException(kCMIOHardwareBadPropertySizeError), "CMIO::DP::SelectorControl::GetPropertyData: wrong qualifier size for kCMIOSelectorControlPropertyItemName"); *static_cast<CFStringRef*>(data) = CopyItemNameByID(*static_cast<const UInt32*>(qualifierData)); dataUsed = sizeof(CFStringRef); break; default: Control::GetPropertyData(address, qualifierDataSize, qualifierData, dataSize, dataUsed, data); break; }; }
UInt32 SelectorControl::GetCurrentItemIndex() const { return GetItemIndexForID(GetCurrentItemID()); }
UInt32 ZKMORHP_SelectorControl::GetCurrentItemIndex() const { UInt32 theItemID = GetCurrentItemID(); return GetItemIndexForID(theItemID); }