From: Luís P. <lpe...@al...> - 2009-10-23 23:48:04
|
src/kcheckgmailapp.cpp | 2 src/kcheckgmailcore.cpp | 24 +++++----- src/kcheckgmailcore.h | 3 - src/kcheckgmailtray.cpp | 105 ++++++++++++++++++++---------------------------- src/kcheckgmailtray.h | 4 - 5 files changed, 62 insertions(+), 76 deletions(-) New commits: commit f13fcb20e572589ac396c91a19fc34926edb8643 Author: Luís Pereira <lui...@gm...> Date: Sat Oct 24 00:10:36 2009 +0100 Makes screenshots work again Signed-off-by: Luís Pereira <lui...@gm...> diff --git a/src/kcheckgmailcore.cpp b/src/kcheckgmailcore.cpp index 752d64f..9dde816 100644 --- a/src/kcheckgmailcore.cpp +++ b/src/kcheckgmailcore.cpp @@ -62,10 +62,11 @@ KCheckGmailCore::KCheckGmailCore(QObject* parent) : QObject(parent), d(new Private) { + initTray(); + d->mJSP = new JSProtocol(this); d->actions = new KActionCollection(this); - initTray(); initActions(); buildTrayPopupMenu(); initConfigDialog(); @@ -76,8 +77,7 @@ KCheckGmailCore::KCheckGmailCore(QObject* parent) QDBusConnection dbus = QDBusConnection::sessionBus(); dbus.registerObject("/kcheckgmail", this, QDBusConnection::ExportScriptableSlots); - d->mTray->show(); - start(); + QTimer::singleShot(2000, this, SLOT(slotStart())); } KCheckGmailCore::~KCheckGmailCore() @@ -103,6 +103,8 @@ KCheckGmailCore& KCheckGmailCore::instance() void KCheckGmailCore::initTray() { d->mTray = new KCheckGmailTray(0); + d->mTray->show(); + connect(d->mTray, SIGNAL(quitSelected()), kapp, SLOT(quit())); connect(d->mTray, SIGNAL(leftButtonClicked()), @@ -250,7 +252,7 @@ void KCheckGmailCore::makeConnections(JSProtocol* mJSP, KCheckGmailTray* mTray) } -void KCheckGmailCore::start() +void KCheckGmailCore::slotStart() { static bool started = false; @@ -260,21 +262,21 @@ void KCheckGmailCore::start() //From RSIBreak if(KMessageBox::shouldBeShownContinue("welcome_to_kcheckgmail")) { -#if 0 - d->mTray->takeScreenshotOfTrayIcon(); + QString systray_shot = d->mTray->takeScreenshotOfTrayIcon(); + const QString imgTag = QString::fromLatin1("<img src=\"%1\"/>").arg(systray_shot); KMessageBox::information(0, i18n("<p><center>Welcome to KCheckGMail!</center></p>" "<p>You can locate KCheckGMail here: </p>" - "<p><center><img source=\"systray_shot\"></center></p>" + "<p><center>%1</center></p>" "When you right-click on that icon you will see " "a menu, from which you can see the Threads " - "menu containing the newest email of your account."), + "menu containing the newest email of your account." + , imgTag), i18n("Welcome")); KMessageBox::saveDontShowAgainContinue("welcome_to_kcheckgmail"); Prefs::self()->setTrayIconUnreadMessagesColor(QColor("blue")); -#endif } if(KMessageBox::shouldBeShownContinue("kcheckgmail_continue_legal")) { diff --git a/src/kcheckgmailcore.h b/src/kcheckgmailcore.h index 6a0172b..a19469e 100644 --- a/src/kcheckgmailcore.h +++ b/src/kcheckgmailcore.h @@ -85,6 +85,8 @@ private slots: void slotLogingOut(); void slotOpenButtonClicked(); + void slotStart(); + private: KCheckGmailCore(QObject* parent = 0); virtual ~KCheckGmailCore(); @@ -96,7 +98,6 @@ private: void buildTrayPopupMenu(); void initConfigDialog(); void makeConnections(JSProtocol* mJSP, KCheckGmailTray* mTray); - void start(); QString getUrlBase(); diff --git a/src/kcheckgmailtray.cpp b/src/kcheckgmailtray.cpp index e62b303..55cc6b9 100644 --- a/src/kcheckgmailtray.cpp +++ b/src/kcheckgmailtray.cpp @@ -29,6 +29,8 @@ #include <kcolorscheme.h> #include <kiconeffect.h> #include <kglobalsettings.h> +#include <KTemporaryFile> + #include <QPainter> #include <QTimer> @@ -174,79 +176,72 @@ void KCheckGmailTray::updateCountImage(QColor color) //from rsibreak: rsiwidget.cpp void KCheckGmailTray::whereAmI() { -#if 0 - if (!isShown()) - showIcon(); - - takeScreenshotOfTrayIcon(); - + show(); + + QString systray_shot = takeScreenshotOfTrayIcon(); + const QString imgTag = QString::fromLatin1("<img src=\"%1\"/>").arg(systray_shot); KMessageBox::information(0, - i18n("<p>KCheckGMail is already running</p><p>You can find it here:</p><p><center><img source=\"systray_shot\"></center></p>"), + i18n("<p>KCheckGMail is already running</p><p>You can find it here:</p><p><p><center>%1</center></p></p>", imgTag), i18n("Already Running")); -#endif } -//from rsibreak: rsiwidget.cpp -void KCheckGmailTray::takeScreenshotOfTrayIcon() +QString KCheckGmailTray::takeScreenshotOfTrayIcon() { -#if 0 // Process the events else the icon will not be there and the screenie will fail! kapp->processEvents(); - // ******************************************************************************** - // This block is copied from Konversation - KonversationMainWindow::queryClose() - // The part about the border is copied from KSystemTray::displayCloseMessage() - // - // Compute size and position of the pixmap to be grabbed: - QPoint g = this->geometry().topLeft(); - - //Catch invalid positions (2007 - Raphael Geissert) - if (g.x() < 0) { - g.setX(0); - } - if (g.y() < 0) { - g.setY(0); - } - g = this->mapToGlobal( g ); - + // Taken from Akregator TrayIcon::takeScreenshot() + const QRect rect = geometry(); + const QPoint g = rect.topLeft(); int desktopWidth = kapp->desktop()->width(); int desktopHeight = kapp->desktop()->height(); - int tw = this->geometry().width(); - int th = this->geometry().height(); + int tw = rect.width(); + int th = rect.height(); int w = desktopWidth / 4; int h = desktopHeight / 9; - - int x = g.x() + tw/2 - w/2; // Center the rectange in the systray icon + int x = g.x() + tw/2 - w/2; // Center the rectange in the systray icon int y = g.y() + th/2 - h/2; - if ( x < 0 ) x = 0; // Move the rectangle to stay in the desktop limits - if ( y < 0 ) y = 0; - if ( x + w > desktopWidth ) x = desktopWidth - w; - if ( y + h > desktopHeight ) y = desktopHeight - h; - - // Grab the desktop and draw a circle around the icon: - QPixmap shot = QPixmap::grabWindow( QX11Info::appRootWindow(), x, y, w, h ); - QPainter painter( &shot ); + if (x < 0) + x = 0; // Move the rectangle to stay in the desktop limits + if (y < 0) + y = 0; + if (x + w > desktopWidth) + x = desktopWidth - w; + if (y + h > desktopHeight) + y = desktopHeight - h; + + // Grab the desktop and draw a circle around the icon: + QPixmap shot = QPixmap::grabWindow(QApplication::desktop()->winId(), x, y, w, h); + QPainter painter(&shot); + painter.setRenderHint( QPainter::Antialiasing ); const int MARGINS = 6; const int WIDTH = 3; int ax = g.x() - x - MARGINS -1; int ay = g.y() - y - MARGINS -1; - painter.setPen( QPen( Qt::red, WIDTH ) ); - painter.drawArc( ax, ay, tw + 2*MARGINS, th + 2*MARGINS, 0, 16*360 ); + painter.setPen( QPen(Qt::red/*KApplication::palette().active().highlight()*/, WIDTH) ); + painter.drawArc(ax, ay, tw + 2*MARGINS, th + 2*MARGINS, 0, 16*360); painter.end(); - // Then, we add a border around the image to make it more visible: - QPixmap finalShot(w + 2, h + 2); - finalShot.fill(KApplication::palette().active().foreground()); + // Paint the border + const int BORDER = 1; + QPixmap finalShot(w + 2*BORDER, h + 2*BORDER); + finalShot.fill( KApplication::palette().color( QPalette::Foreground )); painter.begin(&finalShot); - painter.drawPixmap(1, 1, shot); + painter.drawPixmap(BORDER, BORDER, shot); painter.end(); +// return shot; // not finalShot?? -fo - // Associate source to image and show the dialog: - Q3MimeSourceFactory::defaultFactory()->setPixmap( "systray_shot", finalShot ); + // End of Taken from Akregator - // End copied block - // ******************************************************************************** -#endif + QString filename; + KTemporaryFile* tmpfile = new KTemporaryFile; + tmpfile->setAutoRemove(false); + if (tmpfile->open()) { + filename = tmpfile->fileName(); + shot.save(tmpfile, "png"); + tmpfile->close(); + } + return filename; } diff --git a/src/kcheckgmailtray.h b/src/kcheckgmailtray.h index e6c6637..b8e4ab2 100644 --- a/src/kcheckgmailtray.h +++ b/src/kcheckgmailtray.h @@ -50,7 +50,7 @@ public: KCheckGmailTray(QWidget *parent = 0); virtual ~KCheckGmailTray(); - void takeScreenshotOfTrayIcon(); + QString takeScreenshotOfTrayIcon(); void setPixmapAuth(); void setPixmapEmpty(); commit 598ac359ace9ea1dae35d5ebb467a60ee0949539 Author: Luís Pereira <lui...@gm...> Date: Wed Jun 24 13:23:27 2009 +0100 Fixes typo in an DBus call Signed-off-by: Luís Pereira <lui...@gm...> diff --git a/src/kcheckgmailapp.cpp b/src/kcheckgmailapp.cpp index f541cd5..2013b44 100644 --- a/src/kcheckgmailapp.cpp +++ b/src/kcheckgmailapp.cpp @@ -34,7 +34,7 @@ int KCheckGmailApp::newInstance() QDBusInterface dbus("org.kcheckgmail.kcheckgmail", "/kcheckgmail", "org.kcheckgmail.kcheckgmail"); - dbus.call("whereIAm"); + dbus.call("whereAmI"); } else { const KCheckGmailCore& kcgmCore = KCheckGmailCore::instance(); commit 875ce548bde578dab6dd5e4483850dc2294ee6d5 Author: Luís Pereira <lui...@gm...> Date: Wed Jun 24 12:40:38 2009 +0100 Removes unneeded showIcon and hideIcon methods Signed-off-by: Luís Pereira <lui...@gm...> diff --git a/src/kcheckgmailcore.cpp b/src/kcheckgmailcore.cpp index 020c1c8..752d64f 100644 --- a/src/kcheckgmailcore.cpp +++ b/src/kcheckgmailcore.cpp @@ -76,7 +76,7 @@ KCheckGmailCore::KCheckGmailCore(QObject* parent) QDBusConnection dbus = QDBusConnection::sessionBus(); dbus.registerObject("/kcheckgmail", this, QDBusConnection::ExportScriptableSlots); - d->mTray->showIcon(); + d->mTray->show(); start(); } @@ -728,13 +728,13 @@ void KCheckGmailCore::checkMailNow() void KCheckGmailCore::showIcon() { - d->mTray->showIcon(); + d->mTray->show(); } void KCheckGmailCore::hideIcon() { - d->mTray->hideIcon(); + d->mTray->hide(); } diff --git a/src/kcheckgmailtray.cpp b/src/kcheckgmailtray.cpp index c5e6af9..e62b303 100644 --- a/src/kcheckgmailtray.cpp +++ b/src/kcheckgmailtray.cpp @@ -97,16 +97,6 @@ void KCheckGmailTray::slotMailCountChanged(int n) updateCountImage(Prefs::trayIconUnreadMessagesColor()); } -void KCheckGmailTray::showIcon() -{ - show(); -} - -void KCheckGmailTray::hideIcon() -{ - hide(); -} - void KCheckGmailTray::slotVersionMismatch() { diff --git a/src/kcheckgmailtray.h b/src/kcheckgmailtray.h index c557a32..e6c6637 100644 --- a/src/kcheckgmailtray.h +++ b/src/kcheckgmailtray.h @@ -57,8 +57,6 @@ public: void stopAnim(); void startAnim(unsigned int t); void toggleAnim(bool restoreToState); - void showIcon(); - void hideIcon(); void whereAmI(); signals: |