AddIdleAction() public static method

Calls the given action if the user does not enter any input (hence acknowledging the action) before being considered idle. For example, a user may wish to only be notified of PushBullet notifications when idle, however after leaving the computer they may receive a message prior to being considered idle, which would cause them to miss it. This method would invoke that notification if they go idle before acknowledging it (by providing any user input anywhere). If the user is currently idle, the action is invoked immediately.
public static AddIdleAction ( System.Action Act ) : void
Act System.Action
return void
示例#1
0
        void ProcessMessage(MessageData obj)
        {
            if (obj.MessageType == LogMessageType.Party && !Settings.Default.LogPartyMessages)
            {
                return;
            }
            if (Settings.Default.NotifyMinimizedOnly && IsPoeActive())
            {
                if (!IdleManager.IsUserIdle)
                {
                    // If the user isn't idle, replay the message if they do go idle.
                    IdleManager.AddIdleAction(() => ProcessMessage(obj));
                    return;
                }
                // Otherwise, they are idle, so process the message anyways.
            }
            string StampedMessage = "[" + obj.Date.ToShortTimeString() + "]" + (obj.Sender == null ? "" : (" " + LogMonitor.ChatSymbolForMessageType(obj.MessageType) + obj.Sender)) + ": " + obj.Message;
            string Title          = "Path of Exile " + obj.MessageType;

            Invoke(new Action(() => AppendMessage(StampedMessage)));
            if (Settings.Default.TrayNotifications)
            {
                Invoke(new Action(() => {
                    NotificationIcon.Visible = true;
                    NotificationIcon.ShowBalloonTip(5000, Title, (obj.Sender == null ? "" : (obj.Sender + ": ")) + obj.Message, ToolTipIcon.Info);
                }));
            }
            if (Settings.Default.EnableSound)
            {
                try {
                    this.SoundPlayer.Play();
                } catch (Exception ex) {
                    AppendMessage("<Error playing sound. This usually occurs due to the Content folder being missing.\r\n  Additional Info: " + ex.Message + ">");
                }
            }
            if (Settings.Default.EnableSmtpNotifications)
            {
                // Feels wasteful to always reload, but really it should only take a millisecond or less.
                var SmtpSettings = SmtpDetails.LoadFromSettings();
                var SmtpAct      = CheckedAction("SMTP", () => SendSmtpNotification(SmtpSettings, StampedMessage));
                if (!SmtpSettings.NotifyOnlyIfIdle)
                {
                    SmtpAct();
                }
                else
                {
                    IdleManager.AddIdleAction(SmtpAct);
                }
            }
            if (Settings.Default.EnablePushbullet)
            {
                var PbSettings = PushBulletDetails.LoadFromSettings();
                var PbAct      = CheckedAction("PushBullet", () => {
                    var Client = new PushBulletClient(PbSettings);
                    Client.SendPush(Title, StampedMessage);
                });
                if (!PbSettings.NotifyOnlyIfIdle)
                {
                    PbAct();
                }
                else
                {
                    IdleManager.AddIdleAction(PbAct);
                }
            }
        }
示例#2
0
 private void PlayNotificationsForMessage(MessageData Message, bool AssumeInactive)
 {
     if (Settings.Default.NotifyMinimizedOnly && IsPoeActive())
     {
         if (!IdleManager.IsUserIdle)
         {
             // If the user isn't yet idle, replay the message if they do go idle.
             IdleManager.AddIdleAction(() => PlayNotificationsForMessage(Message, AssumeInactive));
             return;
         }
         // Otherwise, they are idle, so process the message anyways.
     }
     if (Settings.Default.TrayNotifications)
     {
         NotificationIcon.Visible = true;
         NotificationIcon.ShowBalloonTip(5000, Message.Title, (Message.Sender == null ? "" : (Message.Sender + ": ")) + Message.Message, ToolTipIcon.Info);
     }
     if (Settings.Default.EnableSound)
     {
         try {
             this.SoundPlayer.Play();
         } catch (Exception ex) {
             LogMessage("<Error playing sound. This usually occurs due to the Content folder being missing.\r\n  Additional Info: " + ex.Message + ">", null, LogMessageType.Status);
         }
     }
     if (Settings.Default.EnableSmtpNotifications)
     {
         var SmtpSettings = SmtpDetails.LoadFromSettings();
         var SmtpAct      = CheckedAction("SMTP", () => SendSmtpNotification(SmtpSettings, Message.DisplayMessage));
         if (!SmtpSettings.NotifyOnlyIfIdle || AssumeInactive)
         {
             SmtpAct();
         }
         else
         {
             IdleManager.AddIdleAction(SmtpAct);
         }
     }
     if (Settings.Default.EnablePushbullet)
     {
         var   PbSettings = PushBulletDetails.LoadFromSettings();
         Regex Pattern    = null;
         Match Matches    = null;
         if (!String.IsNullOrWhiteSpace(PbSettings.NotifyOnlyIfMatches))
         {
             Pattern = new Regex(PbSettings.NotifyOnlyIfMatches);
             Matches = Pattern.Match(Message.Message);
         }
         if (Pattern == null || ((Pattern != null) && Matches.Success))
         {
             var PbAct = CheckedAction("PushBullet", () => {
                 var Client = new PushBulletClient(PbSettings);
                 Client.SendPush(Message.Title, Message.DisplayMessage);
             });
             if (AssumeInactive || !PbSettings.NotifyOnlyIfIdle)
             {
                 PbAct();
             }
             else
             {
                 IdleManager.AddIdleAction(PbAct);
             }
         }
     }
     if (Settings.Default.FlashTaskbar && (!IsPoeActive() || AssumeInactive))
     {
         var PoeProcess = GetPoeProcess();
         if (PoeProcess != null)
         {
             var FlashAct = CheckedAction("Taskbar Flash", () => WindowFlasher.FlashWindow(PoeProcess.MainWindowHandle, FlashStyle.All));
             FlashAct();
         }
         else
         {
             LogMessage("<Could not find the PoE process to flash the taskbar>", null, LogMessageType.Status);
         }
     }
 }