mirror of
https://github.com/greenshot/greenshot
synced 2025-07-16 10:03:44 -07:00
109 lines
No EOL
4.2 KiB
C#
109 lines
No EOL
4.2 KiB
C#
// ******************************************************************
|
|
// Copyright (c) Microsoft. All rights reserved.
|
|
// This code is licensed under the MIT License (MIT).
|
|
// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
|
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH
|
|
// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.
|
|
// ******************************************************************
|
|
|
|
using System.Collections.Generic;
|
|
using Windows.UI.Notifications;
|
|
|
|
namespace GreenshotWin10Plugin.Native
|
|
{
|
|
/// <summary>
|
|
/// Manages the toast notifications for an app including the ability the clear all toast history and removing individual toasts.
|
|
/// </summary>
|
|
public sealed class DesktopNotificationHistoryCompat
|
|
{
|
|
private readonly string _applicationUserModelId;
|
|
private readonly ToastNotificationHistory _history;
|
|
|
|
/// <summary>
|
|
/// Do not call this. Instead, call <see cref="DesktopNotificationManagerCompat.History"/> to obtain an instance.
|
|
/// </summary>
|
|
/// <param name="applicationUserModelId"></param>
|
|
internal DesktopNotificationHistoryCompat(string applicationUserModelId)
|
|
{
|
|
_applicationUserModelId = applicationUserModelId;
|
|
_history = ToastNotificationManager.History;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Removes all notifications sent by this app from action center.
|
|
/// </summary>
|
|
public void Clear()
|
|
{
|
|
if (_applicationUserModelId != null)
|
|
{
|
|
_history.Clear(_applicationUserModelId);
|
|
}
|
|
else
|
|
{
|
|
_history.Clear();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets all notifications sent by this app that are currently still in Action Center.
|
|
/// </summary>
|
|
/// <returns>A collection of toasts.</returns>
|
|
public IReadOnlyList<ToastNotification> GetHistory()
|
|
{
|
|
return _applicationUserModelId != null ? _history.GetHistory(_applicationUserModelId) : _history.GetHistory();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Removes an individual toast, with the specified tag label, from action center.
|
|
/// </summary>
|
|
/// <param name="tag">The tag label of the toast notification to be removed.</param>
|
|
public void Remove(string tag)
|
|
{
|
|
if (_applicationUserModelId != null)
|
|
{
|
|
_history.Remove(tag, string.Empty, _applicationUserModelId);
|
|
}
|
|
else
|
|
{
|
|
_history.Remove(tag);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Removes a toast notification from the action using the notification's tag and group labels.
|
|
/// </summary>
|
|
/// <param name="tag">The tag label of the toast notification to be removed.</param>
|
|
/// <param name="group">The group label of the toast notification to be removed.</param>
|
|
public void Remove(string tag, string group)
|
|
{
|
|
if (_applicationUserModelId != null)
|
|
{
|
|
_history.Remove(tag, group, _applicationUserModelId);
|
|
}
|
|
else
|
|
{
|
|
_history.Remove(tag, group);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Removes a group of toast notifications, identified by the specified group label, from action center.
|
|
/// </summary>
|
|
/// <param name="group">The group label of the toast notifications to be removed.</param>
|
|
public void RemoveGroup(string group)
|
|
{
|
|
if (_applicationUserModelId != null)
|
|
{
|
|
_history.RemoveGroup(group, _applicationUserModelId);
|
|
}
|
|
else
|
|
{
|
|
_history.RemoveGroup(group);
|
|
}
|
|
}
|
|
}
|
|
} |