Files
ZuneShell.dll/ZuneShell/ZuneUI/PhotoUtilities.cs
T

180 lines
7.1 KiB
C#

// Decompiled with JetBrains decompiler
// Type: ZuneUI.PhotoUtilities
// 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.Win32;
using Microsoft.Zune.Configuration;
using Microsoft.Zune.Util;
using System;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Xml;
using ZuneDBApi.Abstractions;
namespace ZuneUI
{
public static class PhotoUtilities
{
public static bool IsPhotoGalleryInstalled => InstalledProductChecker.IsInstalled(ClientConfiguration.Pictures.WinLivePhotoGalleryUpgradeCode, ClientConfiguration.Pictures.WinLivePhotoGalleryMajorVersion, ClientConfiguration.Pictures.WinLivePhotoGalleryMinorVersion);
public static string PhotoGalleryExecutablePath
{
get
{
string empty1 = string.Empty;
try
{
string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), Shell.LoadString(StringId.IDS_PHOTOS_PHOTO_GALLERY_PATH));
if (File.Exists(path))
return path;
}
catch (Exception ex)
{
}
string empty2 = string.Empty;
try
{
string path = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), Shell.LoadString(StringId.IDS_PHOTOS_PHOTO_GALLERY_PATH));
if (File.Exists(path))
return path;
}
catch (Exception ex)
{
}
return string.Empty;
}
}
public static bool IsMovieMakerInstalled => InstalledProductChecker.IsInstalled(ClientConfiguration.Pictures.WinLiveMovieMakerUpgradeCode, ClientConfiguration.Pictures.WinLiveMovieMakerMajorVersion, ClientConfiguration.Pictures.WinLiveMovieMakerMinorVersion);
public static string MovieMakerExecutablePath
{
get
{
string str = string.Empty;
try
{
using IRegistryProvider registryKey = RegistryProviderFactory.TryOpen(RegistryHive.LocalMachine, "SOFTWARE\\Microsoft\\Windows Live\\Movie Maker")
?? RegistryProviderFactory.TryOpen(RegistryHive.LocalMachine, "SOFTWARE\\Wow6432Node\\Microsoft\\Windows Live\\Movie Maker")
?? throw new Exception("Could not open registry key");
string path1 = registryKey.GetStringValue("InstallLocation", string.Empty);
if (!string.IsNullOrEmpty(path1))
str = Path.Combine(path1, "MovieMaker.exe");
}
catch (Exception ex)
{
}
return str;
}
}
public static void PlaySlideShow(int folderId, int startIndex) => PlaySlideShow(folderId, string.Empty, startIndex);
public static void PlaySlideShow(int folderId, string sort, int startIndex)
{
SlideShowState slideShowState = new SlideShowState(null);
SlideshowLand slideshowLand = new SlideshowLand();
slideshowLand.SlideShowState = slideShowState;
slideShowState.Sort = sort;
slideShowState.Index = startIndex >= 0 ? startIndex : 0;
slideShowState.FolderId = folderId;
ZuneShell.DefaultInstance.NavigateToPage(slideshowLand);
}
public static void ViewInPhotoGallery(string path)
{
if (!IsPhotoGalleryAvailable)
return;
try
{
string str = string.Empty;
if (!string.IsNullOrEmpty(path))
str = !File.Exists(path) ? string.Format(Shell.LoadString(StringId.IDS_PHOTOS_PHOTO_GALLERY_OPEN_FOLDER), path, path) : string.Format(Shell.LoadString(StringId.IDS_PHOTOS_PHOTO_GALLERY_OPEN_FILE), Path.GetDirectoryName(path), path);
if (string.IsNullOrEmpty(PhotoGalleryExecutablePath))
return;
new Process()
{
StartInfo = {
FileName = PhotoGalleryExecutablePath,
WorkingDirectory = Path.GetDirectoryName(PhotoGalleryExecutablePath),
Arguments = str
}
}.Start();
SQMLog.Log(SQMDataId.LaunchWLPG, 1);
}
catch (FileNotFoundException ex)
{
}
catch (Win32Exception ex)
{
}
}
public static bool IsPhotoGalleryAvailable => !OSVersion.IsXP() && IsPhotoGalleryInstalled;
public static bool IsMovieMakerAvailable => !OSVersion.IsXP() && IsMovieMakerInstalled;
public static string WriteMovieMakerMedia(IList mediaFiles)
{
string path2 = Guid.NewGuid().ToString() + ".xml";
string outputFileName = Path.Combine(Path.GetTempPath(), path2);
using (XmlWriter xmlWriter = XmlWriter.Create(outputFileName, new XmlWriterSettings()
{
Indent = true
}))
{
xmlWriter.WriteStartElement("MovieMaker");
xmlWriter.WriteStartElement("Content");
foreach (string mediaFile in mediaFiles)
{
xmlWriter.WriteStartElement("ContentFile");
xmlWriter.WriteAttributeString("Filename", mediaFile);
xmlWriter.WriteEndElement();
}
xmlWriter.WriteEndElement();
xmlWriter.WriteStartElement("AutoEdit");
xmlWriter.WriteAttributeString("Style", "FadeReveal");
xmlWriter.WriteEndElement();
xmlWriter.WriteStartElement("DeleteOnClose");
xmlWriter.WriteEndElement();
xmlWriter.WriteEndElement();
xmlWriter.Flush();
}
return outputFileName;
}
public static void LaunchMovieMaker(IList mediaFiles)
{
if (!IsMovieMakerAvailable)
return;
string str = WriteMovieMakerMedia(mediaFiles);
string format = Shell.LoadString(StringId.IDS_PHOTOS_MOVIE_MAKER_ARGS);
try
{
if (string.IsNullOrEmpty(MovieMakerExecutablePath))
return;
new Process()
{
StartInfo = {
FileName = MovieMakerExecutablePath,
WorkingDirectory = Path.GetDirectoryName(MovieMakerExecutablePath),
Arguments = string.Format(format, str)
}
}.Start();
SQMLog.Log(SQMDataId.LaunchMovieMaker, 1);
}
catch (FileNotFoundException ex)
{
}
catch (Win32Exception ex)
{
}
}
}
}