mirror of
https://github.com/chylex/TweetDuck.git
synced 2025-04-29 11:34:13 +02:00
88 lines
3.3 KiB
C#
88 lines
3.3 KiB
C#
using CefSharp;
|
|
using TweetDuck.Core.Controls;
|
|
using TweetDuck.Core.Notification;
|
|
|
|
namespace TweetDuck.Core.Handling{
|
|
class ContextMenuNotification : ContextMenuBase{
|
|
private const int MenuSkipTweet = 26600;
|
|
private const int MenuFreeze = 26601;
|
|
private const int MenuCopyTweetUrl = 26602;
|
|
private const int MenuCopyQuotedTweetUrl = 26603;
|
|
|
|
private readonly FormNotificationBase form;
|
|
private readonly bool enableCustomMenu;
|
|
|
|
public ContextMenuNotification(FormNotificationBase form, bool enableCustomMenu) : base(form){
|
|
this.form = form;
|
|
this.enableCustomMenu = enableCustomMenu;
|
|
}
|
|
|
|
public override void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model){
|
|
model.Clear();
|
|
|
|
if (parameters.TypeFlags.HasFlag(ContextMenuType.Selection)){
|
|
model.AddItem(CefMenuCommand.Copy, "Copy");
|
|
model.AddSeparator();
|
|
}
|
|
|
|
base.OnBeforeContextMenu(browserControl, browser, frame, parameters, model);
|
|
|
|
if (enableCustomMenu){
|
|
model.AddItem((CefMenuCommand)MenuSkipTweet, "Skip tweet");
|
|
model.AddCheckItem((CefMenuCommand)MenuFreeze, "Freeze");
|
|
model.SetChecked((CefMenuCommand)MenuFreeze, form.FreezeTimer);
|
|
model.AddSeparator();
|
|
|
|
if (!string.IsNullOrEmpty(form.CurrentTweetUrl)){
|
|
model.AddItem((CefMenuCommand)MenuCopyTweetUrl, "Copy tweet address");
|
|
|
|
if (!string.IsNullOrEmpty(form.CurrentQuoteUrl)){
|
|
model.AddItem((CefMenuCommand)MenuCopyQuotedTweetUrl, "Copy quoted tweet address");
|
|
}
|
|
|
|
model.AddSeparator();
|
|
}
|
|
}
|
|
|
|
if (HasDevTools){
|
|
AddDebugMenuItems(model);
|
|
}
|
|
|
|
RemoveSeparatorIfLast(model);
|
|
|
|
form.InvokeAsyncSafe(() => form.ContextMenuOpen = true);
|
|
}
|
|
|
|
public override bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags){
|
|
if (base.OnContextMenuCommand(browserControl, browser, frame, parameters, commandId, eventFlags)){
|
|
return true;
|
|
}
|
|
|
|
switch((int)commandId){
|
|
case MenuSkipTweet:
|
|
form.InvokeAsyncSafe(form.FinishCurrentNotification);
|
|
return true;
|
|
|
|
case MenuFreeze:
|
|
form.InvokeAsyncSafe(() => form.FreezeTimer = !form.FreezeTimer);
|
|
return true;
|
|
|
|
case MenuCopyTweetUrl:
|
|
SetClipboardText(form.CurrentTweetUrl);
|
|
return true;
|
|
|
|
case MenuCopyQuotedTweetUrl:
|
|
SetClipboardText(form.CurrentQuoteUrl);
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public override void OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame){
|
|
base.OnContextMenuDismissed(browserControl, browser, frame);
|
|
form.InvokeAsyncSafe(() => form.ContextMenuOpen = false);
|
|
}
|
|
}
|
|
}
|