1
0
mirror of https://github.com/chylex/TweetDuck.git synced 2025-06-02 05:34:10 +02:00
TweetDuck/Core/Utils/Notification/TweetScreenshotManager.cs

55 lines
1.9 KiB
C#

using System;
using System.Drawing;
using TweetDck.Core.Controls;
using TweetDck.Core.Handling;
namespace TweetDck.Core.Utils.Notification{
class TweetScreenshotManager : IDisposable{
private readonly FormBrowser browser;
private readonly FormNotification screenshot;
public TweetScreenshotManager(FormBrowser browser){
this.browser = browser;
this.screenshot = new FormNotification(browser, null, NotificationFlags.DisableScripts | NotificationFlags.DisableContextMenu | NotificationFlags.TopMost){
CanMoveWindow = () => false
};
this.screenshot.PrepareNotificationForScreenshot(Callback);
}
public void Trigger(string html, int width, int height){
screenshot.LoadNotificationForScreenshot(new TweetNotification(html, string.Empty, 0), width, height);
screenshot.Show();
// TODO start a timer on 10 seconds to close the window if anything fails or takes too long
}
private void Callback(){
FormNotification notification = browser.BrowserNotificationForm;
Point? prevNotificationLocation = null;
bool prevFreezeTimer = false;
if (notification.IsNotificationVisible){
prevNotificationLocation = notification.Location;
prevFreezeTimer = notification.FreezeTimer;
notification.Location = ControlExtensions.InvisibleLocation;
notification.FreezeTimer = true;
}
screenshot.TakeScreenshotAndHide();
if (prevNotificationLocation.HasValue){
notification.Location = prevNotificationLocation.Value;
notification.FreezeTimer = prevFreezeTimer;
}
}
public void Dispose(){
screenshot.Dispose();
}
}
}