aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.Common/Notifications/INotificationProvider.cs
blob: 950b8d23f382e2d56ad0e1ab558d1b60542d78df (generated by cgit v1.3.1 (git 2.54.0) at 2026-07-31 19:41:01 +0000
9'>189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using Tango.Core.Commands;
using Tango.SharedUI;
using Tango.Touch.Controls;

namespace Tango.PPC.Common.Notifications
{
    /// <summary>
    /// Represents the PPC user notification provider responsible for displaying information, alerts and dialogs to the user.
    /// </summary>
    public interface INotificationProvider
    {
        /// <summary>
        /// Gets the collection of notification items.
        /// </summary>
        ObservableCollection<NotificationItem> NotificationItems { get; }

        /// <summary>
        /// Gets the notification items view.
        /// </summary>
        ICollectionView NotificationItemsView { get; }

        /// <summary>
        /// Gets the collection of taskbar items.
        /// </summary>
        ObservableCollection<TaskBarItem> TaskBarItems { get; }

        /// <summary>
        /// Gets the application bar items.
        /// </summary>
        ObservableCollection<AppBarItem> AppBarItems { get; }

        /// <summary>
        /// Gets a value indicating whether this instance has any application bar items.
        /// </summary>
        bool HasAppBarItems { get; }

        /// <summary>
        /// Gets a value indicating whether this instance has notification items.
        /// </summary>
        bool HasNotificationItems { get; }

        /// <summary>
        /// Gets the current message box.
        /// </summary>
        MessageBoxVM CurrentMessageBox { get; }

        /// <summary>
        /// Gets a value indicating whether this instance has message box.
        /// </summary>
        bool HasMessageBox { get; }

        /// <summary>
        /// Gets the current dialog.
        /// </summary>
        FrameworkElement CurrentDialog { get; }

        /// <summary>
        /// Gets the current app button.
        /// </summary>
        AppButton CurrentAppButton { get; }

        /// <summary>
        /// Gets a value indicating whether this instance has a dialog.
        /// </summary>
        bool HasDialog { get; }

        /// <summary>
        /// Shows an information message box.
        /// </summary>
        /// <param name="message">The message.</param>
        Task ShowInfo(String message);

        /// <summary>
        /// Shows warning message box.
        /// </summary>
        /// <param name="message">The message.</param>
        Task ShowWarning(String message);

        /// <summary>
        /// Shows an error message box.
        /// </summary>
        /// <param name="message">The message.</param>
        Task ShowError(String message);

        /// <summary>
        /// Shows a success message box.
        /// </summary>
        /// <param name="message">The message.</param>
        Task ShowSuccess(String message);

        /// <summary>
        /// Shows a question message box.
        /// </summary>
        /// <param name="message">The message.</param>
        Task<bool> ShowQuestion(String message);

        /// <summary>
        /// Inserts the notification item to the bottom of the notifications collection.
        /// </summary>
        /// <param name="item">The item.</param>
        NotificationItem PushNotification(NotificationItem item);

        /// <summary>
        /// Pushes the notification.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        NotificationItem PushNotification<T>() where T : NotificationItem;

        /// <summary>
        /// Displays the specified dialog in a modal design.
        /// </summary>
        /// <typeparam name="VM"></typeparam>
        /// <param name="datacontext">The data context.</param>
        /// <param name="view">The view.</param>
        /// <returns></returns>
        Task<VM> ShowDialog<VM>(VM datacontext, FrameworkElement view) where VM : DialogViewVM;

        /// <summary>
        /// Displays the specified dialog in a modal design.
        /// The notification provider will try to locate the view automatically using conventions.
        /// </summary>
        /// <typeparam name="VM"></typeparam>
        /// <param name="datacontext">The data context.</param>
        /// <returns></returns>        
        Task<VM> ShowDialog<VM>(VM datacontext) where VM : DialogViewVM;

        /// <summary>
        /// Displays the specified dialog in a modal design.
        /// The data context instance will be automatically created.
        /// The notification provider will try to locate the view automatically using conventions.
        /// </summary>
        /// <typeparam name="VM"></typeparam>
        /// <returns></returns>
        Task<VM> ShowDialog<VM>() where VM : DialogViewVM;

        /// <summary>
        /// Removed the specified notification item.
        /// </summary>
        /// <param name="item">The item.</param>
        void PopNotification(NotificationItem item);

        /// <summary>
        /// Gets a value indicating whether this instance is in global busy state.
        /// </summary>
        bool IsInGlobalBusyState { get; }

        /// <summary>
        /// Sets the global busy message.
        /// </summary>
        /// <param name="message">The message.</param>
        void SetGlobalBusyMessage(String message);

        /// <summary>
        /// Releases the global busy message.
        /// </summary>
        void ReleaseGlobalBusyMessage();

        /// <summary>
        /// Gets the current global busy message.
        /// </summary>
        String GlobalBusyMessage { get; }

        /// <summary>
        /// Pushes the application bar item.
        /// </summary>
        /// <param name="appBarItem">The application bar item.</param>
        /// <returns></returns>
        AppBarItem PushAppBarItem(AppBarItem appBarItem);

        /// <summary>
        /// Pushes the application bar item.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        T PushAppBarItem<T>() where T : AppBarItem;

        /// <summary>
        /// Pops the application bar item.
        /// </summary>
        /// <param name="appBarItem">The application bar item.</param>
        void PopAppBarItem(AppBarItem appBarItem);

        /// <summary>
        /// Pushes the task bar item.
        /// </summary>
        /// <param name="taskBarItem">The task bar item.</param>
        /// <returns></returns>
        TaskBarItem PushTaskBarItem(TaskBarItem taskBarItem);

        /// <summary>
        /// Handles the Push Task Bar Item event.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        TaskBarItem PushTaskBarItem<T>() where T : TaskBarItem;

        /// <summary>
        /// Pops the task bar item.
        /// </summary>
        /// <param name="TaskBarItem">The task bar item.</param>
        void PopTaskBarItem(TaskBarItem taskBarItem);

        /// <summary>
        /// Gets or sets a value indicating whether to allow notifications visibility.
        /// </summary>
        bool NotificationsVisible { get; set; }

        /// <summary>
        /// Pushes the app button.
        /// </summary>
        /// <param name="appButton">The app button.</param>
        void PushAppButton(AppButton appButton);

        /// <summary>
        /// Pops the app button.
        /// </summary>
        /// <param name="appButton">The app button.</param>
        void PopAppButton(AppButton appButton);
    }
}