From 330b1cdaf10c6df42b43f314413431b71f2d45ae Mon Sep 17 00:00:00 2001 From: stojce Date: Wed, 11 Sep 2013 22:08:07 +0200 Subject: [PATCH] About menu added About menu - OS X version only --- interface/src/InfoView.cpp | 49 +++++++++++++++++++++++++++----------- interface/src/InfoView.h | 5 +++- interface/src/Menu.cpp | 13 +++++++++- interface/src/Menu.h | 2 ++ 4 files changed, 53 insertions(+), 16 deletions(-) diff --git a/interface/src/InfoView.cpp b/interface/src/InfoView.cpp index 6be8238cf8..352effbae2 100644 --- a/interface/src/InfoView.cpp +++ b/interface/src/InfoView.cpp @@ -16,8 +16,9 @@ #define SETTINGS_VERSION_KEY "info-version" -InfoView::InfoView() +InfoView::InfoView(bool forced) { + _forced = forced; settings()->setAttribute(QWebSettings::LocalContentCanAccessFileUrls, true); #ifdef Q_OS_MAC @@ -33,11 +34,20 @@ InfoView::InfoView() void InfoView::showFirstTime() { - new InfoView(); + new InfoView(false); } -void InfoView::loaded(bool ok) +void InfoView::forcedShow() { + new InfoView(true); +} + +bool InfoView::shouldShow() +{ + if (_forced) { + return true; + } + QSettings* settings = Application::getInstance()->getSettings(); QString lastVersion = settings->value(SETTINGS_VERSION_KEY).toString(); @@ -50,16 +60,27 @@ void InfoView::loaded(bool ok) if (version != QString::null) { settings->setValue(SETTINGS_VERSION_KEY, version); } - - QDesktopWidget* desktop = Application::getInstance()->desktop(); - int height = mainFrame->contentsSize().height() > desktop->height() ? - desktop->height() * 0.9 : - mainFrame->contentsSize().height(); - - resize(mainFrame->contentsSize().width(), height); - move(desktop->screen()->rect().center() - rect().center()); - setWindowTitle(title()); - show(); - setWindowModality(Qt::WindowModal); + return true; } + + return false; +} + +void InfoView::loaded(bool ok) +{ + if (!shouldShow()) { + return; + } + + QDesktopWidget* desktop = Application::getInstance()->desktop(); + QWebFrame* mainFrame = page()->mainFrame(); + + int height = mainFrame->contentsSize().height() > desktop->height() ? + desktop->height() * 0.9 : + mainFrame->contentsSize().height(); + + resize(mainFrame->contentsSize().width(), height); + move(desktop->screen()->rect().center() - rect().center()); + setWindowTitle(title()); + show(); } diff --git a/interface/src/InfoView.h b/interface/src/InfoView.h index 2608d5c9c0..036dd39bef 100644 --- a/interface/src/InfoView.h +++ b/interface/src/InfoView.h @@ -16,9 +16,12 @@ class InfoView : public QWebView Q_OBJECT public: static void showFirstTime(); + static void forcedShow(); private: - InfoView(); + InfoView(bool forced); + bool _forced; + bool shouldShow(); private slots: void loaded(bool ok); diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 1d9e12cc96..f6e4128dbb 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -24,6 +24,7 @@ #include "PairingHandler.h" #include "Menu.h" #include "Util.h" +#include "InfoView.h" Menu* Menu::_instance = NULL; @@ -52,7 +53,13 @@ Menu::Menu() : Application *appInstance = Application::getInstance(); QMenu* fileMenu = addMenu("File"); - + + (addActionToQMenuAndActionHash(fileMenu, + MenuOption::AboutApp, + 0, + this, + SLOT(aboutApp())))->setMenuRole(QAction::AboutRole); + (addActionToQMenuAndActionHash(fileMenu, MenuOption::Preferences, Qt::CTRL | Qt::Key_Comma, @@ -663,6 +670,10 @@ bool Menu::isVoxelModeActionChecked() { return false; } +void Menu::aboutApp() { + InfoView::forcedShow(); +} + void Menu::editPreferences() { Application* applicationInstance = Application::getInstance(); QDialog dialog(applicationInstance->getGLWidget()); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 934cb1b7ae..3d0ce79a36 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -65,6 +65,7 @@ public slots: void checkForUpdates(); private slots: + void aboutApp(); void editPreferences(); void goToDomain(); void goToLocation(); @@ -116,6 +117,7 @@ private: namespace MenuOption { + const QString AboutApp = "About Interface"; const QString AmbientOcclusion = "Ambient Occlusion"; const QString Avatars = "Avatars"; const QString AvatarAsBalls = "Avatar as Balls";