using System; using System.Windows.Forms; using CefSharp; using TweetDuck.Controls; using TweetLib.Core.Features.Notifications; using TweetLib.Core.Features.Plugins; namespace TweetDuck.Browser.Notification.Example{ sealed class FormNotificationExample : FormNotificationMain{ public override bool RequiresResize => true; protected override bool CanDragWindow => Config.NotificationPosition == DesktopNotification.Position.Custom; protected override FormBorderStyle NotificationBorderStyle{ get{ if (Config.NotificationSize == DesktopNotification.Size.Custom){ switch(base.NotificationBorderStyle){ case FormBorderStyle.FixedSingle: return FormBorderStyle.Sizable; case FormBorderStyle.FixedToolWindow: return FormBorderStyle.SizableToolWindow; } } return base.NotificationBorderStyle; } } protected override string BodyClasses => base.BodyClasses + " td-example"; public event EventHandler Ready; private readonly DesktopNotification exampleNotification; public FormNotificationExample(FormBrowser owner, PluginManager pluginManager) : base(owner, pluginManager, false){ browser.LoadingStateChanged += browser_LoadingStateChanged; string exampleTweetHTML = Program.Resources.LoadSilent("pages/example.html")?.Replace("{avatar}", AppLogo.Url) ?? string.Empty; #if DEBUG exampleTweetHTML = exampleTweetHTML.Replace("</p>", @"</p><div style='margin-top:256px'>Scrollbar test padding...</div>"); #endif exampleNotification = new DesktopNotification(string.Empty, string.Empty, "Home", exampleTweetHTML, 176, string.Empty, string.Empty); } private void browser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e){ if (!e.IsLoading){ Ready?.Invoke(this, EventArgs.Empty); browser.LoadingStateChanged -= browser_LoadingStateChanged; } } public override void HideNotification(){ Location = ControlExtensions.InvisibleLocation; } public override void FinishCurrentNotification(){} public void ShowExampleNotification(bool reset){ if (reset){ LoadTweet(exampleNotification); } else{ PrepareAndDisplayWindow(); } UpdateTitle(); } } }