UBSettings.h 14.3 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;
shibakaneki's avatar
shibakaneki committed
220
        static const int defaultLibraryIconSize;
Claudio Valerio's avatar
Claudio Valerio committed
221 222 223 224 225 226 227 228 229

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

        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;

250 251
        UBSetting* tutorialUrl;

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

        UBSetting* appIsInSoftwareUpdateProcess;

        UBSetting* appLastSessionDocumentUUID;
        UBSetting* appLastSessionPageIndex;

Aleksei Kanash's avatar
Aleksei Kanash committed
266
        UBSetting* appUseMultiscreen;
267 268 269

        UBSetting* appStartupHintsEnabled;

Claudio Valerio's avatar
Claudio Valerio committed
270
        UBSetting* appLookForOpenSankoreInstall;
Aleksei Kanash's avatar
Aleksei Kanash committed
271

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

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

        UBSetting* boardPenPressureSensitive;
        UBSetting* boardMarkerPressureSensitive;

        UBSetting* boardUseHighResTabletEvent;

285
        UBSetting* boardInterpolatePenStrokes;
286 287
        UBSetting* boardSimplifyPenStrokes;
        UBSetting* boardSimplifyPenStrokesThresholdAngle;
288
        UBSetting* boardSimplifyPenStrokesThresholdWidthDifference;
289 290
        UBSetting* boardInterpolateMarkerStrokes;
        UBSetting* boardSimplifyMarkerStrokes;
291

Claudio Valerio's avatar
Claudio Valerio committed
292 293
        UBSetting* boardKeyboardPaletteKeyBtnSize;

Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
294 295
        UBSetting* appStartMode;

296 297
        UBSetting* featureSliderPosition;

298 299 300
        UBSetting* boardCrossColorDarkBackground;
        UBSetting* boardCrossColorLightBackground;

301 302 303
        UBColorListSetting* boardGridLightBackgroundColors;
        UBColorListSetting* boardGridDarkBackgroundColors;

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

        UBColorListSetting* boardPenDarkBackgroundColors;
        UBColorListSetting* boardPenDarkBackgroundSelectedColors;

        UBSetting* boardMarkerAlpha;

        UBColorListSetting* boardMarkerLightBackgroundColors;
        UBColorListSetting* boardMarkerLightBackgroundSelectedColors;

        UBColorListSetting* boardMarkerDarkBackgroundColors;
        UBColorListSetting* boardMarkerDarkBackgroundSelectedColors;

318 319
        UBSetting* showEraserPreviewCircle;
        UBSetting* showMarkerPreviewCircle;
320 321
        UBSetting* showPenPreviewCircle;
        UBSetting* penPreviewFromSize;
322

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

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

        UBSetting* favoritesNativeToolUris;

        UBSetting* documentThumbnailWidth;
377 378
        UBSetting* documentSortKind;
        UBSetting* documentSortOrder;
Claudio Valerio's avatar
Claudio Valerio committed
379 380 381 382 383 384
        UBSetting* imageThumbnailWidth;
        UBSetting* videoThumbnailWidth;
        UBSetting* shapeThumbnailWidth;
        UBSetting* gipThumbnailWidth;
        UBSetting* soundThumbnailWidth;

385 386
        UBSetting* libraryShowDetailsForLocalItems;

Claudio Valerio's avatar
Claudio Valerio committed
387 388 389 390 391 392 393 394
        UBSetting* rightLibPaletteBoardModeWidth;
        UBSetting* rightLibPaletteBoardModeIsCollapsed;
        UBSetting* rightLibPaletteDesktopModeWidth;
        UBSetting* rightLibPaletteDesktopModeIsCollapsed;
        UBSetting* leftLibPaletteBoardModeWidth;
        UBSetting* leftLibPaletteBoardModeIsCollapsed;
        UBSetting* leftLibPaletteDesktopModeWidth;
        UBSetting* leftLibPaletteDesktopModeIsCollapsed;
395

396 397
        UBSetting* communityUser;
        UBSetting* communityPsw;
Claudio Valerio's avatar
Claudio Valerio committed
398
        UBSetting* communityCredentialsPersistence;
399

400 401
        UBSetting* pageSize;

402
        UBSetting* KeyboardLocale;
403
        UBSetting* swapControlAndDisplayScreens;
404

Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
405
        UBSetting* angleTolerance;
Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
406
        UBSetting* historyLimit;
Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
407

shibakaneki's avatar
shibakaneki committed
408 409
        UBSetting* libIconSize;

410
        UBSetting* useSystemOnScreenKeyboard;
411

412
        UBSetting* magnifierDrawingMode;
413
        UBSetting* autoSaveInterval;
414

Claudio Valerio's avatar
Claudio Valerio committed
415 416 417 418 419 420 421 422 423 424 425 426 427
    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);

428
         void setStylusPaletteVisible(bool visible);
Claudio Valerio's avatar
Claudio Valerio committed
429 430

        void setPenPressureSensitive(bool sensitive);
431 432
        void setPenPreviewCircle(bool sensitive);
        void setPenPreviewFromSize(int size);
Claudio Valerio's avatar
Claudio Valerio committed
433 434
        void setMarkerPressureSensitive(bool sensitive);

435
        QVariant value ( const QString & key, const QVariant & defaultValue = QVariant() );
Claudio Valerio's avatar
Claudio Valerio committed
436 437
        void setValue (const QString & key,const QVariant & value);

438
        void colorChanged() { emit colorContextChanged(); }
Claudio Valerio's avatar
Claudio Valerio committed
439 440 441 442 443 444 445 446 447

    signals:
        void colorContextChanged();

    private:

        QSettings* mAppSettings;
        QSettings* mUserSettings;

448 449
        QHash<QString, QVariant> mSettingsQueue;

Claudio Valerio's avatar
Claudio Valerio committed
450 451 452 453 454 455 456 457
        static const int sDefaultFontPixelSize;
        static const char *sDefaultFontFamily;

        static QSettings* getAppSettings();

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

458 459 460
        static bool checkDirectory(QString& dirPath);
        static QString replaceWildcard(QString& path);

461 462 463
        void removeSetting(const QString& setting);
        void checkNewSettings();

Claudio Valerio's avatar
Claudio Valerio committed
464 465 466 467
};


#endif /* UBSETTINGS_H_ */