source: SMSSender/frontend/business/accountinitmanager.cpp @ 315:e6c8bb244ecd

separation-frontend-backend
Last change on this file since 315:e6c8bb244ecd was 315:e6c8bb244ecd, checked in by Sämy Zehnder <saemy.zehnder@…>, 6 years ago
  • Separates the frontend from the backend code.
  • At this point the schoolnet gateway is converted only.
  • Removes bc & da prefixes from the filenames.
File size: 2.4 KB
Line 
1/*
2 smssender - A frontend for fast and easy SMS sending over different gateways.
3 Copyright (C) 2007-2012, gorrión. See http://smssender.gorrion.ch
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 */
18#include "accountinitmanager.h"
19
20#include <QString>
21#include <QSet>
22
23#include "common/business/iaccount_tasks.h"
24#include "common/utils/staskmanager.h"
25
26void AccountInitManager::initAccount(IAccount *account) {
27    if (m_initializingAccounts.contains(account)) {
28        // The initialization of this account is already under our control
29        return;
30    }
31
32    if (!account->isEnabled()) {
33        return;
34    }
35    if (account->isInitialized()) {
36        return;
37    }
38
39    QScopedPointer<IAccountInitTask> initTask(account->createInitTask());
40    if (initTask) {
41        m_initializingAccounts.insert(account);
42
43        connect(initTask.data(), SIGNAL(finished(STask*)),
44                this, SLOT(onAccountInitFinished(STask*)), Qt::DirectConnection);
45        connect(initTask.data(), SIGNAL(exceptionOccured(STask*)),
46                this, SLOT(onAccountInitFailed(STask*)), Qt::DirectConnection);
47        connect(account, SIGNAL(initStateChanged(IAccount*)),
48                this, SIGNAL(accountInitStateChanged(IAccount*)));
49
50        initTask.take()->start();
51    }
52}
53
54void AccountInitManager::initAccounts(const QSet<IAccount*> &accounts) {
55    foreach (IAccount* account, accounts) {
56        initAccount(account);
57    }
58}
59
60
61void AccountInitManager::onAccountInitFinished(STask *task) {
62    IAccount* account = static_cast<IAccountInitTask*>(task)->account();
63
64    m_initializingAccounts.remove(account);
65    emit accountInitFinished(account, task->taskResult());
66}
67void AccountInitManager::onAccountInitFailed(STask *task) {
68    IAccount* account = static_cast<IAccountInitTask*>(task)->account();
69
70    emit accountInitFailed(account, task->exception());
71}
Note: See TracBrowser for help on using the repository browser.