2 Situare - A location system for Facebook
3 Copyright (C) 2010 Ixonos Plc. Authors:
5 Ville Tiensuu - ville.tiensuu@ixonos.com
6 Kaj Wallin - kaj.wallin@ixonos.com
7 Henri Lampela - henri.lampela@ixonos.com
9 Situare is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License
11 version 2 as published by the Free Software Foundation.
13 Situare is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with Situare; if not, write to the Free Software
20 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
24 #ifndef FACEBOOKAUTHENTICATION_H
25 #define FACEBOOKAUTHENTICATION_H
36 * @brief FacebookAuthentication class takes care of Facebook login process. It creates
37 QWebView instance and tries to login with cookies using hidden browser.
38 If failed, then visible login browser dialog is invoked. Class also does parse the
41 * @author Ville Tiensuu
42 * @author Sami Rämö - sami.ramo (at) ixonos.com
44 class FacebookAuthentication : public QObject
52 * Initiates internal data members.
54 * @param mainWindow MainWindow instance
55 * @param parent Instance of the parent
57 FacebookAuthentication(MainWindow *mainWindow, QObject *parent = 0);
59 /*******************************************************************************
60 * MEMBER FUNCTIONS AND SLOTS
61 ******************************************************************************/
64 * @brief Clears account information from settings
66 * @param clearUserInformation True if user information should be cleared
68 void clearAccountInformation(bool clearUserInformation = false);
71 * @brief Is the user currently logged in
73 * @returns True if the user is logged in, otherwise false
75 bool isLoggedIn() const;
78 * @brief Initiate login process
80 * Builds login browser and starts loading login URL.
87 * @param clearUserInformation True if user information should be cleared
89 void logOut(bool clearUserInformation = false);
93 * @brief Destroy login dialog and browser
98 * @brief Parses the session information from the URL
101 * @returns Parsed session, or empty string if parsing failed.
103 QString parseSession(const QUrl &url);
107 * @brief Cleanup after browser is destructed
109 * Clears the pointer to the browser and disables the progress indicator.
111 void browserDestroyed();
114 * @brief Handler for login page loading errors
116 * @param reply Network reply
118 void networkReplyHandler(QNetworkReply *reply);
121 * @brief Handler for SSL errors, ignores the error
123 void sslErrors(QNetworkReply *reply, const QList<QSslError> &errors);
126 * @brief Handler for browser URL changes
128 * Does check the new URL and based on that invokes the login dialog with visible browser view
129 * or parses the session from the new URL.
133 void urlChanged(const QUrl &url);
135 /*******************************************************************************
137 ******************************************************************************/
140 * @brief Signals error
142 * @param context error context
143 * @param error error code
145 void error(const int context, const int error);
148 * @brief Emitted when logged in successfully
150 * All login related actions should be connected to this signal.
152 * @param session Session data
153 * @param wallPostPermission Has the user granted rights for posting to wall
155 void loggedIn(const QString session, bool wallPostPermission);
158 * @brief Emitted when logged out
160 * All logout related actions should be connected to this signal.
164 /*******************************************************************************
166 ******************************************************************************/
168 bool m_loggedIn; ///< Is the user currently logged in
169 QWebView *m_browser; ///< Login browser
170 MainWindow *m_mainWindow; ///< MainWindow
173 #endif // FACEBOOKAUTHENTICATION_H