Enabled hints on application sartup

preferencesAboutTextFull
Ilia Ryabokon 11 years ago
parent 02be812b74
commit 116f6f7d3d
  1. 3
      src/board/UBBoardPaletteManager.cpp
  2. 3
      src/board/UBBoardPaletteManager.h
  3. 16
      src/core/UBSettings.cpp
  4. 4
      src/core/UBSettings.h
  5. 122
      src/gui/UBStartupHintsPalette.cpp
  6. 67
      src/gui/UBStartupHintsPalette.h
  7. 6
      src/gui/gui.pri

@ -44,6 +44,7 @@
#include "gui/UBWebToolsPalette.h"
#include "gui/UBActionPalette.h"
#include "gui/UBFavoriteToolPalette.h"
#include "gui/UBStartupHintsPalette.h"
#include "web/UBWebPage.h"
#include "web/UBWebController.h"
@ -80,6 +81,7 @@ UBBoardPaletteManager::UBBoardPaletteManager(QWidget* container, UBBoardControll
, mBoardControler(pBoardController)
, mStylusPalette(0)
, mZoomPalette(0)
, mTipPalette(0)
, mLeftPalette(NULL)
, mRightPalette(NULL)
, mBackgroundsPalette(0)
@ -241,6 +243,7 @@ void UBBoardPaletteManager::setupPalettes()
mStylusPalette->stackUnder(mZoomPalette);
mTipPalette = new UBStartupHintsPalette(mContainer);
QList<QAction*> backgroundsActions;
backgroundsActions << UBApplication::mainWindow->actionPlainLightBackground;

@ -51,6 +51,7 @@ class UBServerXMLHttpRequest;
class UBKeyboardPalette;
class UBMainWindow;
class UBApplicationController;
class UBStartupHintsPalette;
class UBBoardPaletteManager : public QObject
{
@ -104,7 +105,7 @@ class UBBoardPaletteManager : public QObject
UBStylusPalette *mStylusPalette;
UBZoomPalette *mZoomPalette;
UBStartupHintsPalette* mTipPalette;
/** The left dock palette */
UBLeftPalette* mLeftPalette;
/** The right dock palette */

@ -232,6 +232,9 @@ void UBSettings::init()
appLastSessionDocumentUUID = new UBSetting(this, "App", "LastSessionDocumentUUID", "");
appLastSessionPageIndex = new UBSetting(this, "App", "LastSessionPageIndex", 0);
appUseMultiscreen = new UBSetting(this, "App", "UseMultiscreenMode", true);
appStartupHintsEnabled = new UBSetting(this,"App","EnableStartupHints",true);
appLookForOpenSankoreInstall = new UBSetting(this, "App", "LookForOpenSankoreInstall", true);
appStartMode = new UBSetting(this, "App", "StartMode", "");
@ -1069,6 +1072,19 @@ QString UBSettings::applicationAnimationsLibraryDirectory()
}
}
QString UBSettings::applicationStartupHintsDirectory()
{
QString defaultRelativePath = QString("./startupHints");
QString configPath = value("StartupHintsDirectory", QVariant(defaultRelativePath)).toString();
if (configPath.startsWith(".")) {
return UBPlatformUtils::applicationResourcesDirectory() + configPath.right(configPath.size() - 1);
}
else
return configPath;
}
QString UBSettings::userInteractiveFavoritesDirectory()
{
static QString dirPath = "";

@ -150,6 +150,7 @@ class UBSettings : public QObject
QString applicationAudiosLibraryDirectory();
QString applicationVideosLibraryDirectory();
QString applicationAnimationsLibraryDirectory();
QString applicationStartupHintsDirectory();
QNetworkProxy* httpProxy();
@ -239,6 +240,9 @@ class UBSettings : public QObject
UBSetting* appLastSessionPageIndex;
UBSetting* appUseMultiscreen;
UBSetting* appStartupHintsEnabled;
UBSetting* appLookForOpenSankoreInstall;
UBSetting* boardPenFineWidth;

@ -0,0 +1,122 @@
/*
* Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
*
* This file is part of Open-Sankoré.
*
* Open-Sankoré 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, version 3 of the License,
* 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).
*
* Open-Sankoré 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 Open-Sankoré. If not, see <http://www.gnu.org/licenses/>.
*/
#include <QVBoxLayout>
#include <QLabel>
#include <QPainter>
#include <QMouseEvent>
#include <QCheckBox>
#include <QWebFrame>
#include "UBStartupHintsPalette.h"
#include "globals/UBGlobals.h"
#include "core/UBSettings.h"
UBStartupHintsPalette::UBStartupHintsPalette(QWidget *parent) :
UBFloatingPalette(Qt::TopRightCorner,parent)
{
setObjectName("UBStartupHintsPalette");
if(UBSettings::settings()->appStartupHintsEnabled->get().toBool()){
setFixedSize(700,450);
mLayout = new QVBoxLayout();
mLayout->setContentsMargins(10,28,10,10);
setLayout(mLayout);
QString url = UBSettings::settings()->applicationStartupHintsDirectory() + "/index.html";
mpWebView = new QWebView(this);
mpSankoreAPI = new UBWidgetUniboardAPI(0);
mpWebView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mpSankoreAPI);
connect(mpWebView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(javaScriptWindowObjectCleared()));
mpWebView->setUrl(QUrl::fromLocalFile(url));
mpWebView->setAcceptDrops(false);
mLayout->addWidget(mpWebView);
mButtonLayout = new QHBoxLayout();
mLayout->addLayout(mButtonLayout);
mShowNextTime = new QCheckBox(tr("Visible next time"),this);
mShowNextTime->setCheckState(Qt::Checked);
connect(mShowNextTime,SIGNAL(stateChanged(int)),this,SLOT(onShowNextTimeStateChanged(int)));
mButtonLayout->addStretch();
mButtonLayout->addWidget(mShowNextTime);
}
else
hide();
}
UBStartupHintsPalette::~UBStartupHintsPalette()
{
// DELETEPTR(mButtonLayout);
// DELETEPTR(mLayout);
}
void UBStartupHintsPalette::paintEvent(QPaintEvent *event)
{
UBFloatingPalette::paintEvent(event);
QPainter painter(this);
painter.drawPixmap(0, 0, QPixmap(":/images/close.svg"));
}
void UBStartupHintsPalette::close()
{
hide();
}
void UBStartupHintsPalette::mouseReleaseEvent(QMouseEvent * event)
{
if (event->pos().x() >= 0 && event->pos().x() < QPixmap(":/images/close.svg").width()
&& event->pos().y() >= 0 && event->pos().y() < QPixmap(":/images/close.svg").height())
{
event->accept();
close();
}
UBFloatingPalette::mouseReleaseEvent(event);
}
void UBStartupHintsPalette::onShowNextTimeStateChanged(int state)
{
UBSettings::settings()->appStartupHintsEnabled->setBool(state == Qt::Checked);
}
void UBStartupHintsPalette::showEvent(QShowEvent *event)
{
Q_UNUSED(event);
adjustSizeAndPosition();
move((parentWidget()->width() - width()) / 2, (parentWidget()->height() - height()) / 5);
}
int UBStartupHintsPalette::border()
{
return 40;
}
void UBStartupHintsPalette::javaScriptWindowObjectCleared()
{
mpWebView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mpSankoreAPI);
}

