Page tree

  Wiki Navigation

    Loading...


 Recently Updated


 Latest Releases

 MediaPortal 1.36
            Releasenews | Download
 MediaPortal 2.5
            Releasenews | Download



Description

This plugin provides a global NotificationBar.

The idea
The idea is to give the same kind of notifications as we know it from Smartphones.
That gives you some opportunities fore example:
- Start update all your plugins in the background and get at notification when its done (or with a progress bar)
- Get a notification when your favorite show starts
- Get a warning if MP can't connect to the TV-server
- etc
Note! - These thing mentioned above is not a part of this plugin, but its a can be if the developers of above decide to implement the NotificationBar functionality.

Developers

Plugin ID: 99207

Requered: Make a reference to MPNotificationBar.dll

Notification creation examples

Here are examples of different ways for notification creation:

  public void ShowNotifications()
  {
    //Method 1 - Without ProgressBar
    MPNotificationBar.Notification notification = new MPNotificationBar.Notification(_MyPluginID, "This is a test message", MPNotificationBar.NotificationBarManager.Types.Information);
    MPNotificationBar.NotificationBarManager.AddNotification(notification);
    //Method 2 - Without ProgressBar
    MPNotificationBar.NotificationBarManager.AddNotification(_MyPluginID, "This is a test message", MPNotificationBar.NotificationBarManager.Types.Information);
    //Method 3 - With ProgressBar
    MPNotificationBar.NotificationBarManager.AddNotification(_MyPluginID, "This is a test message", MPNotificationBar.NotificationBarManager.Types.Information, true);
  }

INotification interface

 public interface INotification
 {
  /// <summary>
  /// Gets/sets notification id
  /// </summary>
  int NotificationID { get; set; }
  /// <summary>
  /// Gets/sets text to display
  /// </summary>
  /// <returns>string</returns>
  string Text { get; set; }
  /// <summary>
  /// Gets/sets progress (0-100)
  /// </summary>
  /// <returns>Int16</returns>
  Int16 Progress { get; set; }
  /// <summary>
  /// Gets/sets plugin id
  /// </summary>
  /// <returns>Int32</returns>
  Int32 PluginID { get; set; }
  /// <summary>
  /// Gets/sets value indicating if notification uses progressbar 
  /// </summary>
  /// <returns>Boolean</returns>
  Boolean IsUsingProgressBar { get; set; }
  /// <summary>
  /// Gets/sets value indicating if notification shall be removed
  /// </summary>
  /// <returns>Boolean</returns>
  Boolean Remove { get; set; }
  /// <summary>
  /// Tells notification that it has been shown
  /// </summary>
  void NotificationShowed();
  /// <summary>
  /// Gets/sets notification type
  /// </summary>
  /// <returns>MPNotificationBar.NotificationBarManager.Types</returns>
  MPNotificationBar.NotificationBarManager.Types NotificationType { get; set; }
  /// <summary>
  /// Progress Changed event
  /// </summary>
  event EventHandler ProgressChanged;
  /// <summary>
  /// Content Changed event
  /// </summary>
  event EventHandler ContentChanged;
  /// <summary>
  /// Gets/sets SecondsToLive
  /// </summary>
  /// <returns>int</returns>
  int SecondsToLive { get; set; }
 }

Plugin example

  //MyPlugin class
 public class MyPlugin : GUIWindow, ISetupForm
 {
const int _windowID = 0; // WindowID of windowplugin belonging to this setup. Enter your own unique code
System.Timers.Timer t = new System.Timers.Timer(15000);
MPNotificationBar.INotification notification;

 public MyPlugin()
 {
  //Start ProgressBar Example
  ProgressBarExample _ProgressBarExample = new ProgressBarExample();

  //Start TimeoutMessage Example
  TimeoutMessageExample _TimeoutMessageExample = new TimeoutMessageExample();
 }

 #ISetupForm Members
 //See plugin guide what to implement here
 }

 public class TimeoutMessageExample
 {
    Int32 _PluginID = 0;
    Int16 _SecondsToLive = 30; //seconds

    public TimeoutMessageExample()
    {
        //Add notification to NotificationBarManager
        MPNotificationBar.INotification _Notification = MPNotificationBar.NotificationBarManager.AddNotification(_PluginID, "This will disappear in " + _SecondsToLive +  " seconds...", MPNotificationBar.NotificationBarManager.Types.Information);
        _Notification.SecondsToLive = _SecondsToLive;
    }
 }

 public class ProgressBarExample
 {
    Int32 _PluginID = 0;
    System.Timers.Timer _DownloadTimer;
    MPNotificationBar.INotification _Notification;

    public ProgressBarExample()
    {
        //Add notification to NotificationBarManager
        _Notification = MPNotificationBar.NotificationBarManager.AddNotification(_PluginID, "Downloading...", MPNotificationBar.NotificationBarManager.Types.Information, true);

        //Emulate a download progress stepping 1% every second
        _DownloadTimer = new System.Timers.Timer(1000);
        _DownloadTimer.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
        _DownloadTimer.Enabled = true;
        _DownloadTimer.Start();
    }

    void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        //Step 1%
        _Notification.Progress++;

        //If download is finished -> mark notification for removal
        if (_Notification.Progress > 100)
        {
            _Notification.Remove = true;
            _DownloadTimer.Stop();
        }
    }
 }

   

 

This page has no comments.