File indexing completed on 2024-05-12 05:04:09
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 "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 /// \param visibility The new default visibility 0029 /// \see defaultVisibility 0030 void setDefaultVisibility(Post::Visibility visibility); 0031 0032 /// Whether newly uploaded media attachments are sensitive by default 0033 /// \see setDefaultSensitive 0034 bool defaultSensitive() const; 0035 0036 /// Set whether newly uploaded media attachments are sensitive by default 0037 /// \param sensitive Whether or not media attachments are sensitive by default 0038 /// \see setDefaultSensitive 0039 void setDefaultSensitive(bool sensitive); 0040 0041 /// The default language code (ISO 6391) when composing new statuses 0042 /// \see setDefaultLanguage 0043 QString defaultLanguage() const; 0044 0045 /// Set the default language code (ISO 6391) when composing new statuses 0046 /// \param language The new default language code 0047 /// \see defaultLanguage 0048 void setDefaultLanguage(QString language); 0049 0050 /// Returns true if media should not be cropped to 16:9 0051 /// Currently read-only, see https://github.com/mastodon/mastodon/issues/7021 0052 QString extendMedia() const; 0053 0054 /// Returns true if spoilers on statuses should be ignored, and always shown 0055 /// Currently read-only, see https://github.com/mastodon/mastodon/issues/7021 0056 bool extendSpoiler() const; 0057 0058 Q_SIGNALS: 0059 /// Emitted when the default status visibility preference has been changed 0060 /// \see setDefaultVisibility 0061 void defaultVisibilityChanged(); 0062 0063 /// Emitted when the default media attachment sensitivity preference has been changed 0064 /// \see setDefaultSensitive 0065 void defaultSensitiveChanged(); 0066 0067 /// Emitted when the default status language preference has been changed 0068 /// \see setDefaultLanguage 0069 void defaultLanguageChanged(); 0070 0071 /// Emitted when the extend media preference has been changed 0072 void extendMediaChanged(); 0073 0074 /// Emitted when the extend spoiler preference has been changed 0075 void extendSpoilerChanged(); 0076 0077 private: 0078 void setPreferencesField(QString name, QString value); 0079 0080 AbstractAccount *m_account; 0081 0082 Post::Visibility m_defaultVisibility; 0083 bool m_defaultSensitive; 0084 QString m_defaultLanguage; 0085 QString m_extendMedia; 0086 bool m_extendSpoiler; 0087 };