File indexing completed on 2024-05-12 16:28:05
0001 // SPDX-FileCopyrightText: 2023 Carl Schwan <carl@carlschwan.eu> 0002 // SPDX-License-Identifier: LGPL-2.1-or-later 0003 0004 #pragma once 0005 0006 #include "abstractaccount.h" 0007 #include "timeline/post.h" 0008 0009 /// Account-specific preferences which are stored server-side 0010 class Preferences : public QObject 0011 { 0012 Q_OBJECT 0013 0014 Q_PROPERTY(Post::Visibility defaultVisibility READ defaultVisibility WRITE setDefaultVisibility NOTIFY defaultVisibilityChanged) 0015 Q_PROPERTY(bool defaultSensitive READ defaultSensitive WRITE setDefaultSensitive NOTIFY defaultSensitiveChanged) 0016 Q_PROPERTY(QString defaultLanguage READ defaultLanguage WRITE setDefaultLanguage NOTIFY defaultLanguageChanged) 0017 Q_PROPERTY(QString extendMedia READ extendMedia NOTIFY extendMediaChanged) 0018 Q_PROPERTY(bool extendSpoiler READ extendSpoiler NOTIFY extendSpoilerChanged) 0019 0020 public: 0021 explicit Preferences(AbstractAccount *account); 0022 0023 /// The default visibility when composing new statuses 0024 /// \see setDefaultVisibility 0025 Post::Visibility defaultVisibility() const; 0026 0027 /// Sets the default visibility when composing new statuses 0028 /// \see defaultVisibility 0029 void setDefaultVisibility(Post::Visibility visibility); 0030 0031 /// Whether newly uploaded media attachments are sensitive by default 0032 /// \see setDefaultSensitive 0033 bool defaultSensitive() const; 0034 0035 // Set whether newly uploaded media attachments are sensitive by default 0036 /// \see setDefaultSensitive 0037 void setDefaultSensitive(bool sensitive); 0038 0039 /// The default language code (ISO 6391) when composing new statuses 0040 /// \see setDefaultLanguage 0041 QString defaultLanguage() const; 0042 0043 /// Set the default language code (ISO 6391) when composing new statuses 0044 /// \see defaultLanguage 0045 void setDefaultLanguage(QString language); 0046 0047 /// Returns true if media should not be cropped to 16:9 0048 /// Currently read-only, see https://github.com/mastodon/mastodon/issues/7021 0049 QString extendMedia() const; 0050 0051 /// Returns true if spoilers on statuses should be ignored, and always shown 0052 /// Currently read-only, see https://github.com/mastodon/mastodon/issues/7021 0053 bool extendSpoiler() const; 0054 0055 Q_SIGNALS: 0056 /// Emitted when the default status visibility preference has been changed 0057 /// \see setDefaultVisibility 0058 void defaultVisibilityChanged(); 0059 0060 /// Emitted when the default media attachment sensitivity preference has been changed 0061 /// \see setDefaultSensitive 0062 void defaultSensitiveChanged(); 0063 0064 /// Emitted when the default status language preference has been changed 0065 /// \see setDefaultLanguage 0066 void defaultLanguageChanged(); 0067 0068 /// Emitted when the extend media preference has been changed 0069 void extendMediaChanged(); 0070 0071 /// Emitted when the extend spoiler preference has been changed 0072 void extendSpoilerChanged(); 0073 0074 private: 0075 void setPreferencesField(QString name, QString value); 0076 0077 AbstractAccount *m_account; 0078 0079 Post::Visibility m_defaultVisibility; 0080 bool m_defaultSensitive; 0081 QString m_defaultLanguage; 0082 QString m_extendMedia; 0083 bool m_extendSpoiler; 0084 };