From 25ff027885cb5d3d464260562968359e42f9fc46 Mon Sep 17 00:00:00 2001 From: Armin Date: Wed, 25 Oct 2017 02:16:51 +0200 Subject: [PATCH 1/5] added openID support --- engine | 2 +- .../rocketchatMobile/FcmMessageReceiver.java | 3 +- .../FcmMessageTokenHandler.java | 1 + fairchat/fairchat.pro | 2 +- fairchat/main.cpp | 16 +- fairchat/qml.qrc | 3 + fairchat/qml/main.qml | 2 +- fairchat/qml/main.qml.orig | 237 ---------------- fairchat/qml/navigation/TopBar.qml | 3 +- fairchat/qml/pages/LoginPage.qml | 268 +++++------------- fairchat/qml/pages/OpenIDLogin.qml | 78 +++++ fairchat/qml/pages/login/LoginMethod.qml | 31 ++ .../qml/pages/login/LoginUserPassword.qml | 195 +++++++++++++ 13 files changed, 402 insertions(+), 439 deletions(-) delete mode 100755 fairchat/qml/main.qml.orig create mode 100644 fairchat/qml/pages/OpenIDLogin.qml create mode 100644 fairchat/qml/pages/login/LoginMethod.qml create mode 100644 fairchat/qml/pages/login/LoginUserPassword.qml diff --git a/engine b/engine index f7ea15e..510fbd3 160000 --- a/engine +++ b/engine @@ -1 +1 @@ -Subproject commit f7ea15e9d2e8d813db5a2f706fcf930efc0b6de1 +Subproject commit 510fbd364cbba82b8d3c7d9d43dcc7d8918e3774 diff --git a/fairchat/android/src/com/osalliance/rocketchatMobile/FcmMessageReceiver.java b/fairchat/android/src/com/osalliance/rocketchatMobile/FcmMessageReceiver.java index 69cfa39..6a4fb4a 100644 --- a/fairchat/android/src/com/osalliance/rocketchatMobile/FcmMessageReceiver.java +++ b/fairchat/android/src/com/osalliance/rocketchatMobile/FcmMessageReceiver.java @@ -47,7 +47,7 @@ public class FcmMessageReceiver extends FirebaseMessagingService { @Override public void onMessageReceived(RemoteMessage remoteMessage){ - + super.onMessageReceived(remoteMessage); String appname = MainActivity.getApplicationName(context); Map msg = remoteMessage.getData(); @@ -138,6 +138,7 @@ public class FcmMessageReceiver extends FirebaseMessagingService { @Override public void onMessageSent(String msgId){ + super.onMessageSent(msgId); Log.i("push","push message sent"); } diff --git a/fairchat/android/src/com/osalliance/rocketchatMobile/FcmMessageTokenHandler.java b/fairchat/android/src/com/osalliance/rocketchatMobile/FcmMessageTokenHandler.java index 946f2b1..328cf5a 100644 --- a/fairchat/android/src/com/osalliance/rocketchatMobile/FcmMessageTokenHandler.java +++ b/fairchat/android/src/com/osalliance/rocketchatMobile/FcmMessageTokenHandler.java @@ -15,6 +15,7 @@ public class FcmMessageTokenHandler extends FirebaseInstanceIdService { @Override public void onTokenRefresh(){ + super.onTokenRefresh(); String refreshedToken = FirebaseInstanceId.getInstance().getToken(); Log.i(TAG,"token received "+refreshedToken); diff --git a/fairchat/fairchat.pro b/fairchat/fairchat.pro index 2845114..7477a84 100755 --- a/fairchat/fairchat.pro +++ b/fairchat/fairchat.pro @@ -1,4 +1,4 @@ -QT += qml quick core network websockets sql quickcontrols2 multimedia svg xml concurrent +QT += qml quick core network websockets sql quickcontrols2 multimedia svg xml concurrent webview SOURCES += \ main.cpp \ diff --git a/fairchat/main.cpp b/fairchat/main.cpp index 75bf111..35eaae2 100755 --- a/fairchat/main.cpp +++ b/fairchat/main.cpp @@ -13,7 +13,11 @@ #include #include #include -#include +#include +#include +#include + +#include "models/serverchoicemodel.h" #include "CustomModels/channelmodel.h" #include "config.h" @@ -24,6 +28,7 @@ #include "notifications/notifications.h" #include "CustomModels/usermodel.h" #include "CustomModels/messagemodel.h" +#include "CustomModels/loginmethodsmodel.h" #include "utils.h" #ifdef Q_OS_ANDROID @@ -42,6 +47,7 @@ int main( int argc, char *argv[] ) { Q_INIT_RESOURCE(sql); + std::srand(std::time(0)); QCoreApplication::setAttribute( Qt::AA_EnableHighDpiScaling ); QCoreApplication::setOrganizationName( ORGANIZATION ); @@ -52,15 +58,20 @@ int main( int argc, char *argv[] ) ChannelModel channelModel; ChannelModel groupsModel; MessagesModel messageModel; + LoginMethodsModel loginMethodsModel; channelModel.moveToThread(QThread::currentThread()); groupsModel.moveToThread(QThread::currentThread()); userModel.moveToThread(QThread::currentThread()); messageModel.moveToThread(QThread::currentThread()); + loginMethodsModel.moveToThread(QThread::currentThread()); qDebug()<<"main thread: "<setContextProperty("pathPrefix", Utils::getPathPrefix()); context->setContextProperty("cmessagesModel", &messageModel); context->setContextProperty("serverChoices", &serverChoices); + context->setContextProperty("loginMethodsModel", &loginMethodsModel); engine.load( QUrl( QLatin1String( "qrc:/qml/main.qml" ) ) ); diff --git a/fairchat/qml.qrc b/fairchat/qml.qrc index 00855f1..20cf588 100755 --- a/fairchat/qml.qrc +++ b/fairchat/qml.qrc @@ -134,5 +134,8 @@ qml/popups/DeleteEntry.qml qml/pages/channelView/messageTypes/JoinMessage.qml res/buttons/other/messages-videocall-v2.svg + qml/pages/OpenIDLogin.qml + qml/pages/login/LoginMethod.qml + qml/pages/login/LoginUserPassword.qml diff --git a/fairchat/qml/main.qml b/fairchat/qml/main.qml index e1fd332..8785111 100755 --- a/fairchat/qml/main.qml +++ b/fairchat/qml/main.qml @@ -32,7 +32,7 @@ ApplicationWindow { property string activeChannel - background:StdImageHighDPI { + background: StdImageHighDPI { source: "qrc:/res/images/loginbg.png" width: parent.width height: parent.height diff --git a/fairchat/qml/main.qml.orig b/fairchat/qml/main.qml.orig deleted file mode 100755 index bd101c1..0000000 --- a/fairchat/qml/main.qml.orig +++ /dev/null @@ -1,237 +0,0 @@ -import QtQuick 2.8 -import QtQuick.Controls 2.1 -import QtQuick.Window 2.2 -import QtQuick.Dialogs 1.2 -import "." - -import "qrc:/qml/popups" -import "qrc:/qml/pages" -import "qrc:/qml/various" -import "qrc:/qml/popups" -import "qrc:/qml/style" - -import "qrc:/javascript/emoji.js" as Emoji -import "qrc:/javascript/print.js" as Print - - -ApplicationWindow { - id: window - visible: true - title: qsTr("ucom") - - - width: Screen.desktopAvailableWidth - height: Screen.desktopAvailableHeight - property int connectionState: 0 - - //find better place for that - property var avatars: Object.create(null) - property var fileCache: Object.create(null) - property var channelModels: Object.create(null) -<<<<<<< HEAD - // property real baseFontSize: 1 -======= ->>>>>>> master - property bool firstLaunch: true - property string activeChannel - - background: StdImageHighDPI { - source: "qrc:/res/images/loginbg.png" - width: parent.width - height: parent.height - fillMode: Image.Stretch - } - - WelcomePopup { - id: welcomePopup - } - JitsiMeetMissing{ - id: jitsiMeetMissing - } - - Component { - id: loginComponent - LoginPage { - } - } - ListModel { - id: uploadsModel - } - - StackView { - width: parent.width - height: parent.height - property bool mainViewPushed: false - property bool channelPushed: false - id: mainStack - initialItem: loginComponent - function reset() { - rocketChatController.setUsername("default", "") - rocketChatController.setPassword("default", "") - rocketChatController.setCurrentChannel("default", "", "") - mainStack.clear() - mainViewPushed = false - channelPushed = false - mainStack.push(loginComponent) - } - function toMainView() { - if (!mainViewPushed) { - mainViewPushed = 1 - mainStack.push("qrc:/qml/pages/MainView.qml") - } - } - function navBack() { - if (mainStack.depth > 2) { - mainStack.pop() - } - if (mainStack.depth != 4){ - rocketChatController.setCurrentChannel("default","","") - } - } - pushEnter: Transition { - } - pushExit: Transition { - } - popExit: Transition { - } - popEnter: Transition { - } - } - MessageDialog { - id: messageDialog - title: "Ooops" - text: 'Sorry, some error occured.
Please close the App and restart.' - } - LogoutDialog { - id: logoutDialog - text: qsTr("logout ?") - - onYes: { - console.log("logout accepted") - rocketChatController.logout("default") - } - onRejected: { - - } - } - ListModel { - id: emojiCustomGridModel - property var contents: Object() - } - ListModel { - id: emojiPersonsGridModel - } - ListModel { - id: emojiNatureGridModel - } - ListModel { - id: emojiFoodGridModel - } - ListModel { - id: emojiCategoryGridModel - } - ListModel { - id: emojiTravelGridModel - } - ListModel { - id: emojiObjectsGridModel - } - ListModel { - id: emojiSymbolsGridModel - } - ListModel { - id: emojiFlagsGridModel - } - - Component.onCompleted: { - if(rocketChatController.customEmojisReady){ - // Emoji.addEmojisPerCategory() - } - if (rocketChatController.getDdpConnectionEstablished()) { - connectionState = 1 - } -<<<<<<< HEAD - } -======= - rocketChatController.checkLoggedIn(); - } ->>>>>>> master - Connections { - target: rocketChatController - onLoginError: { - Print.log("error login") - if (mainStack.mainViewPushed) { - mainStack.reset() - } - if (connectionState == 2) { - connectionState = 1 - } - } - onLoggedOut: { - mainStack.reset() - } - onServerConnected: { - connectionState = 1 - } - onLoggedIn: { - connectionState = 2 - } - onOffline: { - connectionState = 0 - } - onError: { - messageDialog.text = text + '
Please select a file.
We recommend the Amaze App as file manager. Get it from the f-droid.org or Google app store.' - messageDialog.open() - } - function getUserAvatar(url) {} - - onFileRessourceProcessed: { - // if(rocketChatController.isStorageReady()){ - // getUserAvatar(url); - // } - var user = rocketChatController.getUsername("default") - if (url == "/avatar/" + user + ".jpg") { - var suffix = path.substring(path.length - 3, path.length) - var file = pathPrefix + path - if (suffix === "svg") { - file = "qrc:res/user-identity.svg" - } - window.avatars[user] = file - } - } - /*onStorageReady:{ -<<<<<<< HEAD - getUserAvatar(); - }*/ -======= - getUserAvatar(); - }*/ - onEmojisReady:{ - Emoji.addEmojisPerCategory(emojis); - } ->>>>>>> master - } - onClosing: { - if (Qt.platform.os !== "linux" && Qt.platform.os !== "windows" - && Qt.platform.os !== "macOS") { - Print.log(close) - Print.log(mainStack.depth) - if (mainStack.depth <= 2) { - - close.accepted = true - } else { - close.accepted = false - mainStack.navBack() - } - } - } - Connections{ - target:rocketChatController - onStorageReady:{ - Fonts.updateSettings() - } - onNoJitsiMeetAvailable:{ - jitsiMeetMissing.open() - } - } -} diff --git a/fairchat/qml/navigation/TopBar.qml b/fairchat/qml/navigation/TopBar.qml index c11ea8a..1eb7659 100755 --- a/fairchat/qml/navigation/TopBar.qml +++ b/fairchat/qml/navigation/TopBar.qml @@ -43,8 +43,7 @@ Item { } ConnectionIndicator { - // anchors.centerIn: parent - anchors.rightMargin: parent + anchors.centerIn: parent } } } diff --git a/fairchat/qml/pages/LoginPage.qml b/fairchat/qml/pages/LoginPage.qml index 9bf6a3c..deb492b 100755 --- a/fairchat/qml/pages/LoginPage.qml +++ b/fairchat/qml/pages/LoginPage.qml @@ -1,22 +1,30 @@ -import QtQuick 2.8 -import QtQuick.Controls 2.1 +import QtQuick 2.9 +import QtQuick.Controls 2.2 import QtQuick.Layouts 1.3 import Qt.labs.settings 1.0 import "qrc:/qml/style" - +import "qrc:/qml/pages/login" import "qrc:/qml/various" import "qrc:/javascript/print.js" as Print Page { id: loginPage - property bool showLoginForm: true property string currentServer + property bool ddpConnected: false background: Rectangle { color: "transparent" // fairchat color: // color: "#7c9b6c" } + function resetLoginMethods(){ + loginMethodStack.push(loginMethodStack.data[0].qml,loginMethodStack.data[0].properties,StackView.Immediate) + var item = loginMethodStack.data[0] + loginMethodStack.data = Object() + loginMethodStack.data[0] = item + loginMethodsModel.reset() + } + Settings { id: currentServerSetting property alias currentServerChoice: currentServer.text @@ -47,12 +55,7 @@ Page { } } } - function login() { - rocketChatController.login("default", loginUsername.text, - loginPassword.text) - loginStatus.text = "" - loginButton.state = "LOGGINGIN" - } + Column { anchors.centerIn: parent @@ -61,13 +64,13 @@ Page { Layout.minimumHeight: serverSettings.implicitHeight spacing: 21 Column { - //anchors.verticalCenter: parent.verticalCenter + id: loginCol anchors.left: parent.left anchors.right: parent.right anchors.leftMargin: 65 anchors.rightMargin: 65 spacing: 40 - width: 340 + // width: 340 Button { id: serverSettings anchors.left: parent.left @@ -113,7 +116,7 @@ Page { id: connectStatus visible: debug text: { - if (rocketChatController.getDdpConnectionEstablished()) + if (ddpConnected) return "connected" else return "not connected" @@ -121,139 +124,63 @@ Page { color: Colors.white font.pointSize: Fonts.smallFontSize } - - TextField { - id: loginUsername - width: parent.width - color: Colors.white - visible: loginPage.showLoginForm - font.pointSize: Fonts.largeFontSize - leftPadding: 5 - rightPadding: 5 - bottomPadding: 5 - horizontalAlignment: TextField.AlignLeft - verticalAlignment: TextField.AlignBottom - selectByMouse: true - text: "" - inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText - | Qt.ImhPreferLowercase - focus: true - placeholderText: qsTr("username or e-mail") - background: Rectangle { - // anchors.horizontalCenter: parent - implicitWidth: parent.width - implicitHeight: 30 - - color: "transparent" - Rectangle { - height: 1 - width: parent.width - color: Colors.white - anchors.bottom: parent.bottom - } + ComboBox{ + id:loginMethodSelection + currentIndex: 0 + anchors.left: parent.left + anchors.right: parent.right + visible: true + model: loginMethodsModel + delegate: ItemDelegate{ + anchors.left: parent.left + anchors.right: parent.right + text: model.service } - } - - TextField { - id: loginPassword - width: parent.width - visible: loginPage.showLoginForm - text: "" - color: Colors.white - font.pointSize: Fonts.largeFontSize - leftPadding: 5 - rightPadding: 5 - bottomPadding: 5 - horizontalAlignment: TextField.AlignLeft - verticalAlignment: TextField.AlignBottom - inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText - | Qt.ImhSensitiveData | Qt.ImhPreferLowercase - echoMode: TextInput.Password - selectByMouse: true - - placeholderText: qsTr("password") - - background: Rectangle { - - // anchors.horizontalCenter: parent - implicitWidth: parent.width - implicitHeight: 30 - color: "transparent" - Rectangle { - height: 1 - width: parent.width - color: Colors.white - anchors.bottom: parent.bottom + onCountChanged: { + if(count>1){ + var item = model.get(count-1); + var obj = Object() + obj.qml = "qrc:/qml/pages/login/LoginMethod.qml" + obj.properties = {loginButtonText:item.buttonText,idpUrl:item.idpUrl,redirectUrl:item.redirectUrl,loginMethod:item.service } + loginMethodStack.data[count-1] = obj; } } + onActivated: { + var item = model.get(index); + displayText = item.service + loginMethodStack.pop(StackView.Immediate) + loginMethodStack.push(loginMethodStack.data[index].qml,loginMethodStack.data[index].properties,StackView.Immediate) + } + Component.onCompleted: { + var item = model.get(0); + displayText = item.service + var obj = Object() + obj.qml = "qrc:/qml/pages/login/LoginUserPassword.qml" + obj.properties = {} + loginMethodStack.data[0] = obj + loginMethodStack.push(loginMethodStack.data[0].qml,loginMethodStack.data[0].properties,StackView.Immediate) + } } - StdButton { - id: loginButton + StackView{ + visible: ddpConnected + property var data: Object() anchors.left: parent.left anchors.right: parent.right - text: qsTr("login") - checked: false - checkable: false - visible: loginPage.showLoginForm - color: Colors.white - textColor: Colors.primary + id: loginMethodStack + height: 150 + } + BusyIndicator{ + visible: !ddpConnected + anchors.horizontalCenter: parent.horizontalCenter + } - states: [ - State { - name: "LOGGEDIN" - PropertyChanges { - target: loginButton - color: "green" - enabled: false - } - }, - State { - name: "LOGGINGIN" - PropertyChanges { - target: loginButton - text: qsTr("logging in…") - color: "orange" - enabled: false - } - }, - State { - name: "OFFLINE" - PropertyChanges { - target: loginButton - color: "yellow" - text: qsTr("connecting") - enabled: false - } - }, - State { - name: "CONNECTED" - PropertyChanges { - target: loginButton - color: Colors.white - enabled: true - } - } - ] - function setState(newState) { - if (newState === 0) { - state = "OFFLINE" - } else if (newState === 1) { - state = "CONNECTED" - } else if (newState === 2) { - state = "LOGGEDIN" - } - } - Component.onCompleted: { - var state = window.connectionState - setState(state) - } - Connections { - target: window - onConnectionStateChanged: { - loginButton.setState(window.connectionState) - } - } +// Connections { +// target: window +// onConnectionStateChanged: { +// loginButton.setState(window.connectionState) +// } +// } } Rectangle{ height: 25 @@ -268,29 +195,11 @@ Page { } } } - Connections { - target: loginPassword - onAccepted: { - loginUsername.focus = false - loginPassword.focus = false - loginPage.login() - } - } - Connections { - target: loginButton - onPressed: { - loginUsername.focus = false - loginPassword.focus = false - loginPage.login() - } - } Connections { target: rocketChatController onLoggedIn: { Print.log("logged in") - - //if (sessionCheckbox.checked) mainStack.toMainView() } onHashLoggedIn: { @@ -302,51 +211,22 @@ Page { loginStatus.text = qsTr("username or password wrong") loginButton.state = "CONNECTED" } - onServerConnected: { - connectStatus.text = "connected" - if (rocketChatController.getPassword("default") != "" - && rocketChatController.getUsername("default") != "") { - rocketChatController.login( - "default", - rocketChatController.getUsername("default"), - rocketChatController.getPassword("default")) - mainStack.toMainView() - } else { - loginPage.showLoginForm = true - } - } onStorageReady: { setUserData() } - } - function setUserData() { - var username = rocketChatController.getUsername("default") - var password = rocketChatController.getPassword("default") - if (username !== "" && password !== "") { - loginPassword.text = password - loginUsername.text = username - mainStack.toMainView() + onServerConnected:{ + ddpConnected = true } - } - Component.onCompleted: { - rocketChatController.setStatusBarColor(Colors.secondary) - if (rocketChatController.isStorageReady()) { - setUserData() + onOffline: { + ddpConnected = false + resetLoginMethods() } - /*var username = rocketChatController.getPasswordFromDb("default") - var password = rocketChatController.getUsernameFromDb("default") - if (username !== "" && password !== "") { - mainStack.toMainView() - }*/ } - Timer { - running: false - repeat: false - onTriggered: { - rocketChatController.cur - } + Component.onCompleted: { + ddpConnected = rocketChatController.getDdpConnectionEstablished() + rocketChatController.checkLoggedIn() } } -} + diff --git a/fairchat/qml/pages/OpenIDLogin.qml b/fairchat/qml/pages/OpenIDLogin.qml new file mode 100644 index 0000000..3c20113 --- /dev/null +++ b/fairchat/qml/pages/OpenIDLogin.qml @@ -0,0 +1,78 @@ +import QtQuick 2.9 +import QtQuick.Controls 2.2 +import QtWebView 1.1 + +import "qrc:/qml/navigation" +import "qrc:/qml/various" +import "qrc:/qml/popups" +import "qrc:/qml/style" + +Page { + property string redirectUrl + property string idpUrl + property string loginMethod + header: ToolBar { + id: topToolbar + property string color: Colors.primary + height: 50 + anchors.left: parent.left + anchors.right: parent.right + background: Rectangle { + color: topToolbar.color + Rectangle { + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + height: 1 + color: Colors.separatorGrey + } + } + Row { + anchors.left: parent.left + anchors.top: parent.top + anchors.bottom: parent.bottom + spacing: 9 + Backbutton { + id: backbutton + anchors.verticalCenter: parent.verticalCenter + onClicked: { + mainStack.pop() + } + } + + Text { + anchors.top: parent.top + anchors.bottom: parent.bottom + text: qsTr("Server Choice") + font.bold: false + font.family: Fonts.opensans.name + color: Colors.white + + verticalAlignment: Text.AlignVCenter + } + } + } + + WebView { + id: idpWebView + anchors.fill: parent + url: idpUrl + + onLoadingChanged: { + var state = loadRequest + var status = loadRequest.status + var url = Qt.resolvedUrl(loadRequest.url) + console.log(url) + if(url.startsWith(redirectUrl)){ + idpWebView.runJavaScript("document.getElementById(\"config\").textContent",function(result){ + console.log(result) + rocketChatController.loginWithMethod(loginMethod, result) + + }) + } + } + Component.onCompleted: { + console.log(idpUrl) + } + } +} diff --git a/fairchat/qml/pages/login/LoginMethod.qml b/fairchat/qml/pages/login/LoginMethod.qml new file mode 100644 index 0000000..afd834d --- /dev/null +++ b/fairchat/qml/pages/login/LoginMethod.qml @@ -0,0 +1,31 @@ +import QtQuick 2.0 + +import "qrc:/qml/style" + +import "qrc:/qml/various" +import "qrc:/javascript/print.js" as Print + +Item { + property string loginButtonText + property string idpUrl + property string redirectUrl + property string loginMethod + + anchors.fill: parent + StdButton { + id: loginButton + anchors.left: parent.left + anchors.right: parent.right + text: loginButtonText + checked: false + checkable: false + color: Colors.white + textColor: Colors.primary + + onClicked: { + mainStack.push("qrc:/qml/pages/OpenIDLogin.qml",{idpUrl:idpUrl,redirectUrl:redirectUrl,loginMethod:loginMethod}) + } + + } + +} diff --git a/fairchat/qml/pages/login/LoginUserPassword.qml b/fairchat/qml/pages/login/LoginUserPassword.qml new file mode 100644 index 0000000..870836c --- /dev/null +++ b/fairchat/qml/pages/login/LoginUserPassword.qml @@ -0,0 +1,195 @@ +import QtQuick 2.9 +import QtQuick.Controls 2.2 + +import "qrc:/qml/style" + +import "qrc:/qml/various" +import "qrc:/javascript/print.js" as Print + +Item { + function login() { + rocketChatController.login("default", loginUsername.text, + loginPassword.text) + loginStatus.text = "" + loginButton.state = "LOGGINGIN" + } + Column{ + anchors.fill: parent + spacing: 40 + TextField { + id: loginUsername + width: parent.width + color: Colors.white + font.pointSize: Fonts.largeFontSize + leftPadding: 5 + rightPadding: 5 + bottomPadding: 5 + horizontalAlignment: TextField.AlignLeft + verticalAlignment: TextField.AlignBottom + selectByMouse: true + text: "" + inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText + | Qt.ImhPreferLowercase + focus: true + placeholderText: qsTr("username or e-mail") + background: Rectangle { + // anchors.horizontalCenter: parent + implicitWidth: parent.width + implicitHeight: 30 + + color: "transparent" + Rectangle { + height: 1 + width: parent.width + color: Colors.white + anchors.bottom: parent.bottom + } + } + } + + TextField { + id: loginPassword + width: parent.width + text: "" + color: Colors.white + font.pointSize: Fonts.largeFontSize + leftPadding: 5 + rightPadding: 5 + bottomPadding: 5 + horizontalAlignment: TextField.AlignLeft + verticalAlignment: TextField.AlignBottom + inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText + | Qt.ImhSensitiveData | Qt.ImhPreferLowercase + echoMode: TextInput.Password + selectByMouse: true + + placeholderText: qsTr("password") + + background: Rectangle { + + implicitWidth: parent.width + implicitHeight: 30 + color: "transparent" + Rectangle { + height: 1 + width: parent.width + color: Colors.white + anchors.bottom: parent.bottom + } + } + } + + StdButton { + id: loginButton + anchors.left: parent.left + anchors.right: parent.right + text: qsTr("login") + checked: false + checkable: false + color: Colors.white + textColor: Colors.primary + + states: [ + State { + name: "LOGGEDIN" + PropertyChanges { + target: loginButton + color: "green" + enabled: false + } + }, + State { + name: "LOGGINGIN" + PropertyChanges { + target: loginButton + text: qsTr("logging in…") + color: "orange" + enabled: false + } + }, + State { + name: "OFFLINE" + PropertyChanges { + target: loginButton + color: "yellow" + text: qsTr("connecting") + enabled: false + } + }, + State { + name: "CONNECTED" + PropertyChanges { + target: loginButton + color: Colors.white + enabled: true + } + } + ] + function setState(newState) { + if (newState === 0) { + state = "OFFLINE" + } else if (newState === 1) { + state = "CONNECTED" + } else if (newState === 2) { + state = "LOGGEDIN" + } + } + + + + } + Connections { + target: loginPassword + onAccepted: { + loginUsername.focus = false + loginPassword.focus = false + login() + } + } + + Connections { + target: loginButton + onPressed: { + loginUsername.focus = false + loginPassword.focus = false + login() + } + } + function setUserData() { + // var username = rocketChatController.getUsername("default") + // var password = rocketChatController.getPassword("default") +// if (username !== "" && password !== "") { +// loginPassword.text = password +// loginUsername.text = username +// mainStack.toMainView() +// } + } + + Connections { + target: rocketChatController + + onStorageReady: { + setUserData() + } + + Component.onCompleted: { + if (rocketChatController.isStorageReady()) { + setUserData() + } + } + + onServerConnected: { + //TODO: should be checked on the c++ side, check for legacy +// if (rocketChatController.getPassword("default") != "" +// && rocketChatController.getUsername("default") != "") { +// rocketChatController.login( +// "default", +// rocketChatController.getUsername("default"), +// rocketChatController.getPassword("default")) +// mainStack.toMainView() +// } + } + } + + } +} -- GitLab From 5da152bebc46dc7abe34c770d219598a83f6b31e Mon Sep 17 00:00:00 2001 From: Armin Date: Wed, 25 Oct 2017 02:19:24 +0200 Subject: [PATCH 2/5] changed engine version --- engine | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine b/engine index 510fbd3..e302c66 160000 --- a/engine +++ b/engine @@ -1 +1 @@ -Subproject commit 510fbd364cbba82b8d3c7d9d43dcc7d8918e3774 +Subproject commit e302c66ba61271d44712af92ad900d09642ea666 -- GitLab From 97d09cdb7d90913901d891c7ce07804f8f23336f Mon Sep 17 00:00:00 2001 From: Armin Felder Date: Wed, 25 Oct 2017 18:56:19 +0200 Subject: [PATCH 3/5] added ios launch screens --- fairchat/fairchat.pro | 2 +- fairchat/ios/info.plist | 10 ++++++---- .../ios/launch/LaunchImage-iOS7-568h@2x.png | Bin 19577 -> 18920 bytes .../ios/launch/LaunchImage-iOS7-Landscape.png | Bin 18484 -> 14566 bytes .../launch/LaunchImage-iOS7-Landscape@2x.png | Bin 44218 -> 40298 bytes .../ios/launch/LaunchImage-iOS7-Portrait.png | Bin 18610 -> 21184 bytes .../launch/LaunchImage-iOS7-Portrait@2x.png | Bin 44967 -> 55707 bytes fairchat/ios/launch/LaunchImage-iOS7@2x.png | Bin 17074 -> 15110 bytes fairchat/main.cpp | 2 +- 9 files changed, 8 insertions(+), 6 deletions(-) diff --git a/fairchat/fairchat.pro b/fairchat/fairchat.pro index 7477a84..49881d9 100755 --- a/fairchat/fairchat.pro +++ b/fairchat/fairchat.pro @@ -72,7 +72,7 @@ ios{ QMAKE_BUNDLE_DATA += ios_icon QMAKE_IOS_DEPLOYMENT_TARGET = 10 - QMAKE_IOS_TARGETED_DEVICE_FAMILY = 1 + QMAKE_APPLE_TARGETED_DEVICE_FAMILY = 1 PRODUCT_NAME = fairchat PRODUCT_BUNDLE_IDENTIFIER = com.osalliance.rocketchatMobile } diff --git a/fairchat/ios/info.plist b/fairchat/ios/info.plist index 14bf61e..9b6dca2 100755 --- a/fairchat/ios/info.plist +++ b/fairchat/ios/info.plist @@ -5,7 +5,7 @@ Application requires iPhone environment CFBundleDisplayName - Ucom + fairchat CFBundleDocumentTypes @@ -70,7 +70,7 @@ CFBundleExecutable - ucom + fairchat CFBundleGetInfoString Created by Qt/QMake CFBundleIcons @@ -112,8 +112,6 @@ AppIcon76x76@2x~ipad.png AppIcon60x60@3x.png AppIcon83.5x83.5@2x~ipad.png - - @@ -151,6 +149,10 @@ This app allows the user to record audio, which could be sent as chat messages NSPhotoLibraryUsageDescription This app allows you to upload files from your photoroll as well as store downloaded photos to hte photoroll by using the UIActivityViewController + UIBackgroundModes + + remote-notification + UIFileSharingEnabled UILaunchImages diff --git a/fairchat/ios/launch/LaunchImage-iOS7-568h@2x.png b/fairchat/ios/launch/LaunchImage-iOS7-568h@2x.png index 228ba07071bf71a29f5b03436c5446accdb0b855..bf604e21e0b06cec491877cfeb6ddf4c05004e53 100755 GIT binary patch literal 18920 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

4#-zXf=cmNYJdej(_*M}wgW^O(&g)wH%&o8Ez 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 literal 18610 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 t|LX`QV^oGqJ{|&UmWv&1K diff --git a/fairchat/ios/launch/LaunchImage-iOS7-Portrait@2x.png b/fairchat/ios/launch/LaunchImage-iOS7-Portrait@2x.png index cee267dc7ae37a517f2d9a7e72fe0b7f9d8a4ac1..d742a24c2555ed92ea96092f80d4fc9ddd92a079 100755 GIT binary patch literal 55707 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

TPw@zxfq7M$*Q^PfZw3*p*~ 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 V>R7lM2cdf}E0(QXn*K2>?%%=nuPFck literal 44967 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%0DRDp?jV{evHWO_u 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 E4-;CF761SM literal 17074 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::time(0))); QCoreApplication::setAttribute( Qt::AA_EnableHighDpiScaling ); QCoreApplication::setOrganizationName( ORGANIZATION ); -- GitLab From 0ef5f1dd361b3ad9ca34bbb1b1d538f7c73ccec1 Mon Sep 17 00:00:00 2001 From: Armin Felder Date: Thu, 26 Oct 2017 22:01:24 +0200 Subject: [PATCH 4/5] moved notifications to fairchat --- engine | 2 +- fairchat/.DS_Store | Bin 0 -> 8196 bytes fairchat/android/.DS_Store | Bin 0 -> 6148 bytes fairchat/fairchat.pro | 36 +++- fairchat/ios/.DS_Store | Bin 0 -> 6148 bytes fairchat/ios/info.plist | 25 +-- fairchat/ios/src/DelegateClass.h | 21 +++ fairchat/ios/src/DelegateClass.mm | 40 ++++ fairchat/ios/src/FileHandlerActivity.h | 0 fairchat/ios/src/FileHandlerActivity.mm | 11 ++ fairchat/ios/src/IosBadges.h | 23 +++ fairchat/ios/src/IosBadges.mm | 16 ++ fairchat/ios/src/IosGalleryPicker.h | 38 ++++ fairchat/ios/src/IosGalleryPicker.mm | 76 ++++++++ .../QIOSApplicationDelegate+PushDelegate.h | 10 + .../QIOSApplicationDelegate+PushDelegate.mm | 171 ++++++++++++++++++ fairchat/ios/src/applepushnotifications.cpp | 40 ++++ fairchat/ios/src/applepushnotifications.h | 26 +++ fairchat/ios/src/fileopener.h | 16 ++ fairchat/ios/src/fileopener.mm | 37 ++++ fairchat/ios/src/iosdevicetokenstorage.cpp | 19 ++ fairchat/ios/src/iosdevicetokenstorage.h | 28 +++ fairchat/ios/src/ioshelper.cpp | 52 ++++++ fairchat/ios/src/ioshelper.h | 41 +++++ fairchat/ios/src/iosnotificationreceiver.cpp | 20 ++ fairchat/ios/src/iosnotificationreceiver.h | 27 +++ fairchat/ios/src/shareheplersingelton.h | 31 ++++ fairchat/ios/src/shareheplersingelton.mm | 22 +++ fairchat/ios/src/urlhandler.cpp | 16 ++ fairchat/ios/src/urlhandler.h | 23 +++ fairchat/main.cpp | 74 ++++---- fairchat/notifications/.DS_Store | Bin 0 -> 6148 bytes .../android/androidnotificationreceiver.cpp | 131 ++++++++++++++ .../android/androidnotificationreceiver.h | 36 ++++ .../android/googlepushnotifications.cpp | 59 ++++++ .../android/googlepushnotifications.h | 33 ++++ fairchat/notifications/ios/DelegateClass.h | 21 +++ fairchat/notifications/ios/DelegateClass.mm | 40 ++++ .../ios/applepushnotifications.cpp | 40 ++++ .../ios/applepushnotifications.h | 26 +++ .../ios/iosdevicetokenstorage.cpp | 19 ++ .../notifications/ios/iosdevicetokenstorage.h | 28 +++ .../ios/iosnotificationreceiver.cpp | 20 ++ .../ios/iosnotificationreceiver.h | 27 +++ .../notifications/notificationabstract.cpp | 16 ++ fairchat/notifications/notificationabstract.h | 31 ++++ fairchat/notifications/notifications.cpp | 39 ++++ fairchat/notifications/notifications.h | 20 ++ .../winrt/windowspushnotifications.cpp | 6 + .../winrt/windowspushnotifications.h | 11 ++ fairchat/qml/.DS_Store | Bin 0 -> 6148 bytes fairchat/res/.DS_Store | Bin 0 -> 6148 bytes fairchat/res/buttons/.DS_Store | Bin 0 -> 6148 bytes fairchat/res/icons/.DS_Store | Bin 0 -> 6148 bytes fairchat/translations/.DS_Store | Bin 0 -> 6148 bytes fairchat/winrt/.DS_Store | Bin 0 -> 6148 bytes 56 files changed, 1476 insertions(+), 68 deletions(-) create mode 100644 fairchat/.DS_Store create mode 100644 fairchat/android/.DS_Store create mode 100644 fairchat/ios/.DS_Store create mode 100755 fairchat/ios/src/DelegateClass.h create mode 100755 fairchat/ios/src/DelegateClass.mm create mode 100755 fairchat/ios/src/FileHandlerActivity.h create mode 100755 fairchat/ios/src/FileHandlerActivity.mm create mode 100644 fairchat/ios/src/IosBadges.h create mode 100644 fairchat/ios/src/IosBadges.mm create mode 100644 fairchat/ios/src/IosGalleryPicker.h create mode 100644 fairchat/ios/src/IosGalleryPicker.mm create mode 100755 fairchat/ios/src/QIOSApplicationDelegate+PushDelegate.h create mode 100755 fairchat/ios/src/QIOSApplicationDelegate+PushDelegate.mm create mode 100755 fairchat/ios/src/applepushnotifications.cpp create mode 100755 fairchat/ios/src/applepushnotifications.h create mode 100755 fairchat/ios/src/fileopener.h create mode 100755 fairchat/ios/src/fileopener.mm create mode 100755 fairchat/ios/src/iosdevicetokenstorage.cpp create mode 100755 fairchat/ios/src/iosdevicetokenstorage.h create mode 100644 fairchat/ios/src/ioshelper.cpp create mode 100644 fairchat/ios/src/ioshelper.h create mode 100644 fairchat/ios/src/iosnotificationreceiver.cpp create mode 100644 fairchat/ios/src/iosnotificationreceiver.h create mode 100644 fairchat/ios/src/shareheplersingelton.h create mode 100644 fairchat/ios/src/shareheplersingelton.mm create mode 100644 fairchat/ios/src/urlhandler.cpp create mode 100644 fairchat/ios/src/urlhandler.h create mode 100644 fairchat/notifications/.DS_Store create mode 100755 fairchat/notifications/android/androidnotificationreceiver.cpp create mode 100755 fairchat/notifications/android/androidnotificationreceiver.h create mode 100755 fairchat/notifications/android/googlepushnotifications.cpp create mode 100755 fairchat/notifications/android/googlepushnotifications.h create mode 100755 fairchat/notifications/ios/DelegateClass.h create mode 100755 fairchat/notifications/ios/DelegateClass.mm create mode 100755 fairchat/notifications/ios/applepushnotifications.cpp create mode 100755 fairchat/notifications/ios/applepushnotifications.h create mode 100755 fairchat/notifications/ios/iosdevicetokenstorage.cpp create mode 100755 fairchat/notifications/ios/iosdevicetokenstorage.h create mode 100644 fairchat/notifications/ios/iosnotificationreceiver.cpp create mode 100644 fairchat/notifications/ios/iosnotificationreceiver.h create mode 100755 fairchat/notifications/notificationabstract.cpp create mode 100755 fairchat/notifications/notificationabstract.h create mode 100755 fairchat/notifications/notifications.cpp create mode 100755 fairchat/notifications/notifications.h create mode 100755 fairchat/notifications/winrt/windowspushnotifications.cpp create mode 100755 fairchat/notifications/winrt/windowspushnotifications.h create mode 100644 fairchat/qml/.DS_Store create mode 100644 fairchat/res/.DS_Store create mode 100644 fairchat/res/buttons/.DS_Store create mode 100644 fairchat/res/icons/.DS_Store create mode 100644 fairchat/translations/.DS_Store create mode 100644 fairchat/winrt/.DS_Store diff --git a/engine b/engine index e302c66..258b9b1 160000 --- a/engine +++ b/engine @@ -1 +1 @@ -Subproject commit e302c66ba61271d44712af92ad900d09642ea666 +Subproject commit 258b9b18dd013f5bf4641b917725b1064cb950e9 diff --git a/fairchat/.DS_Store b/fairchat/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7b478f8d25d99f6d6e9f6da028f4b8392e107d26 GIT binary patch literal 8196 zcmeHMO>fgc5S^`CT7?gRgizt+J3^v2j#d?}2q`zj0Te@NNaB#BGjB_0 zT{syRPR3U@zC$s#I^t3bCzCm=M^!)-s4Kv|`#L?QG37K3`}fhrf>)m3t|LZ8x0~)I&xR9CGs|8n6tq~_!(+RU~ z#6^2JM>r>1=bmsE{tMZD| zgDc3i03Gta`GLzWMpwI7juv||_m||3c9_r$=sy(qO!E2%l6X(Z{L(QeuRIk?=@E?9 z4uhCl^(n5q)bifjZ?=Z@gw;D=I1#FQPgPxdMD-*4!0<6q^$WO~Q~Q*e;ofVzw%6Z% zMAcSo1H%Q_8s}E5*u{+#-gzrF+SeMr#9cbZ-lAv0!2nqTZv%JXt+5Tff**Zlet|b) z#9ke$z*!VX9B7mK|GVwq|Id<2F{*$n@RurJR=d6KHpu(ly0#7OwNuPTm^>I)I%`94 vuk9k?4jq6X literal 0 HcmV?d00001 diff --git a/fairchat/android/.DS_Store b/fairchat/android/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..87a78eee5da5dcac45e2dc8f3cb77b494112f1b4 GIT binary patch literal 6148 zcmeHKyG{c^3>=dPMWRVbxxc_4tfKG*`2i4#(nLW@1od_NHsc5A!iAOsjU{{bX6;?w z6z4MlTfJ=`fF*zh-4P!irsn(Z6T2y9MzlENfZhA%bUeHs_mk}FgxB6;j}xA;#brIu z#Ed&ToJXf7dnW(#gS~!(SScU{q<|EV0#abCfOk^b;x1893P=Gd@U4J<9~#}U7Y>Q> z>0pQvfH)@|#&ygR#O4IC7Y>PJXqKhKEVUXjEX&Ea%Ik$gVwS^d_^`U!YC^HNo#(em zhxJ57DIf(d74X@cw)Fo0NdIO2_Z*oNkOKcy0h_Nk>lI(Fdh6shz1KGS6aCAW8|e(u kiiy#R`QWYiew5dI&HY|DBt|*;C@1Piz;%&Hfxl4T6M>u_7ytkO literal 0 HcmV?d00001 diff --git a/fairchat/fairchat.pro b/fairchat/fairchat.pro index 49881d9..0d0780a 100755 --- a/fairchat/fairchat.pro +++ b/fairchat/fairchat.pro @@ -60,7 +60,41 @@ contains(ANDROID_TARGET_ARCH,armeabi-v7a) { $$PWD/../openssl/android-arm/libssl.so \ $$PWD/../openssl/android-arm/libcrypto.so } + ios{ + QT += gui-private + + SOURCES += notifications/ios/applepushnotifications.cpp \ + notifications/ios/iosdevicetokenstorage.cpp \ + notifications/ios/iosnotificationreceiver.cpp \ + ios/src/ioshelper.cpp + + + HEADERS += notifications/ios/applepushnotifications.h \ + notifications/ios/iosdevicetokenstorage.h \ + ios/src/FileHandlerActivity.h \ + ios/src/fileopener.h \ + ios/src/IosGalleryPicker.h \ + ios/src/shareheplersingelton.h \ + notifications/ios/iosnotificationreceiver.h \ + notifications/ios/DelegateClass.h \ + ios/src/IosBadges.h \ + ios/src/ioshelper.h + + + + OBJECTIVE_SOURCES += ios/src/QIOSApplicationDelegate+PushDelegate.mm \ + notifications/ios/DelegateClass.mm \ + ios/src/FileHandlerActivity.mm \ + ios/src/IosGalleryPicker.mm \ + ios/src/fileopener.mm \ + ios/src/shareheplersingelton.mm \ + ios/src/IosBadges.mm \ + ios/src/shareheplersingelton.mm + + + LIBS += -framework UserNotifications + RESOURCES += ios.qrc QMAKE_INFO_PLIST = ios/Info.plist @@ -74,7 +108,7 @@ ios{ QMAKE_IOS_DEPLOYMENT_TARGET = 10 QMAKE_APPLE_TARGETED_DEVICE_FAMILY = 1 PRODUCT_NAME = fairchat - PRODUCT_BUNDLE_IDENTIFIER = com.osalliance.rocketchatMobile + PRODUCT_BUNDLE_IDENTIFIER = com.osalliance.RocketChatMobile } winrt{ RESOURCES += winrt.qrc diff --git a/fairchat/ios/.DS_Store b/fairchat/ios/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d698330d37fc50107fe56cfa1f56b7b711baae67 GIT binary patch literal 6148 zcmeHKK~BRk5FDok6*$lnaP$}YgQyB0pdSFGQj63yRZBT>$TK+dD#UY`^;%J!7A{B# zp!ZjO4L}R_x)b)Qg2lk#eDx%0`FJnAK`^Mu~j|)#=BW|c82p3+=+djZP%-My`Ysl z38z@$0efatVwvoz>}A{cAIU0-KayACPcqBiIDNW)FSh}9*rH6bk{BR*I{94J`kQJ! zEkiv|l0!0EZ*}#VHU^9VW8h~D$Vp2XT_~D128;n?pk+YL2hS#$M{E?s(LohT0OFA5 zAnZ#mAu&E;9%q&(UF+HI*+gVqqu7S96Ru*8 em8bC;qeu(I{s;sbOc?{e%D^YP&u2pb literal 0 HcmV?d00001 diff --git a/fairchat/ios/info.plist b/fairchat/ios/info.plist index 9b6dca2..922f185 100755 --- a/fairchat/ios/info.plist +++ b/fairchat/ios/info.plist @@ -118,7 +118,7 @@ CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleName - ucom + fairchat CFBundlePackageType APPL CFBundleShortVersionString @@ -156,28 +156,7 @@ UIFileSharingEnabled UILaunchImages - - - UILaunchImageMinimumOSVersion - 7.0 - UILaunchImageName - LaunchImage-iOS7 - UILaunchImageOrientation - Portrait - UILaunchImageSize - {320, 568} - - - UILaunchImageMinimumOSVersion - 7.0 - UILaunchImageName - LaunchImage-iOS7 - UILaunchImageOrientation - Portrait - UILaunchImageSize - {320, 480} - - + UILaunchImages~ipad diff --git a/fairchat/ios/src/DelegateClass.h b/fairchat/ios/src/DelegateClass.h new file mode 100755 index 0000000..623e491 --- /dev/null +++ b/fairchat/ios/src/DelegateClass.h @@ -0,0 +1,21 @@ +#include "iosdevicetokenstorage.h" +#include "iosnotificationreceiver.h" + +class IosDeviceTokenStorage; + +@interface DelegateObject:NSObject +{ + IosDeviceTokenStorage *m_instance; + IosNotificationReceiver *mNotificationsInstance; +} + +- (id) initWithCPPInstance; + +- (void) setToken:(NSString *)token; + +- (void) sendMessage:(NSString *)pServer : (NSString *)pRid : (NSString *)pName : (NSString *)pType; + +- (void) openChannelByName:(NSString *)channelName; + +@end + diff --git a/fairchat/ios/src/DelegateClass.mm b/fairchat/ios/src/DelegateClass.mm new file mode 100755 index 0000000..9e04a12 --- /dev/null +++ b/fairchat/ios/src/DelegateClass.mm @@ -0,0 +1,40 @@ +#include "iosdevicetokenstorage.h" +#include "iosnotificationreceiver.h" +#import +#import "DelegateClass.h" + + +@implementation DelegateObject + +-(id) initWithCPPInstance{ + if(self){ + m_instance = IosDeviceTokenStorage::getInstance(); + mNotificationsInstance = IosNotificationReceiver::getInstance(); + } + return self; +} + +-(void) setToken:(NSString*) token{ + m_instance->setToken([token UTF8String]); +} + +- (void) sendMessage:(NSString *)pServer : (NSString *)pRid : (NSString *)pName : (NSString *)pType{ + if(pServer!=NULL && pRid != NULL && pName !=NULL && pType!=NULL){ + QString server([pServer UTF8String]); + QString rid([pRid UTF8String]); + QString name([pName UTF8String]); + QString type([pType UTF8String]); + mNotificationsInstance->sendMessageReceived(server,rid,name,type); + } +} + +- (void) openChannelByName:(NSString *)channelName{ + if(channelName != NULL){ + QString channelNameString([channelName UTF8String]); + mNotificationsInstance->sendSwitchChannelByName(channelNameString); + + } +} + + +@end diff --git a/fairchat/ios/src/FileHandlerActivity.h b/fairchat/ios/src/FileHandlerActivity.h new file mode 100755 index 0000000..e69de29 diff --git a/fairchat/ios/src/FileHandlerActivity.mm b/fairchat/ios/src/FileHandlerActivity.mm new file mode 100755 index 0000000..4fb420d --- /dev/null +++ b/fairchat/ios/src/FileHandlerActivity.mm @@ -0,0 +1,11 @@ +#import "FileHandlerActivity.h" +#include + +@implementation FileHandlerActivity + +-(void) callFileActiviy:(std::string)path{ + + +} + +@end \ No newline at end of file diff --git a/fairchat/ios/src/IosBadges.h b/fairchat/ios/src/IosBadges.h new file mode 100644 index 0000000..d9286f3 --- /dev/null +++ b/fairchat/ios/src/IosBadges.h @@ -0,0 +1,23 @@ +// +// IosBadges.h +// ucom +// +// Created by armin on 26/06/2017. +// +// + +#ifndef IosBadges_h +#define IosBadges_h + +class IosBadges{ +public: + IosBadges()= delete; + ~IosBadges() = delete; + + static void setBadges(int number); + + +}; + + +#endif /* IosBadges_h */ diff --git a/fairchat/ios/src/IosBadges.mm b/fairchat/ios/src/IosBadges.mm new file mode 100644 index 0000000..a0efa40 --- /dev/null +++ b/fairchat/ios/src/IosBadges.mm @@ -0,0 +1,16 @@ +// +// IosBadges.cpp +// ucom +// +// Created by armin on 26/06/2017. +// +// + +#include "IosBadges.h" +#import +#import + +void IosBadges::setBadges(int number){ + [UIApplication sharedApplication].applicationIconBadgeNumber = number; + [[UIApplication sharedApplication] cancelAllLocalNotifications]; +} diff --git a/fairchat/ios/src/IosGalleryPicker.h b/fairchat/ios/src/IosGalleryPicker.h new file mode 100644 index 0000000..618a4b0 --- /dev/null +++ b/fairchat/ios/src/IosGalleryPicker.h @@ -0,0 +1,38 @@ +// +// IosGalleryPicker.h +// ucom +// +// Created by armin on 08/03/17. +// +// + +#ifndef IosGalleryPicker_h +#define IosGalleryPicker_h + +#include +#include + +class IosGalleryPicker:public QObject +{ +Q_OBJECT + +public: + explicit IosGalleryPicker(); + + QString imagePath(){ + return mImagePath; + } + + void open(); + + void receiveFile(QString pFileUrl); + +private: + QString mImagePath; + void *mDelegate; + +signals: + void filePicked(QString fileUrl); +}; + +#endif /* IosGalleryPicker_h */ diff --git a/fairchat/ios/src/IosGalleryPicker.mm b/fairchat/ios/src/IosGalleryPicker.mm new file mode 100644 index 0000000..fa80a5c --- /dev/null +++ b/fairchat/ios/src/IosGalleryPicker.mm @@ -0,0 +1,76 @@ +// +// IosGalleryPicker.m +// ucom +// +// Created by armin on 08/03/17. +// +// + +#import +#import +#include +#include +#include +#include +#include "ios/IosGalleryPicker.h" + + +@interface IosGalleryPickerDelegate : NSObject{ + IosGalleryPicker *mIosPicker; +} + +@end + +@implementation IosGalleryPickerDelegate + +-(id) initWithIosGallery:(IosGalleryPicker *)iosPicker{ + self = [super init]; + if (self){ + mIosPicker = iosPicker; + } + return self; +} + +- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info +{ + + UIImage *orig = [info valueForKey:UIImagePickerControllerOriginalImage]; + NSData *imgData = UIImagePNGRepresentation(orig); + QByteArray qImgData = QByteArray::fromNSData(imgData); + QMimeDatabase mimeDb; + QMimeType mimeType = mimeDb.mimeTypeForData(qImgData); + QString path = QStandardPaths::writableLocation( QStandardPaths::DocumentsLocation ); + path += "/picker."+mimeType.preferredSuffix(); + QFile destFile(path); + destFile.open(QFile::WriteOnly); + destFile.write(qImgData); + + mIosPicker->receiveFile(path); + [picker dismissViewControllerAnimated:YES completion:NULL]; + [picker release]; + +} +@end + +IosGalleryPicker::IosGalleryPicker(): +mDelegate([[IosGalleryPickerDelegate alloc] initWithIosGallery:this]) +{ +} + +void IosGalleryPicker::receiveFile(QString pFileUrl){ + emit filePicked(pFileUrl); +} + + +void IosGalleryPicker::open() +{ + UIViewController *qtController = [[UIApplication sharedApplication].keyWindow rootViewController]; + + UIImagePickerController *imageController = [[UIImagePickerController alloc] init]; + [imageController setSourceType:UIImagePickerControllerSourceTypeSavedPhotosAlbum]; + [imageController setDelegate:id(mDelegate)]; + [imageController setAllowsEditing:YES]; + + + [qtController presentViewController:imageController animated:YES completion:NULL]; +} diff --git a/fairchat/ios/src/QIOSApplicationDelegate+PushDelegate.h b/fairchat/ios/src/QIOSApplicationDelegate+PushDelegate.h new file mode 100755 index 0000000..832e1e5 --- /dev/null +++ b/fairchat/ios/src/QIOSApplicationDelegate+PushDelegate.h @@ -0,0 +1,10 @@ +#import +#import + + +@interface QIOSApplicationDelegate : UIResponder +@end + +@interface QIOSApplicationDelegate (PushDelegate) +@end + diff --git a/fairchat/ios/src/QIOSApplicationDelegate+PushDelegate.mm b/fairchat/ios/src/QIOSApplicationDelegate+PushDelegate.mm new file mode 100755 index 0000000..8c3da35 --- /dev/null +++ b/fairchat/ios/src/QIOSApplicationDelegate+PushDelegate.mm @@ -0,0 +1,171 @@ +#import "QIOSApplicationDelegate+PushDelegate.h" +#import + +#import "notifications/ios/DelegateClass.h" +#include "shareheplersingelton.h" +#include "notifications/ios/applepushnotifications.h" + + +#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) +#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) + +@implementation QIOSApplicationDelegate (PushDelegate) + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + + + UIColor *color = [UIColor colorWithRed:0.486 green:0.717 blue:0.454 alpha:1 ]; + UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"]; + + if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) { + statusBar.backgroundColor = color; + } + + if( SYSTEM_VERSION_LESS_THAN( @"9.0" ) ){ + if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) + { + // for iOS 8 + [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; + [application registerForRemoteNotifications]; + }else{ + UIUserNotificationType myTypes = UIUserNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound; + [application registerForRemoteNotificationTypes:myTypes]; + } + + }else if( SYSTEM_VERSION_LESS_THAN( @"10.0" ) ) + { + [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; + [[UIApplication sharedApplication] registerForRemoteNotifications]; + + if( launchOptions != nil ) + { + NSLog( @"registerForPushWithOptions:" ); + } + } + else + { + UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; + center.delegate = self; + [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error) + { + if( !error ) + { + [[UIApplication sharedApplication] registerForRemoteNotifications]; // required to get the app to do anything at all about push notifications + NSLog( @"Push registration success." ); + } + else + { + NSLog( @"Push registration FAILED" ); + NSLog( @"ERROR: %@ - %@", error.localizedFailureReason, error.localizedDescription ); + NSLog( @"SUGGESTIONS: %@ - %@", error.localizedRecoveryOptions, error.localizedRecoverySuggestion ); + } + }]; + } + + + volatile NSDictionary *remoteNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; + if(remoteNotif){ + NSLog(@"%@",remoteNotif); + } + + if([launchOptions objectForKey:UIApplicationLaunchOptionsURLKey]){ + NSURL *fileUrl = [launchOptions valueForKey:UIApplicationLaunchOptionsURLKey]; + NSString *fileStr = [fileUrl absoluteString]; + //QString qFileStr = QString::fromStdString([fileStr UTF8String]); + ShareHelperSingelton *instance = ShareHelperSingelton::getInstance(); + + instance->setPath([fileStr UTF8String]); + } + if([launchOptions objectForKey:UIApplicationLaunchOptionsUserActivityDictionaryKey]){ + NSDictionary *optionsDict = [launchOptions valueForKey:UIApplicationLaunchOptionsUserActivityDictionaryKey]; + [optionsDict enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[NSUserActivity class]]) { + NSUserActivity *userActivity = obj; + NSURL *url = userActivity.webpageURL; + if([url.pathComponents containsObject:@"direct"]||[url.pathComponents containsObject:@"channel"]||[url.pathComponents containsObject:@"group"]){ + NSArray *pathComponents = [url pathComponents]; + NSString *channel = pathComponents[pathComponents.count-1]; + NSLog(@"%@",channel); + DelegateObject *delegateObject = [[DelegateObject alloc] init]; + [delegateObject initWithCPPInstance]; + + [delegateObject openChannelByName:channel ]; + + + } + + } + }]; } + + + return YES; +} + +-(void)application:(UIApplication*)application didRegisterUserNotificationSettings:( UIUserNotificationSettings *)notificationSettings{ + [application registerForRemoteNotifications]; +} + + +- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken +{ + NSLog(@"My token is: %@", deviceToken); + NSString * deviceTokenString = [[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""] stringByReplacingOccurrencesOfString: @">" withString: @""] stringByReplacingOccurrencesOfString: @" " withString: @""]; + NSLog(@"the generated device token string is : %@",deviceTokenString); + DelegateObject *delegateObject = [[DelegateObject alloc] init]; + [delegateObject initWithCPPInstance]; + [delegateObject setToken:deviceTokenString]; + +} +- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error +{ + NSLog(@"Failed to get token, error: %@", error); +} + +- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ + +} + +- (void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler{ + + + DelegateObject *delegateObject = [[DelegateObject alloc] init]; + [delegateObject initWithCPPInstance]; + + NSString *ejson = [userInfo valueForKey:@"ejson"]; + NSData *jsonData = [ejson dataUsingEncoding:NSUTF8StringEncoding]; + NSMutableDictionary *apns = [userInfo valueForKey:@"apns"]; + NSMutableDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:nil]; + NSMutableDictionary *sender = [dict valueForKey:@"sender"]; + NSLog(@"%@",sender); + NSString *username = [sender valueForKey:@"username"]; + NSString *name = [dict valueForKey:@"name"]; + if([[dict valueForKey:@"name"] isEqual:[NSNull null]]){ + name = username; + } + NSLog(@"%@",name); + NSString *server = [dict valueForKey:@"rid"]; + NSString *type = [dict objectForKey:@"type"]; + NSString *rid = [dict valueForKey:@"rid"]; + application.applicationIconBadgeNumber = 0; + if(server!=nil&&rid!=nil&&name!=nil&&type!=nil){ + [delegateObject sendMessage:server :rid :name :type ]; + } +} + +- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * _Nullable))restorationHandler{ + NSURL *url = userActivity.webpageURL; + if([url.pathComponents containsObject:@"direct"]||[url.pathComponents containsObject:@"channel"]||[url.pathComponents containsObject:@"group"]){ + NSArray *pathComponents = [url pathComponents]; + NSString *channel = pathComponents[pathComponents.count-1]; + NSLog(@"%@",channel); + DelegateObject *delegateObject = [[DelegateObject alloc] init]; + [delegateObject initWithCPPInstance]; + + [delegateObject openChannelByName:channel ]; + + + } + return true; +} + +@end diff --git a/fairchat/ios/src/applepushnotifications.cpp b/fairchat/ios/src/applepushnotifications.cpp new file mode 100755 index 0000000..28ff1d3 --- /dev/null +++ b/fairchat/ios/src/applepushnotifications.cpp @@ -0,0 +1,40 @@ +#include "applepushnotifications.h" +#include + +ApplePushNotifications::ApplePushNotifications() +{ + mInstance = IosDeviceTokenStorage::getInstance(); + mNotificationInstance = IosNotificationReceiver::getInstance(); + connect(mInstance, &IosDeviceTokenStorage::tokenReceived, this, &ApplePushNotifications::receiveToken); + connect(mNotificationInstance, &IosNotificationReceiver::messageReceived, this, &ApplePushNotifications::receiveMessage); + connect(mNotificationInstance, &IosNotificationReceiver::switchChannelByName, this, &ApplePushNotifications::onSwitchRequest); +} + +void ApplePushNotifications::receiveMessage(QString pServer, QString pRid, QString pName, QString pType) +{ + emit messageReceived(pServer,pRid,pName,pType); +} + +void ApplePushNotifications::receiveToken(){ + qDebug()<<"token received"; + QString newToken = mInstance->getToken(); + if (newToken != ""){ + mToken = newToken; + emit tokenReceived(newToken); + } +} + +void ApplePushNotifications::registerWithService(){ + if(mInstance->getToken() != ""){ + receiveToken(); + } +} + +void ApplePushNotifications::checkForPendingMessages(){ + emit switchChannelByName(mRoomName); +} + +void ApplePushNotifications::onSwitchRequest(QString pName){ + mRoomName = pName; + emit switchChannelByName(pName); +} diff --git a/fairchat/ios/src/applepushnotifications.h b/fairchat/ios/src/applepushnotifications.h new file mode 100755 index 0000000..46c161d --- /dev/null +++ b/fairchat/ios/src/applepushnotifications.h @@ -0,0 +1,26 @@ +#ifndef APPLEPUSHNOTIFICATIONS_H +#define APPLEPUSHNOTIFICATIONS_H +#include "notifications/notificationabstract.h" +#include "iosdevicetokenstorage.h" +#include "iosnotificationreceiver.h" + +class ApplePushNotifications:public NotificationAbstract +{ +public: + virtual void registerWithService(); + ApplePushNotifications(); + void receiveMessage(QString server, QString rid, QString name, QString type); + + void checkForPendingMessages(); + + void onSwitchRequest(QString pName); +protected: + void receiveToken(); + + IosDeviceTokenStorage* mInstance = nullptr; + IosNotificationReceiver* mNotificationInstance = nullptr; + + QString mRoomName; +}; + +#endif // APPLEPUSHNOTIFICATIONS_H diff --git a/fairchat/ios/src/fileopener.h b/fairchat/ios/src/fileopener.h new file mode 100755 index 0000000..9f6195d --- /dev/null +++ b/fairchat/ios/src/fileopener.h @@ -0,0 +1,16 @@ +#ifndef FILEOPENER_H +#define FILEOPENER_H + +#include + +class FileOpener : public QObject +{ + Q_OBJECT +public: + static void callFileOpenDialog(QString path); +private: + explicit FileOpener(QObject *parent = 0); + +}; + +#endif // FILEOPENER_H diff --git a/fairchat/ios/src/fileopener.mm b/fairchat/ios/src/fileopener.mm new file mode 100755 index 0000000..e55b8f0 --- /dev/null +++ b/fairchat/ios/src/fileopener.mm @@ -0,0 +1,37 @@ +#include "fileopener.h" +#import +#import +#include + +void FileOpener::callFileOpenDialog(QString path) +{ + path = path.right(path.length()-7); + QStringList pathParts = path.split("/"); + std::string fileName = pathParts.last().toStdString(); + std::string fullPath = path.toStdString(); + + NSString *completePath = [NSString stringWithUTF8String:fullPath.c_str()]; + NSString *activityItemName = [NSString stringWithUTF8String:fileName.c_str()]; + + NSData* data = [NSData dataWithContentsOfFile:completePath]; + if (data != nil){ + UIActivityViewController* activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[activityItemName, data] applicationActivities:nil]; + + activityViewController.excludedActivityTypes = nil; + + UIApplication * application = [UIApplication sharedApplication]; + + UIWindow *window = [application keyWindow]; + + UIViewController *viewController = [window rootViewController]; + + [viewController presentViewController:activityViewController animated:false completion:nil]; + + [activityViewController release]; + } +} + +FileOpener::FileOpener(QObject *parent) : QObject(parent) +{ + +} diff --git a/fairchat/ios/src/iosdevicetokenstorage.cpp b/fairchat/ios/src/iosdevicetokenstorage.cpp new file mode 100755 index 0000000..6939f36 --- /dev/null +++ b/fairchat/ios/src/iosdevicetokenstorage.cpp @@ -0,0 +1,19 @@ +#include "iosdevicetokenstorage.h" + +IosDeviceTokenStorage* IosDeviceTokenStorage::mInstance = nullptr; + +IosDeviceTokenStorage* IosDeviceTokenStorage::getInstance(){ + if(mInstance == nullptr){ + mInstance = new IosDeviceTokenStorage; + } + return mInstance; +} + +void IosDeviceTokenStorage::setToken(QString stdToken){ + mToken = stdToken; + emit tokenReceived(); +} + +QString IosDeviceTokenStorage::getToken(){ + return mToken; +} diff --git a/fairchat/ios/src/iosdevicetokenstorage.h b/fairchat/ios/src/iosdevicetokenstorage.h new file mode 100755 index 0000000..fa88f40 --- /dev/null +++ b/fairchat/ios/src/iosdevicetokenstorage.h @@ -0,0 +1,28 @@ +#ifndef IOSDEVICETOKENSTORAGE_H +#define IOSDEVICETOKENSTORAGE_H + +#include +#include + +class IosDeviceTokenStorage: public QObject +{ + Q_OBJECT +public: + static IosDeviceTokenStorage* getInstance(); + + QString getToken(); + void setToken(QString mToken); + +private: + IosDeviceTokenStorage(){} + IosDeviceTokenStorage(const IosDeviceTokenStorage&) = delete; + + static IosDeviceTokenStorage* mInstance; + + QString mToken = ""; + +signals: + void tokenReceived(); +}; + +#endif // IOSDEVICETOKENSTORAGE_H diff --git a/fairchat/ios/src/ioshelper.cpp b/fairchat/ios/src/ioshelper.cpp new file mode 100644 index 0000000..890a224 --- /dev/null +++ b/fairchat/ios/src/ioshelper.cpp @@ -0,0 +1,52 @@ +#include "ioshelper.h" + +IosHelper::IosHelper(QObject *parent) : QObject(parent) +{ + mShareHelper = ShareHelperSingelton::getInstance(); + mGalleryPicker = new IosGalleryPicker(); + + connect( mShareHelper, &ShareHelperSingelton::shareLinkReceived, this, &IosHelper::shareLinkReceived, Qt::UniqueConnection ); + connect( mGalleryPicker, &IosGalleryPicker::filePicked, this, &IosHelper::filePicked, Qt::UniqueConnection ); + connect( &mNotificationsObject, &Notifications::tokenReceived, this, &IosHelper::pushTokenReceived, Qt::UniqueConnection ); + connect( &mNotificationsObject, &Notifications::messageReceived, this, &IosHelper::pushMessageReceived, Qt::UniqueConnection ); + +} + +IosHelper::~IosHelper() +{ + mShareHelper->deleteLater(); + mGalleryPicker->deleteLater(); +} + +void IosHelper::checkForpendingNotification() +{ + mNotificationsObject.checkForPendingMessages(); +} + +void IosHelper::checkForFileLink() +{ + QString path = mShareHelper->getPath(); + if(!path.isEmpty()){ + emit shareLinkReceived(path); + } +} + +void IosHelper::openFileDialog(QString pPath) +{ + FileOpener::callFileOpenDialog( pPath ); +} + +void IosHelper::openGalleryPicker() +{ + mGalleryPicker->open(); +} + +void IosHelper::registerForPush() +{ + mNotificationsObject.registerWithService(); +} + +void IosHelper::setBadgeNumber(int pNumber) +{ + IosBadges::setBadges( pNumber ); +} diff --git a/fairchat/ios/src/ioshelper.h b/fairchat/ios/src/ioshelper.h new file mode 100644 index 0000000..e9e78dd --- /dev/null +++ b/fairchat/ios/src/ioshelper.h @@ -0,0 +1,41 @@ +#ifndef IOSHELPER_H +#define IOSHELPER_H + +#include + +#include "ios/fileopener.h" +#include "ios/urlhandler.h" +#include "ios/IosGalleryPicker.h" +#include "ios/shareheplersingelton.h" +#include "ios/IosBadges.h" + +#include "notifications/notifications.h" + + +class IosHelper : public QObject +{ + Q_OBJECT +public: + explicit IosHelper(QObject *parent = nullptr); + + ~IosHelper(); +protected: + IosGalleryPicker *mGalleryPicker = nullptr; + ShareHelperSingelton *mShareHelper = nullptr; + Notifications mNotificationsObject; + +signals: + void filePicked(QString pFile); + void shareLinkReceived(QString pLink); + void pushTokenReceived(QString pToken); + void pushMessageReceived(QString pServer, QString pRid, QString pName, QString pType); +public slots: + void checkForpendingNotification(); + void checkForFileLink(); + void openFileDialog(QString pPath); + void openGalleryPicker(); + void registerForPush(); + void setBadgeNumber(int pNumber); +}; + +#endif // IOSHELPER_H diff --git a/fairchat/ios/src/iosnotificationreceiver.cpp b/fairchat/ios/src/iosnotificationreceiver.cpp new file mode 100644 index 0000000..be90800 --- /dev/null +++ b/fairchat/ios/src/iosnotificationreceiver.cpp @@ -0,0 +1,20 @@ +#include "iosnotificationreceiver.h" + +IosNotificationReceiver* IosNotificationReceiver::mInstance = nullptr; + +IosNotificationReceiver *IosNotificationReceiver::getInstance() +{ + if(mInstance == nullptr){ + mInstance = new IosNotificationReceiver; + } + return mInstance; +} + +void IosNotificationReceiver::sendMessageReceived(QString pServer, QString pRid, QString pName, QString pType) +{ + emit messageReceived(pServer,pRid,pName,pType); +} + +void IosNotificationReceiver::sendSwitchChannelByName(QString pName){ + emit switchChannelByName(pName); +} diff --git a/fairchat/ios/src/iosnotificationreceiver.h b/fairchat/ios/src/iosnotificationreceiver.h new file mode 100644 index 0000000..e0e65f9 --- /dev/null +++ b/fairchat/ios/src/iosnotificationreceiver.h @@ -0,0 +1,27 @@ +#ifndef IOSNOTIFICATIONRECEIVER_H +#define IOSNOTIFICATIONRECEIVER_H + +#include + +class IosNotificationReceiver : public QObject +{ + Q_OBJECT +public: + static IosNotificationReceiver* getInstance(); + + void sendMessageReceived(QString pServer, QString pRid, QString pName, QString pType); + void sendSwitchChannelByName(QString pName); + +private: + IosNotificationReceiver(){} + IosNotificationReceiver(const IosNotificationReceiver&) = delete; + + static IosNotificationReceiver* mInstance; + + +signals: + void messageReceived(QString pServer, QString pRid, QString pName, QString pType); + void switchChannelByName(QString channelName); +}; + +#endif // IOSNOTIFICATIONRECEIVER_H diff --git a/fairchat/ios/src/shareheplersingelton.h b/fairchat/ios/src/shareheplersingelton.h new file mode 100644 index 0000000..0c7b84b --- /dev/null +++ b/fairchat/ios/src/shareheplersingelton.h @@ -0,0 +1,31 @@ +#ifndef SHAREHEPLERSINGELTON_H +#define SHAREHEPLERSINGELTON_H + +#include +#include + +class ShareHelperSingelton:public QObject{ + Q_OBJECT + +public: + static ShareHelperSingelton* getInstance(); + + ShareHelperSingelton& operator=(ShareHelperSingelton const &) = delete; + ShareHelperSingelton (ShareHelperSingelton const &) = delete; + + QString getPath(); + void setPath(QString pPath); + +private: + ShareHelperSingelton(){} + static ShareHelperSingelton* mInstance; + QString mCurPath; + +signals: + void shareLinkReceived(QString link); + +}; + + + +#endif // SHAREHEPLERSINGELTON_H diff --git a/fairchat/ios/src/shareheplersingelton.mm b/fairchat/ios/src/shareheplersingelton.mm new file mode 100644 index 0000000..6c5d9d9 --- /dev/null +++ b/fairchat/ios/src/shareheplersingelton.mm @@ -0,0 +1,22 @@ +#include "shareheplersingelton.h" + +ShareHelperSingelton *ShareHelperSingelton::mInstance = nullptr; + +ShareHelperSingelton *ShareHelperSingelton::getInstance() +{ + if(mInstance == nullptr){ + mInstance = new ShareHelperSingelton; + } + return mInstance; +} + +QString ShareHelperSingelton::getPath() +{ + return mCurPath; +} + +void ShareHelperSingelton::setPath(QString pPath) +{ + mCurPath = pPath; + emit shareLinkReceived(pPath); +} diff --git a/fairchat/ios/src/urlhandler.cpp b/fairchat/ios/src/urlhandler.cpp new file mode 100644 index 0000000..91eb35b --- /dev/null +++ b/fairchat/ios/src/urlhandler.cpp @@ -0,0 +1,16 @@ +#include "urlhandler.h" +#include + +UrlHandler::UrlHandler(QObject *parent) : QObject(parent) +{ + +} + +void UrlHandler::files(const QUrl &url) +{ + emit openFile(url.toLocalFile()); +} + +UrlHandler::~UrlHandler(){ + +} \ No newline at end of file diff --git a/fairchat/ios/src/urlhandler.h b/fairchat/ios/src/urlhandler.h new file mode 100644 index 0000000..71a7c4b --- /dev/null +++ b/fairchat/ios/src/urlhandler.h @@ -0,0 +1,23 @@ +#ifndef URLHANDLER_H +#define URLHANDLER_H + +#include + +class UrlHandler : public QObject +{ + Q_OBJECT +public: + explicit UrlHandler(QObject *parent = 0); + + + ~UrlHandler(); + +public slots: + void files(const QUrl &url); + + +signals: + void openFile(const QString&); +}; + +#endif // URLHANDLER_H diff --git a/fairchat/main.cpp b/fairchat/main.cpp index 68e89d8..9a9e9e7 100755 --- a/fairchat/main.cpp +++ b/fairchat/main.cpp @@ -31,11 +31,8 @@ #include "CustomModels/loginmethodsmodel.h" #include "utils.h" -#ifdef Q_OS_ANDROID - #include - #include - #include - +#ifdef Q_OS_IOS + #include "ios/src/ioshelper.h" #endif #ifdef Q_OS_WINRT @@ -45,7 +42,6 @@ int main( int argc, char *argv[] ) { - Q_INIT_RESOURCE(sql); std::srand(static_cast(std::time(0))); @@ -54,6 +50,13 @@ int main( int argc, char *argv[] ) QCoreApplication::setOrganizationDomain( ORGANIZATIONDOMAIN ); QCoreApplication::setApplicationName( APPLICATIONNAME ); + int result = EXIT_FAILURE; + + QGuiApplication app( argc, argv ); + + QtWebView::initialize(); + + ServerChoiceModel serverChoices; UserModel userModel; ChannelModel channelModel; ChannelModel groupsModel; @@ -65,40 +68,13 @@ int main( int argc, char *argv[] ) userModel.moveToThread(QThread::currentThread()); messageModel.moveToThread(QThread::currentThread()); loginMethodsModel.moveToThread(QThread::currentThread()); - qDebug()<<"main thread: "<getSetting("cleanExit"); - if(cleanExit == "false"){ - qCritical()<<"app unclean exit last time"; - - if(storage->getSetting("Error").length()){ - #ifdef Q_OS_ANDROID - QAndroidJniObject errorStringJni = QAndroidJniObject::fromString(storage->getSetting("ERROR")); - - QAndroidJniObject::callStaticMethod("com/osalliance/rocketchatMobile/MainActivity", "catchError","(Ljava/lang/String;)V",errorStringJni.object()); - #endif - } - } - storage->setSetting("cleanExit","false"); - storage->setSetting("ERROR",""); - QString language = QLocale::system().bcp47Name().split("-")[0].toLower(); - qDebug()<<"locale : "<setContextProperty( "rocketChatController", &rocketChat ); -#ifdef QT_DEBUG - context->setContextProperty( "debug", QVariant(true) ); -#else - context->setContextProperty( "debug", QVariant(false) ); -#endif context->setContextProperty("buildTime",QVariant(buildTime)); context->setContextProperty("userModel",&userModel); context->setContextProperty("channelModel",&channelModel); @@ -141,14 +125,18 @@ int main( int argc, char *argv[] ) context->setContextProperty("cmessagesModel", &messageModel); context->setContextProperty("serverChoices", &serverChoices); context->setContextProperty("loginMethodsModel", &loginMethodsModel); - +#ifdef QT_DEBUG + context->setContextProperty( "debug", QVariant(true) ); +#else + context->setContextProperty( "debug", QVariant(false) ); +#endif engine.load( QUrl( QLatin1String( "qrc:/qml/main.qml" ) ) ); try { result = app.exec(); - storage->setSetting("cleanExit","true"); } catch (const std::exception &ex) { qCritical()<s{yzC|#&Rcem75uj{+{3_gq}zsXE%va1Ll zL}UggUv_?y*>6L#AtE>16;q-y5e=b?y%RK_2>V$((o@R_=)xE^-BYnzPUnld6K#gS z$N+!4W4fh^3ffTg{mQkJ>tDJNWu526Zo43Qos2F*Tx*Q7F20Fa-|;Hh&vMO!w8nUx zZ>m*YE#blHqCVDEO%JlV_IZ=H4^Ldx`7`W?oVc3QlUC70Ijz}`=n3;z;Aopx;4YCA zdE+XSo5b7UCGw`#c&;Y$wkl$;i7{Xd7z00JfOl2M@Kn%RW55_N1`Z7H{@|gEnPMXt zwhlDm3IH6y90Yy7OK^@?%oH0zcpy$vfs*Ry5?Pr+) literal 0 HcmV?d00001 diff --git a/fairchat/notifications/android/androidnotificationreceiver.cpp b/fairchat/notifications/android/androidnotificationreceiver.cpp new file mode 100755 index 0000000..a82eafd --- /dev/null +++ b/fairchat/notifications/android/androidnotificationreceiver.cpp @@ -0,0 +1,131 @@ +#include "androidnotificationreceiver.h" +#include +#include +#include + +AndroidNotificationReceiver *AndroidNotificationReceiver::mAndroidReceiver = nullptr; + +AndroidNotificationReceiver::AndroidNotificationReceiver():mReceiver(0) +{ + JNINativeMethod methods[]{ + {"handleRegisterId", "(Ljava/lang/String;)V", reinterpret_cast(&AndroidNotificationReceiver::registrationIdHandler)}, + {"handleRegisterError", "(Ljava/lang/String;)V", reinterpret_cast(&AndroidNotificationReceiver::registrationIdHandler)} + }; + + JNINativeMethod messageReceivedMethod[]{ + {"messageReceived", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", reinterpret_cast(&AndroidNotificationReceiver::messageReceived)} + + }; + + + const char *className = "com.osalliance.rocketchatMobile/RegisterTask"; + const char *classNameReceive = "com.osalliance.rocketchatMobile/ReceiveTextMessage"; + + if(QAndroidJniObject::isClassAvailable(className)){ + QAndroidJniObject javaClass(className); + if (javaClass.isValid()){ + QAndroidJniEnvironment env; + jclass objectClass = env->GetObjectClass(javaClass.object()); + env->RegisterNatives(objectClass, + methods, + sizeof(methods) / sizeof(methods[0])); + env->DeleteLocalRef(objectClass); + }else{ + qDebug() << className << "is not valid"; + } + }else{ + qDebug() << className << "is not available"; + } + + if(QAndroidJniObject::isClassAvailable(classNameReceive)){ + QAndroidJniObject javaClass(classNameReceive); + if(javaClass.isValid()){ + QAndroidJniEnvironment env; + jclass objectClass = env->GetObjectClass(javaClass.object()); + env->RegisterNatives(objectClass, + messageReceivedMethod, + sizeof(messageReceivedMethod)/sizeof(messageReceivedMethod[0])); + env->DeleteLocalRef(objectClass); + + }else{ + qDebug() << classNameReceive << "is not valid"; + } + }else{ + qDebug() << classNameReceive << "is not available"; + } +} + +AndroidNotificationReceiver::~AndroidNotificationReceiver(){ + +} + +void AndroidNotificationReceiver::doRegister(GooglePushNotifications* pGooglePushNotifications){ + + qDebug()<<"called register"; + mReceiver = pGooglePushNotifications; + + QAndroidJniObject regIdObject = QAndroidJniObject::callStaticObjectMethod( + "com/osalliance/rocketchatMobile/FcmMessageTokenHandler", + "getToken", + "()Ljava/lang/String;"); + + QString qStr = regIdObject.toString(); + if(!qStr.isEmpty()){ + mAndroidReceiver->mReceiver->setGcmRegistrationId(qStr); + } +} + +AndroidNotificationReceiver *AndroidNotificationReceiver::instance(){ + if(!mAndroidReceiver){ + mAndroidReceiver = new AndroidNotificationReceiver; + } + return mAndroidReceiver; +} + +void AndroidNotificationReceiver::registrationIdHandler(JNIEnv *env, jobject thiz, jstring registrationId){ + Q_UNUSED(thiz) + qDebug()<<"received gcm token"; + const char* nativeString = env->GetStringUTFChars(registrationId, 0); + QString str = QString::fromUtf8(nativeString); + qDebug()<<"regId: "<ReleaseStringUTFChars(registrationId, nativeString); + mAndroidReceiver->mReceiver->setGcmRegistrationId(str); +} + +void AndroidNotificationReceiver::errorHandler(JNIEnv *env, jobject thiz, jstring errorMessage){ + Q_UNUSED(thiz) + const char* nativeString = env->GetStringUTFChars(errorMessage, 0); + qWarning(nativeString); + env->ReleaseStringUTFChars(errorMessage, nativeString); + +} + +void AndroidNotificationReceiver::messageReceived(JNIEnv *env, jobject thiz, jstring server, jstring rid, jstring name, jstring type) +{ + Q_UNUSED(thiz); + const char* ridCpp = env->GetStringUTFChars(rid, 0); + const char* serverCpp = env->GetStringUTFChars(server, 0); + const char* nameCpp = env->GetStringUTFChars(name, 0); + const char* typeCpp = env->GetStringUTFChars(type, 0); + QString ridStr = QString::fromUtf8(ridCpp); + QString serverStr = QString::fromUtf8(serverCpp); + QString nameStr = QString::fromUtf8(nameCpp); + QString typeStr = QString::fromUtf8(typeCpp); + + AndroidNotificationReceiver *androidNotificationReceiver = AndroidNotificationReceiver::instance(); + + if(androidNotificationReceiver->mReceiver != nullptr){ + androidNotificationReceiver->mReceiver->pushMessageReceived(serverStr, ridStr, nameStr, typeStr); + } + qDebug()<<"received push notification in cpp: "< +#include +#include +#include +#include "notifications/android/googlepushnotifications.h" + +class GooglePushNotifications; + +class AndroidNotificationReceiver +{ +public: + AndroidNotificationReceiver(); + ~AndroidNotificationReceiver(); + + void doRegister(GooglePushNotifications* pGooglePushNotifications); + + static AndroidNotificationReceiver *instance(); + static void registrationIdHandler(JNIEnv *env, jobject thiz, jstring errorMessge); + static void errorHandler(JNIEnv *env, jobject thiz, jstring errorMessage); + static void messageReceived(JNIEnv *env, jobject thiz, jstring server, jstring rid, jstring name, jstring type); + + GooglePushNotifications *receiver() const; + void setReceiver(GooglePushNotifications *receiver); + +private: + static AndroidNotificationReceiver *mAndroidReceiver; + + GooglePushNotifications *mReceiver = nullptr; + QString mSenderId; + +}; + +#endif // ANDROIDNOTIFICATIONRECEIVER_H diff --git a/fairchat/notifications/android/googlepushnotifications.cpp b/fairchat/notifications/android/googlepushnotifications.cpp new file mode 100755 index 0000000..c8fea8f --- /dev/null +++ b/fairchat/notifications/android/googlepushnotifications.cpp @@ -0,0 +1,59 @@ +#include "googlepushnotifications.h" +#include "androidnotificationreceiver.h" +#include + +GooglePushNotifications::GooglePushNotifications() +{ + mReceiver = AndroidNotificationReceiver::instance(); + mReceiver->setReceiver(this); +} + +//QString GooglePushNotifications::getGcmSenderId() const +//{ +// return mGcmSenderId; +//} + +//void GooglePushNotifications::setGcmSenderId(const QString &pSenderId) +//{ +// if(mGcmSenderId != pSenderId){ +// mGcmSenderId = pSenderId; +// } +//} + +QString GooglePushNotifications::getGcmRegistrationId() const +{ + return mGcmRegistrationId; +} + +void GooglePushNotifications::setGcmRegistrationId(QString pRegistrationId) +{ + if(!pRegistrationId.isEmpty()){ + if(mGcmRegistrationId != pRegistrationId){ + mGcmRegistrationId = pRegistrationId; + emit tokenReceived(pRegistrationId); + } + } +} + +void GooglePushNotifications::pushMessageReceived(QString pServer, QString pRid, QString pName, QString pType) +{ + emit messageReceived(pServer, pRid, pName, pType); +} + +void GooglePushNotifications::init() +{ + // if(!mGcmSenderId.isEmpty()){ + if(mGcmRegistrationId.isEmpty()){ + qDebug()<<"init gcm register called"; + mReceiver->doRegister(this); + } + else{ + + } + // } +} + +void GooglePushNotifications::registerWithService() +{ + init(); +} diff --git a/fairchat/notifications/android/googlepushnotifications.h b/fairchat/notifications/android/googlepushnotifications.h new file mode 100755 index 0000000..01df7e3 --- /dev/null +++ b/fairchat/notifications/android/googlepushnotifications.h @@ -0,0 +1,33 @@ +#ifndef GOOGLEPUSHNOTIFICATIONS_H +#define GOOGLEPUSHNOTIFICATIONS_H +#include "notifications/notificationabstract.h" +#include "notifications/android/androidnotificationreceiver.h" +#include "config.h" + +class AndroidNotificationReceiver; +class GooglePushNotifications:public NotificationAbstract +{ + Q_OBJECT +public: + GooglePushNotifications(); + +// QString getGcmSenderId() const; +// void setGcmSenderId(const QString &pValue); + + QString getGcmRegistrationId() const; + void setGcmRegistrationId(QString pValue); + + void pushMessageReceived(QString pServer, QString pRid, QString pName, QString pType); + + void init(); + + virtual void registerWithService(); + +private: + // QString mGcmSenderId = GCM_SENDER_ID; + QString mGcmRegistrationId; + AndroidNotificationReceiver* mReceiver; + +}; + +#endif // GOOGLEPUSHNOTIFICATIONS_H diff --git a/fairchat/notifications/ios/DelegateClass.h b/fairchat/notifications/ios/DelegateClass.h new file mode 100755 index 0000000..623e491 --- /dev/null +++ b/fairchat/notifications/ios/DelegateClass.h @@ -0,0 +1,21 @@ +#include "iosdevicetokenstorage.h" +#include "iosnotificationreceiver.h" + +class IosDeviceTokenStorage; + +@interface DelegateObject:NSObject +{ + IosDeviceTokenStorage *m_instance; + IosNotificationReceiver *mNotificationsInstance; +} + +- (id) initWithCPPInstance; + +- (void) setToken:(NSString *)token; + +- (void) sendMessage:(NSString *)pServer : (NSString *)pRid : (NSString *)pName : (NSString *)pType; + +- (void) openChannelByName:(NSString *)channelName; + +@end + diff --git a/fairchat/notifications/ios/DelegateClass.mm b/fairchat/notifications/ios/DelegateClass.mm new file mode 100755 index 0000000..9e04a12 --- /dev/null +++ b/fairchat/notifications/ios/DelegateClass.mm @@ -0,0 +1,40 @@ +#include "iosdevicetokenstorage.h" +#include "iosnotificationreceiver.h" +#import +#import "DelegateClass.h" + + +@implementation DelegateObject + +-(id) initWithCPPInstance{ + if(self){ + m_instance = IosDeviceTokenStorage::getInstance(); + mNotificationsInstance = IosNotificationReceiver::getInstance(); + } + return self; +} + +-(void) setToken:(NSString*) token{ + m_instance->setToken([token UTF8String]); +} + +- (void) sendMessage:(NSString *)pServer : (NSString *)pRid : (NSString *)pName : (NSString *)pType{ + if(pServer!=NULL && pRid != NULL && pName !=NULL && pType!=NULL){ + QString server([pServer UTF8String]); + QString rid([pRid UTF8String]); + QString name([pName UTF8String]); + QString type([pType UTF8String]); + mNotificationsInstance->sendMessageReceived(server,rid,name,type); + } +} + +- (void) openChannelByName:(NSString *)channelName{ + if(channelName != NULL){ + QString channelNameString([channelName UTF8String]); + mNotificationsInstance->sendSwitchChannelByName(channelNameString); + + } +} + + +@end diff --git a/fairchat/notifications/ios/applepushnotifications.cpp b/fairchat/notifications/ios/applepushnotifications.cpp new file mode 100755 index 0000000..28ff1d3 --- /dev/null +++ b/fairchat/notifications/ios/applepushnotifications.cpp @@ -0,0 +1,40 @@ +#include "applepushnotifications.h" +#include + +ApplePushNotifications::ApplePushNotifications() +{ + mInstance = IosDeviceTokenStorage::getInstance(); + mNotificationInstance = IosNotificationReceiver::getInstance(); + connect(mInstance, &IosDeviceTokenStorage::tokenReceived, this, &ApplePushNotifications::receiveToken); + connect(mNotificationInstance, &IosNotificationReceiver::messageReceived, this, &ApplePushNotifications::receiveMessage); + connect(mNotificationInstance, &IosNotificationReceiver::switchChannelByName, this, &ApplePushNotifications::onSwitchRequest); +} + +void ApplePushNotifications::receiveMessage(QString pServer, QString pRid, QString pName, QString pType) +{ + emit messageReceived(pServer,pRid,pName,pType); +} + +void ApplePushNotifications::receiveToken(){ + qDebug()<<"token received"; + QString newToken = mInstance->getToken(); + if (newToken != ""){ + mToken = newToken; + emit tokenReceived(newToken); + } +} + +void ApplePushNotifications::registerWithService(){ + if(mInstance->getToken() != ""){ + receiveToken(); + } +} + +void ApplePushNotifications::checkForPendingMessages(){ + emit switchChannelByName(mRoomName); +} + +void ApplePushNotifications::onSwitchRequest(QString pName){ + mRoomName = pName; + emit switchChannelByName(pName); +} diff --git a/fairchat/notifications/ios/applepushnotifications.h b/fairchat/notifications/ios/applepushnotifications.h new file mode 100755 index 0000000..46c161d --- /dev/null +++ b/fairchat/notifications/ios/applepushnotifications.h @@ -0,0 +1,26 @@ +#ifndef APPLEPUSHNOTIFICATIONS_H +#define APPLEPUSHNOTIFICATIONS_H +#include "notifications/notificationabstract.h" +#include "iosdevicetokenstorage.h" +#include "iosnotificationreceiver.h" + +class ApplePushNotifications:public NotificationAbstract +{ +public: + virtual void registerWithService(); + ApplePushNotifications(); + void receiveMessage(QString server, QString rid, QString name, QString type); + + void checkForPendingMessages(); + + void onSwitchRequest(QString pName); +protected: + void receiveToken(); + + IosDeviceTokenStorage* mInstance = nullptr; + IosNotificationReceiver* mNotificationInstance = nullptr; + + QString mRoomName; +}; + +#endif // APPLEPUSHNOTIFICATIONS_H diff --git a/fairchat/notifications/ios/iosdevicetokenstorage.cpp b/fairchat/notifications/ios/iosdevicetokenstorage.cpp new file mode 100755 index 0000000..6939f36 --- /dev/null +++ b/fairchat/notifications/ios/iosdevicetokenstorage.cpp @@ -0,0 +1,19 @@ +#include "iosdevicetokenstorage.h" + +IosDeviceTokenStorage* IosDeviceTokenStorage::mInstance = nullptr; + +IosDeviceTokenStorage* IosDeviceTokenStorage::getInstance(){ + if(mInstance == nullptr){ + mInstance = new IosDeviceTokenStorage; + } + return mInstance; +} + +void IosDeviceTokenStorage::setToken(QString stdToken){ + mToken = stdToken; + emit tokenReceived(); +} + +QString IosDeviceTokenStorage::getToken(){ + return mToken; +} diff --git a/fairchat/notifications/ios/iosdevicetokenstorage.h b/fairchat/notifications/ios/iosdevicetokenstorage.h new file mode 100755 index 0000000..fa88f40 --- /dev/null +++ b/fairchat/notifications/ios/iosdevicetokenstorage.h @@ -0,0 +1,28 @@ +#ifndef IOSDEVICETOKENSTORAGE_H +#define IOSDEVICETOKENSTORAGE_H + +#include +#include + +class IosDeviceTokenStorage: public QObject +{ + Q_OBJECT +public: + static IosDeviceTokenStorage* getInstance(); + + QString getToken(); + void setToken(QString mToken); + +private: + IosDeviceTokenStorage(){} + IosDeviceTokenStorage(const IosDeviceTokenStorage&) = delete; + + static IosDeviceTokenStorage* mInstance; + + QString mToken = ""; + +signals: + void tokenReceived(); +}; + +#endif // IOSDEVICETOKENSTORAGE_H diff --git a/fairchat/notifications/ios/iosnotificationreceiver.cpp b/fairchat/notifications/ios/iosnotificationreceiver.cpp new file mode 100644 index 0000000..be90800 --- /dev/null +++ b/fairchat/notifications/ios/iosnotificationreceiver.cpp @@ -0,0 +1,20 @@ +#include "iosnotificationreceiver.h" + +IosNotificationReceiver* IosNotificationReceiver::mInstance = nullptr; + +IosNotificationReceiver *IosNotificationReceiver::getInstance() +{ + if(mInstance == nullptr){ + mInstance = new IosNotificationReceiver; + } + return mInstance; +} + +void IosNotificationReceiver::sendMessageReceived(QString pServer, QString pRid, QString pName, QString pType) +{ + emit messageReceived(pServer,pRid,pName,pType); +} + +void IosNotificationReceiver::sendSwitchChannelByName(QString pName){ + emit switchChannelByName(pName); +} diff --git a/fairchat/notifications/ios/iosnotificationreceiver.h b/fairchat/notifications/ios/iosnotificationreceiver.h new file mode 100644 index 0000000..e0e65f9 --- /dev/null +++ b/fairchat/notifications/ios/iosnotificationreceiver.h @@ -0,0 +1,27 @@ +#ifndef IOSNOTIFICATIONRECEIVER_H +#define IOSNOTIFICATIONRECEIVER_H + +#include + +class IosNotificationReceiver : public QObject +{ + Q_OBJECT +public: + static IosNotificationReceiver* getInstance(); + + void sendMessageReceived(QString pServer, QString pRid, QString pName, QString pType); + void sendSwitchChannelByName(QString pName); + +private: + IosNotificationReceiver(){} + IosNotificationReceiver(const IosNotificationReceiver&) = delete; + + static IosNotificationReceiver* mInstance; + + +signals: + void messageReceived(QString pServer, QString pRid, QString pName, QString pType); + void switchChannelByName(QString channelName); +}; + +#endif // IOSNOTIFICATIONRECEIVER_H diff --git a/fairchat/notifications/notificationabstract.cpp b/fairchat/notifications/notificationabstract.cpp new file mode 100755 index 0000000..be10be9 --- /dev/null +++ b/fairchat/notifications/notificationabstract.cpp @@ -0,0 +1,16 @@ +#include "notificationabstract.h" + +NotificationAbstract::NotificationAbstract() +{ + +} + +QString NotificationAbstract::getToken() const +{ + return mToken; +} + +void NotificationAbstract::setToken(const QString &pValue) +{ + mToken = pValue; +} diff --git a/fairchat/notifications/notificationabstract.h b/fairchat/notifications/notificationabstract.h new file mode 100755 index 0000000..0635093 --- /dev/null +++ b/fairchat/notifications/notificationabstract.h @@ -0,0 +1,31 @@ +#ifndef NOTIFICATIONABSTRACT_H +#define NOTIFICATIONABSTRACT_H + +#include + +class NotificationAbstract : public QObject +{ + Q_OBJECT +public: + NotificationAbstract(); + + virtual void registerWithService() = 0; + + + + QString getToken() const; + void setToken(const QString &pValue); + + virtual void checkForPendingMessages() = 0; + +protected: + QString mToken; + +signals: + void tokenReceived(QString pToken); + void messageReceived(QString pServer, QString pRid, QString pName, QString pType); + void switchChannelByName(QString pChannel); + +}; + +#endif // NOTIFICATIONABSTRACT_H diff --git a/fairchat/notifications/notifications.cpp b/fairchat/notifications/notifications.cpp new file mode 100755 index 0000000..a8c07dc --- /dev/null +++ b/fairchat/notifications/notifications.cpp @@ -0,0 +1,39 @@ +#include "notifications.h" +#ifdef Q_OS_ANDROID +#include "notifications/android/googlepushnotifications.h" +#endif +#ifdef Q_OS_IOS +#include "notifications/ios/ApplePushNotifications.h" +#endif +#include "QDebug" + +Notifications::Notifications() +{ +#ifdef Q_OS_ANDROID + mNotificationInstance = new GooglePushNotifications; +#endif +#ifdef Q_OS_IOS + mNotificationInstance = new ApplePushNotifications; +#endif +#ifdef Q_OS_WINRT + +#endif + + if(mNotificationInstance != nullptr){ + connect(mNotificationInstance,&Notifications::tokenReceived,this, &Notifications::tokenReceived); + connect(mNotificationInstance,&Notifications::messageReceived,this, &Notifications::messageReceived); + connect(mNotificationInstance,&Notifications::switchChannelByName,this, &Notifications::switchChannelByName); + } +} + +void Notifications::registerWithService() +{ + if(mNotificationInstance){ + qDebug()<<"register with service Notifications called"; + mNotificationInstance->registerWithService(); + } +} + +void Notifications::checkForPendingMessages(){ + mNotificationInstance->checkForPendingMessages(); +} diff --git a/fairchat/notifications/notifications.h b/fairchat/notifications/notifications.h new file mode 100755 index 0000000..f83832a --- /dev/null +++ b/fairchat/notifications/notifications.h @@ -0,0 +1,20 @@ +#ifndef NOTIFICATIONS_H +#define NOTIFICATIONS_H + +#include "notificationabstract.h" + +class Notifications : public NotificationAbstract +{ +public: + Notifications(); + + // NotificationAbstract interface +public: + void registerWithService(); + void checkForPendingMessages(); + +private: + NotificationAbstract *mNotificationInstance = NULL; +}; + +#endif // NOTIFICATIONS_H diff --git a/fairchat/notifications/winrt/windowspushnotifications.cpp b/fairchat/notifications/winrt/windowspushnotifications.cpp new file mode 100755 index 0000000..e6d6299 --- /dev/null +++ b/fairchat/notifications/winrt/windowspushnotifications.cpp @@ -0,0 +1,6 @@ +#include "windowspushnotifications.h" + +WindowsPushNotifications::WindowsPushNotifications() +{ + +} diff --git a/fairchat/notifications/winrt/windowspushnotifications.h b/fairchat/notifications/winrt/windowspushnotifications.h new file mode 100755 index 0000000..dcc5597 --- /dev/null +++ b/fairchat/notifications/winrt/windowspushnotifications.h @@ -0,0 +1,11 @@ +#ifndef WINDOWSPUSHNOTIFICATIONS_H +#define WINDOWSPUSHNOTIFICATIONS_H + + +class WindowsPushNotifications +{ +public: + WindowsPushNotifications(); +}; + +#endif // WINDOWSPUSHNOTIFICATIONS_H \ No newline at end of file diff --git a/fairchat/qml/.DS_Store b/fairchat/qml/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..86e0199dcb05ef622b3e9caabf531297c89f833a GIT binary patch literal 6148 zcmeHKOKQVF41H?jHnf{8yPPZZ217_skPFn%U<$!5Nge3UNAJ@}Ew$ry2|)tQ(~P9~ zJn)PKK-T@+Gq3`%q$-LUGor(@t{V@oh*IWgP~#Kt=+MqgbcsW{_XqB_#)

v;Wif z(C)jov9qDV2V)xSaGZGV=;^3Eb?U2dBp+YcV>ijV=Xx~`g{%H7?-H4cJp}{7Krj#t zTnhtyvsIRlhS3HC!9XzZ%YfbwiK>_#2g7o8uqh<~alzptw6&JdoaC4t2Sa)&VyQ$+ z6)!Qw(m9?yE;|l}mJadaLwx0*;zi2poIjOtNH&Z%7zhT&4BT3GrSJa>KbhGgf1DD% zU?3Q{G6rO^*>2W6l)tTK$J4hqQD3Pl8aJpxp*{KuU`Owfr{Xk!Qk!wvaWK?bbiAY! P<42$n5=}7h4-9+*_{J;X literal 0 HcmV?d00001 diff --git a/fairchat/res/.DS_Store b/fairchat/res/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f260c86cdade441aca7d6fd63794b50faa5bfbea GIT binary patch literal 6148 zcmeHKOHRW;4E2-(rEI!Dh!x5edV{D6C+G!$6hcrwRX?nAH7cyA! z;#d3fr8EDk;R$;2y0_YIJEdp&=FRu6>sWG159E_0p9jj2m+jR~RDqZbx@(bCym1Dc z0cYSy7~s<#GP+ds)){aHoPm}BJ|7||V{F(c%F%&FN&w&x!y@Q&Ex|F7VQkna!U72z z3e?bGB}UM2j7R1d8#am>PQi+gU~djqp#*t5=8wdkLagYmGvEyL8933$3E%&BhwJ}- zkUu#C&cIPI5QfP-nIR>+TlbRVyEcN}Ls{6bQEWrdk*gTKd==k7MKB(52N)YRiWq_T O9|57k8)x888TbMf_)Px* literal 0 HcmV?d00001 diff --git a/fairchat/res/buttons/.DS_Store b/fairchat/res/buttons/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f0d0dd688d0193eb39747488a89442291f7fac99 GIT binary patch literal 6148 zcmeHKJ8l9|3>*g{5ojn=zANMgPY6!H1%g7fi4-l;3aGcswHbec2us=&i7nZ)%(MNp zQ>-xnSsb=cz#PDYu82@Ld7jy=ilu|10_r`@iO-r2?tIA5}oc%k^@>my6jt zcuk$Ph5k(cGUi%3gN3_R0HR4PM9#`hQa2al?qsg!}0AqbFAA{EiD+4$R>KUx)1RtB&o`(7`$ zpK?Q71CZr=djl*0%;<{v&@eWAu0FDhU?xPd9z9;r?wW1)+K;l&6Iy$TTXbl##Yuhl zcTa!%%Qh`(;6-WjCuL7LeYO}dx##A5` zNCl1x==Y(}6>H$&XrB%STLFku(q=r{EJa zB$f|}nnT{WvEUoK|r z=rwiL7WxDIV9d321{=jh8^!#gqxkwHujrZ2YvAB$<>alLn12LRm$X#iHx&2;*sdXH literal 0 HcmV?d00001 diff --git a/fairchat/translations/.DS_Store b/fairchat/translations/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e2dc20531b6810a230f1dec040e0dcc5b5621807 GIT binary patch literal 6148 zcmeHKOG*P#5UkcL0&W6sT)r!KgCWEdI(2Sbbi#2M3JT*oXyY@Q%?g<~Q!G)pQmsa7L~C7tbTA67S8O(+(( z^ZXX&ur5(i3P^!{1&(vO@cw^6|7HH)Cut`Iq`<#Yz-FuUYROls-a2_X@3oD7MfaKy sx*OL)VTg82jCRb8x8t)Y%DU!jKJN<0#Go@DbfSI+To;)X_-h3|0bv6fNdN!< literal 0 HcmV?d00001 diff --git a/fairchat/winrt/.DS_Store b/fairchat/winrt/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fe8304d374cd5f6f49e395aeb028720a74b7475b GIT binary patch literal 6148 zcmeHKI|>3Z5S{S@f{mqRuHX%V=n3`$7Q!~7plH37=kjR2`4q~sofgU)n7m{%FCnkk z*%1+4U-v7Kg^0}HhH|%|Z?6(QH06Z`SNk)NjZ6#nVM=AV(@d1>O}H$8urye+wVz z|KCYmQ2{FOR|@E4(`?pwQr6bqi80h5~3oFM#>1-`Ao6VzH1-2eap literal 0 HcmV?d00001 -- GitLab From 4677ac1be5941104a76f9ce02833aa8ab5dc1a64 Mon Sep 17 00:00:00 2001 From: Armin Date: Thu, 26 Oct 2017 23:14:48 +0200 Subject: [PATCH 5/5] fixed login button status --- engine | 2 +- fairchat/main.cpp | 4 +--- fairchat/qml/pages/LoginPage.qml | 7 +++---- fairchat/qml/pages/login/LoginUserPassword.qml | 6 ++++++ 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/engine b/engine index 258b9b1..54fc460 160000 --- a/engine +++ b/engine @@ -1 +1 @@ -Subproject commit 258b9b18dd013f5bf4641b917725b1064cb950e9 +Subproject commit 54fc4602ccfc6916f5dd344ca5145c6226169dcd diff --git a/fairchat/main.cpp b/fairchat/main.cpp index 9a9e9e7..0970846 100755 --- a/fairchat/main.cpp +++ b/fairchat/main.cpp @@ -50,8 +50,6 @@ int main( int argc, char *argv[] ) QCoreApplication::setOrganizationDomain( ORGANIZATIONDOMAIN ); QCoreApplication::setApplicationName( APPLICATIONNAME ); - int result = EXIT_FAILURE; - QGuiApplication app( argc, argv ); QtWebView::initialize(); @@ -133,7 +131,7 @@ int main( int argc, char *argv[] ) engine.load( QUrl( QLatin1String( "qrc:/qml/main.qml" ) ) ); try { - result = app.exec(); + app.exec(); } catch (const std::exception &ex) { qCritical()<