/*
* 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
#include "UBMainWindow.h"
#include "core/UBApplication.h"
#include "core/UBApplicationController.h"
#include "board/UBBoardController.h"
#include "core/memcheck.h"
UBMainWindow::UBMainWindow(QWidget *parent, Qt::WindowFlags flags)
: QMainWindow(parent, flags)
, mBoardWidget(0)
, mWebWidget(0)
, mDocumentsWidget(0)
{
Ui::MainWindow::setupUi(this);
//Setting tooltip colors staticly, since they look not quite well on different color themes
QPalette toolTipPalette;
toolTipPalette.setColor(QPalette::ToolTipBase, QColor("#FFFFDC"));
toolTipPalette.setColor(QPalette::ToolTipText, Qt::black);
QToolTip::setPalette(toolTipPalette);
QWidget* centralWidget = new QWidget(this);
mStackedLayout = new QStackedLayout(centralWidget);
setCentralWidget(centralWidget);
#ifdef Q_WS_MAC
actionPreferences->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Comma));
actionQuit->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q));
#elif defined(Q_WS_WIN)
actionPreferences->setShortcut(QKeySequence(Qt::ALT + Qt::Key_Return));
// this code, because it unusable, system key combination can`t be triggered, even we add it manually
actionQuit->setShortcut(QKeySequence(Qt::ALT + Qt::Key_F4));
#else
actionQuit->setShortcut(QKeySequence(Qt::ALT + Qt::Key_F4));
#endif
}
UBMainWindow::~UBMainWindow()
{
// NOOP
}
void UBMainWindow::addBoardWidget(QWidget *pWidget)
{
if (!mBoardWidget)
{
mBoardWidget = pWidget;
mStackedLayout->addWidget(mBoardWidget);
}
}
void UBMainWindow::switchToBoardWidget()
{
if (mBoardWidget)
{
mStackedLayout->setCurrentWidget(mBoardWidget);
}
}
void UBMainWindow::addWebWidget(QWidget *pWidget)
{
qDebug() << "add to StackedLayout size height: " << pWidget->height() << " width: " << pWidget->width();
if (!mWebWidget)
{
mWebWidget = pWidget;
mStackedLayout->addWidget(mWebWidget);
}
}
void UBMainWindow::switchToWebWidget()
{
qDebug() << "popped out from StackedLayout size height: " << mWebWidget->height() << " width: " << mWebWidget->width();
if (mWebWidget)
{
mStackedLayout->setCurrentWidget(mWebWidget);
}
}
void UBMainWindow::addDocumentsWidget(QWidget *pWidget)
{
if (!mDocumentsWidget)
{
mDocumentsWidget = pWidget;
mStackedLayout->addWidget(mDocumentsWidget);
}
}
void UBMainWindow::switchToDocumentsWidget()
{
if (mDocumentsWidget)
{
mStackedLayout->setCurrentWidget(mDocumentsWidget);
}
}
void UBMainWindow::keyPressEvent(QKeyEvent *event)
{
QMainWindow::keyPressEvent(event);
/*
if (event->key() == Qt::Key_B && !event->isAccepted())
{
UBApplication::applicationController->blackout();
event->accept();
}
*/
}
void UBMainWindow::closeEvent(QCloseEvent *event)
{
event->ignore();
emit closeEvent_Signal(event);
}
void UBMainWindow::onExportDone()
{
// HACK : When opening the file save dialog during the document exportation,
// some buttons of the toolbar become disabled without any reason. We
// re-enable them here.
actionExport->setEnabled(true);
actionNewDocument->setEnabled(true);
actionRename->setEnabled(true);
actionDuplicate->setEnabled(true);
actionDelete->setEnabled(true);
actionOpen->setEnabled(true);
actionDocumentAdd->setEnabled(true);
}
bool UBMainWindow::yesNoQuestion(QString windowTitle, QString text)
{
QMessageBox messageBox;
messageBox.setParent(this);
messageBox.setWindowFlags(Qt::Dialog);
messageBox.setWindowTitle(windowTitle);
messageBox.setText(text);
QPushButton* yesButton = messageBox.addButton(tr("Yes"),QMessageBox::YesRole);
messageBox.addButton(tr("No"),QMessageBox::NoRole);
messageBox.setIcon(QMessageBox::Question);
messageBox.exec();
return messageBox.clickedButton() == yesButton;
}