UBSettings.h 14.1 KB
Newer Older
Claudio Valerio's avatar
Claudio Valerio committed
1
/*
Craig Watson's avatar
Craig Watson committed
2 3
 * Copyright (C) 2015-2016 Département de l'Instruction Publique (DIP-SEM)
 *
Claudio Valerio's avatar
Claudio Valerio committed
4
 * Copyright (C) 2013 Open Education Foundation
Claudio Valerio's avatar
Claudio Valerio committed
5
 *
Claudio Valerio's avatar
Claudio Valerio committed
6 7
 * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour
 * l'Education Numérique en Afrique (GIP ENA)
8
 *
Claudio Valerio's avatar
Claudio Valerio committed
9 10 11
 * This file is part of OpenBoard.
 *
 * OpenBoard is free software: you can redistribute it and/or modify
Claudio Valerio's avatar
Claudio Valerio committed
12 13
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, version 3 of the License,
14 15 16 17
 * 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).
 *
Claudio Valerio's avatar
Claudio Valerio committed
18
 * OpenBoard is distributed in the hope that it will be useful,
19
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Claudio Valerio's avatar
Claudio Valerio committed
20
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Claudio Valerio's avatar
Claudio Valerio committed
21
 * GNU General Public License for more details.
22
 *
Claudio Valerio's avatar
Claudio Valerio committed
23
 * You should have received a copy of the GNU General Public License
Claudio Valerio's avatar
Claudio Valerio committed
24
 * along with OpenBoard. If not, see <http://www.gnu.org/licenses/>.
Claudio Valerio's avatar
Claudio Valerio committed
25 26
 */

27

Claudio Valerio's avatar
Claudio Valerio committed
28

Claudio Valerio's avatar
Claudio Valerio committed
29

Claudio Valerio's avatar
Claudio Valerio committed
30 31 32 33 34 35 36 37 38 39 40 41 42
#ifndef UBSETTINGS_H_
#define UBSETTINGS_H_

#include <QtCore>
#include <QtGui>
#include <QtNetwork>

#include "UB.h"
#include "UBSetting.h"

class UBSettings : public QObject
{

root's avatar
root committed
43
    Q_OBJECT
Claudio Valerio's avatar
Claudio Valerio committed
44 45 46

    public:

47 48
        static UBSettings* settings();
        static void destroy();
Claudio Valerio's avatar
Claudio Valerio committed
49 50 51 52 53

    private:

        UBSettings(QObject *parent = 0);
        virtual ~UBSettings();
Claudio Valerio's avatar
Claudio Valerio committed
54
        void cleanNonPersistentSettings();
Claudio Valerio's avatar
Claudio Valerio committed
55 56 57

    public:

58 59 60
        QStringList* supportedKeyboardSizes;
        void InitKeyboardPaletteKeyBtnSizes();
        void ValidateKeyboardPaletteKeyBtnSize();
Claudio Valerio's avatar
Claudio Valerio committed
61
        void closing();
62
        void save();
63

Claudio Valerio's avatar
Claudio Valerio committed
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
        int penWidthIndex();

        qreal currentPenWidth();

        int penColorIndex();
        QColor currentPenColor();
        QColor penColor(bool onDarkBackground);
        QList<QColor> penColors(bool onDarkBackground);

        // Marker related
        int markerWidthIndex();
        qreal currentMarkerWidth();
        int markerColorIndex();
        QColor currentMarkerColor();
        QColor markerColor(bool onDarkBackground);
        QList<QColor> markerColors(bool onDarkBackground);

        // Eraser related
        int eraserWidthIndex();
        qreal eraserFineWidth();
        qreal eraserMediumWidth();
        qreal eraserStrongWidth();
        qreal currentEraserWidth();

        // Background related
        bool isDarkBackground();
Craig Watson's avatar
Craig Watson committed
90
        UBPageBackground pageBackground();
Claudio Valerio's avatar
Claudio Valerio committed
91
        void setDarkBackground(bool isDarkBackground);
Craig Watson's avatar
Craig Watson committed
92
        void setPageBackground(UBPageBackground background);
Claudio Valerio's avatar
Claudio Valerio committed
93 94 95 96 97 98 99 100 101

