mirror of
https://github.com/chylex/TweetDuck.git
synced 2025-05-24 23:34:05 +02:00
Add link expanding and tooltip support to popup notifications
This commit is contained in:
parent
4c44da7f4a
commit
7238e17b86
@ -229,7 +229,12 @@ public void OnTweetSound(){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DisplayTooltip(string text){
|
public void DisplayTooltip(string text, bool showInNotification){
|
||||||
|
if (showInNotification){
|
||||||
|
notification.DisplayTooltip(text);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(text)){
|
if (string.IsNullOrEmpty(text)){
|
||||||
toolTip.Hide(this);
|
toolTip.Hide(this);
|
||||||
}
|
}
|
||||||
|
2
Core/FormNotification.Designer.cs
generated
2
Core/FormNotification.Designer.cs
generated
@ -29,6 +29,7 @@ private void InitializeComponent() {
|
|||||||
this.panelBrowser = new System.Windows.Forms.Panel();
|
this.panelBrowser = new System.Windows.Forms.Panel();
|
||||||
this.timerProgress = new System.Windows.Forms.Timer(this.components);
|
this.timerProgress = new System.Windows.Forms.Timer(this.components);
|
||||||
this.progressBarTimer = new TweetDck.Core.Controls.FlatProgressBar();
|
this.progressBarTimer = new TweetDck.Core.Controls.FlatProgressBar();
|
||||||
|
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// panelBrowser
|
// panelBrowser
|
||||||
@ -87,5 +88,6 @@ private void InitializeComponent() {
|
|||||||
private System.Windows.Forms.Panel panelBrowser;
|
private System.Windows.Forms.Panel panelBrowser;
|
||||||
private Controls.FlatProgressBar progressBarTimer;
|
private Controls.FlatProgressBar progressBarTimer;
|
||||||
private System.Windows.Forms.Timer timerProgress;
|
private System.Windows.Forms.Timer timerProgress;
|
||||||
|
private System.Windows.Forms.ToolTip toolTip;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -249,5 +249,16 @@ private void MoveToVisibleLocation(){
|
|||||||
private void UpdateTitle(){
|
private void UpdateTitle(){
|
||||||
Text = tweetQueue.Count > 0 ? Program.BrandName+" ("+tweetQueue.Count+" more left)" : Program.BrandName;
|
Text = tweetQueue.Count > 0 ? Program.BrandName+" ("+tweetQueue.Count+" more left)" : Program.BrandName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void DisplayTooltip(string text){
|
||||||
|
if (string.IsNullOrEmpty(text)){
|
||||||
|
toolTip.Hide(this);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
Point position = PointToClient(Cursor.Position);
|
||||||
|
position.Offset(20,5);
|
||||||
|
toolTip.Show(text,this,position);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -101,9 +101,9 @@ public void OnUpdateDismissed(string versionTag){
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DisplayTooltip(string text){
|
public void DisplayTooltip(string text, bool showInNotification){
|
||||||
form.InvokeSafe(() => {
|
form.InvokeSafe(() => {
|
||||||
form.DisplayTooltip(text);
|
form.DisplayTooltip(text,showInNotification);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,11 +202,11 @@
|
|||||||
})();
|
})();
|
||||||
|
|
||||||
//
|
//
|
||||||
// Block: Expand shortened links on hover.
|
// Block: Expand shortened links on hover or display tooltip.
|
||||||
//
|
//
|
||||||
(function(){
|
(function(){
|
||||||
var cutStart = function(str, search){
|
var cutStart = function(str, search){
|
||||||
return _.startsWith(str,search) ? str.substr(search.length) : str;
|
return str.startsWith(search) ? str.substr(search.length) : str;
|
||||||
};
|
};
|
||||||
|
|
||||||
var prevMouseX = -1, prevMouseY = -1;
|
var prevMouseX = -1, prevMouseY = -1;
|
||||||
@ -233,7 +233,7 @@
|
|||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
tooltipTimer = window.setTimeout(function(){
|
tooltipTimer = window.setTimeout(function(){
|
||||||
$TD.displayTooltip(me.attr("data-full-url"));
|
$TD.displayTooltip(me.attr("data-full-url"),false);
|
||||||
tooltipDisplayed = true;
|
tooltipDisplayed = true;
|
||||||
},400);
|
},400);
|
||||||
}
|
}
|
||||||
@ -246,15 +246,16 @@
|
|||||||
me.text(prevText);
|
me.text(prevText);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
|
||||||
|
if (tooltipDisplayed){
|
||||||
window.clearTimeout(tooltipTimer);
|
window.clearTimeout(tooltipTimer);
|
||||||
tooltipDisplayed = false;
|
tooltipDisplayed = false;
|
||||||
$TD.displayTooltip(null);
|
$TD.displayTooltip(null,false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (e.type === "mousemove"){
|
else if (e.type === "mousemove"){
|
||||||
if (tooltipDisplayed && (prevMouseX != e.clientX || prevMouseY != e.clientY)){
|
if (tooltipDisplayed && (prevMouseX != e.clientX || prevMouseY != e.clientY)){
|
||||||
$TD.displayTooltip(me.attr("data-full-url"));
|
$TD.displayTooltip(me.attr("data-full-url"),false);
|
||||||
prevMouseX = e.clientX;
|
prevMouseX = e.clientX;
|
||||||
prevMouseY = e.clientY;
|
prevMouseY = e.clientY;
|
||||||
}
|
}
|
||||||
|
@ -27,4 +27,72 @@
|
|||||||
addEventListener(links,"contextmenu",function(e){
|
addEventListener(links,"contextmenu",function(e){
|
||||||
$TD.setLastRightClickedLink(e.currentTarget.getAttribute("data-full-url") || "");
|
$TD.setLastRightClickedLink(e.currentTarget.getAttribute("data-full-url") || "");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//
|
||||||
|
// Block: Expand shortened links on hover or display tooltip.
|
||||||
|
//
|
||||||
|
(function(){
|
||||||
|
var cutStart = function(str, search){
|
||||||
|
return str.startsWith(search) ? str.substr(search.length) : str;
|
||||||
|
};
|
||||||
|
|
||||||
|
var prevMouseX = -1, prevMouseY = -1;
|
||||||
|
var tooltipTimer, tooltipDisplayed;
|
||||||
|
|
||||||
|
addEventListener(links,"mouseenter",function(e){
|
||||||
|
var url = e.currentTarget.getAttribute("data-full-url");
|
||||||
|
if (!url)return;
|
||||||
|
|
||||||
|
var text = e.currentTarget.textContent;
|
||||||
|
|
||||||
|
if (text.charCodeAt(text.length-1) !== 8230){ // horizontal ellipsis
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($TD.expandLinksOnHover){
|
||||||
|
var expanded = url;
|
||||||
|
expanded = cutStart(expanded,"https://");
|
||||||
|
expanded = cutStart(expanded,"http://");
|
||||||
|
expanded = cutStart(expanded,"www.");
|
||||||
|
|
||||||
|
e.currentTarget.setAttribute("td-prev-text",text);
|
||||||
|
e.currentTarget.innerHTML = expanded;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
tooltipTimer = window.setTimeout(function(){
|
||||||
|
$TD.displayTooltip(url,true);
|
||||||
|
tooltipDisplayed = true;
|
||||||
|
},400);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
addEventListener(links,"mouseleave",function(e){
|
||||||
|
if (!e.currentTarget.hasAttribute("data-full-url"))return;
|
||||||
|
|
||||||
|
if ($TD.expandLinksOnHover){
|
||||||
|
var prevText = e.currentTarget.getAttribute("td-prev-text");
|
||||||
|
|
||||||
|
if (prevText){
|
||||||
|
e.currentTarget.innerHTML = prevText;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tooltipDisplayed){
|
||||||
|
window.clearTimeout(tooltipTimer);
|
||||||
|
tooltipDisplayed = false;
|
||||||
|
$TD.displayTooltip(null,true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
addEventListener(links,"mousemove",function(e){
|
||||||
|
if (tooltipDisplayed && (prevMouseX != e.clientX || prevMouseY != e.clientY)){
|
||||||
|
var url = e.currentTarget.getAttribute("data-full-url");
|
||||||
|
if (!url)return;
|
||||||
|
|
||||||
|
$TD.displayTooltip(url,true);
|
||||||
|
prevMouseX = e.clientX;
|
||||||
|
prevMouseY = e.clientY;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
})($TD);
|
})($TD);
|
Loading…
Reference in New Issue
Block a user