private void ConstructMoveToCopyToMenu() {
btnMoveto.Items.Clear();
btnCopyto.Items.Clear();
var sod = FileSystemListItem.ToFileSystemItem(this._ShellListView.LVHandle, ((ShellItem)KnownFolders.Desktop).Pidl);
var bmpSourceDesktop = sod.ThumbnailSource(16, ShellThumbnailFormatOption.IconOnly, ShellThumbnailRetrievalOption.Default);
var OtherLocationMove = Utilities.Build_MenuItem(FindResource("miOtherDestCP"), onClick: new RoutedEventHandler(btnmtOther_Click));
var OtherLocationCopy = Utilities.Build_MenuItem(FindResource("miOtherDestCP"), onClick: new RoutedEventHandler(btnctOther_Click));
var mimDesktop = Utilities.Build_MenuItem(FindResource("btnctDesktopCP"), icon: bmpSourceDesktop, onClick: new RoutedEventHandler(btnmtDesktop_Click));
var micDesktop = Utilities.Build_MenuItem(FindResource("btnctDesktopCP"), icon: bmpSourceDesktop, onClick: new RoutedEventHandler(btnctDesktop_Click));
MenuItem mimDocuments = new MenuItem(), micDocuments = new MenuItem();
try {
var sodc = FileSystemListItem.ToFileSystemItem(this._ShellListView.LVHandle, ((ShellItem)KnownFolders.Documents).Pidl);
var bmpSourceDocuments = sodc.ThumbnailSource(16, ShellThumbnailFormatOption.IconOnly, ShellThumbnailRetrievalOption.Default);
mimDocuments = Utilities.Build_MenuItem(FindResource("btnctDocumentsCP"), icon: bmpSourceDocuments, onClick: new RoutedEventHandler(btnmtDocuments_Click));
micDocuments = Utilities.Build_MenuItem(FindResource("btnctDocumentsCP"), icon: bmpSourceDocuments, onClick: new RoutedEventHandler(btnctDocuments_Click));
}
catch (Exception) {
mimDocuments = null;
micDocuments = null;
//catch the exception in case the user deleted that basic folder somehow
}
MenuItem mimDownloads = new MenuItem(), micDownloads = new MenuItem();
try {
var sodd = FileSystemListItem.ToFileSystemItem(this._ShellListView.LVHandle, ((ShellItem)KnownFolders.Downloads).Pidl);
var bmpSourceDownloads = sodd.ThumbnailSource(16, ShellThumbnailFormatOption.IconOnly, ShellThumbnailRetrievalOption.Default);
mimDownloads = Utilities.Build_MenuItem(FindResource("btnctDownloadsCP"), icon: bmpSourceDownloads, onClick: new RoutedEventHandler(btnmtDounloads_Click));
micDownloads = Utilities.Build_MenuItem(FindResource("btnctDownloadsCP"), icon: bmpSourceDownloads, onClick: new RoutedEventHandler(btnctDounloads_Click));
}
catch (Exception) {
micDownloads = null;
mimDownloads = null;
//catch the exception in case the user deleted that basic folder somehow
}
if (mimDocuments != null)
btnMoveto.Items.Add(mimDocuments);
if (mimDownloads != null)
btnMoveto.Items.Add(mimDownloads);
btnMoveto.Items.Add(mimDesktop);
btnMoveto.Items.Add(new Separator());
if (micDocuments != null)
btnCopyto.Items.Add(micDocuments);
if (micDownloads != null)
btnCopyto.Items.Add(micDownloads);
btnCopyto.Items.Add(micDesktop);
btnCopyto.Items.Add(new Separator());
foreach (var item in tcMain.Items.OfType<Wpf.Controls.TabItem>()) {
bool IsAdditem = true;
item.ShellObject = item.ShellObject.Clone();
foreach (var mii in btnCopyto.Items.OfType<MenuItem>().Where(x => x.Tag != null)) {
if ((mii.Tag as IListItemEx).Equals(item.ShellObject)) {
IsAdditem = false;
}
}
if (IsAdditem && item.ShellObject.IsFileSystem) {
try {
var so = item.ShellObject;
var bmpSource = so.ThumbnailSource(16, ShellThumbnailFormatOption.IconOnly, ShellThumbnailRetrievalOption.Default);
btnMoveto.Items.Add(Utilities.Build_MenuItem(item.ShellObject.DisplayName, item.ShellObject,
bmpSource, onClick: new RoutedEventHandler(mim_Click)));
btnCopyto.Items.Add(Utilities.Build_MenuItem(item.ShellObject.DisplayName, item.ShellObject, bmpSource, onClick: new RoutedEventHandler(mico_Click)));
}
catch {
//Do nothing if ShellItem is not available anymore and close the problematic item
//tcMain.RemoveTabItem(item);
}
}
}
btnMoveto.Items.Add(new Separator());
btnMoveto.Items.Add(OtherLocationMove);
btnCopyto.Items.Add(new Separator());
btnCopyto.Items.Add(OtherLocationCopy);
}