static pascal OSStatus fdsn_getset_item (ControlRef browser, DataBrowserItemID itemID, DataBrowserPropertyID property, DataBrowserItemDataRef itemData, Boolean changeValue) { static IconRef folderIcon = 0; static IconRef dsnIcon = 0; OSStatus err = noErr; if (!changeValue) switch (property) { case DBNAME_ID: if (folderIcon == 0) GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericFolderIcon, &folderIcon); if (dsnIcon == 0) GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericDocumentIcon, &dsnIcon); SetDataBrowserItemDataText (itemData, FDSN_array[itemID - DBITEM_ID - 1]); if (FDSN_type[itemID - DBITEM_ID - 1]) SetDataBrowserItemDataIcon(itemData, dsnIcon); else SetDataBrowserItemDataIcon(itemData, folderIcon); break; case kDataBrowserItemIsActiveProperty: if (itemID > DBITEM_ID && itemID <= DBITEM_ID + FDSN_nrows) err = SetDataBrowserItemDataBooleanValue (itemData, true); break; case kDataBrowserItemIsEditableProperty: err = SetDataBrowserItemDataBooleanValue (itemData, true); break; case kDataBrowserItemIsContainerProperty: err = SetDataBrowserItemDataBooleanValue (itemData, itemID == DBITEM_ID); break; case kDataBrowserContainerAliasIDProperty: break; case kDataBrowserItemParentContainerProperty: break; default: err = errDataBrowserPropertyNotSupported; break; } else err = errDataBrowserPropertyNotSupported; return err; }
OSStatus MySimpleDataCallback(ControlRef browser, DataBrowserItemID itemID, DataBrowserPropertyID property, DataBrowserItemDataRef itemData, Boolean changeValue) { static IconRef neighborhoodIcon = 0; static IconRef servicesIcon = 0; CFStringRef name; switch (property) { case kNameColumn: if (itemID <= kMaxNeighborhoods) { if (neighborhoodIcon == 0) GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericNetworkIcon, &neighborhoodIcon); SetDataBrowserItemDataIcon(itemData, neighborhoodIcon); SetDataBrowserItemDataText(itemData, gData[itemID-1]); } else { if (servicesIcon == 0) { if (gSystemIsMacOSX) GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericIDiskIcon, &servicesIcon); else GetIconRef(kOnSystemDisk, kSystemIconsCreator, kIPFileServerIcon, &servicesIcon); } SetDataBrowserItemDataIcon(itemData, servicesIcon); ParseURL(gData[itemID - 1], &name); if (name) { SetDataBrowserItemDataText(itemData, name); CFRelease(name); } } break; case kDataBrowserItemIsSelectableProperty: if (itemID <= kMaxNeighborhoods) SetDataBrowserItemDataBooleanValue(itemData, false); else SetDataBrowserItemDataBooleanValue(itemData, true); break; case kDataBrowserItemIsContainerProperty: if (itemID <= kMaxNeighborhoods) SetDataBrowserItemDataBooleanValue(itemData, true); else SetDataBrowserItemDataBooleanValue(itemData, false); break; } return noErr; }
static OSStatus OPL_DSNItemViewItemDataCallback(ControlRef itemView, DataBrowserItemID itemID, DataBrowserPropertyID property, DataBrowserItemDataRef itemData, Boolean changeValue) { OSStatus err; CFStringRef dsn; static IconRef folderIcon = 0; static IconRef dsnIcon = 0; IconRef icon = 0; if (changeValue) return errDataBrowserPropertyNotSupported; // Get TestPool instance OPL_DSNList *dsnlist = OPL_DSNList::get(itemView); if (!dsnlist) return errDataBrowserPropertyNotSupported; // Get test item dsn = dsnlist->getItem(itemID); CFStringRef str; switch (property) { case kItemViewDSNL: str = dsn; break; case kItemViewFDSNL: if (folderIcon == 0) GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericFolderIcon, &folderIcon); if (dsnIcon == 0) GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericDocumentIcon, &dsnIcon); icon = dsnlist->getItemType(itemID) ? folderIcon : dsnIcon; str = dsn; break; default: return errDataBrowserPropertyNotSupported; } // resize columns SInt16 outBaseline; Point ioBound; err = GetThemeTextDimensions(str, kThemeSystemFont, kThemeStateActive, false, &ioBound, &outBaseline); require_noerr(err, error); UInt16 width; err = GetDataBrowserTableViewNamedColumnWidth(itemView, property, &width); require_noerr(err, error); if (width < ioBound.h + 20) { err = SetDataBrowserTableViewNamedColumnWidth(itemView, property, ioBound.h + 20); require_noerr(err, error); } // set item data text err = SetDataBrowserItemDataText(itemData, str); require_noerr(err, error); if (icon) SetDataBrowserItemDataIcon(itemData, icon); error: return err; }