        // Stylus palette related
        bool isStylusPaletteVisible();

        // Text related
        QString fontFamily();
        void setFontFamily(const QString &family);
        int fontPixelSize();
        void setFontPixelSize(int pixelSize);
Ivan Ilin's avatar
Ivan Ilin committed
102 103
        int fontPointSize();
        void setFontPointSize(int pointSize);
Claudio Valerio's avatar
Claudio Valerio committed
104 105 106 107 108 109 110 111 112 113 114 115 116 117
        bool isBoldFont();
        void setBoldFont(bool bold);
        bool isItalicFont();
        void setItalicFont(bool italic);

        void setPassword(const QString& id, const QString& password);
        QString password(const QString& id);
        void removePassword(const QString& id);

        QString proxyUsername();
        void setProxyUsername(const QString& username);
        QString proxyPassword();
        void setProxyPassword(const QString& password);

118 119 120 121
        QString communityUsername();
        void setCommunityUsername(const QString& username);
        QString communityPassword();
        void setCommunityPassword(const QString& password);
Claudio Valerio's avatar
Claudio Valerio committed
122
        bool getCommunityDataPersistence(){return communityCredentialsPersistence->get().toBool();}
Claudio Valerio's avatar
Claudio Valerio committed
123
        void setCommunityPersistence(const bool persistence);
124

shibakaneki's avatar
shibakaneki committed
125 126 127
        int libraryIconSize();
        void setLibraryIconsize(const int& size);

Claudio Valerio's avatar
Claudio Valerio committed
128
        void init();
Claudio Valerio's avatar
Claudio Valerio committed
129

130 131 132 133 134 135 136 137 138 139 140 141 142 143
        //user directories
        static QString userDataDirectory();
        static QString userDocumentDirectory();
        static QString userFavoriteListFilePath();
        static QString userTrashDirPath();
        static QString userImageDirectory();
        static QString userVideoDirectory();
        static QString userAudioDirectory();
        static QString userSearchDirectory();
        static QString userAnimationDirectory();
        static QString userInteractiveDirectory();
        static QString userInteractiveFavoritesDirectory();
        static QString userPodcastRecordingDirectory();

Claudio Valerio's avatar
Claudio Valerio committed
144 145 146
        QString userGipLibraryDirectory();

        //application directory
147 148 149 150
        QString applicationShapeLibraryDirectory();
        QString applicationImageLibraryDirectory();
        QString applicationApplicationsLibraryDirectory();
        QString applicationInteractivesDirectory();
Claudio Valerio's avatar
Claudio Valerio committed
151 152
        QString applicationCustomizationDirectory();
        QString applicationCustomFontDirectory();
153 154 155
        QString applicationAudiosLibraryDirectory();
        QString applicationVideosLibraryDirectory();
        QString applicationAnimationsLibraryDirectory();
156
        QString applicationStartupHintsDirectory();
Claudio Valerio's avatar
Claudio Valerio committed
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173

        QNetworkProxy* httpProxy();

        static int pointerDiameter;
        static int boardMargin;

        static QColor paletteColor;
        static QColor opaquePaletteColor;

        static QColor documentViewLightColor;

        static QBrush eraserBrushDarkBackground;
        static QBrush eraserBrushLightBackground;

        static QPen eraserPenDarkBackground;
        static QPen eraserPenLightBackground;

174 175 176 177 178 179
        static QColor markerCircleBrushColorDarkBackground;
        static QColor markerCircleBrushColorLightBackground;

        static QColor markerCirclePenColorDarkBackground;
        static QColor markerCirclePenColorLightBackground;

180 181 182 183 184 185
        static QColor penCircleBrushColorDarkBackground;
        static QColor penCircleBrushColorLightBackground;

