UBDesktopAnnotationController.h 4.91 KB
Newer Older
Claudio Valerio's avatar
Claudio Valerio committed
1
/*
Claudio Valerio's avatar
Claudio Valerio committed
2
 * Copyright (C) 2013 Open Education Foundation
Claudio Valerio's avatar
Claudio Valerio committed
3
 *
Claudio Valerio's avatar
Claudio Valerio committed
4 5
 * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour
 * l'Education Numérique en Afrique (GIP ENA)
6
 *
Claudio Valerio's avatar
Claudio Valerio committed
7 8 9
 * This file is part of OpenBoard.
 *
 * OpenBoard is free software: you can redistribute it and/or modify
Claudio Valerio's avatar
Claudio Valerio committed
10 11
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, version 3 of the License,
12 13 14 15
 * with a specific linking exception for the OpenSSL project's
 * "OpenSSL" library (or with modified versions of it that use the
 * same license as the "OpenSSL" library).
 *
Claudio Valerio's avatar
Claudio Valerio committed
16
 * OpenBoard is distributed in the hope that it will be useful,
Claudio Valerio's avatar
Claudio Valerio committed
17
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Claudio Valerio's avatar
Claudio Valerio committed
18
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Claudio Valerio's avatar
Claudio Valerio committed
19
 * GNU General Public License for more details.
Claudio Valerio's avatar
Claudio Valerio committed
20
 *
Claudio Valerio's avatar
Claudio Valerio committed
21
 * You should have received a copy of the GNU General Public License
Claudio Valerio's avatar
Claudio Valerio committed
22
 * along with OpenBoard. If not, see <http://www.gnu.org/licenses/>.
Claudio Valerio's avatar
Claudio Valerio committed
23 24
 */

25

Claudio Valerio's avatar
Claudio Valerio committed
26

Claudio Valerio's avatar
Claudio Valerio committed
27

Claudio Valerio's avatar
Claudio Valerio committed
28 29 30 31 32 33 34
#ifndef UBUNINOTESWINDOWCONTROLLER_H_
#define UBUNINOTESWINDOWCONTROLLER_H_

#include <QtGui>
#include <QTime>
#include <QTimer>

35
#include "gui/UBRightPalette.h"
Claudio Valerio's avatar
Claudio Valerio committed
36 37 38 39 40 41 42 43 44

class UBDesktopPalette;
class UBBoardView;
class UBGraphicsScene;
class UBDesktopPenPalette;
class UBDesktopMarkerPalette;
class UBDesktopEraserPalette;
class UBActionPalette;
class UBMainWindow;
Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
45
class UBRightPalette;
Claudio Valerio's avatar
Claudio Valerio committed
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

#define PROPERTY_PALETTE_TIMER      1000

/**
 * The uninotes controller. This object allocate a uninotes window and implements all the actions corresponding to
 * the uninotes button:
 * - Go to Uninotes
 * - Custom capture
 * - Window capture
 * - Screen capture
 */
class UBDesktopAnnotationController : public QObject
{
    Q_OBJECT;

    public:
Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
62
        UBDesktopAnnotationController(QObject *parent, UBRightPalette* rightPalette);
Claudio Valerio's avatar
Claudio Valerio committed
63 64 65 66 67
        virtual ~UBDesktopAnnotationController();
        void showWindow();
        void hideWindow();

        UBDesktopPalette *desktopPalette();
68
        QPainterPath desktopPalettePath() const;
Claudio Valerio's avatar
Claudio Valerio committed
69 70
        UBBoardView *drawingView();

71 72 73
        void TransparentWidgetResized();


Claudio Valerio's avatar
Claudio Valerio committed
74 75 76 77 78 79 80 81 82 83 84 85 86 87
    public slots:

        void screenLayoutChanged();
        void goToUniboard();
        void customCapture();
        void windowCapture();
        void screenCapture();
        void updateShowHideState(bool pEnabled);

        void close();

        void stylusToolChanged(int tool);
        void updateBackground();

88 89
//         void showKeyboard(bool show);
//         void showKeyboard(); //X11 virtual keyboard working only needed
90

Claudio Valerio's avatar
Claudio Valerio committed
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
    signals:
        /**
         * This signal is emitted once the screenshot has been performed. This signal is also emitted when user
         * click on go to uniboard button. In this case pCapturedPixmap is an empty pixmap.
         * @param pCapturedPixmap QPixmap corresponding to the capture.
         */
        void imageCaptured(const QPixmap& pCapturedPixmap, bool pageMode);
        void restoreUniboard();

    protected:
        QPixmap getScreenPixmap();

        UBBoardView* mTransparentDrawingView;       
        UBGraphicsScene* mTransparentDrawingScene;

    private slots:
107
        void updateColors();
Claudio Valerio's avatar
Claudio Valerio committed
108 109 110 111 112 113 114 115 116 117
        void desktopPenActionToggled(bool checked);
        void desktopMarkerActionToggled(bool checked);
        void desktopEraserActionToggled(bool checked);
        void eraseDesktopAnnotations();
        void penActionPressed();
        void markerActionPressed();
        void eraserActionPressed();
        void penActionReleased();
        void markerActionReleased();
        void eraserActionReleased();
118 119 120 121 122 123
        void selectorActionPressed();
        void selectorActionReleased();
        void pointerActionPressed();
        void pointerActionReleased();

        void switchCursor(int tool);
Claudio Valerio's avatar
Claudio Valerio committed
124 125 126
        void onDesktopPaletteMaximized();
        void onDesktopPaletteMinimize();
        void onTransparentWidgetResized();
127
        void refreshMask();
shibakaneki's avatar
shibakaneki committed
128
        void onToolClicked();
Claudio Valerio's avatar
Claudio Valerio committed
129 130 131 132

    private:
        void setAssociatedPalettePosition(UBActionPalette* palette, const QString& actionName);
        void togglePropertyPalette(UBActionPalette* palette);
133
        void updateMask(bool bTransparent);
Claudio Valerio's avatar
Claudio Valerio committed
134 135

        UBDesktopPalette *mDesktopPalette;
136
        //UBKeyboardPalette *mKeyboardPalette;
Claudio Valerio's avatar
Claudio Valerio committed
137 138 139 140
        UBDesktopPenPalette* mDesktopPenPalette;
        UBDesktopMarkerPalette* mDesktopMarkerPalette;
        UBDesktopEraserPalette* mDesktopEraserPalette;

141
        UBRightPalette* mRightPalette;
Claudio Valerio's avatar
Claudio Valerio committed
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160

        QTime mPenHoldTimer;
        QTime mMarkerHoldTimer;
        QTime mEraserHoldTimer;
        QTimer mHoldTimerPen;
        QTimer mHoldTimerMarker;
        QTimer mHoldTimerEraser;

        bool mWindowPositionInitialized;
        bool mIsFullyTransparent;
        bool mDesktopToolsPalettePositioned;
        bool mPendingPenButtonPressed;
        bool mPendingMarkerButtonPressed;
        bool mPendingEraserButtonPressed;
        bool mbArrowClicked;

        int mBoardStylusTool;
        int mDesktopStylusTool;

161 162
        QPixmap mMask;

Claudio Valerio's avatar
Claudio Valerio committed
163 164 165
};

#endif /* UBUNINOTESWINDOWCONTROLLER_H_ */