qTox  Version: nightly | Commit: bc751c8e1cac455f9690654fcfe0f560d2d7dfdd
screenshotgrabber.h
Go to the documentation of this file.
1 /*
2  Copyright © 2015-2019 by The qTox Project Contributors
3 
4  This file is part of qTox, a Qt-based graphical interface for Tox.
5 
6  qTox is libre software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  qTox is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with qTox. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #pragma once
21 
22 #include <QPixmap>
23 #include <QPointer>
24 
25 class QGraphicsSceneMouseEvent;
26 class QGraphicsPixmapItem;
27 class QGraphicsRectItem;
28 class QGraphicsTextItem;
29 class QGraphicsScene;
30 class QGraphicsView;
31 class QKeyEvent;
35 
36 class ScreenshotGrabber : public QObject
37 {
38  Q_OBJECT
39 public:
41  ~ScreenshotGrabber() override;
42 
43  bool eventFilter(QObject* object, QEvent* event) override;
44 
45  void showGrabber();
46 
47 public slots:
48  void acceptRegion();
49  void reInit();
50 
51 signals:
52  void screenshotTaken(const QPixmap& pixmap);
53  void regionChosen(QRect region);
54  void rejected();
55 
56 private:
59 
60  void setupScene();
61 
64  void chooseHelperTooltipText(QRect rect);
65  void adjustTooltipPosition();
66 
67  bool handleKeyPress(QKeyEvent* event);
68  void reject();
69 
70  QPixmap grabScreen();
71 
72  void hideVisibleWindows();
73  void restoreHiddenWindows();
74 
75  void beginRectChooser(QGraphicsSceneMouseEvent* event);
76 
77 private:
78  QPixmap screenGrab;
79  QGraphicsScene* scene;
80  QGraphicsView* window;
81  QGraphicsPixmapItem* screenGrabDisplay;
85  QGraphicsTextItem* helperTooltip;
86 
87  qreal pixRatio = 1.0;
88 
90  QVector<QPointer<QWidget>> mHiddenWindows;
91 };
ScreenGrabberOverlayItem
Definition: screengrabberoverlayitem.h:26
ScreenshotGrabber::mQToxVisible
bool mQToxVisible
Definition: screenshotgrabber.h:89
ScreenshotGrabber
Definition: screenshotgrabber.h:36
ScreenshotGrabber::rejected
void rejected()
ScreenshotGrabber::pixRatio
qreal pixRatio
Definition: screenshotgrabber.h:87
ToolBoxGraphicsItem
Definition: toolboxgraphicsitem.h:26
ScreenshotGrabber::helperTooltip
QGraphicsTextItem * helperTooltip
Definition: screenshotgrabber.h:85
ScreenshotGrabber::eventFilter
bool eventFilter(QObject *object, QEvent *event) override
Definition: screenshotgrabber.cpp:70
ScreenshotGrabber::acceptRegion
void acceptRegion()
Definition: screenshotgrabber.cpp:121
ScreenshotGrabber::handleKeyPress
bool handleKeyPress(QKeyEvent *event)
Definition: screenshotgrabber.cpp:96
ScreenshotGrabber::hideVisibleWindows
void hideVisibleWindows()
Definition: screenshotgrabber.cpp:235
ScreenshotGrabber::mHiddenWindows
QVector< QPointer< QWidget > > mHiddenWindows
Definition: screenshotgrabber.h:90
ScreenshotGrabber::grabScreen
QPixmap grabScreen()
Definition: screenshotgrabber.cpp:225
ScreenshotGrabber::reject
void reject()
Definition: screenshotgrabber.cpp:219
ScreenshotGrabber::chooseHelperTooltipText
void chooseHelperTooltipText(QRect rect)
Definition: screenshotgrabber.cpp:191
ScreenshotGrabber::scene
QGraphicsScene * scene
Definition: screenshotgrabber.h:79
ScreenshotGrabber::useNothingSelectedTooltip
void useNothingSelectedTooltip()
Definition: screenshotgrabber.cpp:168
ScreenshotGrabber::beginRectChooser
void beginRectChooser(QGraphicsSceneMouseEvent *event)
Definition: screenshotgrabber.cpp:258
ScreenshotGrabber::screenshotTaken
void screenshotTaken(const QPixmap &pixmap)
ScreenshotGrabber::showGrabber
void showGrabber()
Definition: screenshotgrabber.cpp:78
ScreenshotGrabber::screenGrabDisplay
QGraphicsPixmapItem * screenGrabDisplay
Definition: screenshotgrabber.h:81
ScreenshotGrabber::helperToolbox
ToolBoxGraphicsItem * helperToolbox
Definition: screenshotgrabber.h:84
ScreenshotGrabber::screenGrab
QPixmap screenGrab
Definition: screenshotgrabber.h:78
ScreenshotGrabber::reInit
void reInit()
Definition: screenshotgrabber.cpp:56
ScreenshotGrabber::useRegionSelectedTooltip
void useRegionSelectedTooltip()
Definition: screenshotgrabber.cpp:179
ScreenshotGrabber::restoreHiddenWindows
void restoreHiddenWindows()
Definition: screenshotgrabber.cpp:247
ScreenshotGrabber::~ScreenshotGrabber
~ScreenshotGrabber() override
Definition: screenshotgrabber.cpp:64
ScreenshotGrabber::window
QGraphicsView * window
Definition: screenshotgrabber.h:80
ScreenshotGrabber::overlay
ScreenGrabberOverlayItem * overlay
Definition: screenshotgrabber.h:82
ScreenshotGrabber::adjustTooltipPosition
void adjustTooltipPosition()
Definition: screenshotgrabber.cpp:203
ScreenshotGrabber::setupScene
void setupScene()
Definition: screenshotgrabber.cpp:140
ScreenshotGrabber::ScreenshotGrabber
ScreenshotGrabber()
Definition: screenshotgrabber.cpp:38
ScreenGrabberChooserRectItem
Definition: screengrabberchooserrectitem.h:24
ScreenshotGrabber::regionChosen
void regionChosen(QRect region)
ScreenshotGrabber::mKeysBlocked
bool mKeysBlocked
Definition: screenshotgrabber.h:58
ScreenshotGrabber::chooserRect
ScreenGrabberChooserRectItem * chooserRect
Definition: screenshotgrabber.h:83