void AddWidgets(List<OuyaMod> ouyaMods, bool searchByInstalled, bool searchByPublished) { StringBuilder sb = new StringBuilder(); foreach (OuyaMod ouyaMod in ouyaMods) { WidgetOuyaMod widget = new WidgetOuyaMod() { m_instance = ouyaMod, m_category = ouyaMod.getCategory(), m_description = ouyaMod.getDescription(), m_isDownloading = ouyaMod.isDownloading(), m_isFlagged = ouyaMod.isFlagged(), m_isInstalled = ouyaMod.isInstalled(), m_isPublished = ouyaMod.isPublished(), m_metaData = ouyaMod.getMetaData(), m_ratingCount = ouyaMod.getRatingCount(), m_ratingAverage = ouyaMod.getRatingAverage(), m_title = ouyaMod.getTitle(), m_userRating = ouyaMod.getUserRating(), m_searchByInstalled = searchByInstalled, m_searchByPublished = searchByPublished, }; if (sb.Length > 0) { sb.Remove(0, sb.Length); } foreach (string filename in ouyaMod.getFilenames()) { sb.Append(filename); sb.Append(","); using (InputStream inputStream = ouyaMod.openFile(filename)) { byte[] buffer = new byte[100000]; int readAmount = inputStream.read(ref buffer); inputStream.close(); byte[] copy = new byte[readAmount]; Array.Copy(buffer, copy, readAmount); sb.Append("***"); string content = System.Text.UTF8Encoding.UTF8.GetString(copy); sb.Append(content); } } widget.m_filenames = sb.ToString(); List<OuyaModScreenshot> screenshots = ouyaMod.getScreenshots(); widget.m_screenshots = new Texture2D[screenshots.Count]; widget.m_thumbnails = new Texture2D[screenshots.Count]; for (int index = 0; index < screenshots.Count; ++index) { using (OuyaModScreenshot ouyaModScreenshot = screenshots[index]) { if (null != ouyaModScreenshot) { using (Bitmap bitmap = ouyaModScreenshot.getImage()) { if (null != bitmap) { using (ByteArrayOutputStream stream = new ByteArrayOutputStream()) { bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); if (stream.size() >= 0) { Texture2D texture = new Texture2D(0, 0); texture.LoadImage(stream.toByteArray()); widget.m_screenshots[index] = texture; } stream.close(); } } } using (Bitmap bitmap = ouyaModScreenshot.getThumbnail()) { if (null != bitmap) { using (ByteArrayOutputStream stream = new ByteArrayOutputStream()) { bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); if (stream.size() >= 0) { Texture2D texture = new Texture2D(0, 0); texture.LoadImage(stream.toByteArray()); widget.m_thumbnails[index] = texture; } stream.close(); } } } } } } if (sb.Length > 0) { sb.Remove(0, sb.Length); } foreach (string tag in ouyaMod.getTags()) { sb.Append(tag); sb.Append(","); } widget.m_tags = sb.ToString(); m_widgets.Add(widget); if (m_widgets.Count == 1) { m_focusManager.Mappings[m_btnCreate].Down = widget.m_buttonPublish; m_focusManager.Mappings[widget.m_buttonPublish] = new FocusManager.ButtonMapping() { Up = m_btnCreate, Right = widget.m_buttonDelete, }; m_focusManager.Mappings[widget.m_buttonDelete] = new FocusManager.ButtonMapping() { Up = m_btnCreate, Left = widget.m_buttonPublish, Right = widget.m_buttonDownload, }; m_focusManager.Mappings[widget.m_buttonDownload] = new FocusManager.ButtonMapping() { Up = m_btnCreate, Left = widget.m_buttonDelete, Right = widget.m_buttonRate, }; m_focusManager.Mappings[widget.m_buttonRate] = new FocusManager.ButtonMapping() { Up = m_btnCreate, Left = widget.m_buttonDownload, Right = widget.m_buttonEdit, }; m_focusManager.Mappings[widget.m_buttonEdit] = new FocusManager.ButtonMapping() { Up = m_btnCreate, Left = widget.m_buttonRate, Right = widget.m_buttonFlag, }; m_focusManager.Mappings[widget.m_buttonFlag] = new FocusManager.ButtonMapping() { Up = m_btnCreate, Left = widget.m_buttonEdit, }; } else { WidgetOuyaMod lastWidget = m_widgets[m_widgets.Count - 2]; m_focusManager.Mappings[lastWidget.m_buttonPublish].Down = widget.m_buttonPublish; m_focusManager.Mappings[lastWidget.m_buttonDelete].Down = widget.m_buttonDelete; m_focusManager.Mappings[lastWidget.m_buttonDownload].Down = widget.m_buttonDownload; m_focusManager.Mappings[lastWidget.m_buttonRate].Down = widget.m_buttonRate; m_focusManager.Mappings[lastWidget.m_buttonEdit].Down = widget.m_buttonEdit; m_focusManager.Mappings[lastWidget.m_buttonFlag].Down = widget.m_buttonFlag; m_focusManager.Mappings[widget.m_buttonPublish] = new FocusManager.ButtonMapping() { Up = lastWidget.m_buttonPublish, Right = widget.m_buttonDelete, }; m_focusManager.Mappings[widget.m_buttonDelete] = new FocusManager.ButtonMapping() { Up = lastWidget.m_buttonDelete, Left = widget.m_buttonPublish, Right = widget.m_buttonDownload, }; m_focusManager.Mappings[widget.m_buttonDownload] = new FocusManager.ButtonMapping() { Up = lastWidget.m_buttonDownload, Left = widget.m_buttonDelete, Right = widget.m_buttonRate, }; m_focusManager.Mappings[widget.m_buttonRate] = new FocusManager.ButtonMapping() { Up = lastWidget.m_buttonRate, Left = widget.m_buttonDownload, Right = widget.m_buttonEdit, }; m_focusManager.Mappings[widget.m_buttonEdit] = new FocusManager.ButtonMapping() { Up = lastWidget.m_buttonEdit, Left = widget.m_buttonRate, Right = widget.m_buttonFlag, }; m_focusManager.Mappings[widget.m_buttonFlag] = new FocusManager.ButtonMapping() { Up = lastWidget.m_buttonFlag, Left = widget.m_buttonEdit, }; } } }
private void SetDrawable(out Texture2D button, int keyCode) { OuyaController.ButtonData buttonData; buttonData = OuyaController.getButtonData(keyCode); if (null == buttonData) { button = null; return; } if (null == buttonData.buttonDrawable) { button = null; return; } BitmapDrawable drawable = (BitmapDrawable)buttonData.buttonDrawable; if (null == drawable) { button = null; return; } Bitmap bitmap = drawable.getBitmap(); if (null == bitmap) { button = null; return; } ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); if (stream.size() == 0) { button = null; } else { button = new Texture2D(0, 0); button.LoadImage(stream.toByteArray()); } stream.close(); }
/** * Gets the size of the provided area code map storage. The map storage passed-in will be filled * as a result. */ private static int getSizeOfAreaCodeMapStorage(AreaCodeMapStorageStrategy mapStorage, SortedMap<Integer, String> areaCodeMap) { mapStorage.readFromSortedMap(areaCodeMap); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); mapStorage.writeExternal(objectOutputStream); objectOutputStream.flush(); int sizeOfStorage = byteArrayOutputStream.size(); objectOutputStream.close(); return sizeOfStorage; }