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
{
///
/// Represents the PPC user notification provider responsible for displaying information, alerts and dialogs to the user.
///
public interface INotificationProvider
{
///
/// Gets the collection of notification items.
///
ObservableCollection NotificationItems { get; }
///
/// Gets the notification items view.
///
ICollectionView NotificationItemsView { get; }
///
/// Gets the collection of taskbar items.
///
ObservableCollection TaskBarItems { get; }
///
/// Gets the application bar items.
///
ObservableCollection AppBarItems { get; }
///
/// Gets a value indicating whether this instance has any application bar items.
///
bool HasAppBarItems { get; }
///
/// Gets a value indicating whether this instance has notification items.
///
bool HasNotificationItems { get; }
///
/// Gets the current message box.
///
MessageBoxVM CurrentMessageBox { get; }
///
/// Gets a value indicating whether this instance has message box.
///
bool HasMessageBox { get; }
///
/// Gets the current dialog.
///
FrameworkElement CurrentDialog { get; }
///
/// Gets the current app button.
///
AppButton CurrentAppButton { get; }
///
/// Gets a value indicating whether this instance has a dialog.
///
bool HasDialog { get; }
///
/// Shows an information message box.
///
/// The message.
Task ShowInfo(String message);
///
/// Shows warning message box.
///
/// The message.
Task ShowWarning(String message);
///
/// Shows an error message box.
///
/// The message.
Task ShowError(String message);
///
/// Shows a success message box.
///
/// The message.
Task ShowSuccess(String message);
///
/// Shows a question message box.
///
/// The message.
Task ShowQuestion(String message);
///
/// Inserts the notification item to the bottom of the notifications collection.
///
/// The item.
NotificationItem PushNotification(NotificationItem item);
///
/// Pushes the notification.
///
///
///
NotificationItem PushNotification() where T : NotificationItem;
///
/// Displays the specified dialog in a modal design.
///
///
/// The data context.
/// The view.
///
Task ShowDialog(VM datacontext, FrameworkElement view) where VM : DialogViewVM;
///
/// Displays the specified dialog in a modal design.
/// The notification provider will try to locate the view automatically using conventions.
///
///
/// The data context.
///
Task ShowDialog(VM datacontext) where VM : DialogViewVM;
///
/// 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.
///
///
///
Task ShowDialog() where VM : DialogViewVM;
///
/// Removed the specified notification item.
///
/// The item.
void PopNotification(NotificationItem item);
///
/// Gets a value indicating whether this instance is in global busy state.
///
bool IsInGlobalBusyState { get; }
///
/// Sets the global busy message.
///
/// The message.
void SetGlobalBusyMessage(String message);
///
/// Releases the global busy message.
///
void ReleaseGlobalBusyMessage();
///
/// Gets the current global busy message.
///
String GlobalBusyMessage { get; }
///
/// Pushes the application bar item.
///
/// The application bar item.
///
AppBarItem PushAppBarItem(AppBarItem appBarItem);
///
/// Pushes the application bar item.
///
///
///
T PushAppBarItem() where T : AppBarItem;
///
/// Pops the application bar item.
///
/// The application bar item.
void PopAppBarItem(AppBarItem appBarItem);
///
/// Pushes the task bar item.
///
/// The task bar item.
///
TaskBarItem PushTaskBarItem(TaskBarItem taskBarItem);
///
/// Handles the Push Task Bar Item event.
///
///
///
TaskBarItem PushTaskBarItem() where T : TaskBarItem;
///
/// Pops the task bar item.
///
/// The task bar item.
void PopTaskBarItem(TaskBarItem taskBarItem);
///
/// Gets or sets a value indicating whether to allow notifications visibility.
///
bool NotificationsVisible { get; set; }
///
/// Pushes the app button.
///
/// The app button.
void PushAppButton(AppButton appButton);
///
/// Pops the app button.
///
/// The app button.
void PopAppButton(AppButton appButton);
}
}