Git commit 59cc5c4b7a487e4ef9a302365486e2e99c3455e9 by Martin Koller. Committed on 26/03/2011 at 22:23. Pushed by mkoller into branch 'master'.
make the screenshot configurable (delay seconds, hide window) GUI: M +1 -0 mainWindow/kpMainWindow.h M +53 -8 mainWindow/kpMainWindow_File.cpp http://commits.kde.org/kolourpaint/59cc5c4b7a487e4ef9a302365486e2e99c3455e9 diff --git a/mainWindow/kpMainWindow.h b/mainWindow/kpMainWindow.h index b0ad9a9..b45e49c 100644 --- a/mainWindow/kpMainWindow.h +++ b/mainWindow/kpMainWindow.h @@ -347,6 +347,7 @@ private slots: void slotScanned (const QImage &image, int); void slotScreenshot(); + void slotMakeScreenshot(); void slotProperties (); diff --git a/mainWindow/kpMainWindow_File.cpp b/mainWindow/kpMainWindow_File.cpp index b2e4417..d1516d6 100644 --- a/mainWindow/kpMainWindow_File.cpp +++ b/mainWindow/kpMainWindow_File.cpp @@ -40,13 +40,18 @@ #include <QPrinter> #include <QPrintDialog> #include <QApplication> +#include <QTimer> +#include <QLabel> +#include <QCheckBox> +#include <QVBoxLayout> -#include <kapplication.h> +#include <kdialog.h> #include <kaction.h> #include <kactioncollection.h> #include <kconfig.h> #include <kconfiggroup.h> #include <kdebug.h> +#include <KIntSpinBox> #include <kfiledialog.h> #include <kglobal.h> #include <kiconloader.h> @@ -639,15 +644,55 @@ void kpMainWindow::slotScanned (const QImage &image, int) void kpMainWindow::slotScreenshot() { - toolEndShape (); - QPixmap pixmap = QPixmap::grabWindow(QApplication::desktop()->winId()); + toolEndShape(); - kpDocument *doc = new kpDocument(pixmap.width(), pixmap.height(), - documentEnvironment()); - doc->setImage(pixmap.toImage()); + KDialog *dialog = new KDialog(this); + dialog->setButtons(KDialog::Ok | KDialog::Cancel); - // Send document to current or new window. - setDocumentChoosingWindow(doc); + QLabel *label = new QLabel(i18n("Snapshot Delay")); + KIntSpinBox *seconds = new KIntSpinBox; + seconds->setRange(0, 99); + seconds->setSuffix(ki18np(" second", " seconds")); + seconds->setSpecialValueText(i18n("No delay")); + + QCheckBox *hideWindow = new QCheckBox(i18n("Hide Main Window")); + hideWindow->setChecked(true); + + QVBoxLayout *vbox = new QVBoxLayout(dialog->mainWidget()); + vbox->addWidget(label); + vbox->addWidget(seconds); + vbox->addWidget(hideWindow); + + if ( dialog->exec() == KDialog::Rejected ) + { + delete dialog; + return; + } + + if ( hideWindow->isChecked() ) + hide(); + + // at least 1 seconds to make sure the window is hidden and the hide effect already stopped + QTimer::singleShot((seconds->value() + 1) * 1000, this, SLOT(slotMakeScreenshot())); + + delete dialog; +} + +//--------------------------------------------------------------------- + +void kpMainWindow::slotMakeScreenshot() +{ + QCoreApplication::processEvents(); + QPixmap pixmap = QPixmap::grabWindow(QApplication::desktop()->winId()); + + kpDocument *doc = new kpDocument(pixmap.width(), pixmap.height(), + documentEnvironment()); + doc->setImage(pixmap.toImage()); + + // Send document to current or new window. + setDocumentChoosingWindow(doc); + + show(); // in case we hid the mainwindow, show it again } //---------------------------------------------------------------------