/*
* 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 .
*/
#ifndef UBAPPLICATIONCONTROLLER_H_
#define UBAPPLICATIONCONTROLLER_H_
#include
#include
class UBBoardView;
class UBDocumentProxy;
class UBGraphicsScene;
class UBDesktopAnnotationController;
class UBScreenMirror;
class UBMainWindow;
class UBDisplayManager;
class UBVersion;
class UBSoftwareUpdate;
class QNetworkAccessManager;
class QNetworkReply;
class UBApplicationController : public QObject
{
Q_OBJECT;
public:
UBApplicationController(UBBoardView *pControlView, UBBoardView *pDisplayView, UBMainWindow *pMainWindow, QObject* parent = 0);
virtual ~UBApplicationController();
int initialHScroll() { return mInitialHScroll; }
int initialVScroll() { return mInitialVScroll; }
void adaptToolBar();
void adjustDisplayView();
void adjustPreviousViews(int pActiveSceneIndex, UBDocumentProxy *pActiveDocument);
void blackout();
void initScreenLayout();
void closing();
void setMirrorSourceWidget(QWidget*);
void mirroringEnabled(bool);
void initViewState(int horizontalPosition, int verticalPosition);
void showBoard();
void showInternet();
void showDocument();
void showMessage(const QString& message, bool showSpinningWheel);
void importFile(const QString& pFilePath);
UBDisplayManager* displayManager()
{
return mDisplayManager;
}
UBDesktopAnnotationController* uninotesController()
{
return mUninoteController;
}
enum MainMode
{
Board = 0, Internet, Document, Tutorial, ParaschoolEditor, WebDocument
};
MainMode displayMode()
{
return mMainMode;
}
bool isCheckingForSoftwareUpdate() const;
bool isShowingDesktop()
{
return mIsShowingDesktop;
}
QStringList widgetInlineJavaScripts();
signals:
void mainModeChanged(UBApplicationController::MainMode pMode);
void desktopMode(bool displayed);
public slots:
/**
* Add the pPixmap to the current scene and reactivate the board.
* This Slot is connected with uninotes to manage the transition between board and uninotes.
*/
void addCapturedPixmap(const QPixmap &pPixmap, bool pageMode, const QUrl& sourceUrl = QUrl());
void addCapturedEmbedCode(const QString& embedCode);
void screenLayoutChanged();
// defaulting to false to match QAction triggered(bool checked = false)
void showDesktop(bool dontSwitchFrontProcess = false);
void hideDesktop();
void useMultiScreen(bool use);
void actionCut();
void actionCopy();
void actionPaste();
void showTutorial();
void showSankoreEditor();
void checkUpdateRequest();
void checkUpdateAtLaunch();
private slots:
void ftpCommandFinished(int id, bool error);
protected:
UBDesktopAnnotationController *mUninoteController;
UBMainWindow *mMainWindow;
UBBoardView *mControlView;
UBBoardView *mDisplayView;
QList mPreviousViews;
UBGraphicsScene *mBlackScene;
UBScreenMirror* mMirror;
int mInitialHScroll, mInitialVScroll;
QFtp* mFtp;
private:
MainMode mMainMode;
UBDisplayManager *mDisplayManager;
bool mAutomaticCheckForUpdates;
bool mCheckingForUpdates;
void setCheckingForUpdates(bool value);
bool mIsShowingDesktop;
bool isNoUpdateDisplayed;
void checkUpdate ();
QNetworkAccessManager *networkAccessManager;
void downloadJsonFinished(QString updateString);
};
#endif /* UBAPPLICATIONCONTROLLER_H_ */