UBSettings.h 14.6 KB
Newer Older
Claudio Valerio's avatar
Claudio Valerio committed
1
/*
2
 * Copyright (C) 2015-2018 Département de l'Instruction Publique (DIP-SEM)
Craig Watson's avatar
Craig Watson committed
3
 *
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;
218 219
        static const int defaultSortKind;
        static const int defaultSortOrder;
220 221
        static const int defaultSplitterLeftSize;
        static const int defaultSplitterRightSize;
shibakaneki's avatar
shibakaneki committed
222
        static const int defaultLibraryIconSize;
Claudio Valerio's avatar
Claudio Valerio committed
223 224 225 226 227 228 229 230 231

        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;
232
        static const int longClickInterval;
Claudio Valerio's avatar
Claudio Valerio committed
233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251

        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;

252 253
        UBSetting* tutorialUrl;

Claudio Valerio's avatar
Claudio Valerio committed
254 255 256
        UBSetting* appToolBarPositionedAtTop;
        UBSetting* appToolBarDisplayText;
        UBSetting* appEnableAutomaticSoftwareUpdates;
257
        UBSetting* appSoftwareUpdateURL;
258
        UBSetting* appHideCheckForSoftwareUpdate;
259
        UBSetting* appHideSwapDisplayScreens;
Claudio Valerio's avatar
Claudio Valerio committed
260
        UBSetting* appToolBarOrientationVertical;
261
        UBSetting* appPreferredLanguage;
Claudio Valerio's avatar
Claudio Valerio committed
262 263 264 265 266 267

        UBSetting* appIsInSoftwareUpdateProcess;

        UBSetting* appLastSessionDocumentUUID;
        UBSetting* appLastSessionPageIndex;

Aleksei Kanash's avatar
Aleksei Kanash committed
268
        UBSetting* appUseMultiscreen;
269 270 271

        UBSetting* appStartupHintsEnabled;

Claudio Valerio's avatar
Claudio Valerio committed
272
        UBSetting* appLookForOpenSankoreInstall;
Aleksei Kanash's avatar
Aleksei Kanash committed
273

Claudio Valerio's avatar
Claudio Valerio committed
274 275 276 277 278 279 280 281 282 283 284 285 286
        UBSetting* boardPenFineWidth;
        UBSetting* boardPenMediumWidth;
        UBSetting* boardPenStrongWidth;

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

        UBSetting* boardPenPressureSensitive;
        UBSetting* boardMarkerPressureSensitive;

        UBSetting* boardUseHighResTabletEvent;

287
        UBSetting* boardInterpolatePenStrokes;
288 289
        UBSetting* boardSimplifyPenStrokes;
        UBSetting* boardSimplifyPenStrokesThresholdAngle;
290
        UBSetting* boardSimplifyPenStrokesThresholdWidthDifference;
291 292
        UBSetting* boardInterpolateMarkerStrokes;
        UBSetting* boardSimplifyMarkerStrokes;
293

Claudio Valerio's avatar
Claudio Valerio committed
294 295
        UBSetting* boardKeyboardPaletteKeyBtnSize;

Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
296 297
        UBSetting* appStartMode;

298 299
        UBSetting* featureSliderPosition;

300 301 302
        UBSetting* boardCrossColorDarkBackground;
        UBSetting* boardCrossColorLightBackground;

303 304 305
        UBColorListSetting* boardGridLightBackgroundColors;
        UBColorListSetting* boardGridDarkBackgroundColors;

Claudio Valerio's avatar
Claudio Valerio committed
306 307 308 309 310 311 312 313 314 315 316 317 318 319
        UBColorListSetting* boardPenLightBackgroundColors;
        UBColorListSetting* boardPenLightBackgroundSelectedColors;

        UBColorListSetting* boardPenDarkBackgroundColors;
        UBColorListSetting* boardPenDarkBackgroundSelectedColors;

        UBSetting* boardMarkerAlpha;

        UBColorListSetting* boardMarkerLightBackgroundColors;
        UBColorListSetting* boardMarkerLightBackgroundSelectedColors;

        UBColorListSetting* boardMarkerDarkBackgroundColors;
        UBColorListSetting* boardMarkerDarkBackgroundSelectedColors;

320 321
        UBSetting* showEraserPreviewCircle;
        UBSetting* showMarkerPreviewCircle;
322 323
        UBSetting* showPenPreviewCircle;
        UBSetting* penPreviewFromSize;
324

Claudio Valerio's avatar
Claudio Valerio committed
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 365 366 367 368 369
        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
370
        UBSetting* youTubeCredentialsPersistence;
Claudio Valerio's avatar
Claudio Valerio committed
371 372 373 374 375 376 377 378

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

        UBSetting* favoritesNativeToolUris;

        UBSetting* documentThumbnailWidth;
379 380
        UBSetting* documentSortKind;
        UBSetting* documentSortOrder;
381 382
        UBSetting* documentSplitterLeftSize;
        UBSetting* documentSplitterRightSize;
Claudio Valerio's avatar
Claudio Valerio committed
383 384 385 386 387 388
        UBSetting* imageThumbnailWidth;
        UBSetting* videoThumbnailWidth;
        UBSetting* shapeThumbnailWidth;
        UBSetting* gipThumbnailWidth;
        UBSetting* soundThumbnailWidth;

389 390
        UBSetting* libraryShowDetailsForLocalItems;

Claudio Valerio's avatar
Claudio Valerio committed
391 392 393 394 395 396 397 398
        UBSetting* rightLibPaletteBoardModeWidth;
        UBSetting* rightLibPaletteBoardModeIsCollapsed;
        UBSetting* rightLibPaletteDesktopModeWidth;
        UBSetting* rightLibPaletteDesktopModeIsCollapsed;
        UBSetting* leftLibPaletteBoardModeWidth;
        UBSetting* leftLibPaletteBoardModeIsCollapsed;
        UBSetting* leftLibPaletteDesktopModeWidth;
        UBSetting* leftLibPaletteDesktopModeIsCollapsed;
399

400 401
        UBSetting* communityUser;
        UBSetting* communityPsw;
Claudio Valerio's avatar
Claudio Valerio committed
402
        UBSetting* communityCredentialsPersistence;
403

404 405
        UBSetting* pageSize;

406
        UBSetting* KeyboardLocale;
407
        UBSetting* swapControlAndDisplayScreens;
408

Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
409
        UBSetting* angleTolerance;
Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
410
        UBSetting* historyLimit;
Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
411

shibakaneki's avatar
shibakaneki committed
412 413
        UBSetting* libIconSize;

414
        UBSetting* useSystemOnScreenKeyboard;
415

416 417
        UBSetting* showDateColumnOnAlphabeticalSort;

418
        UBSetting* magnifierDrawingMode;
419
        UBSetting* autoSaveInterval;
420

Claudio Valerio's avatar
Claudio Valerio committed
421 422 423 424 425 426 427 428 429 430 431 432 433
    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);

434
         void setStylusPaletteVisible(bool visible);
Claudio Valerio's avatar
Claudio Valerio committed
435 436

        void setPenPressureSensitive(bool sensitive);
437 438
        void setPenPreviewCircle(bool sensitive);
        void setPenPreviewFromSize(int size);
Claudio Valerio's avatar
Claudio Valerio committed
439 440
        void setMarkerPressureSensitive(bool sensitive);

441
        QVariant value ( const QString & key, const QVariant & defaultValue = QVariant() );
Claudio Valerio's avatar
Claudio Valerio committed
442 443
        void setValue (const QString & key,const QVariant & value);

444
        void colorChanged() { emit colorContextChanged(); }
Claudio Valerio's avatar
Claudio Valerio committed
445 446 447 448 449 450 451 452 453

    signals:
        void colorContextChanged();

    private:

        QSettings* mAppSettings;
        QSettings* mUserSettings;

454 455
        QHash<QString, QVariant> mSettingsQueue;

Claudio Valerio's avatar
Claudio Valerio committed
456 457 458 459 460 461 462 463
        static const int sDefaultFontPixelSize;
        static const char *sDefaultFontFamily;

        static QSettings* getAppSettings();

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

464 465 466
        static bool checkDirectory(QString& dirPath);
        static QString replaceWildcard(QString& path);

467 468 469
        void removeSetting(const QString& setting);
        void checkNewSettings();

Claudio Valerio's avatar
Claudio Valerio committed
470 471 472 473
};


#endif /* UBSETTINGS_H_ */