public void UpdateNDEFMessage(NDEFMessage message) { CleanupRecordItems(); float y = 0; List <NDEFRecord> records = message.Records; int length = records.Count; for (int i = 0; i < length; i++) { NDEFRecord record = records[i]; RecordItem recordItem = null; switch (record.Type) { case NDEFRecordType.TEXT: recordItem = CreateRecordItem(textRecordItemPrefab); TextRecord textRecord = (TextRecord)record; recordItem.UpdateLabel(string.Format(TEXT_RECORD_FORMAT, NDEFRecordType.TEXT, textRecord.text, textRecord.languageCode, textRecord.textEncoding)); tagInfoContentLabel.text = string.Format(TEXT_RECORD_FORMAT, NDEFRecordType.TEXT, textRecord.text, textRecord.languageCode, textRecord.textEncoding); //infosSenderText.text = textRecord.text; senderController.SendValue(textRecord.text); break; case NDEFRecordType.URI: recordItem = CreateRecordItem(uriRecordItemPrefab); UriRecord uriRecord = (UriRecord)record; recordItem.UpdateLabel(string.Format(URI_RECORD_FORMAT, NDEFRecordType.URI, uriRecord.fullUri, uriRecord.uri, uriRecord.protocol)); break; case NDEFRecordType.MIME_MEDIA: recordItem = CreateRecordItem(mimeMediaRecordItemPrefab); MimeMediaRecord mimeMediaRecord = (MimeMediaRecord)record; recordItem.UpdateLabel(string.Format(MIME_MEDIA_RECORD_FORMAT, NDEFRecordType.MIME_MEDIA, mimeMediaRecord.mimeType)); ((ImageRecordItem)recordItem).LoadImage(mimeMediaRecord.mimeData); break; case NDEFRecordType.EXTERNAL_TYPE: recordItem = CreateRecordItem(externalTypeRecordItemPrefab); ExternalTypeRecord externalTypeRecord = (ExternalTypeRecord)record; int dataLength = externalTypeRecord.domainData.Length; string dataValue = Encoding.UTF8.GetString(externalTypeRecord.domainData); recordItem.UpdateLabel(string.Format(EXTERNAL_TYPE_FORMAT, NDEFRecordType.EXTERNAL_TYPE, externalTypeRecord.domainName, externalTypeRecord.domainType, dataLength, dataValue)); break; case NDEFRecordType.SMART_POSTER: recordItem = CreateRecordItem(smartPosterRecordItemPrefab); SmartPosterRecord smartPosterRecord = (SmartPosterRecord)record; int totalRecords = smartPosterRecord.titleRecords.Count + smartPosterRecord.iconRecords.Count + smartPosterRecord.extraRecords.Count; recordItem.UpdateLabel(string.Format(SMART_POSTER_RECORD_FORMAT, NDEFRecordType.SMART_POSTER, smartPosterRecord.uriRecord.fullUri, smartPosterRecord.action, smartPosterRecord.size, smartPosterRecord.mimeType, totalRecords)); break; } recordItem.RectTransform.anchoredPosition = new Vector2(0, y); y -= recordItem.RectTransform.rect.height; y -= Y_SPACING; } ndefMessageScrollRect.content.sizeDelta = new Vector2(0, Mathf.Abs(y)); }
public void OnAddRecordClick() { if (pendingMessage == null) { pendingMessage = new NDEFMessage(); } NDEFRecord record = null; string value = view.TypeDropdown.options[view.TypeDropdown.value].text; NDEFRecordType type = (NDEFRecordType)Enum.Parse(typeof(NDEFRecordType), value); switch (type) { case NDEFRecordType.TEXT: string text = view.TextInput.text; string languageCode = view.LanguageCodeInput.text; if (languageCode.Length != 2) { languageCode = "en"; } TextRecord.TextEncoding textEncoding = (TextRecord.TextEncoding)view.TextEncodingDropdown.value; record = new TextRecord(text, languageCode, textEncoding); break; case NDEFRecordType.URI: string uri = view.UriInput.text; record = new UriRecord(uri); break; case NDEFRecordType.MIME_MEDIA: string mimeType = "image/png"; //We're only using png images atm IconID iconID = (IconID)view.IconDropdown.value; byte[] mimeData = GetIconBytes(iconID); record = new MimeMediaRecord(mimeType, mimeData); break; case NDEFRecordType.EXTERNAL_TYPE: string domainName = view.DomainNameInput.text; string domainType = view.DomainTypeInput.text; string domainDataString = view.DomainDataInput.text; byte[] domainData = Encoding.UTF8.GetBytes(domainDataString); //Data represents a string in this example record = new ExternalTypeRecord(domainName, domainType, domainData); break; } pendingMessage.Records.Add(record); view.UpdateNDEFMessage(pendingMessage); }