        static QColor penCirclePenColorDarkBackground;
        static QColor penCirclePenColorLightBackground;

Claudio Valerio's avatar
Claudio Valerio committed
186 187 188
        static QColor documentSizeMarkColorDarkBackground;
        static QColor documentSizeMarkColorLightBackground;

189
        // Background grid
Claudio Valerio's avatar
Claudio Valerio committed
190
        static int crossSize;
191
        static int defaultCrossSize;
192 193 194
        static int minCrossSize;
        static int maxCrossSize;

Claudio Valerio's avatar
Claudio Valerio committed
195 196 197 198 199 200 201 202 203
        static int colorPaletteSize;
        static int objectFrameWidth;

        static QString documentGroupName;
        static QString documentName;
        static QString documentSize;
        static QString documentIdentifer;
        static QString documentVersion;
        static QString documentUpdatedAt;
204

205
        static QString documentDate;
Claudio Valerio's avatar
Claudio Valerio committed
206 207 208 209 210 211 212 213

        static QString trashedDocumentGroupNamePrefix;

        static QString currentFileVersion;

        static QString uniboardDocumentNamespaceUri;
        static QString uniboardApplicationNamespaceUri;

214 215
        static QString undoCommandTransactionName;

Claudio Valerio's avatar
Claudio Valerio committed
216 217
        static const int maxThumbnailWidth;
        static const int defaultThumbnailWidth;
shibakaneki's avatar
shibakaneki committed
218
        static const int defaultLibraryIconSize;
Claudio Valerio's avatar
Claudio Valerio committed
219 220 221 222 223 224 225 226 227

        static const int defaultImageWidth;
        static const int defaultShapeWidth;
        static const int defaultWidgetIconWidth;
        static const int defaultVideoWidth;
        static const int defaultGipWidth;
        static const int defaultSoundWidth;

        static const int thumbnailSpacing;
228
        static const int longClickInterval;
Claudio Valerio's avatar
Claudio Valerio committed
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247

        static const qreal minScreenRatio;

        static QStringList bitmapFileExtensions;
        static QStringList vectoFileExtensions;
        static QStringList imageFileExtensions;
        static QStringList widgetFileExtensions;
        static QStringList interactiveContentFileExtensions;

        static QColor treeViewBackgroundColor;

        static int objectInControlViewMargin;

        static QString appPingMessage;

        UBSetting* productWebUrl;

        QString softwareHomeUrl;

248 249
        UBSetting* tutorialUrl;

Claudio Valerio's avatar
Claudio Valerio committed
250 251 252
        UBSetting* appToolBarPositionedAtTop;
        UBSetting* appToolBarDisplayText;
        UBSetting* appEnableAutomaticSoftwareUpdates;
253
        UBSetting* appSoftwareUpdateURL;
254
        UBSetting* appHideCheckForSoftwareUpdate;
Claudio Valerio's avatar
Claudio Valerio committed
255
        UBSetting* appToolBarOrientationVertical;
256
        UBSetting* appPreferredLanguage;
Claudio Valerio's avatar
Claudio Valerio committed
257 258 259 260 261 262

        UBSetting* appIsInSoftwareUpdateProcess;

        UBSetting* appLastSessionDocumentUUID;
        UBSetting* appLastSessionPageIndex;

Aleksei Kanash's avatar
Aleksei Kanash committed
263
        UBSetting* appUseMultiscreen;
264 265 266

        UBSetting* appStartupHintsEnabled;

Claudio Valerio's avatar
Claudio Valerio committed
267
        UBSetting* appLookForOpenSankoreInstall;
Aleksei Kanash's avatar
Aleksei Kanash committed
268

Claudio Valerio's avatar
Claudio Valerio committed
269 270 271 272 273 274 275 276 277 278 279 280 281
        UBSetting* boardPenFineWidth;
        UBSetting* boardPenMediumWidth;
        UBSetting* boardPenStrongWidth;

        UBSetting* boardMarkerFineWidth;
        UBSetting* boardMarkerMediumWidth;
        UBSetting* boardMarkerStrongWidth;

