Fixes: NB#289569 - View changes and error banner is not displayed when incorrect...
[accounts-sso:libaccounts-ui.git] / lib / AccountsUI / common.cpp
1 /*
2  * This file is part of accounts-ui
3  *
4  * Copyright (C) 2009-2010 Nokia Corporation.
5  *
6  * Contact: Alberto Mardegan <alberto.mardegan@nokia.com>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public License
10  * version 2.1 as published by the Free Software Foundation.
11  *
12  * This library is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20  * 02110-1301 USA
21  */
22
23 #include "common.h"
24
25 #include <MBanner>
26 #include <MNGFClient>
27
28 #include <sysinfo.h>
29
30 namespace AccountsUI {
31
32 const QString trIdFromSignonError(const int err)
33 {
34     //todo - if possible, add QFlag<> validation
35     return trIdFromSignonError((SignonErrType)err);
36 }
37
38 const QString trIdFromSignonError(const SignOn::Error::ErrorType err, const QString& providerName)
39 {
40     //todo - enrich this
41     switch (err) {
42     case SignOn::Error::StoreFailed:
43         //todo - dummy id, provide a real one
44         //% "Unable to store credentials"
45         return qtTrId("qtn_acc_creds_store_fail");
46     case SignOn::Error::InvalidCredentials:
47         //% "Invalid credentials"
48         return qtTrId("qtn_acc_auth_failed_infobanner");
49     case SignOn::Error::Network:
50         //% "Service connection failed"
51         return qtTrId("qtn_acc_conn_to_service_fail").arg(providerName);
52     case SignOn::Error::NoConnection:
53         //% "No network connection"
54         return qtTrId("qtn_acc_conn_to_service_fail").arg(providerName);
55     case SignOn::Error::NotAuthorized:
56         //% "Wrong Credentials"
57         return qtTrId("qtn_acc_auth_failed_infobanner");
58     case SignOn::Error::IncorrectDate:
59         //% Date and time are wrong"
60         return qtTrId("qtn_comm_share_incorrect_date");
61     default:
62         //todo - provide a generic error id
63         return qtTrId("qtn_comm_general_error");
64     }
65 }
66
67 void showInfoBanner(const QString &text,
68                     const MInfoBanner::BannerType type,
69                     const quint32 disapperTimeout,
70                     const QString &feedback)
71 {
72     Q_UNUSED(type);
73     Q_UNUSED(disapperTimeout);
74
75     MBanner *banner = new MBanner();
76     banner->setStyleName("InformationBanner");
77     banner->setTitle(text);
78     banner->appear(MSceneWindow::DestroyWhenDone);
79     if (!feedback.isEmpty()) {
80         MNGFClient m_NgfClient;
81         m_NgfClient.playEvent(feedback);
82     }
83 }
84
85 const QString productNameTr()
86 {
87     struct system_config *sc = 0;
88     QByteArray name;
89
90     if (sysinfo_init(&sc) == 0) {
91         uint8_t *data = 0;
92         unsigned long size = 0;
93
94
95         if (sysinfo_get_value(sc, "/component/product-name",
96                               &data, &size) == 0) {
97             name = QByteArray((const char *)(data), size);
98             free(data);
99         }
100         sysinfo_finish(sc);
101     }
102     QString productNameId;
103     if (name == "N9" || name == "Nxy")
104         productNameId = qtTrId("qtn_comm_product_n9");
105     else
106         productNameId = qtTrId("qtn_comm_product_nxx");
107
108     return productNameId;
109 }
110
111 } //namespace