Skip to content
Snippets Groups Projects
Select Git revision
  • 155c46e4f912817cbad380c4ae6650847636c798
  • master default protected
  • release/201811
  • release/201812
  • release/201901
  • release/201902
  • release/201903
  • release/201904
  • release/201905
  • release/201906
  • release/201908
  • release/201912
  • release/202001
  • release/202005
  • release/windows-test/201910
  • release/201808
  • wip/smartlist_refacto
  • wip/patches_poly_2017/JimmyHamel/MathieuGirouxHuppe
18 results

AccountListItemsViewModel.cpp

Blame
    • Andreas Traczyk's avatar
      746f376e
      refactoring: implements per account contacts, trust requests & more · 746f376e
      Andreas Traczyk authored
      - seperates contacts by account
      - implements the trust request API
      - introduces localization strings and transifex update mechanism
      - adds lodepng to remove windows photobooth png metadata
      - changes icons
      - adds default colored initial avatars
      - changes logo images
      - complete overhaul on the ui/ux
      
      Change-Id: I43914ff63a48bb43a6997721773df5029a1650b5
      746f376e
      History
      refactoring: implements per account contacts, trust requests & more
      Andreas Traczyk authored
      - seperates contacts by account
      - implements the trust request API
      - introduces localization strings and transifex update mechanism
      - adds lodepng to remove windows photobooth png metadata
      - changes icons
      - adds default colored initial avatars
      - changes logo images
      - complete overhaul on the ui/ux
      
      Change-Id: I43914ff63a48bb43a6997721773df5029a1650b5
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    AccountListItemsViewModel.cpp 4.72 KiB
    /***************************************************************************
     * Copyright (C) 2016 by Savoir-faire Linux                                *
     * Author: Jäger Nicolas <nicolas.jager@savoirfairelinux.com>              *
     * Author: Traczyk Andreas <andreas.traczyk@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/>.   *
     **************************************************************************/
    #include "pch.h"
    
    #include "AccountListItemsViewModel.h"
    
    using namespace Windows::ApplicationModel::Core;
    using namespace Windows::Data::Json;
    using namespace Windows::Storage;
    using namespace Windows::Storage::Streams;
    using namespace Windows::UI::Core;
    
    
    using namespace RingClientUWP;
    using namespace ViewModel;
    
    AccountListItemsViewModel::AccountListItemsViewModel()
    {
        itemsList_ = ref new Vector<AccountListItem^>();
    
        /* connect to delegates */
        AccountsViewModel::instance->accountAdded += ref new RingClientUWP::AccountAdded(this, &RingClientUWP::ViewModel::AccountListItemsViewModel::OnaccountAdded);
        AccountsViewModel::instance->clearAccountsList += ref new RingClientUWP::ClearAccountsList(this, &RingClientUWP::ViewModel::AccountListItemsViewModel::OnclearAccountsList);
    }
    
    void RingClientUWP::ViewModel::AccountListItemsViewModel::OnaccountAdded(RingClientUWP::Account ^account)
    {
        auto item = ref new AccountListItem(account);
        itemsList_->InsertAt(0, item);
    }
    
    
    void RingClientUWP::ViewModel::AccountListItemsViewModel::OnclearAccountsList()
    {
        itemsList_->Clear();
    }
    
    void
    AccountListItemsViewModel::updateContactsViewModel()
    {
        SmartPanelItemsViewModel::instance->refreshFilteredItemsList();
        SmartPanelItemsViewModel::instance->update(ViewModel::NotifyStrings::notifySmartPanelItem);
    }
    
    AccountListItem^
    RingClientUWP::ViewModel::AccountListItemsViewModel::findItem(String^ accountId)
    {
        for each (AccountListItem^ item in itemsList_)
            if (item->_account->accountID_ == accountId)
                return item;
    
        return nullptr;
    }
    
    int
    AccountListItemsViewModel::getIndex(String^ accountId)
    {
        int i;
        for (i = 0; i < itemsList_->Size; i++) {
            if (itemsList_->GetAt(i)->_account->accountID_ == accountId)
                break;
        }
        return i;
    }
    
    void RingClientUWP::ViewModel::AccountListItemsViewModel::removeItem(AccountListItem ^ item)
    {
        unsigned int index;
        itemsList_->IndexOf(item, &index);
    
        item->_disconnected = true; // avoid disconected exception.
    
        itemsList_->RemoveAt(index);
    
    }
    
    String^
    AccountListItemsViewModel::getSelectedAccountId()
    {
        if (_selectedItem)
            return _selectedItem->_account->accountID_;
        return nullptr;
    }
    
    int
    AccountListItemsViewModel::unreadMessages()
    {
        int messageCount = 0;
        for each (auto account in AccountsViewModel::instance->accountsList) {
            account->_unreadMessages = AccountsViewModel::instance->unreadMessages(account->accountID_);
            messageCount += account->_unreadMessages;
        }
        return messageCount;
    }
    
    int
    AccountListItemsViewModel::unreadContactRequests()
    {
        int unreadContactRequestCount = 0;
        for each (auto account in AccountsViewModel::instance->accountsList) {
            account->_unreadContactRequests = AccountsViewModel::instance->unreadContactRequests(account->accountID_);
            unreadContactRequestCount += account->_unreadContactRequests;
        }
        return unreadContactRequestCount;
    }
    
    void
    AccountListItemsViewModel::update(const std::vector<std::string>& properties)
    {
        for each (AccountListItem^ item in itemsList) {
            item->raiseNotifyPropertyChanged("");
            for each (std::string prop in properties) {
                item->_account->raiseNotifyPropertyChanged(Utils::toPlatformString(prop));
            }
        }
    }