mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-04 18:26:39 +02:00
95 lines
4.1 KiB
C#
95 lines
4.1 KiB
C#
// Copyright (c) Microsoft Corporation
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System;
|
|
using System.Globalization;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Windows;
|
|
|
|
using Microsoft.PowerToys.Run.Plugin.TimeDate.Properties;
|
|
using Wox.Plugin;
|
|
using Wox.Plugin.Logger;
|
|
|
|
[assembly: InternalsVisibleTo("Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests")]
|
|
|
|
namespace Microsoft.PowerToys.Run.Plugin.TimeDate.Components
|
|
{
|
|
internal static class ResultHelper
|
|
{
|
|
/// <summary>
|
|
/// Get the string based on the requested type
|
|
/// </summary>
|
|
/// <param name="isSystemTimeDate">Does the user search for system date/time?</param>
|
|
/// <param name="stringId">Id of the string. (Example: `MyString` for `MyString` and `MyStringNow`)</param>
|
|
/// <param name="stringIdNow">Optional string id for now case</param>
|
|
/// <returns>The string from the resource file, or <see cref="string.Empty"/> otherwise.</returns>
|
|
internal static string SelectStringFromResources(bool isSystemTimeDate, string stringId, string stringIdNow = default)
|
|
{
|
|
if (!isSystemTimeDate)
|
|
{
|
|
return Resources.ResourceManager.GetString(stringId, CultureInfo.CurrentUICulture) ?? string.Empty;
|
|
}
|
|
else if (!string.IsNullOrEmpty(stringIdNow))
|
|
{
|
|
return Resources.ResourceManager.GetString(stringIdNow, CultureInfo.CurrentUICulture) ?? string.Empty;
|
|
}
|
|
else
|
|
{
|
|
return Resources.ResourceManager.GetString(stringId + "Now", CultureInfo.CurrentUICulture) ?? string.Empty;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Copy the given text to the clipboard
|
|
/// </summary>
|
|
/// <param name="text">The text to copy to the clipboard</param>
|
|
/// <returns><see langword="true"/>The text successful copy to the clipboard, otherwise <see langword="false"/></returns>
|
|
/// <remarks>Code copied from TimeZone plugin</remarks>
|
|
internal static bool CopyToClipBoard(in string text)
|
|
{
|
|
try
|
|
{
|
|
Clipboard.SetText(text);
|
|
return true;
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
Log.Exception("Can't copy to clipboard", exception, typeof(ResultHelper));
|
|
MessageBox.Show(exception.Message, Resources.Microsoft_plugin_timedate_copy_failed);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Create a tool tip for the alternative search tags
|
|
/// </summary>
|
|
/// <param name="result">The <see cref="AvailableResult"/>.</param>
|
|
/// <returns>New <see cref="ToolTipData"/> object or null if <see cref="AvailableResult.AlternativeSearchTag"/> is empty.</returns>
|
|
internal static ToolTipData GetSearchTagToolTip(AvailableResult result, out Visibility visibility)
|
|
{
|
|
switch (string.IsNullOrEmpty(result.AlternativeSearchTag))
|
|
{
|
|
case true:
|
|
visibility = Visibility.Hidden;
|
|
return null;
|
|
default:
|
|
visibility = Visibility.Visible;
|
|
return new ToolTipData(Resources.Microsoft_plugin_timedate_ToolTipAlternativeSearchTag, result.AlternativeSearchTag);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets a result with an error message that only numbers can't be parsed
|
|
/// </summary>
|
|
/// <returns>Element of type <see cref="Result"/>.</returns>
|
|
internal static Result CreateNumberErrorResult(string theme) => new Result()
|
|
{
|
|
Title = Resources.Microsoft_plugin_timedate_ErrorResultTitle,
|
|
SubTitle = Resources.Microsoft_plugin_timedate_ErrorResultSubTitle,
|
|
ToolTipData = new ToolTipData(Resources.Microsoft_plugin_timedate_ErrorResultTitle, Resources.Microsoft_plugin_timedate_ErrorResultSubTitle),
|
|
IcoPath = $"Images\\Warning.{theme}.png",
|
|
};
|
|
}
|
|
}
|