diff --git a/Core/FormBrowser.cs b/Core/FormBrowser.cs
index 03dfa1f6..5866afcf 100644
--- a/Core/FormBrowser.cs
+++ b/Core/FormBrowser.cs
@@ -40,7 +40,15 @@ namespace TweetDck.Core{
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 @@ namespace TweetDck.Core{
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 @@ namespace TweetDck.Core{
}
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 @@ namespace TweetDck.Core{
}
}
- 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);
}
diff --git a/Core/FormNotification.cs b/Core/FormNotification.cs
index 123ffdea..7892dfc7 100644
--- a/Core/FormNotification.cs
+++ b/Core/FormNotification.cs
@@ -75,7 +75,7 @@ namespace TweetDck.Core{
}
}
- 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 @@ namespace TweetDck.Core{
};
browser.FrameLoadEnd += Browser_FrameLoadEnd;
- browser.RegisterJsObject("$TD",bridge);
+ browser.RegisterJsObject("$TD",new TweetDeckBridge(owner,this));
panelBrowser.Controls.Add(browser);
@@ -122,7 +122,7 @@ namespace TweetDck.Core{
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 @@ namespace TweetDck.Core{
}
else{
if (tweetQueue.Count > 0){
- MoveToVisibleLocation();
LoadNextNotification();
}
@@ -170,8 +169,6 @@ namespace TweetDck.Core{
trayIcon.HasNotifications = true;
}
else{
- MoveToVisibleLocation();
-
tweetQueue.Enqueue(notification);
UpdateTitle();
@@ -182,17 +179,12 @@ namespace TweetDck.Core{
}
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 @@ namespace TweetDck.Core{
timerProgress.Stop();
}
+ public void OnNotificationReady(){
+ UpdateTitle();
+ MoveToVisibleLocation();
+ timerProgress.Start();
+ }
+
public void FinishCurrentTweet(){
if (tweetQueue.Count > 0){
LoadNextNotification();
@@ -215,26 +213,17 @@ namespace TweetDck.Core{
}
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(){
diff --git a/Core/Handling/TweetDeckBridge.cs b/Core/Handling/TweetDeckBridge.cs
index a971f500..d94e32ea 100644
--- a/Core/Handling/TweetDeckBridge.cs
+++ b/Core/Handling/TweetDeckBridge.cs
@@ -15,6 +15,7 @@ namespace TweetDck.Core.Handling{
public static string ClipboardImagePath = string.Empty;
private readonly FormBrowser form;
+ private readonly FormNotification notification;
public string BrandName{
get{
@@ -40,8 +41,9 @@ namespace TweetDck.Core.Handling{
}
}
- 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 @@ namespace TweetDck.Core.Handling{
}
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 @@ namespace TweetDck.Core.Handling{
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(){
diff --git a/Resources/Scripts/notification.js b/Resources/Scripts/notification.js
index 9278a139..8f0db947 100644
--- a/Resources/Scripts/notification.js
+++ b/Resources/Scripts/notification.js
@@ -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);
\ No newline at end of file