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,
};
}
}
}