Added missing files & folders
[situare] / src / facebookservice / facebookauthentication.h
1 /*
2    Situare - A location system for Facebook
3    Copyright (C) 2010  Ixonos Plc. Authors:
4
5        Ville Tiensuu - ville.tiensuu@ixonos.com
6        Kaj Wallin - kaj.wallin@ixonos.com
7
8    Situare is free software; you can redistribute it and/or
9    modify it under the terms of the GNU General Public License
10    version 2 as published by the Free Software Foundation.
11
12    Situare is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with Situare; if not, write to the Free Software
19    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
20    USA.
21 */
22
23 #ifndef FACEBOOKAUTHENTICATION_H
24 #define FACEBOOKAUTHENTICATION_H
25
26 #include <QtGui>
27 #include <QtWebKit>
28 #include <QHash>
29 #include <QString>
30 #include <QLayout>
31 #include "facebookcredentials.h"
32
33 /**
34 * @brief FacebookAuthentication class takes care of transmitting username and password to facebook. And it also receives credentials from Facebook. Other components of Situare application needs credentials to communicate with facebook.
35 *
36 * @class FacebookAuthentication facebookauthentication.h "facebookauthentication.h"
37 */
38 class FacebookAuthentication : public QMainWindow
39 {
40     Q_OBJECT
41
42 public:
43     /**
44     * @brief FacebookAuthentication constructor
45     *
46     * -Composes Loginpage from pieces.
47     * -Checks if there is valid credentials stored on the file. If there is emits signal. If not it calls start method.
48     * -Connects signal from webview to UpdateCredentials() method. With this feature it is verified that class tries always update credentials when web page changes.
49     * -Allocates memory for webView and mainlayout
50     *
51     * @fn FacebookAuthentication
52     * @param parent
53     */
54     FacebookAuthentication(QWidget *parent = 0);
55
56     /**
57     * @brief Releases allocated memory for webView and mainLayout
58     *
59     * @fn ~FacebookAuthentication
60     */
61     ~FacebookAuthentication();
62
63     /**
64     * @brief Getter for loginCredentials
65     *
66     * @fn getLoginCredentials
67     * @return FacebookCredentials
68     */
69     FacebookCredentials getLoginCredentials() const;
70
71     friend class TestFacebookAuthentication;
72
73 public slots:
74     /**
75     * @brief shows the webView and loads page that is specified in the facebookLoginPage variable. Specifies font size for the page.
76     *
77     * @fn start
78     */
79     void start();
80
81 private slots:
82     /**
83     * @brief  search credentials from URL that is given parameter. If credentials are found thay are stored to loginCredentials variable.
84     *
85     * @fn updateCredentials
86     * @param url, URL where this method tries to find credentials.
87     * @return bool, if credentials are found return true, if credentials are not found return false.
88     */
89     bool updateCredentials(const QUrl & url);
90
91 signals:
92     /**
93     * @brief this signal is emitted updateCredentials method finds credentials from URL. signal is also emitted at the beginning of the program if there is valid credentials in the file.
94     *
95     * @fn credentialsReady
96     */
97     void credentialsReady();
98
99     /**
100     * @brief this signal is emitted if updateCredentials method can't find credentials from URL
101     *
102     * @fn loginFailure
103     */
104     void loginFailure();
105
106 private:
107     /**
108     * @brief checks expiration time of credentials and compares it to current time.
109     *
110     * @fn verifyCredentials
111     * @param credentials, this parameter represents credentials that will be verified.
112     * @return bool, returns true if expiration time is after current time. in other cases returns false.
113     */
114     bool verifyCredentials(const FacebookCredentials &credentials) const;
115
116     /**
117     * @brief Reads previous stored credentials from file.
118     *
119     * @fn readCredentials
120     * @param credentialsFromFile, This dataclass is the place where method stores credentials. Corrent parameter here is loginCredentials (private member of FacebookAuthentication class)
121     */
122     void readCredentials(FacebookCredentials &credentialsFromFile);
123
124     /**
125     * @brief Writes credentials to File
126     *
127     * @fn writeCredentials
128     * @param credentials, Contents of this dataclass is stored to file
129     */
130     void writeCredentials(const FacebookCredentials &credentials);
131
132     /**
133     * @brief, shows facebook login page.
134     *
135     * @var webView
136     */
137     QWebView *webView;
138
139     /**
140     * @brief, lays out webview in window.
141     *
142     * @var mainlayout
143     */
144     QHBoxLayout *mainlayout;
145
146     /**
147     * @brief string that contantains URL of facebook loginpage.
148     *
149     * @var facebookLoginPage
150     */
151     QString facebookLoginPage;
152
153     /**
154     * @brief Dataclass that contains authorization to use facebook. Dataclass is composed of five QStrings and setters and getters.
155     *
156     * @var loginCredentials
157     */
158     FacebookCredentials loginCredentials;
159 };
160
161 #endif // FACEBOOKAUTHENTICATION_H