@ -0,0 +1,67 @@
/*
* Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
*
* This file is part of Open-Sankoré.
*
* Open-Sankoré 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, version 3 of the License,
* 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).
*
* Open-Sankoré 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 Open-Sankoré. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef UBSTARTUPTIPSPALETTE_H
#define UBSTARTUPTIPSPALETTE_H
class QCheckBox;
class QVBoxLayout;
class QHBoxLayout;
#include <QWebView>
#include "UBFloatingPalette.h"
#include "api/UBWidgetUniboardAPI.h"
class UBStartupHintsPalette : public UBFloatingPalette
{
Q_OBJECT;
public:
UBStartupHintsPalette(QWidget *parent = 0);
~UBStartupHintsPalette();
signals:
public slots:
protected:
virtual void paintEvent(QPaintEvent *event);
virtual void mouseReleaseEvent(QMouseEvent * event);
virtual void showEvent(QShowEvent *event);
private:
void close();
int border();
QCheckBox* mShowNextTime;
QVBoxLayout* mLayout;
QHBoxLayout* mButtonLayout;
UBWidgetUniboardAPI *mpSankoreAPI;
QWebView* mpWebView;
private slots:
void onShowNextTimeStateChanged(int state);
void javaScriptWindowObjectCleared();
};
#endif // UBSTARTUPTIPSPALETTE_H

@ -40,7 +40,8 @@ HEADERS += src/gui/UBThumbnailView.h \
src/gui/UBFeaturesWidget.h \
src/gui/UBFeaturesActionBar.h \
src/gui/UBMessagesDialog.h \
src/gui/UBOpenSankoreImporterWidget.h
src/gui/UBOpenSankoreImporterWidget.h \
src/gui/UBStartupHintsPalette.h
SOURCES += src/gui/UBThumbnailView.cpp \
src/gui/UBFloatingPalette.cpp \
src/gui/UBToolbarButtonGroup.cpp \
@ -83,7 +84,8 @@ SOURCES += src/gui/UBThumbnailView.cpp \
src/gui/UBFeaturesWidget.cpp \
src/gui/UBFeaturesActionBar.cpp \
src/gui/UBMessagesDialog.cpp \
src/gui/UBOpenSankoreImporterWidget.cpp
src/gui/UBOpenSankoreImporterWidget.cpp \
src/gui/UBStartupHintsPalette.cpp
win32:SOURCES += src/gui/UBKeyboardPalette_win.cpp
macx:SOURCES += src/gui/UBKeyboardPalette_mac.cpp
linux-g++:SOURCES += src/gui/UBKeyboardPalette_linux.cpp

Loading…
Cancel
Save