public void TestContains()
        {
            ToastArguments qs = new ToastArguments();

            Assert.IsFalse(qs.Contains("name"));
            Assert.IsFalse(qs.Contains("name", "Andrew"));

            qs.Add("isBook");

            Assert.IsFalse(qs.Contains("name"));
            Assert.IsFalse(qs.Contains("name", "Andrew"));

            Assert.IsTrue(qs.Contains("isBook"));
            Assert.IsTrue(qs.Contains("isBook", null));
            Assert.IsFalse(qs.Contains("isBook", "True"));

            qs.Add("isBook", "True");

            Assert.IsTrue(qs.Contains("isBook"));
            Assert.IsFalse(qs.Contains("isBook", null));
            Assert.IsTrue(qs.Contains("isBook", "True"));

            qs.Add("name", "Andrew");

            Assert.IsTrue(qs.Contains("name"));
            Assert.IsFalse(qs.Contains("name", null));     // Value doesn't exist
            Assert.IsTrue(qs.Contains("name", "Andrew"));
            Assert.IsFalse(qs.Contains("Name", "Andrew")); // Wrong case on name
            Assert.IsFalse(qs.Contains("name", "andrew")); // Wrong case on value
            Assert.IsFalse(qs.Contains("Name"));           // Wrong case on name
        }
