/* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "UBDesktopPalette.h" #include #include "frameworks/UBPlatformUtils.h" #include "core/UBSettings.h" #include "core/UBSetting.h" #include "core/UBApplication.h" #include "core/UBApplicationController.h" #include "board/UBDrawingController.h" #include "gui/UBMainWindow.h" #include "core/memcheck.h" UBDesktopPalette::UBDesktopPalette(QWidget *parent) : UBActionPalette(Qt::TopLeftCorner, parent) , mShowHideAction(0) , mDisplaySelectAction(0) { QList actions; mActionUniboard = new QAction(QIcon(":/images/toolbar/board.png"), tr("Show Uniboard"), this); connect(mActionUniboard, SIGNAL(triggered()), this, SIGNAL(uniboardClick())); actions << mActionUniboard; actions << UBApplication::mainWindow->actionPen; actions << UBApplication::mainWindow->actionEraser; actions << UBApplication::mainWindow->actionMarker; #ifndef Q_WS_X11 actions << UBApplication::mainWindow->actionSelector; #endif actions << UBApplication::mainWindow->actionPointer; if (UBPlatformUtils::hasVirtualKeyboard()) { actions << UBApplication::mainWindow->actionVirtualKeyboard; connect(UBApplication::mainWindow->actionVirtualKeyboard, SIGNAL(toggled(bool)), this, SIGNAL(showVirtualKeyboard(bool))); } mActionCustomSelect = new QAction(QIcon(":/images/toolbar/captureArea.png"), tr("Capture Part of the Screen"), this); connect(mActionCustomSelect, SIGNAL(triggered()), this, SIGNAL(customClick())); actions << mActionCustomSelect; mDisplaySelectAction = new QAction(QIcon(":/images/toolbar/captureScreen.png"), tr("Capture the Screen"), this); connect(mDisplaySelectAction, SIGNAL(triggered()), this, SIGNAL(screenClick())); actions << mDisplaySelectAction; QIcon showHideIcon; showHideIcon.addPixmap(QPixmap(":/images/toolbar/eyeOpened.png"), QIcon::Normal , QIcon::On); showHideIcon.addPixmap(QPixmap(":/images/toolbar/eyeClosed.png"), QIcon::Normal , QIcon::Off); mShowHideAction = new QAction(showHideIcon, "", this); mShowHideAction->setCheckable(true); connect(mShowHideAction, SIGNAL(triggered(bool)), this, SLOT(showHideClick(bool))); #ifndef Q_WS_X11 actions << mShowHideAction; #endif setActions(actions); setButtonIconSize(QSize(42, 42)); adjustSizeAndPosition(); // This palette can be minimized QIcon maximizeIcon; maximizeIcon.addPixmap(QPixmap(":/images/toolbar/stylusTab.png"), QIcon::Normal, QIcon::On); mMaximizeAction = new QAction(maximizeIcon, tr("Show the stylus palette"), this); connect(mMaximizeAction, SIGNAL(triggered()), this, SLOT(maximizeMe())); connect(this, SIGNAL(maximizeStart()), this, SLOT(maximizeMe())); connect(this, SIGNAL(minimizeStart(eMinimizedLocation)), this, SLOT(minimizeMe(eMinimizedLocation))); setMinimizePermission(true); } UBDesktopPalette::~UBDesktopPalette() { } void UBDesktopPalette::disappearForCapture() { setWindowOpacity(0.0); qApp->processEvents(); } void UBDesktopPalette::appear() { setWindowOpacity(1.0); } void UBDesktopPalette::showHideClick(bool checked) { UBApplication::applicationController->mirroringEnabled(checked); } void UBDesktopPalette::updateShowHideState(bool pShowEnabled) { if (mShowHideAction) mShowHideAction->setChecked(pShowEnabled); if (mShowHideAction->isChecked()) mShowHideAction->setToolTip(tr("Show Board on Secondary Screen")); else mShowHideAction->setToolTip(tr("Show Desktop on Secondary Screen")); } void UBDesktopPalette::setShowHideButtonVisible(bool visible) { mShowHideAction->setVisible(visible); } void UBDesktopPalette::setDisplaySelectButtonVisible(bool visible) { mDisplaySelectAction->setVisible(visible); } // Called when the palette is near the border and must be minimized void UBDesktopPalette::minimizeMe(eMinimizedLocation location) { Q_UNUSED(location); QList actions; clearLayout(); actions << mMaximizeAction; setActions(actions); QSize newSize = preferredSize(); this->resize(newSize); } // Called when the user wants to maximize the palette void UBDesktopPalette::maximizeMe() { QList actions; clearLayout(); actions << mActionUniboard; actions << UBApplication::mainWindow->actionPen; actions << UBApplication::mainWindow->actionEraser; actions << UBApplication::mainWindow->actionMarker; #ifndef Q_WS_X11 actions << UBApplication::mainWindow->actionSelector; #endif actions << UBApplication::mainWindow->actionPointer; if (UBPlatformUtils::hasVirtualKeyboard()) actions << UBApplication::mainWindow->actionVirtualKeyboard; actions << mActionCustomSelect; actions << mDisplaySelectAction; actions << mShowHideAction; //actions << UBApplication::mainWindow->actionDesktopTools; setActions(actions); QSize newSize = preferredSize(); this->resize(newSize); // Notify that the maximization has been done emit maximized(); } void UBDesktopPalette::showEvent(QShowEvent *event) { Q_UNUSED(event); QIcon penIcon; QIcon markerIcon; QIcon eraserIcon; penIcon.addPixmap(QPixmap(":images/stylusPalette/penArrow.png"), QIcon::Normal, QIcon::Off); penIcon.addPixmap(QPixmap(":images/stylusPalette/penOnArrow.png"), QIcon::Normal, QIcon::On); UBApplication::mainWindow->actionPen->setIcon(penIcon); markerIcon.addPixmap(QPixmap(":images/stylusPalette/markerArrow.png"), QIcon::Normal, QIcon::Off); markerIcon.addPixmap(QPixmap(":images/stylusPalette/markerOnArrow.png"), QIcon::Normal, QIcon::On); UBApplication::mainWindow->actionMarker->setIcon(markerIcon); eraserIcon.addPixmap(QPixmap(":images/stylusPalette/eraserArrow.png"), QIcon::Normal, QIcon::Off); eraserIcon.addPixmap(QPixmap(":images/stylusPalette/eraserOnArrow.png"), QIcon::Normal, QIcon::On); UBApplication::mainWindow->actionEraser->setIcon(eraserIcon); } void UBDesktopPalette::hideEvent(QHideEvent *event) { Q_UNUSED(event); QIcon penIcon; QIcon markerIcon; QIcon eraserIcon; penIcon.addPixmap(QPixmap(":images/stylusPalette/pen.png"), QIcon::Normal, QIcon::Off); penIcon.addPixmap(QPixmap(":images/stylusPalette/penOn.png"), QIcon::Normal, QIcon::On); UBApplication::mainWindow->actionPen->setIcon(penIcon); markerIcon.addPixmap(QPixmap(":images/stylusPalette/marker.png"), QIcon::Normal, QIcon::Off); markerIcon.addPixmap(QPixmap(":images/stylusPalette/markerOn.png"), QIcon::Normal, QIcon::On); UBApplication::mainWindow->actionMarker->setIcon(markerIcon); eraserIcon.addPixmap(QPixmap(":images/stylusPalette/eraser.png"), QIcon::Normal, QIcon::Off); eraserIcon.addPixmap(QPixmap(":images/stylusPalette/eraserOn.png"), QIcon::Normal, QIcon::On); UBApplication::mainWindow->actionEraser->setIcon(eraserIcon); } QPoint UBDesktopPalette::buttonPos(QAction *action) { QPoint p; UBActionPaletteButton* pB = mMapActionToButton[action]; if(NULL != pB) { p = pB->pos(); } return p; }