mirror of
https://github.com/chylex/TweetDuck.git
synced 2025-04-23 03:15:48 +02:00
Rewrite notification bridge handling and add OnNotificationReady to show notification after it has loaded
This commit is contained in:
parent
a7e222f2e7
commit
b4fc522f37
@ -40,7 +40,15 @@ public FormBrowser(PluginManager pluginManager){
|
||||
|
||||
Text = Program.BrandName;
|
||||
|
||||
bridge = new TweetDeckBridge(this);
|
||||
plugins = pluginManager;
|
||||
plugins.Reloaded += plugins_Reloaded;
|
||||
plugins.Config.PluginChangedState += plugins_PluginChangedState;
|
||||
|
||||
notification = CreateNotificationForm(true);
|
||||
notification.CanMoveWindow = () => false;
|
||||
notification.Show();
|
||||
|
||||
bridge = new TweetDeckBridge(this,notification);
|
||||
|
||||
browser = new ChromiumWebBrowser("https://tweetdeck.twitter.com/"){
|
||||
MenuHandler = new ContextMenuBrowser(this),
|
||||
@ -62,14 +70,6 @@ public FormBrowser(PluginManager pluginManager){
|
||||
|
||||
UpdateTrayIcon();
|
||||
|
||||
plugins = pluginManager;
|
||||
plugins.Reloaded += plugins_Reloaded;
|
||||
plugins.Config.PluginChangedState += plugins_PluginChangedState;
|
||||
|
||||
notification = CreateNotificationForm(true);
|
||||
notification.CanMoveWindow = () => false;
|
||||
notification.Show();
|
||||
|
||||
updates = new UpdateHandler(browser,this);
|
||||
updates.UpdateAccepted += updates_UpdateAccepted;
|
||||
}
|
||||
@ -85,7 +85,7 @@ private void ForceClose(){
|
||||
}
|
||||
|
||||
public FormNotification CreateNotificationForm(bool autoHide){
|
||||
return new FormNotification(this,bridge,plugins,trayIcon,autoHide);
|
||||
return new FormNotification(this,plugins,trayIcon,autoHide);
|
||||
}
|
||||
|
||||
// window setup
|
||||
@ -265,20 +265,11 @@ public void OpenPlugins(){
|
||||
}
|
||||
}
|
||||
|
||||
public void OnTweetPopup(TweetNotification tweet){
|
||||
notification.ShowNotification(tweet);
|
||||
}
|
||||
|
||||
public void OnTweetSound(){
|
||||
|
||||
}
|
||||
|
||||
public void DisplayTooltip(string text, bool showInNotification){
|
||||
if (showInNotification){
|
||||
notification.DisplayTooltip(text);
|
||||
return;
|
||||
}
|
||||
|
||||
public void DisplayTooltip(string text){
|
||||
if (string.IsNullOrEmpty(text)){
|
||||
toolTip.Hide(this);
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ private static int BaseClientHeight{
|
||||
}
|
||||
}
|
||||
|
||||
public FormNotification(Form owner, TweetDeckBridge bridge, PluginManager plugins, TrayIcon trayIcon, bool autoHide){
|
||||
public FormNotification(FormBrowser owner, PluginManager plugins, TrayIcon trayIcon, bool autoHide){
|
||||
InitializeComponent();
|
||||
|
||||
Text = Program.BrandName;
|
||||
@ -96,7 +96,7 @@ public FormNotification(Form owner, TweetDeckBridge bridge, PluginManager plugin
|
||||
};
|
||||
|
||||
browser.FrameLoadEnd += Browser_FrameLoadEnd;
|
||||
browser.RegisterJsObject("$TD",bridge);
|
||||
browser.RegisterJsObject("$TD",new TweetDeckBridge(owner,this));
|
||||
|
||||
panelBrowser.Controls.Add(browser);
|
||||
|
||||
@ -122,7 +122,7 @@ private void timerHideProgress_Tick(object sender, EventArgs e){
|
||||
if (Bounds.Contains(Cursor.Position) || FreezeTimer || ContextMenuOpen)return;
|
||||
|
||||
timeLeft -= timerProgress.Interval;
|
||||
progressBarTimer.SetValueInstant((int)Math.Min(1000,Math.Round(1050.0*(totalTime-timeLeft)/totalTime)));
|
||||
progressBarTimer.SetValueInstant((int)Math.Min(1000,Math.Round(1025.0*(totalTime-timeLeft)/totalTime)));
|
||||
|
||||
if (timeLeft <= 0){
|
||||
FinishCurrentTweet();
|
||||
@ -135,7 +135,6 @@ private void Config_MuteToggled(object sender, EventArgs e){
|
||||
}
|
||||
else{
|
||||
if (tweetQueue.Count > 0){
|
||||
MoveToVisibleLocation();
|
||||
LoadNextNotification();
|
||||
}
|
||||
|
||||
@ -170,8 +169,6 @@ public void ShowNotification(TweetNotification notification){
|
||||
trayIcon.HasNotifications = true;
|
||||
}
|
||||
else{
|
||||
MoveToVisibleLocation();
|
||||
|
||||
tweetQueue.Enqueue(notification);
|
||||
UpdateTitle();
|
||||
|
||||
@ -182,17 +179,12 @@ public void ShowNotification(TweetNotification notification){
|
||||
}
|
||||
|
||||
public void ShowNotificationForSettings(bool reset){
|
||||
if (browser.Address == "about:blank"){
|
||||
browser.Load("about:blank"); // required, otherwise shit breaks
|
||||
reset = true;
|
||||
}
|
||||
|
||||
if (reset){
|
||||
if (reset || browser.Address == "about:blank"){
|
||||
LoadTweet(TweetNotification.ExampleTweet);
|
||||
timerProgress.Start();
|
||||
}
|
||||
|
||||
MoveToVisibleLocation();
|
||||
else{
|
||||
MoveToVisibleLocation();
|
||||
}
|
||||
}
|
||||
|
||||
public void HideNotification(){
|
||||
@ -202,6 +194,12 @@ public void HideNotification(){
|
||||
timerProgress.Stop();
|
||||
}
|
||||
|
||||
public void OnNotificationReady(){
|
||||
UpdateTitle();
|
||||
MoveToVisibleLocation();
|
||||
timerProgress.Start();
|
||||
}
|
||||
|
||||
public void FinishCurrentTweet(){
|
||||
if (tweetQueue.Count > 0){
|
||||
LoadNextNotification();
|
||||
@ -215,26 +213,17 @@ public void FinishCurrentTweet(){
|
||||
}
|
||||
|
||||
private void LoadNextNotification(){
|
||||
TweetNotification tweet = tweetQueue.Dequeue();
|
||||
|
||||
if (browser.Address == "about:blank"){
|
||||
browser.Load("about:blank"); // required, otherwise shit breaks
|
||||
}
|
||||
|
||||
LoadTweet(tweet);
|
||||
timerProgress.Stop();
|
||||
timerProgress.Start();
|
||||
|
||||
UpdateTitle();
|
||||
LoadTweet(tweetQueue.Dequeue());
|
||||
}
|
||||
|
||||
private void LoadTweet(TweetNotification tweet){
|
||||
browser.LoadHtml(tweet.GenerateHtml(),"http://tweetdeck.twitter.com/");
|
||||
|
||||
CurrentUrl = tweet.Url;
|
||||
|
||||
timerProgress.Stop();
|
||||
totalTime = timeLeft = tweet.GetDisplayDuration(Program.UserConfig.NotificationDuration);
|
||||
progressBarTimer.Value = 0;
|
||||
|
||||
CurrentUrl = tweet.Url;
|
||||
browser.LoadHtml(tweet.GenerateHtml(),"http://tweetdeck.twitter.com/?"+DateTime.Now.Ticks);
|
||||
}
|
||||
|
||||
private void MoveToVisibleLocation(){
|
||||
|
@ -15,6 +15,7 @@ class TweetDeckBridge{
|
||||
public static string ClipboardImagePath = string.Empty;
|
||||
|
||||
private readonly FormBrowser form;
|
||||
private readonly FormNotification notification;
|
||||
|
||||
public string BrandName{
|
||||
get{
|
||||
@ -40,8 +41,9 @@ public bool ExpandLinksOnHover{
|
||||
}
|
||||
}
|
||||
|
||||
public TweetDeckBridge(FormBrowser form){
|
||||
public TweetDeckBridge(FormBrowser form, FormNotification notification){
|
||||
this.form = form;
|
||||
this.notification = notification;
|
||||
}
|
||||
|
||||
public void LoadFontSizeClass(string fsClass){
|
||||
@ -80,8 +82,8 @@ public void OpenPluginsMenu(){
|
||||
}
|
||||
|
||||
public void OnTweetPopup(string tweetHtml, string tweetUrl, int tweetCharacters){
|
||||
form.InvokeSafe(() => {
|
||||
form.OnTweetPopup(new TweetNotification(tweetHtml,tweetUrl,tweetCharacters));
|
||||
notification.InvokeSafe(() => {
|
||||
notification.ShowNotification(new TweetNotification(tweetHtml,tweetUrl,tweetCharacters));
|
||||
});
|
||||
}
|
||||
|
||||
@ -89,10 +91,17 @@ public void OnTweetSound(){
|
||||
form.InvokeSafe(form.OnTweetSound);
|
||||
}
|
||||
|
||||
public void OnNotificationReady(){
|
||||
notification.InvokeSafe(notification.OnNotificationReady);
|
||||
}
|
||||
|
||||
public void DisplayTooltip(string text, bool showInNotification){
|
||||
form.InvokeSafe(() => {
|
||||
form.DisplayTooltip(text,showInNotification);
|
||||
});
|
||||
if (showInNotification){
|
||||
notification.InvokeSafe(() => notification.DisplayTooltip(text));
|
||||
}
|
||||
else{
|
||||
form.InvokeSafe(() => form.DisplayTooltip(text));
|
||||
}
|
||||
}
|
||||
|
||||
public void TryPasteImage(){
|
||||
|
@ -94,7 +94,7 @@
|
||||
})();
|
||||
|
||||
//
|
||||
// Block: Setup embedded tweet address for context menu
|
||||
// Block: Setup embedded tweet address for context menu.
|
||||
//
|
||||
(function(){
|
||||
var embedded = document.getElementsByClassName("quoted-tweet");
|
||||
@ -108,4 +108,9 @@
|
||||
|
||||
$TD.setNotificationTweetEmbedded(account[0].getAttribute("href")+"/status/"+tweetId);
|
||||
})();
|
||||
|
||||
//
|
||||
// Block: Page fully loaded.
|
||||
//
|
||||
$TD.onNotificationReady();
|
||||
})($TD);
|
Loading…
Reference in New Issue
Block a user