Exemple #2
0
 public static void HandleToastAction(ToastNotificationActivatedEventArgsCompat toastArgs)
 {
     try
     {
         // Obtain the arguments from the notification
         ToastArguments args = ToastArguments.Parse(toastArgs.Argument);
         // Obtain any user input (text boxes, menu selections) from the notification
         ValueSet userInput = toastArgs.UserInput;
         if (toastArgs.Argument.Length == 0)
         {
             return;
         }
         Logger.Debug("toast called with args: " + toastArgs.Argument);
         string[] arguments = toastArgs.Argument.Split(";");
         foreach (string argumentString in arguments)
         {
             string[] argument = argumentString.Split("=");
             if (argument[0] == "action" && argument[1] == "update")
             {
                 Logger.Info("updating app, caller toast");
                 Task.Run(() => UpdateHandler.Update(overrideSilent: true)).Wait();
             }
             else if (argument[0] == "action" && argument[1] == "postpone")
             {
                 Logger.Debug("update postponed");
                 return;
             }
         }
     }
     catch (Exception ex)
     {
         Logger.Error(ex, "updater failed, caller toast:");
     }
 }
        public void Setup()
        {
            // Listen to notification activation
            ToastNotificationManagerCompat.OnActivated += toastArgs =>
            {
                // Obtain the arguments from the notification
                ToastArguments args = ToastArguments.Parse(toastArgs.Argument);

                // Obtain any user input (text boxes, menu selections) from the notification
                ValueSet userInput = toastArgs.UserInput;

                // Need to dispatch to UI thread if performing UI operations
                Application.Current.Dispatcher.Invoke(delegate
                {
                    if (args.TryGetValue(_ActionTypeCode, out string value))
                    {
                        switch (value)
                        {
                        case _ActionTypeStartTask:
                            userInput.TryGetValue(_SelectionTaskKey, out object key);
                            StartSelectedWorkTask(key?.ToString());
                            break;

                        case _ActionTypeStartLunch:
                            StartBreak();
                            break;
                        }
                    }
                    else
                    {
                        ((MainWindow)Application.Current.MainWindow).ShowWindow();
                    }
                });
            };
Exemple #4
0
 protected override void OnStartup(StartupEventArgs e)
 {
     base.OnStartup(e);
     ToastNotificationManagerCompat.OnActivated += t =>
     {
         ToastArguments args = ToastArguments.Parse(t.Argument);
         //t.Use
         Current.Dispatcher.Invoke(delegate
         {
             if (!args.Contains("action"))
             {
                 return;
             }
             else
             {
                 int state = args.GetInt("action");
                 if (state == 0)
                 {
                     Modetor.Net.Server.Core.HttpServers.BaseServer.Servers[args.Get("si")].Suspend();
                 }
                 else if (state == 1)
                 {
                     Modetor.Net.Server.Core.HttpServers.BaseServer.Servers[args.Get("si")].Resume();
                 }
                 else if (state == 2)
                 {
                     // Started....
                 }
             }
             //MessageBox.Show(args.Get("action"));
         });
     };
 }
Exemple #5
0
        public static void ToastNotificationManagerCompatOnOnActivated(ToastNotificationActivatedEventArgsCompat e)
        {
            MainWindow.DispatcherQueue.TryEnqueue(() =>
            {
                //Activate window
                MainWindow.Activate();

                //Handle toast action
                ToastArguments args = ToastArguments.Parse(e.Argument);
                if (!args.Contains(ToastAction))
                {
                    return;
                }

                switch (args[ToastAction])
                {
                case ToastActionConversation:
                    {
                        var chatId = args[ToastActionConversationChat];
                        if (ChatActivated != null)
                        {
                            ChatActivated.Invoke(null, chatId);
                        }
                        else
                        {
                            PendingChatId = chatId;
                        }

                        break;
                    }
                }
            });
        }
        public static ToastArguments MakeDeleteCacheToastArguments(string videoId)
        {
            var args = new ToastArguments();

            args.Add(ToastArgumentKey_Action, ToastArgumentValue_Action_DeleteCache);
            args.Add(ToastArgumentKey_Id, videoId);
            return(args);
        }
        private static void AssertEqual(ToastArguments expected, ToastArguments actual)
        {
            Assert.IsTrue(IsSame(expected, actual), "Expected: " + expected + "\nActual: " + actual);

            Assert.IsTrue(IsSame(expected, ToastArguments.Parse(actual.ToString())), "After serializing and parsing actual, result changed.\n\nExpected: " + expected + "\nActual: " + ToastArguments.Parse(actual.ToString()));
            Assert.IsTrue(IsSame(ToastArguments.Parse(expected.ToString()), actual), "After serializing and parsing expected, result changed.\n\nExpected: " + ToastArguments.Parse(expected.ToString()) + "\nActual: " + actual);
            Assert.IsTrue(IsSame(ToastArguments.Parse(expected.ToString()), ToastArguments.Parse(actual.ToString())), "After serializing and parsing both, result changed.\n\nExpected: " + ToastArguments.Parse(expected.ToString()) + "\nActual: " + ToastArguments.Parse(actual.ToString()));
        }
        public static ToastArguments MakePlayVideoToastArguments(string videoId)
        {
            var args = new ToastArguments();

            args.Add(ToastArgumentKey_Action, ToastArgumentValue_Action_PlayVideo);
            args.Add(ToastArgumentKey_Id, videoId);
            return(args);
        }
        public static ToastArguments MakeOpenPageWithIdToastArguments(HohoemaPageType pageType, string id)
        {
            var args = new ToastArguments();

            args.Add(ToastArgumentKey_Action, ToastArgumentValue_Action_OpenPage);
            args.Add(ToastArgumentKey_PageType, pageType.ToString());
            args.Add(ToastArgumentKey_PageParameters, $"id={id}");
            return(args);
        }
        public static ToastArguments MakePlayPlaylistToastArguments(PlaylistItemsSourceOrigin origin, string playlistId)
        {
            var args = new ToastArguments();

            args.Add(ToastArgumentKey_Action, ToastArgumentValue_Action_PlayPlaylist);
            args.Add(ToastArgumentKey_PlaylistOrigin, origin.ToString());
            args.Add(ToastArgumentKey_PlaylistId, playlistId);
            return(args);
        }
Exemple #11
0
        private void ToastNotificationManagerCompat_OnActivated(ToastNotificationActivatedEventArgsCompat e)
        {
            var args = ToastArguments.Parse(e.Argument);

            Activator.Activate(
                args["type"],
                args.Contains("receivedAt") ? args["receivedAt"] : null,
                args.Contains("startedAt") ? args["startedAt"] : null
                );
        }
Exemple #12
0
        private void Toast_OnActivated(ToastNotificationActivatedEventArgsCompat e)
        {
            var parsed = ToastArguments.Parse(e.Argument);

            switch (parsed["action"])
            {
            case "viewRafflesWonPage":
                Process.Start("explorer.exe", "https://scrap.tf/raffles/won");
                break;
            }
        }
        public static ToastArguments MakeOpenPageToastArguments(HohoemaPageType pageType, string parameters = null)
        {
            var args = new ToastArguments();

            args.Add(ToastArgumentKey_Action, ToastArgumentValue_Action_OpenPage);
            args.Add(ToastArgumentKey_PageType, pageType.ToString());
            if (parameters != null)
            {
                args.Add(ToastArgumentKey_PageParameters, parameters);
            }
            return(args);
        }
        public void TestEnumerator()
        {
            KeyValuePair <string, string>[] parameters = ToastArguments.Parse("name=Andrew;age=22;isOld").ToArray();

            Assert.AreEqual(3, parameters.Length);
            Assert.AreEqual(1, parameters.Count(i => i.Key.Equals("name")));
            Assert.AreEqual(1, parameters.Count(i => i.Key.Equals("age")));
            Assert.AreEqual(1, parameters.Count(i => i.Key.Equals("isOld")));
            Assert.IsTrue(parameters.Any(i => i.Key.Equals("name") && i.Value.Equals("Andrew")));
            Assert.IsTrue(parameters.Any(i => i.Key.Equals("age") && i.Value.Equals("22")));
            Assert.IsTrue(parameters.Any(i => i.Key.Equals("isOld") && i.Value == null));
        }
        private static void OnEntryWritten()
        {
            List <EventRecord> filteredEntries  = new List <EventRecord>();
            string             eventFilterQuery = "*[System[(EventID=5152 or EventID=5157) and TimeCreated[timediff(@SystemTime) <= 6000]]]";
            EventLogQuery      eventsQuery      = new EventLogQuery("Security", PathType.LogName, eventFilterQuery);

            try
            {
                EventLogReader logReader = new EventLogReader(eventsQuery);
                for (EventRecord eventdetail = logReader.ReadEvent(); eventdetail != null; eventdetail = logReader.ReadEvent())
                {
                    filteredEntries.Add(eventdetail);
                }
            }
            catch (EventLogNotFoundException)
            {
            }
            var query = filteredEntries.OrderByDescending(x => x.TimeCreated).FirstOrDefault();

            if (query != null && query.Properties[2].Value.ToString() == @"%%14593")
            {
                var filePath             = GetFriendlyPath(query.Properties[1].Value.ToString());
                var preRuleNameComponent = filePath.Split('\\');
                if (preRuleNameComponent.Length >= 2)
                {
                    var ruleNameComponent = preRuleNameComponent[preRuleNameComponent.Length - 1];

                    var existRule = filteredRules.Any(x => x.Name.EndsWith(ruleNameComponent + " 出站连接"));
                    if (existRule == false)
                    {
                        if (displayNotification)
                        {
                            new ToastContentBuilder()
                            .AddText("发现新的出站连接请求")
                            .AddText(filePath)
                            .AddText("请求建立出站连接")
                            .AddButton(new ToastButton().SetContent("允许").AddArgument("action", "AllowConnection"))
                            .AddButton(new ToastButton().SetContent("阻止").AddArgument("action", "BlockConnection"))
                            .Show();
                            displayNotification = false;
                            ToastNotificationManagerCompat.OnActivated += toastArgs =>
                            {
                                ToastArguments args = ToastArguments.Parse(toastArgs.Argument);

                                FirewallActions(args, filePath, ruleNameComponent);
                                args = null;
                            };
                        }
                    }
                }
            }
        }
Exemple #16
0
        protected override async void OnActivated(IActivatedEventArgs e)
        {
            if (e is ToastNotificationActivatedEventArgs toastActivationArgs)
            {
                // Obtain the arguments from the notification
                ToastArguments args = ToastArguments.Parse(toastActivationArgs.Argument);

                if (args.Get("action") is "Settings")
                {
                    await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings:privacy-location"));
                }
            }
        }
        public void TestIndexer_NullException()
        {
            try
            {
                string val = new ToastArguments()[null];
            }
            catch (ArgumentNullException)
            {
                return;
            }

            Assert.Fail("Exception should have been thrown.");
        }
Exemple #18
0
        protected override void OnActivated(IActivatedEventArgs e)
        {
            // Handle notification activation
            if (e is ToastNotificationActivatedEventArgs toastActivationArgs)
            {
                // Obtain the arguments from the notification
                ToastArguments args = ToastArguments.Parse(toastActivationArgs.Argument);

                // Obtain any user input (text boxes, menu selections) from the notification
                ValueSet userInput = toastActivationArgs.UserInput;

                // TODO: Show the corresponding content
            }
        }
Exemple #19
0
        private void OnToastNotificationUserAction(ToastNotificationActivatedEventArgsCompat e)
        {
            ToastArguments args = ToastArguments.Parse(e.Argument);

            Application.Current.Dispatcher.Invoke(delegate
            {
                NotificationUserAction data = new()
                {
                    Arguments  = args.ToDictionary(p => p.Key, p => p.Value),
                    UserInputs = e.UserInput.ToDictionary(p => p.Key, p => p.Value)
                };
                _bootstrapper.OnToastNotificationUserAction(data);
            });
        }
    }
        public void TestAddExceptions_NullName()
        {
            ToastArguments query = new ToastArguments();

            try
            {
                query.Add(null, "value");
            }
            catch (ArgumentNullException)
            {
                return;
            }

            Assert.Fail("Adding null name shouldn't be allowed.");
        }
