mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
180 lines
7.1 KiB
C#
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)
|
|
{
|
|
}
|
|
}
|
|
}
|
|
}
|