Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • nightly/20250515.0
  • nightly/20250510.0
  • nightly/20250509.1
  • nightly/20250509.0
  • stable/20250430.1
  • stable/20250430.0
  • beta/202504301614
  • nightly/20250430.0
  • stable/20250424.1
  • beta/202504241506
  • stable/20250424.0
  • nightly/20250424.1
  • nightly/20250424.0
  • nightly/20250422.0
  • beta/202504120241
  • stable/20250411.0
  • nightly/20250411.0
  • nightly/20250331.0
  • beta/202503281438
  • stable/20250321.0
21 results

accountadapter.h

Blame
    • Ming Rui Zhang's avatar
      66edc82b
      settingsview: LinkedDevices view refactor · 66edc82b
      Ming Rui Zhang authored
      1. Remove deviceModel from AccountAdapter
      2. Use QSortFilterProxyModel to make sure that
         current device is always on top and the rest are
         in alphabetical order
      3. Elide device name properly in DeviceItemDelegate
      
      Change-Id: Ic66a11fb4a4a8cca65916653e0981b15c939bce6
      66edc82b
      History
      settingsview: LinkedDevices view refactor
      Ming Rui Zhang authored
      1. Remove deviceModel from AccountAdapter
      2. Use QSortFilterProxyModel to make sure that
         current device is always on top and the rest are
         in alphabetical order
      3. Elide device name properly in DeviceItemDelegate
      
      Change-Id: Ic66a11fb4a4a8cca65916653e0981b15c939bce6
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    accountadapter.h 3.79 KiB
    /*
     * Copyright (C) 2021 by Savoir-faire Linux
     * Author: Mingrui Zhang   <mingrui.zhang@savoirfairelinux.com>
     *
     * This program is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published by
     * the Free Software Foundation; either version 3 of the License, or
     * (at your option) any later version.
     *
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     */
    
    #pragma once
    
    #include "qmladapterbase.h"
    
    #include "accountlistmodel.h"
    #include "lrcinstance.h"
    #include "utils.h"
    
    #include <QSettings>
    #include <QString>
    
    class AppSettingsManager;
    
    class AccountAdapter final : public QmlAdapterBase
    {
        Q_OBJECT
    
        Q_PROPERTY(lrc::api::NewAccountModel* model READ getModel NOTIFY modelChanged)
    
    public:
        lrc::api::NewAccountModel* getModel();
    
    Q_SIGNALS:
        void modelChanged();
    
    public:
        explicit AccountAdapter(AppSettingsManager* settingsManager,
                                LRCInstance* instance,
                                QObject* parent = nullptr);
        ~AccountAdapter() = default;
    
        void safeInit() override {}
    
        // Change to account corresponding to combox box index.
        Q_INVOKABLE void changeAccount(int row);
    
        // Create normal Jami account, SIP account and JAMS accounts.
        Q_INVOKABLE void createJamiAccount(QString registeredName,
                                           const QVariantMap& settings,
                                           bool isCreating);
        Q_INVOKABLE void createSIPAccount(const QVariantMap& settings);
        Q_INVOKABLE void createJAMSAccount(const QVariantMap& settings);
    
        // Delete current account
        Q_INVOKABLE void deleteCurrentAccount();
    
        // Setting related
        Q_INVOKABLE void passwordSetStatusMessageBox(bool success, QString title, QString infoToDisplay);
    
        // Conf property
        Q_INVOKABLE bool hasPassword();
        Q_INVOKABLE void setArchiveHasPassword(bool isHavePassword);
        Q_INVOKABLE bool exportToFile(const QString& accountId,
                                      const QString& path,
                                      const QString& password = {}) const;
        Q_INVOKABLE void setArchivePasswordAsync(const QString& accountID, const QString& password);
    
        // Lrc instances functions wrappers
        Q_INVOKABLE bool savePassword(const QString& accountId,
                                      const QString& oldPassword,
                                      const QString& newPassword);
    
        Q_INVOKABLE void startPreviewing(bool force = false);
        Q_INVOKABLE void stopPreviewing();
        Q_INVOKABLE bool hasVideoCall();
        Q_INVOKABLE bool isPreviewing();
        Q_INVOKABLE void setCurrAccDisplayName(const QString& text);
        Q_INVOKABLE void setCurrentAccountAvatarFile(const QString& source);
        Q_INVOKABLE void setCurrentAccountAvatarBase64(const QString& source = {});
    
    Q_SIGNALS:
        // Trigger other components to reconnect account related signals.
        void accountStatusChanged(QString accountId);
    
        // Send report failure to QML to make it show the right UI state .
        void reportFailure();
        void accountCreationFailed();
        void accountAdded(QString accountId, int index);
        void accountRemoved();
        void accountConfigFinalized();
    
    private:
        // Implement what to do when account creation fails.
        void connectFailure();
    
        QMetaObject::Connection registeredNameSavedConnection_;
    
        AppSettingsManager* settingsManager_;
    
        QScopedPointer<AccountListModel> accSrcModel_;
        QScopedPointer<CurrentAccountFilterModel> accModel_;
    };
    Q_DECLARE_METATYPE(AccountAdapter*)