Exemple #21
0
        private void Setup()
        {
            bool encode = this.userSettingService.GetUserSetting <bool>(UserSettingConstants.NotifyOnEncodeDone);
            bool queue  = this.userSettingService.GetUserSetting <bool>(UserSettingConstants.NotifyOnQueueDone);

            if (encode || queue)
            {
                if (isInitialised)
                {
                    return;
                }

                this.notifier = ToastNotificationManagerCompat.CreateToastNotifier();

                isInitialised = true;

                ToastNotificationManagerCompat.OnActivated += toastArgs =>
                {
                    // Obtain the arguments from the notification
                    ToastArguments args = ToastArguments.Parse(toastArgs.Argument);

                    // Remove any notifications that are clicked
                    System.Collections.Generic.KeyValuePair <string, string> tag = args.FirstOrDefault();
                    if (!string.IsNullOrEmpty(tag.Value))
                    {
                        try
                        {
                            ToastNotificationManagerCompat.History.Remove(tag.Value);
                        }
                        catch (Exception exc)
                        {
                            Debug.WriteLine(exc);
                        }
                    }

                    // Need to dispatch to UI thread if performing UI operations
                    Application.Current.Dispatcher.Invoke(delegate
                    {
                        Window w = Application.Current.MainWindow;
                        if (w != null)
                        {
                            w.WindowState = WindowState.Normal;
                            w.BringIntoView();
                        }
                    });
                };
            }
        }
        public void TestRemove_OnlyKey()
        {
            ToastArguments qs = new ToastArguments()
            {
                { "name", "Andrew" },
                { "age", "22" }
            };

            Assert.IsTrue(qs.Remove("age"));

            AssertEqual(
                new ToastArguments()
            {
                { "name", "Andrew" }
            }, qs);

            Assert.IsFalse(qs.Remove("age"));
        }
        public void TestIndexer_NotFoundException()
        {
            try
            {
                var args = new ToastArguments()
                {
                    { "name", "Andrew" }
                };

                _ = args["Name"];
            }
            catch (KeyNotFoundException)
            {
                return;
            }

            Assert.Fail("Exception should have been thrown.");
        }