        UBSetting* boardPenPressureSensitive;
        UBSetting* boardMarkerPressureSensitive;

        UBSetting* boardUseHighResTabletEvent;

282
        UBSetting* boardInterpolatePenStrokes;
283 284
        UBSetting* boardSimplifyPenStrokes;
        UBSetting* boardSimplifyPenStrokesThresholdAngle;
285
        UBSetting* boardSimplifyPenStrokesThresholdWidthDifference;
286 287
        UBSetting* boardInterpolateMarkerStrokes;
        UBSetting* boardSimplifyMarkerStrokes;
288

Claudio Valerio's avatar
Claudio Valerio committed
289 290
        UBSetting* boardKeyboardPaletteKeyBtnSize;

Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
291 292
        UBSetting* appStartMode;

293 294
        UBSetting* featureSliderPosition;

295 296 297
        UBSetting* boardCrossColorDarkBackground;
        UBSetting* boardCrossColorLightBackground;

298 299 300
        UBColorListSetting* boardGridLightBackgroundColors;
        UBColorListSetting* boardGridDarkBackgroundColors;

Claudio Valerio's avatar
Claudio Valerio committed
301 302 303 304 305 306 307 308 309 310 311 312 313 314
        UBColorListSetting* boardPenLightBackgroundColors;
        UBColorListSetting* boardPenLightBackgroundSelectedColors;

        UBColorListSetting* boardPenDarkBackgroundColors;
        UBColorListSetting* boardPenDarkBackgroundSelectedColors;

        UBSetting* boardMarkerAlpha;

        UBColorListSetting* boardMarkerLightBackgroundColors;
        UBColorListSetting* boardMarkerLightBackgroundSelectedColors;

        UBColorListSetting* boardMarkerDarkBackgroundColors;
        UBColorListSetting* boardMarkerDarkBackgroundSelectedColors;

315 316
        UBSetting* showEraserPreviewCircle;
        UBSetting* showMarkerPreviewCircle;
317 318
        UBSetting* showPenPreviewCircle;
        UBSetting* penPreviewFromSize;
319

Claudio Valerio's avatar
Claudio Valerio committed
320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364
        UBSetting* webUseExternalBrowser;
        UBSetting* webShowPageImmediatelyOnMirroredScreen;

        UBSetting* webHomePage;
        UBSetting* webBookmarksPage;
        UBSetting* webAddBookmarkUrl;
        UBSetting* webShowAddBookmarkButton;

        UBSetting* pageCacheSize;

        UBSetting* boardZoomFactor;

        UBSetting* mirroringRefreshRateInFps;

        UBSetting* lastImportFilePath;
        UBSetting* lastImportFolderPath;

        UBSetting* lastExportFilePath;
        UBSetting* lastExportDirPath;

        UBSetting* lastImportToLibraryPath;

        UBSetting* lastPicturePath;
        UBSetting* lastWidgetPath;
        UBSetting* lastVideoPath;

        UBSetting* appOnlineUserName;

        UBSetting* boardShowToolsPalette;

        QMap<DocumentSizeRatio::Enum, QSize> documentSizes;

        UBSetting* svgViewBoxMargin;
        UBSetting* pdfMargin;
        UBSetting* pdfPageFormat;
        UBSetting* pdfResolution;

        UBSetting* podcastFramesPerSecond;
        UBSetting* podcastVideoSize;
        UBSetting* podcastWindowsMediaBitsPerSecond;
        UBSetting* podcastAudioRecordingDevice;
        UBSetting* podcastQuickTimeQuality;

        UBSetting* podcastPublishToYoutube;
        UBSetting* youTubeUserEMail;
Claudio Valerio's avatar
Claudio Valerio committed
365
        UBSetting* youTubeCredentialsPersistence;
Claudio Valerio's avatar
Claudio Valerio committed
366 367 368 369 370 371 372 373 374 375 376 377 378 379

        UBSetting* podcastPublishToIntranet;
        UBSetting* intranetPodcastPublishingUrl;
        UBSetting* intranetPodcastAuthor;

