| Summary: | keep passive dialog-info for longer | ||
|---|---|---|---|
| Product: | [Applications] ktorrent | Reporter: | Maciej Pilichowski <bluedzins> |
| Component: | general | Assignee: | Joris Guisson <joris.guisson> |
| Status: | RESOLVED FIXED | ||
| Severity: | wishlist | ||
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | openSUSE | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
Maciej Pilichowski
2007-05-04 14:39:53 UTC
SVN commit 661372 by guisson:
Improved system tray popup box :
- We now use balloon style KPassivePopup instead of Qt tooltips
- It also only disappears when the cursor is moved away from the tray icon
- The text can be updated
BUG: 145019
M +3 -0 ChangeLog
M +3 -2 apps/ktorrent/Makefile.am
A apps/ktorrent/trayhoverpopup.cpp [License: GPL (v2+)]
A apps/ktorrent/trayhoverpopup.h [License: GPL (v2+)]
M +39 -17 apps/ktorrent/trayicon.cpp
M +10 -3 apps/ktorrent/trayicon.h
--- trunk/extragear/network/ktorrent/ChangeLog #661371:661372
@@ -23,6 +23,9 @@
- Added speed limits for individual torrents
- Added dynamic diskspace checking.
- Added option to disable diskspace preallocation
+- Improved system tray popup icon : we now use balloon style and use
+KPassivePopup instead of Qt tooltips, it also only disappears when the cursor
+is moved away from the tray icon and the text can be updated
Changes in 2.1.4
- Fixed crash in parsing of DHT messages
--- trunk/extragear/network/ktorrent/apps/ktorrent/Makefile.am #661371:661372
@@ -26,7 +26,7 @@
ktorrentviewmenu.cpp leaktrace.cpp main.cpp pastedialog.cpp pastedlgbase.ui pref.cpp \
queuedialog.cpp queuedialog.h queuedlg.ui scandialog.cpp scandlgbase.ui \
speedlimitsdlg.cpp speedlimitsdlgbase.ui torrentcreatordlg.cpp torrentcreatordlg.h \
- torrentcreatordlgbase.ui trayicon.cpp viewmanager.cpp
+ torrentcreatordlgbase.ui trayhoverpopup.cpp trayicon.cpp viewmanager.cpp
xdg_apps_DATA = ktorrent.desktop
@@ -34,7 +34,8 @@
# these are the headers for your project
noinst_HEADERS = dcopinterface.h fileselectdlg.h ipfilterwidget.h ktorrent.h \
ktorrentcore.h ktorrentdcop.h ktorrentview.h ktorrentviewitem.h ktorrentviewmenu.h \
- pastedialog.h pref.h scandialog.h speedlimitsdlg.h trayicon.h viewmanager.h
+ pastedialog.h pref.h scandialog.h speedlimitsdlg.h trayhoverpopup.h trayicon.h \
+ viewmanager.h
# client stuff
--- trunk/extragear/network/ktorrent/apps/ktorrent/trayicon.cpp #661371:661372
@@ -29,6 +29,8 @@
#include "ktorrentcore.h"
#include <interfaces/functions.h>
#include <net/socketmonitor.h>
+#include <util/log.h>
+#include "trayhoverpopup.h"
using namespace bt;
@@ -38,11 +40,14 @@
: KSystemTray(parent, name)
{
m_core = tc;
- setPixmap(loadIcon("ktorrent"));
+ m_kt_pix = loadIcon("ktorrent");
+ setPixmap(m_kt_pix);
paint=new QPainter( this );
drawContents ( paint );
previousDownloadHeight=0;
previousUploadHeight=0;
+
+ m_hover_popup = new TrayHoverPopup(m_kt_pix,this);
connect(this,SIGNAL(quitSelected()),kapp,SLOT(quit()));
connect(m_core, SIGNAL(finished(kt::TorrentInterface* )),
@@ -64,11 +69,26 @@
TrayIcon::~TrayIcon()
{}
+void TrayIcon::enterEvent(QEvent* ev)
+{
+ KSystemTray::enterEvent(ev);
+ m_hover_popup->enterEvent();
+}
+
+void TrayIcon::leaveEvent(QEvent* )
+{
+ m_hover_popup->leaveEvent();
+}
+
void TrayIcon::updateStats(const CurrentStats stats, bool showBars,int downloadBandwidth, int uploadBandwidth )
{
- QString tip = i18n("<center><b>KTorrent</b></center><table cellpadding='2' cellspacing='2' align='center'><tr><td><b>Speed:</b></td><td></td></tr><tr><td>Download: <font color='#1c9a1c'>%1</font></td><td>Upload: <font color='#990000'>%2</font></td></tr><tr><td><b>Transfer:</b></td><td></td></tr><tr><td>Download: <font color='#1c9a1c'>%3</font></td><td>Upload: <font color='#990000'>%4</font></td></tr></table>").arg(KBytesPerSecToString((double)stats.download_speed/1024.0)).arg(KBytesPerSecToString((double)stats.upload_speed/1024.0)).arg(BytesToString(stats.bytes_downloaded)).arg(BytesToString(stats.bytes_uploaded));
- QToolTip::add
- (this, tip);
+ QString tip = i18n("<table cellpadding='2' cellspacing='2' align='center'><tr><td><b>Speed:</b></td><td></td></tr><tr><td>Download: <font color='#1c9a1c'>%1</font></td><td>Upload: <font color='#990000'>%2</font></td></tr><tr><td><b>Transfer:</b></td><td></td></tr><tr><td>Download: <font color='#1c9a1c'>%3</font></td><td>Upload: <font color='#990000'>%4</font></td></tr></table>")
+ .arg(KBytesPerSecToString((double)stats.download_speed/1024.0))
+ .arg(KBytesPerSecToString((double)stats.upload_speed/1024.0))
+ .arg(BytesToString(stats.bytes_downloaded))
+ .arg(BytesToString(stats.bytes_uploaded));
+ m_hover_popup->updateText(tip);
+
if(showBars)
drawSpeedBar(stats.download_speed/1024,stats.upload_speed/1024, downloadBandwidth, uploadBandwidth);
}
@@ -97,6 +117,12 @@
previousUploadHeight=UploadHeight;
}
+void TrayIcon::showPassivePopup(const QString & msg,const QString & title)
+{
+ KPassivePopup::message(KPassivePopup::Balloon,title,msg,m_kt_pix, this);
+}
+
+
void TrayIcon::finished(TorrentInterface* tc)
{
if (!Settings::showPopups())
@@ -112,7 +138,7 @@
.arg(KBytesPerSecToString(speed_down / tc->getRunningTimeDL()))
.arg(KBytesPerSecToString(speed_up / tc->getRunningTimeUL()));
- KPassivePopup::message(i18n("Download completed"),msg,loadIcon("ktorrent"), this);
+ showPassivePopup(msg,i18n("Download completed"));
}
void TrayIcon::maxShareRatioReached(kt::TorrentInterface* tc)
@@ -131,8 +157,7 @@
.arg(BytesToString(s.bytes_uploaded))
.arg(KBytesPerSecToString(speed_up / tc->getRunningTimeUL()));
- KPassivePopup::message(i18n("Seeding completed"),
- msg,loadIcon("ktorrent"), this);
+ showPassivePopup(msg,i18n("Seeding completed"));
}
void TrayIcon::torrentStoppedByError(kt::TorrentInterface* tc, QString msg)
@@ -143,7 +168,8 @@
const TorrentStats & s = tc->getStats();
QString err_msg = i18n("<b>%1</b> has been stopped with the following error: <br>%2")
.arg(s.torrent_name).arg(msg);
- KPassivePopup::message(i18n("Error"),err_msg,loadIcon("ktorrent"),this);
+
+ showPassivePopup(err_msg,i18n("Error"));
}
void TrayIcon::corruptedData(kt::TorrentInterface* tc)
@@ -155,7 +181,7 @@
QString err_msg = i18n("Corrupted data has been found in the torrent <b>%1</b>"
"<br>It would be a good idea to do a data integrity check on the torrent.")
.arg(s.torrent_name);
- KPassivePopup::message(i18n("Error"),err_msg,loadIcon("ktorrent"),this);
+ showPassivePopup(err_msg,i18n("Error"));
}
void TrayIcon::queuedTorrentOverMaxRatio(kt::TorrentInterface* tc)
@@ -169,8 +195,7 @@
QString msg = i18n("<b>%1</b> has reached its maximum share ratio of %2 and cannot be enqueued. Remove the limit manually if you want to continue seeding.").arg(s.torrent_name).arg(s.max_share_ratio);
- KPassivePopup::message(i18n("Torrent cannot be enqueued."),
- msg,loadIcon("ktorrent"), this);
+ showPassivePopup(msg,i18n("Torrent cannot be enqueued."));
}
void TrayIcon::canNotStart(kt::TorrentInterface* tc,kt::TorrentStartResponse reason)
@@ -194,13 +219,11 @@
"Cannot download more than %n torrents. <br>",Settings::maxDownloads());
}
msg += i18n("Go to Settings -> Configure KTorrent, if you want to change the limits.");
- KPassivePopup::message(i18n("Torrent cannot be started"),
- msg,loadIcon("ktorrent"), this);
+ showPassivePopup(msg,i18n("Torrent cannot be started"));
break;
case kt::NOT_ENOUGH_DISKSPACE:
msg += i18n("There is not enough diskspace available.");
- KPassivePopup::message(i18n("Torrent cannot be started"),
- msg,loadIcon("ktorrent"), this);
+ showPassivePopup(msg,i18n("Torrent cannot be started"));
break;
default:
break;
@@ -219,8 +242,7 @@
if(stopped)
msg.prepend(i18n("Torrent has been stopped.<br />"));
- KPassivePopup::message(i18n("Device running out of space"),
- msg,loadIcon("ktorrent"), this);
+ showPassivePopup(msg,i18n("Device running out of space"));
}
SetMaxRate::SetMaxRate( KTorrentCore* tc, int t, QWidget *parent, const char *name):KPopupMenu(parent, name)
--- trunk/extragear/network/ktorrent/apps/ktorrent/trayicon.h #661371:661372
@@ -21,6 +21,7 @@
#ifndef TRAYICON_H
#define TRAYICON_H
+
#include <ksystemtray.h>
#include <kpopupmenu.h>
#include <qpainter.h>
@@ -32,6 +33,7 @@
using namespace bt;
class QString;
+class TrayHoverPopup;
struct TrayStats
{
@@ -39,8 +41,6 @@
bt::Uint32 upload_speed;
bt::Uint64 bytes_downloaded;
bt::Uint64 bytes_uploaded;
-
-
};
/**
@@ -54,9 +54,14 @@
TrayIcon(KTorrentCore* tc, QWidget *parent = 0, const char *name = 0);
virtual ~TrayIcon();
+ /// Update stats for system tray icon
void updateStats(const CurrentStats stats, bool showBars=false, int downloadBandwidth=0, int uploadBandwidth=0);
+
private:
void drawSpeedBar(int downloadSpeed, int uploadSpeed, int downloadBandwidth, int uploadBandwidth);
+ void showPassivePopup(const QString & msg,const QString & titile);
+ virtual void enterEvent(QEvent* ev);
+ virtual void leaveEvent(QEvent* ev);
private slots:
/**
@@ -99,12 +104,14 @@
///Shows passive popup message
void lowDiskSpace(kt::TorrentInterface* tc, bool stopped);
-
+
private:
KTorrentCore* m_core;
QPainter *paint;
int previousDownloadHeight;
int previousUploadHeight;
+ TrayHoverPopup* m_hover_popup;
+ QPixmap m_kt_pix;
};
class SetMaxRate : public KPopupMenu
|