Exemple #24
0
        public Form1()
        {
            InitializeComponent();

            // Listen to notification activation
            ToastNotificationManagerCompat.OnActivated += toastArgs =>
            {
                // Obtain the arguments from the notification
                ToastArguments args = ToastArguments.Parse(toastArgs.Argument);

                // Obtain any user input (text boxes, menu selections) from the notification
                ValueSet userInput = toastArgs.UserInput;

                // Need to dispatch to UI thread if performing UI operations
                Console.WriteLine("URL: " + args["url"]);
                System.Diagnostics.Process.Start(args["url"]);
            };
        }
Exemple #25
0
        public void AddHeaderTest_WithExpectedArgsAndToastArguments_ReturnSelfWithHeaderAdded()
        {
            // Arrange
            string         testToastHeaderId  = "Test Header ID";
            string         testToastTitle     = "Test Toast Title";
            ToastArguments testToastArguments = new ToastArguments()
                                                .Add("arg1", 5)
                                                .Add("arg2", "tacos");

            // Act
            ToastContentBuilder builder          = new ToastContentBuilder();
            ToastContentBuilder anotherReference = builder.AddHeader(testToastHeaderId, testToastTitle, testToastArguments);

            // Assert
            Assert.AreSame(builder, anotherReference);
            Assert.AreEqual(testToastHeaderId, builder.Content.Header.Id);
            Assert.AreEqual(testToastTitle, builder.Content.Header.Title);
            Assert.AreEqual(testToastArguments.ToString(), builder.Content.Header.Arguments);
        }
        public void TestAdd()
        {
            ToastArguments qs = new ToastArguments();

            qs.Add("name", "Andrew");

            AssertEqual(
                new ToastArguments()
            {
                { "name", "Andrew" }
            }, qs);

            qs.Add("age", "22");

            AssertEqual(
                new ToastArguments()
            {
                { "name", "Andrew" },
                { "age", "22" }
            }, qs);

            qs.Add("name", "Lei");

            AssertEqual(
                new ToastArguments()
            {
                { "name", "Lei" },
                { "age", "22" }
            }, qs);

            string nullStr = null;

            qs.Add("name", nullStr);

            AssertEqual(
                new ToastArguments()
            {
                { "name" },
                { "age", "22" }
            }, qs);
        }