        UBSetting* favoritesNativeToolUris;

        UBSetting* documentThumbnailWidth;
        UBSetting* imageThumbnailWidth;
        UBSetting* videoThumbnailWidth;
        UBSetting* shapeThumbnailWidth;
        UBSetting* gipThumbnailWidth;
        UBSetting* soundThumbnailWidth;

380 381
        UBSetting* libraryShowDetailsForLocalItems;

Claudio Valerio's avatar
Claudio Valerio committed
382 383 384 385 386 387 388 389
        UBSetting* rightLibPaletteBoardModeWidth;
        UBSetting* rightLibPaletteBoardModeIsCollapsed;
        UBSetting* rightLibPaletteDesktopModeWidth;
        UBSetting* rightLibPaletteDesktopModeIsCollapsed;
        UBSetting* leftLibPaletteBoardModeWidth;
        UBSetting* leftLibPaletteBoardModeIsCollapsed;
        UBSetting* leftLibPaletteDesktopModeWidth;
        UBSetting* leftLibPaletteDesktopModeIsCollapsed;
390

391 392
        UBSetting* communityUser;
        UBSetting* communityPsw;
Claudio Valerio's avatar
Claudio Valerio committed
393
        UBSetting* communityCredentialsPersistence;
394

395 396
        UBSetting* pageSize;

397
        UBSetting* KeyboardLocale;
398
        UBSetting* swapControlAndDisplayScreens;
399

Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
400
        UBSetting* angleTolerance;
Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
401
        UBSetting* historyLimit;
Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
402

shibakaneki's avatar
shibakaneki committed
403 404
        UBSetting* libIconSize;

405
        UBSetting* useSystemOnScreenKeyboard;
406

407
        UBSetting* magnifierDrawingMode;
408
        UBSetting* autoSaveInterval;
409

Claudio Valerio's avatar
Claudio Valerio committed
410 411 412 413 414 415 416 417 418 419 420 421 422
    public slots:

        void setPenWidthIndex(int index);
        void setPenColorIndex(int index);

        void setMarkerWidthIndex(int index);
        void setMarkerColorIndex(int index);

        void setEraserWidthIndex(int index);
        void setEraserFineWidth(qreal width);
        void setEraserMediumWidth(qreal width);
        void setEraserStrongWidth(qreal width);

423
         void setStylusPaletteVisible(bool visible);
Claudio Valerio's avatar
Claudio Valerio committed
424 425

        void setPenPressureSensitive(bool sensitive);
426 427
        void setPenPreviewCircle(bool sensitive);
        void setPenPreviewFromSize(int size);
Claudio Valerio's avatar
Claudio Valerio committed
428 429
        void setMarkerPressureSensitive(bool sensitive);

430
        QVariant value ( const QString & key, const QVariant & defaultValue = QVariant() );
Claudio Valerio's avatar
Claudio Valerio committed
431 432
        void setValue (const QString & key,const QVariant & value);

433
        void colorChanged() { emit colorContextChanged(); }
Claudio Valerio's avatar
Claudio Valerio committed
434 435 436 437 438 439 440 441 442

    signals:
        void colorContextChanged();

    private:

        QSettings* mAppSettings;
        QSettings* mUserSettings;

443 444
        QHash<QString, QVariant> mSettingsQueue;

Claudio Valerio's avatar
Claudio Valerio committed
445 446 447 448 449 450 451 452
        static const int sDefaultFontPixelSize;
        static const char *sDefaultFontFamily;

        static QSettings* getAppSettings();

        static QPointer<QSettings> sAppSettings;
        static QPointer<UBSettings> sSingleton;

453 454 455
        static bool checkDirectory(QString& dirPath);
        static QString replaceWildcard(QString& path);

456 457 458
        void removeSetting(const QString& setting);
        void checkNewSettings();

Claudio Valerio's avatar
Claudio Valerio committed
459 460 461 462
};


#endif /* UBSETTINGS_H_ */