mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
184 lines
6.0 KiB
C#
184 lines
6.0 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: ZuneUI.AlbumArtUpdateHandler
|
|
// Assembly: ZuneShell, Version=4.7.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
|
|
// MVID: FC8028F3-A47B-4FB4-B35B-11D1752D8264
|
|
// Assembly location: C:\Program Files\Zune\ZuneShell.dll
|
|
|
|
using Microsoft.Iris;
|
|
using Microsoft.Zune.Util;
|
|
using MicrosoftZuneLibrary;
|
|
using System;
|
|
using System.Collections.Specialized;
|
|
using UIXControls;
|
|
|
|
namespace ZuneUI
|
|
{
|
|
public class AlbumArtUpdateHandler : ModelItem
|
|
{
|
|
private const string _supportedExtensionsFilter = "*.bmp;*.jpg;*.jpeg;*.gif;*.png;*.dib";
|
|
private object _album;
|
|
private string _path;
|
|
private bool _done;
|
|
private Image _image;
|
|
private BooleanChoice _neverShowPasteMessage;
|
|
private static string[] _supportedExtensions = new string[6]
|
|
{
|
|
".bmp",
|
|
".jpg",
|
|
".jpeg",
|
|
".gif",
|
|
".png",
|
|
".dib"
|
|
};
|
|
|
|
public AlbumArtUpdateHandler(object album) => this._album = album;
|
|
|
|
protected override void OnDispose(bool disposing)
|
|
{
|
|
if (this._neverShowPasteMessage != null)
|
|
{
|
|
this._neverShowPasteMessage.Dispose();
|
|
this._neverShowPasteMessage = null;
|
|
}
|
|
base.OnDispose(disposing);
|
|
}
|
|
|
|
public object Album => this._album;
|
|
|
|
public string Path
|
|
{
|
|
get => this._path;
|
|
private set
|
|
{
|
|
if (!(value != this._path))
|
|
return;
|
|
this._path = value;
|
|
this.FirePropertyChanged(nameof(Path));
|
|
this.Image = null;
|
|
}
|
|
}
|
|
|
|
public bool Done
|
|
{
|
|
get => this._done;
|
|
private set
|
|
{
|
|
if (value == this._done)
|
|
return;
|
|
this._done = value;
|
|
this.FirePropertyChanged(nameof(Done));
|
|
}
|
|
}
|
|
|
|
public Image Image
|
|
{
|
|
get
|
|
{
|
|
if (this._image == null && !string.IsNullOrEmpty(this._path))
|
|
this._image = new Image("file://" + this._path);
|
|
return this._image;
|
|
}
|
|
private set
|
|
{
|
|
if (value == this._image)
|
|
return;
|
|
this._image = value;
|
|
this.FirePropertyChanged(nameof(Image));
|
|
}
|
|
}
|
|
|
|
public void Start() => this.Start(true);
|
|
|
|
public void Start(bool allowPaste)
|
|
{
|
|
this.Done = false;
|
|
this.Path = null;
|
|
if (allowPaste && CanPaste())
|
|
{
|
|
if (ZuneShell.DefaultInstance.Management.ConfirmPasteAlbumArt)
|
|
{
|
|
if (this._neverShowPasteMessage == null)
|
|
this._neverShowPasteMessage = new BooleanChoice(this, Shell.LoadString(StringId.IDS_DONT_SHOW_THIS_MESSAGE_AGAIN));
|
|
string str = null;
|
|
if (this.Album is DataProviderObject album)
|
|
str = album.GetProperty("Title") as string;
|
|
string message = !string.IsNullOrEmpty(str) ? string.Format(Shell.LoadString(StringId.IDS_CONFIRM_PASTE_ALBUM_ART), str) : Shell.LoadString(StringId.IDS_CONFIRM_PASTE_ALBUM_ART_NO_NAME);
|
|
this._neverShowPasteMessage.Value = false;
|
|
MessageBox.Show(Shell.LoadString(StringId.IDS_CONFIRM_PASTE_ALBUM_ART_TITLE), message, null, new EventHandler(this.ConfirmPaste), null, null, this._neverShowPasteMessage);
|
|
}
|
|
else
|
|
this.ConfirmPaste(this, null);
|
|
}
|
|
else
|
|
this.BrowseForArt();
|
|
}
|
|
|
|
public static bool CanPaste()
|
|
{
|
|
bool flag = Clipboard.ContainsData(ClipboardDataType.Image);
|
|
if (!flag && Clipboard.ContainsData(ClipboardDataType.FileDropList))
|
|
flag = GetClipboardFile() != null;
|
|
return flag;
|
|
}
|
|
|
|
private void BrowseForArt() => FileOpenDialog.Show(Shell.LoadString(StringId.IDS_CHOOSE_ALBUM_ART), FileOpenDialog.MyPicturesPath, new string[2]
|
|
{
|
|
Shell.LoadString(StringId.IDS_ALBUM_ART_DIALOG_ALL_PICTURES),
|
|
"*.bmp;*.jpg;*.jpeg;*.gif;*.png;*.dib"
|
|
}, args =>
|
|
{
|
|
this.Path = (string)args;
|
|
this.Done = true;
|
|
});
|
|
|
|
private void ConfirmPaste(object sender, EventArgs args)
|
|
{
|
|
if (this._neverShowPasteMessage != null)
|
|
ZuneShell.DefaultInstance.Management.ConfirmPasteAlbumArt = !this._neverShowPasteMessage.Value;
|
|
if (this.Paste())
|
|
this.Done = true;
|
|
else
|
|
this.BrowseForArt();
|
|
}
|
|
|
|
private bool Paste()
|
|
{
|
|
bool flag = false;
|
|
if (this._album is LibraryDataProviderListItem)
|
|
{
|
|
LibraryDataProviderListItem album = (LibraryDataProviderListItem)this._album;
|
|
SafeBitmap image = Clipboard.GetImage();
|
|
if (image != null)
|
|
flag = album.SetNewThumbnail(image);
|
|
if (!flag)
|
|
{
|
|
string clipboardFile = GetClipboardFile();
|
|
if (clipboardFile != null)
|
|
{
|
|
this.Path = clipboardFile;
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
private static string GetClipboardFile()
|
|
{
|
|
StringCollection fileDropList = Clipboard.GetFileDropList();
|
|
if (fileDropList != null)
|
|
{
|
|
foreach (string str in fileDropList)
|
|
{
|
|
foreach (string supportedExtension in _supportedExtensions)
|
|
{
|
|
if (str.EndsWith(supportedExtension, StringComparison.InvariantCultureIgnoreCase))
|
|
return str;
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
}
|