Exemple #27
0
        // Add any OnActivationCompleted customization here.
        private void OnActivatedByToast(ToastNotificationActivatedEventArgs toastActivationArgs)
        {
            ToastArguments toastArguments = ToastArguments.Parse(toastActivationArgs.Argument);
            ValueSet       userInput      = toastActivationArgs.UserInput;

            if (toastArguments.Contains("opcode"))
            {
                string opcode = toastArguments["opcode"];
                if ("device".Equals(opcode))
                {
                    sDeviceManager.HandleToast(toastArguments, userInput);
                }
            }

            // Close System Tray
            if (sAppServiceManager != null)
            {
                sAppServiceManager.Dispose();
                sAppServiceManager = null;
            }
        }
 internal void HandleToast(ToastArguments toastArguments, ValueSet userInput)
 {
     if (toastArguments.Contains("action"))
     {
         string action = toastArguments["action"];
         if ("pair".Equals(action))
         {
             string device_id = toastArguments["deviceid"];
             PairWithMac(device_id);
         }
         else if ("unpair".Equals(action))
         {
             string device_id = toastArguments["deviceid"];
             UnpairWithMac(device_id);
         }
         else if ("connect".Equals(action))
         {
             string device_id = toastArguments["deviceid"];
             ConnectA2DP(device_id);
         }
     }
 }
        public void TestCount()
        {
            ToastArguments qs = new ToastArguments();

            Assert.AreEqual(0, qs.Count);

            qs.Add("name", "Andrew");

            Assert.AreEqual(1, qs.Count);

            qs.Add("age", "22");

            Assert.AreEqual(2, qs.Count);

            qs.Remove("age");

            Assert.AreEqual(1, qs.Count);

            qs.Remove("name");

            Assert.AreEqual(0, qs.Count);
        }
        private static bool IsSame(ToastArguments expected, ToastArguments actual)
        {
            if (expected.Count != actual.Count)
            {
                return(false);
            }

            foreach (var pair in expected)
            {
                if (!actual.Contains(pair.Key))
                {
                    return(false);
                }

                if (actual.Get(pair.Key) != pair.Value)
                {
                    return(false);
                }
            }

            return(true);
        }