1
0
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:
chylex 2016-07-05 18:31:29 +02:00
parent a7e222f2e7
commit b4fc522f37
4 changed files with 50 additions and 56 deletions

View File

@ -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);
}

View File

@ -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(){

View File

@ -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(){

View File

@ -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);