private static async void image_ImageOpened(object sender, RoutedEventArgs e)
{
var image = sender as BitmapImage;
if (image == null) return;
string fileName = GetFileNameFromPath(image.UriSource.AbsolutePath);
var writableBitmap = new WriteableBitmap(image);
var folder = await ApplicationData.Current.LocalFolder.CreateFolderAsync(AppConstants.LOCALFOLDERNAME_BACKGROUND, CreationCollisionOption.OpenIfExists);
var file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
using (var stream = await file.OpenStreamForWriteAsync())
Extensions.SaveJpeg(writableBitmap, stream, image.PixelWidth, image.PixelHeight, 0, 100);
}
private static string GetFileNameFromPath(string path)
{
int lastSlashIndex = path.LastIndexOf('/');
return HttpUtility.UrlDecode(path.Substring(lastSlashIndex + 1, path.Length - lastSlashIndex - 1));
}
private void LongListSelector_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
LongListSelector selector = sender as LongListSelector;
// verifying our sender is actually a LongListSelector
if (selector == null)
return;
SoundData data = selector.SelectedItem as SoundData;
// verifying our sender is actually SoundData
if (data == null)
return;
if (data.IsDownloaded)
{
if (audioStream != null)
{
audioStream.Close();
}
audioStream = IsolatedStorageFile.GetUserStoreForApplication().OpenFile(data.SavePath, FileMode.Open);
// Apparently MediaElement doesn't like isostore:/
AudioPlayer.SetSource(audioStream);
AudioPlayer.Play();
}
else
{
WebClient client = new WebClient();
client.OpenReadCompleted += (senderClient, args) =>
{
using (IsolatedStorageFileStream fileStream = IsolatedStorageFile.GetUserStoreForApplication().CreateFile(data.SavePath))
{
args.Result.Seek(0, SeekOrigin.Begin);
args.Result.CopyTo(fileStream);
}
};
client.OpenReadAsync(new Uri(data.FilePath));
}
selector.SelectedItem = null;