diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/HomeActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/HomeActivity.java
index 63e0870d58..611c8f50cc 100644
--- a/android/app/src/main/java/io/highfidelity/hifiinterface/HomeActivity.java
+++ b/android/app/src/main/java/io/highfidelity/hifiinterface/HomeActivity.java
@@ -213,4 +213,8 @@ public class HomeActivity extends AppCompatActivity implements NavigationView.On
}
}
+ @Override
+ public void onBackPressed() {
+ finishAffinity();
+ }
}
diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java
index dd758704e0..d2aff85323 100644
--- a/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java
+++ b/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java
@@ -212,4 +212,8 @@ public class InterfaceActivity extends QtActivity {
}
}
+ @Override
+ public void onBackPressed() {
+ openAndroidActivity("Home");
+ }
}
\ No newline at end of file
diff --git a/interface/resources/icons/+android/avatar-a.svg b/interface/resources/icons/+android/avatar-a.svg
deleted file mode 100755
index 165b39943e..0000000000
--- a/interface/resources/icons/+android/avatar-a.svg
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
diff --git a/interface/resources/icons/+android/avatar-i.svg b/interface/resources/icons/+android/avatar-i.svg
deleted file mode 100755
index c1557487ea..0000000000
--- a/interface/resources/icons/+android/avatar-i.svg
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
diff --git a/interface/resources/icons/+android/goto-a.svg b/interface/resources/icons/+android/goto-a.svg
deleted file mode 100755
index 5fb3e52e4c..0000000000
--- a/interface/resources/icons/+android/goto-a.svg
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
diff --git a/interface/resources/icons/+android/goto-i.svg b/interface/resources/icons/+android/goto-i.svg
deleted file mode 100644
index 7613beb9e7..0000000000
--- a/interface/resources/icons/+android/goto-i.svg
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
diff --git a/interface/resources/icons/+android/home.svg b/interface/resources/icons/+android/home.svg
deleted file mode 100644
index 414c179e79..0000000000
--- a/interface/resources/icons/+android/home.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/interface/resources/icons/+android/login-a.svg b/interface/resources/icons/+android/login-a.svg
deleted file mode 100755
index 8a7f097ed7..0000000000
--- a/interface/resources/icons/+android/login-a.svg
+++ /dev/null
@@ -1,990 +0,0 @@
-
-
-
-
diff --git a/interface/resources/icons/+android/login-i.svg b/interface/resources/icons/+android/login-i.svg
deleted file mode 100755
index 6f011e1d13..0000000000
--- a/interface/resources/icons/+android/login-i.svg
+++ /dev/null
@@ -1,990 +0,0 @@
-
-
-
-
diff --git a/interface/resources/qml/+android/AddressBarDialog.qml b/interface/resources/qml/+android/AddressBarDialog.qml
deleted file mode 100644
index e3fcad2b5e..0000000000
--- a/interface/resources/qml/+android/AddressBarDialog.qml
+++ /dev/null
@@ -1,232 +0,0 @@
-//
-// AddressBarDialog.qml
-//
-// Created by Austin Davis on 2015/04/14
-// Copyright 2015 High Fidelity, Inc.
-//
-// Distributed under the Apache License, Version 2.0.
-// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
-//
-
-import Hifi 1.0
-import QtQuick 2.4
-import "../controls"
-import "../styles"
-import "../hifi" as QmlHifi
-import "../hifi/toolbars"
-import "../styles-uit" as HifiStyles
-import "../controls-uit" as HifiControls
-
-Item {
- QmlHifi.HifiConstants { id: android }
-
- width: parent ? parent.width - android.dimen.windowLessWidth : 0
- height: parent ? parent.height - android.dimen.windowLessHeight : 0
- z: android.dimen.windowZ
- anchors { horizontalCenter: parent.horizontalCenter; bottom: parent.bottom }
-
- id: bar
- property bool isCursorVisible: false // Override default cursor visibility.
- property bool shown: true
-
- onShownChanged: {
- bar.visible = shown;
- sendToScript({method: 'shownChanged', params: { shown: shown }});
- if (shown) {
- addressLine.text="";
- updateLocationText(addressLine.text.length > 0);
- }
- }
-
- function hide() {
- shown = false;
- sendToScript ({ type: "hide" });
- }
-
- Component.onCompleted: {
- updateLocationText(addressLine.text.length > 0);
- }
-
- HifiConstants { id: hifi }
- HifiStyles.HifiConstants { id: hifiStyleConstants }
-
- signal sendToScript(var message);
-
- AddressBarDialog {
- id: addressBarDialog
- }
-
-
- Rectangle {
- id: background
- gradient: Gradient {
- GradientStop { position: 0.0; color: android.color.gradientTop }
- GradientStop { position: 1.0; color: android.color.gradientBottom }
- }
- anchors {
- fill: parent
- }
-
- MouseArea {
- anchors.fill: parent
- }
-
- QmlHifi.WindowHeader {
- id: header
- iconSource: "../../../icons/goto-i.svg"
- titleText: "GO TO"
- }
-
- HifiStyles.RalewayRegular {
- id: notice
- text: "YOUR LOCATION"
- font.pixelSize: (hifi.fonts.pixelSize * 2.15) * (android.dimen.atLeast1440p ? 1 : .75);
- color: "#2CD7FF"
- anchors {
- bottom: addressBackground.top
- bottomMargin: android.dimen.atLeast1440p ? 45 : 34
- left: addressBackground.left
- leftMargin: android.dimen.atLeast1440p ? 60 : 45
- }
-
- }
-
- property int inputAreaHeight: android.dimen.atLeast1440p ? 210 : 156
- property int inputAreaStep: (height - inputAreaHeight) / 2
-
- ToolbarButton {
- id: homeButton
- y: android.dimen.atLeast1440p ? 280 : 210
- imageURL: "../../icons/home.svg"
- onClicked: {
- sendToScript({method: 'openAndroidActivity', params: {}});
- hide();
- }
- anchors {
- leftMargin: android.dimen.atLeast1440p ? 75 : 56
- left: parent.left
- }
- size: android.dimen.atLeast1440p ? 150 : 150//112
- }
-
- ToolbarButton {
- id: backArrow;
- imageURL: "../../icons/backward.svg";
- onClicked: addressBarDialog.loadBack();
- anchors {
- left: homeButton.right
- leftMargin: android.dimen.atLeast1440p ? 70 : 52
- verticalCenter: homeButton.verticalCenter
- }
- size: android.dimen.atLeast1440p ? 150 : 150
- }
- ToolbarButton {
- id: forwardArrow;
- imageURL: "../../icons/forward.svg";
- onClicked: addressBarDialog.loadForward();
- anchors {
- left: backArrow.right
- leftMargin: android.dimen.atLeast1440p ? 60 : 45
- verticalCenter: homeButton.verticalCenter
- }
- size: android.dimen.atLeast1440p ? 150 : 150
- }
-
- HifiStyles.FiraSansRegular {
- id: location;
- font.pixelSize: addressLine.font.pixelSize;
- color: "lightgray";
- clip: true;
- anchors.fill: addressLine;
- visible: addressLine.text.length === 0
- z: 1
- }
-
- Rectangle {
- id: addressBackground
- x: android.dimen.atLeast1440p ? 780 : 585
- y: android.dimen.atLeast1440p ? 280 : 235 // tweaking by hand
- width: android.dimen.atLeast1440p ? 1270 : 952
- height: android.dimen.atLeast1440p ? 150 : 112
- color: "#FFFFFF"
- }
-
- TextInput {
- id: addressLine
- focus: true
- x: android.dimen.atLeast1440p ? 870 : 652
- y: android.dimen.atLeast1440p ? 300 : 245 // tweaking by hand
- width: android.dimen.atLeast1440p ? 1200 : 900
- height: android.dimen.atLeast1440p ? 120 : 90
- inputMethodHints: Qt.ImhNoPredictiveText
- //helperText: "Hint is here"
- font.pixelSize: hifi.fonts.pixelSize * 3.75
- onTextChanged: {
- //filterChoicesByText();
- updateLocationText(addressLine.text.length > 0);
- if (!isCursorVisible && text.length > 0) {
- isCursorVisible = true;
- cursorVisible = true;
- }
- }
-
- onActiveFocusChanged: {
- //cursorVisible = isCursorVisible && focus;
- }
- }
-
-
-
- function toggleOrGo() {
- if (addressLine.text !== "") {
- addressBarDialog.loadAddress(addressLine.text);
- }
- bar.shown = false;
- }
-
- Keys.onPressed: {
- switch (event.key) {
- case Qt.Key_Escape:
- case Qt.Key_Back:
- clearAddressLineTimer.start();
- event.accepted = true
- bar.shown = false;
- break
- case Qt.Key_Enter:
- case Qt.Key_Return:
- toggleOrGo();
- clearAddressLineTimer.start();
- event.accepted = true
- break
- }
- }
-
- }
-
- Timer {
- // Delay clearing address line so as to avoid flicker of "not connected" being displayed after entering an address.
- id: clearAddressLineTimer
- running: false
- interval: 100 // ms
- repeat: false
- onTriggered: {
- addressLine.text = "";
- isCursorVisible = false;
- }
- }
-
- function updateLocationText(enteringAddress) {
- if (enteringAddress) {
- notice.text = "Go to a place, @user, path or network address";
- notice.color = "#ffffff"; // hifiStyleConstants.colors.baseGrayHighlight;
- location.visible = false;
- } else {
- notice.text = AddressManager.isConnected ? "YOUR LOCATION:" : "NOT CONNECTED";
- notice.color = AddressManager.isConnected ? hifiStyleConstants.colors.blueHighlight : hifiStyleConstants.colors.redHighlight;
- // Display hostname, which includes ip address, localhost, and other non-placenames.
- location.text = (AddressManager.placename || AddressManager.hostname || '') + (AddressManager.pathname ? AddressManager.pathname.match(/\/[^\/]+/)[0] : '');
- location.visible = true;
- }
- }
-
-}
diff --git a/interface/resources/qml/+android/LoginDialog.qml b/interface/resources/qml/+android/LoginDialog.qml
deleted file mode 100644
index 567cca9bcf..0000000000
--- a/interface/resources/qml/+android/LoginDialog.qml
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-// LoginDialog.qml
-//
-// Created by David Rowe on 3 Jun 2015
-// Copyright 2015 High Fidelity, Inc.
-//
-// Distributed under the Apache License, Version 2.0.
-// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
-//
-
-import Hifi 1.0
-import QtQuick 2.4
-
-import "controls-uit"
-import "styles-uit"
-import "windows"
-
-import "LoginDialog"
-
-ModalWindow {
- id: root
- HifiConstants { id: hifi }
-
- objectName: "LoginDialog"
- implicitWidth: 1560
- implicitHeight: 450
- y:0
- destroyOnCloseButton: true
- destroyOnHidden: true
- visible: true
-
- property string iconText: ""
- property int iconSize: 105
-
- property string title: ""
- property int titleWidth: 0
-
- keyboardOverride: true // Disable ModalWindow's keyboard.
-
- function tryDestroy() {
- Controller.setVPadHidden(false);
- root.destroy();
- }
-
- LoginDialog {
- id: loginDialog
-
- Loader {
- id: bodyLoader
- source: loginDialog.isSteamRunning() ? "LoginDialog/+android/SignInBody.qml" : "LoginDialog/+android/LinkAccountBody.qml"
- }
- }
-
- Component.onCompleted: {
- this.anchors.centerIn = undefined;
- this.y = 150;
- this.x = (parent.width - this.width) / 2;
- Controller.setVPadHidden(true);
- }
-
- Keys.onPressed: {
- if (!visible) {
- return
- }
-
- if (event.modifiers === Qt.ControlModifier)
- switch (event.key) {
- case Qt.Key_A:
- event.accepted = true
- detailedText.selectAll()
- break
- case Qt.Key_C:
- event.accepted = true
- detailedText.copy()
- break
- case Qt.Key_Period:
- if (Qt.platform.os === "osx") {
- event.accepted = true
- content.reject()
- }
- break
- } else switch (event.key) {
- case Qt.Key_Escape:
- case Qt.Key_Back:
- event.accepted = true
- destroy()
- break
-
- case Qt.Key_Enter:
- case Qt.Key_Return:
- event.accepted = true
- break
- }
- }
-}
diff --git a/interface/resources/qml/hifi/+android/avatarSelection.qml b/interface/resources/qml/hifi/+android/avatarSelection.qml
deleted file mode 100644
index afa5634575..0000000000
--- a/interface/resources/qml/hifi/+android/avatarSelection.qml
+++ /dev/null
@@ -1,179 +0,0 @@
-//
-// avatarSelection.qml
-// interface/resources/qml/android
-//
-// Created by Gabriel Calero & Cristian Duarte on 21 Sep 2017
-// Copyright 2017 High Fidelity, Inc.
-//
-// Distributed under the Apache License, Version 2.0.
-// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
-//
-import QtQuick 2.5
-import QtQuick.Layouts 1.3
-import Hifi 1.0
-
-import "../../styles"
-import "."
-import ".."
-import ".." as QmlHifi
-import "../../styles-uit" as HifiStyles
-
-
-Item {
-
- id: top
-
- HifiConstants { id: android }
- width: parent ? parent.width - android.dimen.windowLessWidth : 0
- height: parent ? parent.height - android.dimen.windowLessHeight : 0
- z: android.dimen.windowZ
- anchors { horizontalCenter: parent.horizontalCenter; bottom: parent.bottom }
-
- signal sendToScript(var message);
-
- property bool shown: true
-
- onShownChanged: {
- top.visible = shown;
- }
-
-
- HifiConstants { id: hifi }
- HifiStyles.HifiConstants { id: hifiStyleConstants }
-
- property int cardWidth: 250 *3;
- property int cardHeight: 240 *3;
- property int gap: 14 *3;
-
- property var avatarsArray: [];
- property var extraOptionsArray: [];
-
- function hide() {
- shown = false;
- sendToScript ({ method: "hide" });
- }
-
- Rectangle {
-
- width: parent ? parent.width : 0
- height: parent ? parent.height : 0
-
- MouseArea {
- anchors.fill: parent
- }
-
- gradient: Gradient {
- GradientStop { position: 0.0; color: android.color.gradientTop }
- GradientStop { position: 1.0; color: android.color.gradientBottom }
- }
-
- QmlHifi.WindowHeader {
- id: header
- iconSource: "../../../../icons/avatar-i.svg"
- titleText: "AVATAR"
- }
-
- ListModel { id: avatars }
-
- ListView {
- id: scroll
- height: 250*3
- property int stackedCardShadowHeight: 10*3;
- spacing: gap;
- clip: true;
- anchors {
- left: parent.left
- right: parent.right
- top: header.bottom
- topMargin: gap
- leftMargin: gap
- rightMargin: gap
- }
- model: avatars;
- orientation: ListView.Horizontal;
- delegate: QmlHifi.AvatarOption {
- type: model.type;
- thumbnailUrl: model.thumbnailUrl;
- avatarUrl: model.avatarUrl;
- avatarName: model.avatarName;
- avatarSelected: model.avatarSelected;
- methodName: model.methodName;
- actionText: model.actionText;
- }
- highlightMoveDuration: -1;
- highlightMoveVelocity: -1;
- }
-
- }
-
- function escapeRegExp(str) {
- return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
- }
- function replaceAll(str, find, replace) {
- return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
- }
-
- function refreshSelected(selectedAvatarUrl) {
- // URL as ID?
- avatarsArray.forEach(function (avatarData) {
- avatarData.avatarSelected = (selectedAvatarUrl == avatarData.avatarUrl);
- console.log('[avatarSelection] avatar : ', avatarData.avatarName, ' is selected? ' , avatarData.avatarSelected);
- });
- }
-
- function addAvatar(name, thumbnailUrl, avatarUrl) {
- avatarsArray.push({
- type: "avatar",
- thumbnailUrl: thumbnailUrl,
- avatarUrl: avatarUrl,
- avatarName: name,
- avatarSelected: false,
- methodName: "",
- actionText: ""
- });
- }
-
- function showAvatars() {
- avatars.clear();
- avatarsArray.forEach(function (avatarData) {
- avatars.append(avatarData);
- console.log('[avatarSelection] adding avatar to model: ', JSON.stringify(avatarData));
- });
- extraOptionsArray.forEach(function (extraData) {
- avatars.append(extraData);
- console.log('[avatarSelection] adding extra option to model: ', JSON.stringify(extraData));
- });
- }
-
- function addExtraOption(showName, thumbnailUrl, methodNameWhenClicked, actionText) {
- extraOptionsArray.push({
- type: "extra",
- thumbnailUrl: thumbnailUrl,
- avatarUrl: "",
- avatarName: showName,
- avatarSelected: false,
- methodName: methodNameWhenClicked,
- actionText: actionText
- });
- }
-
- function fromScript(message) {
- //console.log("[CHAT] fromScript " + JSON.stringify(message));
- switch (message.type) {
- case "addAvatar":
- addAvatar(message.name, message.thumbnailUrl, message.avatarUrl);
- break;
- case "addExtraOption":
- //(showName, thumbnailUrl, methodNameWhenClicked, actionText)
- addExtraOption(message.showName, message.thumbnailUrl, message.methodNameWhenClicked, message.actionText);
- break;
- case "refreshSelected":
- refreshSelected(message.selectedAvatarUrl);
- break;
- case "showAvatars":
- showAvatars();
- break;
- default:
- }
- }
-}
\ No newline at end of file
diff --git a/interface/resources/qml/hifi/+android/bottombar.qml b/interface/resources/qml/hifi/+android/bottombar.qml
deleted file mode 100644
index 66117d0389..0000000000
--- a/interface/resources/qml/hifi/+android/bottombar.qml
+++ /dev/null
@@ -1,151 +0,0 @@
-//
-// bottomHudOptions.qml
-// interface/resources/qml/android
-//
-// Created by Gabriel Calero & Cristian Duarte on 19 Jan 2018
-// Copyright 2018 High Fidelity, Inc.
-//
-// Distributed under the Apache License, Version 2.0.
-// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
-//
-
-import Hifi 1.0
-import QtQuick 2.5
-import QtQuick.Controls 1.4
-import QtQuick.Controls.Styles 1.4
-import QtQuick.Layouts 1.3
-import Qt.labs.settings 1.0
-import "../../styles" as Styles
-import "../../styles-uit"
-import "../../controls-uit" as HifiControlsUit
-import "../../controls" as HifiControls
-import ".."
-import "."
-
-Item {
- id: bar
- x:0
- height: 255
-
- property bool shown: true
-
- signal sendToScript(var message);
-
- onShownChanged: {
- bar.visible = shown;
- }
-
- function hide() {
- //shown = false;
- sendToScript({ method: "hide" });
- }
-
- Styles.HifiConstants { id: hifi }
- HifiConstants { id: android }
- MouseArea {
- anchors.fill: parent
- }
-
- Rectangle {
- id: background
- anchors.fill : parent
- color: "#FF000000"
- border.color: "#FFFFFF"
- anchors.bottomMargin: -1
- anchors.leftMargin: -1
- anchors.rightMargin: -1
- Flow {
- id: flowMain
- spacing: 10
- anchors.fill: parent
- anchors.topMargin: 12
- anchors.bottomMargin: 12
- anchors.rightMargin: 12
- anchors.leftMargin: 72
- }
-
-
- Rectangle {
- id: hideButton
- height: android.dimen.headerHideWidth
- width: android.dimen.headerHideHeight
- color: "#00000000"
- anchors {
- right: parent.right
- rightMargin: android.dimen.headerHideRightMargin
- top: parent.top
- topMargin: android.dimen.headerHideTopMargin
- }
-
- Image {
- id: hideIcon
- source: "../../../icons/hide.svg"
- width: android.dimen.headerHideIconWidth
- height: android.dimen.headerHideIconHeight
- anchors {
- horizontalCenter: parent.horizontalCenter
- top: parent.top
- }
- }
- FiraSansRegular {
- anchors {
- top: hideIcon.bottom
- horizontalCenter: hideIcon.horizontalCenter
- topMargin: 12
- }
- text: "HIDE"
- color: "#FFFFFF"
- font.pixelSize: hifi.fonts.pixelSize * 2.5;
- }
-
- MouseArea {
- anchors.fill: parent
- onClicked: {
- hide();
- }
- }
- }
- }
-
- function relocateAndResize(newWindowWidth, newWindowHeight) {
- width = newWindowWidth;
- y = newWindowHeight - height;
- }
-
- function onWindowGeometryChanged(rect) {
- relocateAndResize(rect.width, rect.height);
- }
-
- Component.onCompleted: {
- // put on bottom
- relocateAndResize(Window.innerWidth, Window.innerHeight);
- Window.geometryChanged.connect(onWindowGeometryChanged); // In devices with bars appearing at startup we should listen for this
- }
-
- Component.onDestruction: {
- Window.geometryChanged.disconnect(onWindowGeometryChanged);
- }
-
- function addButton(properties) {
- var component = Qt.createComponent("button.qml");
- if (component.status == Component.Ready) {
- var button = component.createObject(flowMain);
- // copy all properites to button
- var keys = Object.keys(properties).forEach(function (key) {
- button[key] = properties[key];
- });
- return button;
- } else if( component.status == Component.Error) {
- console.log("Load button errors " + component.errorString());
- }
- }
-
- function urlHelper(src) {
- if (src.match(/\bhttp/)) {
- return src;
- } else {
- return "../../../" + src;
- }
- }
-
-}
diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp
index 19267a59ee..b478dd1807 100644
--- a/interface/src/Application.cpp
+++ b/interface/src/Application.cpp
@@ -242,7 +242,7 @@ extern "C" {
#if defined(Q_OS_ANDROID)
#include
-#include
+#include "AndroidHelper.h"
#endif
enum ApplicationEvent {
@@ -3623,6 +3623,12 @@ void Application::keyPressEvent(QKeyEvent* event) {
void Application::keyReleaseEvent(QKeyEvent* event) {
_keysPressed.remove(event->key());
+#if defined(Q_OS_ANDROID)
+ if (event->key() == Qt::Key_Back) {
+ event->accept();
+ openAndroidActivity("Home");
+ }
+#endif
_controllerScriptingInterface->emitKeyReleaseEvent(event); // send events to any registered scripts
// if one of our scripts have asked to capture this event, then stop processing it
@@ -7873,19 +7879,14 @@ void Application::enterBackground() {
getActiveDisplayPlugin()->deactivate();
}
void Application::enterForeground() {
- if (qApp && DependencyManager::isSet()) {
- QMetaObject::invokeMethod(DependencyManager::get().data(),
+ QMetaObject::invokeMethod(DependencyManager::get().data(),
"start", Qt::BlockingQueuedConnection);
- } else {
- qDebug() << "Could not start AudioClient";
- }
if (!getActiveDisplayPlugin() || !getActiveDisplayPlugin()->activate()) {
qWarning() << "Could not re-activate display plugin";
}
}
-#include "Application_jni.cpp"
-
#endif
+#include "Application_jni.cpp"
#include "Application.moc"
diff --git a/interface/src/Application.h b/interface/src/Application.h
index 568cce2ab6..7af8a679bf 100644
--- a/interface/src/Application.h
+++ b/interface/src/Application.h
@@ -78,10 +78,6 @@
#include "Sound.h"
-#if defined(Q_OS_ANDROID)
-#include "AndroidHelper.h"
-#endif
-
class OffscreenGLCanvas;
class GLCanvas;
class FaceTracker;
diff --git a/interface/src/Application_jni.cpp b/interface/src/Application_jni.cpp
index 83641ad8c6..5e9f1ac29e 100644
--- a/interface/src/Application_jni.cpp
+++ b/interface/src/Application_jni.cpp
@@ -1,3 +1,8 @@
+#if defined(Q_OS_ANDROID)
+
+#include
+#include "AndroidHelper.h"
+
extern "C" {
JNIEXPORT void
@@ -16,3 +21,4 @@ Java_io_highfidelity_hifiinterface_InterfaceActivity_nativeEnterForeground(JNIEn
}
+#endif
\ No newline at end of file
diff --git a/scripts/system/+android/avatarSelection.js b/scripts/system/+android/avatarSelection.js
deleted file mode 100644
index 2946e541b5..0000000000
--- a/scripts/system/+android/avatarSelection.js
+++ /dev/null
@@ -1,164 +0,0 @@
-"use strict";
-//
-// avatarSelection.js
-// scripts/system/
-//
-// Created by Gabriel Calero & Cristian Duarte on 21 Sep 2017
-// Copyright 2017 High Fidelity, Inc.
-//
-// Distributed under the Apache License, Version 2.0.
-// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
-//
-
-var window;
-
-var logEnabled = true;
-var isVisible = false;
-
-function printd(str) {
- if (logEnabled)
- print("[avatarSelection.js] " + str);
-}
-
-function fromQml(message) { // messages are {method, params}, like json-rpc. See also sendToQml.
- var data;
- printd("fromQml " + JSON.stringify(message));
- switch (message.method) {
- case 'selectAvatar':
- // use this message.params.avatarUrl
- printd("Selected Avatar: [" + message.params.avatarUrl + "]");
- App.askBeforeSetAvatarUrl(message.params.avatarUrl);
- break;
- case 'openAvatarMarket':
- // good
- App.openUrl("https://metaverse.highfidelity.com/marketplace?category=avatars");
- break;
- case 'hide':
- Controller.setVPadHidden(false);
- module.exports.hide();
- module.exports.onHidden();
- break;
- default:
- print('[avatarSelection.js] Unrecognized message from avatarSelection.qml:', JSON.stringify(message));
- }
-}
-
-function sendToQml(message) {
- if (!window) {
- print("[avatarSelection.js] There is no window object");
- return;
- }
- window.sendToQml(message);
-}
-
-function refreshSelected(currentAvatarURL) {
- sendToQml({
- type: "refreshSelected",
- selectedAvatarUrl: currentAvatarURL
- });
-
- sendToQml({
- type: "showAvatars"
- });
-}
-
-function init() {
- if (!window) {
- print("[avatarSelection.js] There is no window object for init()");
- return;
- }
- var DEFAULT_AVATAR_URL = "http://mpassets.highfidelity.com/7fe80a1e-f445-4800-9e89-40e677b03bee-v3/mannequin.fst";
- sendToQml({
- type: "addAvatar",
- name: "Wooden Mannequin",
- thumbnailUrl: "https://hifi-metaverse.s3-us-west-1.amazonaws.com/marketplace/previews/7fe80a1e-f445-4800-9e89-40e677b03bee/thumbnail/hifi-mp-7fe80a1e-f445-4800-9e89-40e677b03bee.jpg",
- avatarUrl: DEFAULT_AVATAR_URL
- });
- sendToQml({
- type: "addAvatar",
- name: "Cody",
- thumbnailUrl: "https://hifi-metaverse.s3-us-west-1.amazonaws.com/marketplace/previews/8c859fca-4cbd-4e82-aad1-5f4cb0ca5d53/thumbnail/hifi-mp-8c859fca-4cbd-4e82-aad1-5f4cb0ca5d53.jpg",
- avatarUrl: "http://mpassets.highfidelity.com/8c859fca-4cbd-4e82-aad1-5f4cb0ca5d53-v1/cody.fst"
- });
- sendToQml({
- type: "addAvatar",
- name: "Mixamo Will",
- thumbnailUrl: "https://hifi-metaverse.s3-us-west-1.amazonaws.com/marketplace/previews/d029ae8d-2905-4eb7-ba46-4bd1b8cb9d73/thumbnail/hifi-mp-d029ae8d-2905-4eb7-ba46-4bd1b8cb9d73.jpg",
- avatarUrl: "http://mpassets.highfidelity.com/d029ae8d-2905-4eb7-ba46-4bd1b8cb9d73-v1/4618d52e711fbb34df442b414da767bb.fst"
- });
- sendToQml({
- type: "addAvatar",
- name: "Albert",
- thumbnailUrl: "https://hifi-metaverse.s3-us-west-1.amazonaws.com/marketplace/previews/1e57c395-612e-4acd-9561-e79dbda0bc49/thumbnail/hifi-mp-1e57c395-612e-4acd-9561-e79dbda0bc49.jpg",
- avatarUrl: "http://mpassets.highfidelity.com/1e57c395-612e-4acd-9561-e79dbda0bc49-v1/albert.fst"
- });
- /* We need to implement the wallet, so let's skip this for the moment
- sendToQml({
- type: "addExtraOption",
- showName: "More choices",
- thumbnailUrl: "../../../images/moreAvatars.png",
- methodNameWhenClicked: "openAvatarMarket",
- actionText: "MARKETPLACE"
- });
- */
- var currentAvatarURL = Settings.getValue('Avatar/fullAvatarURL', DEFAULT_AVATAR_URL);
- printd("Default Avatar: [" + DEFAULT_AVATAR_URL + "]");
- printd("Current Avatar: [" + currentAvatarURL + "]");
- if (!currentAvatarURL || 0 === currentAvatarURL.length) {
- currentAvatarURL = DEFAULT_AVATAR_URL;
- }
- refreshSelected(currentAvatarURL);
-}
-
-module.exports = {
- init: function() {
- window = new QmlFragment({
- qml: "hifi/avatarSelection.qml",
- visible: false
- });
- if (window) {
- window.fromQml.connect(fromQml);
- }
- init();
- },
- show: function() {
- Controller.setVPadHidden(true);
- if (window) {
- window.setVisible(true);
- isVisible = true;
- }
- },
- hide: function() {
- Controller.setVPadHidden(false);
- if (window) {
- window.setVisible(false);
- }
- isVisible = false;
- },
- destroy: function() {
- Controller.setVPadHidden(false);
- if (window) {
- window.fromQml.disconnect(fromQml);
- window.close();
- window = null;
- }
- },
- isVisible: function() {
- return isVisible;
- },
- width: function() {
- return window ? window.size.x : 0;
- },
- height: function() {
- return window ? window.size.y : 0;
- },
- position: function() {
- return window && isVisible ? window.position : null;
- },
- refreshSelectedAvatar: function(currentAvatarURL) {
- refreshSelected(currentAvatarURL);
- },
- onHidden: function() {
- Controller.setVPadHidden(false);
- }
-};
diff --git a/scripts/system/+android/bottombar.js b/scripts/system/+android/bottombar.js
deleted file mode 100644
index 526cd128e5..0000000000
--- a/scripts/system/+android/bottombar.js
+++ /dev/null
@@ -1,271 +0,0 @@
-"use strict";
-//
-// bottombar.js
-// scripts/system/
-//
-// Created by Gabriel Calero & Cristian Duarte on Jan 18, 2018
-// Copyright 2018 High Fidelity, Inc.
-//
-// Distributed under the Apache License, Version 2.0.
-// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
-//
-(function() { // BEGIN LOCAL_SCOPE
-
-var bottombar;
-var bottomHudOptionsBar;
-var gotoBtn;
-var avatarBtn;
-var bubbleBtn;
-var loginBtn;
-
-var gotoScript = Script.require('./goto.js');
-var avatarSelection = Script.require('./avatarSelection.js');
-
-var logEnabled = false;
-
-function printd(str) {
- if (logEnabled) {
- print("[bottombar.js] " + str);
- }
-}
-
-function init() {
- gotoScript.init();
- gotoScript.setOnShownChange(function (shown) {
- if (shown) {
- showAddressBar();
- } else {
- hideAddressBar();
- }
- });
- avatarSelection.init();
- App.fullAvatarURLChanged.connect(processedNewAvatar);
-
- setupBottomBar();
- setupBottomHudOptionsBar();
-
- raiseBottomBar();
-
- GlobalServices.connected.connect(handleLogin);
- GlobalServices.myUsernameChanged.connect(onUsernameChanged);
- GlobalServices.disconnected.connect(handleLogout);
-}
-
-function shutdown() {
- App.fullAvatarURLChanged.disconnect(processedNewAvatar);
-}
-
-function setupBottomBar() {
- bottombar = new QmlFragment({
- qml: "hifi/bottombar.qml"
- });
-
- bottombar.fromQml.connect(function(message) {
- switch (message.method) {
- case 'hide':
- lowerBottomBar();
- break;
- default:
- print('[bottombar.js] Unrecognized message from bottomHud.qml:', JSON.stringify(message));
- }
- });
-
- avatarBtn = bottombar.addButton({
- icon: "icons/avatar-i.svg",
- activeIcon: "icons/avatar-a.svg",
- bgOpacity: 0,
- height: 240,
- width: 294,
- hoverBgOpacity: 0,
- activeBgOpacity: 0,
- activeHoverBgOpacity: 0,
- iconSize: 108,
- textSize: 45,
- text: "AVATAR"
- });
- avatarBtn.clicked.connect(function() {
- printd("Avatar button clicked");
- if (!avatarSelection.isVisible()) {
- showAvatarSelection();
- } else {
- hideAvatarSelection();
- }
- });
- avatarSelection.onHidden = function() {
- if (avatarBtn) {
- avatarBtn.isActive = false;
- }
- };
-
- gotoBtn = bottombar.addButton({
- icon: "icons/goto-i.svg",
- activeIcon: "icons/goto-a.svg",
- bgOpacity: 0,
- hoverBgOpacity: 0,
- activeBgOpacity: 0,
- activeHoverBgOpacity: 0,
- height: 240,
- width: 294,
- iconSize: 108,
- textSize: 45,
- text: "GO TO"
- });
-
- gotoBtn.clicked.connect(function() {
- if (!gotoScript.isVisible()) {
- showAddressBar();
- } else {
- hideAddressBar();
- }
- });
-
- bubbleBtn = bottombar.addButton({
- icon: "icons/bubble-i.svg",
- activeIcon: "icons/bubble-a.svg",
- bgOpacity: 0,
- hoverBgOpacity: 0,
- activeBgOpacity: 0,
- activeHoverBgOpacity: 0,
- height: 240,
- width: 294,
- iconSize: 108,
- textSize: 45,
- text: "BUBBLE"
- });
-
- bubbleBtn.editProperties({isActive: Users.getIgnoreRadiusEnabled()});
-
- bubbleBtn.clicked.connect(function() {
- Users.toggleIgnoreRadius();
- bubbleBtn.editProperties({isActive: Users.getIgnoreRadiusEnabled()});
- });
-
- loginBtn = bottombar.addButton({
- icon: "icons/login-i.svg",
- activeIcon: "icons/login-a.svg",
- height: 240,
- width: 294,
- iconSize: 108,
- textSize: 45,
- text: Account.isLoggedIn() ? "LOG OUT" : "LOG IN"
- });
- loginBtn.clicked.connect(function() {
- if (!Account.isLoggedIn()) {
- Account.checkAndSignalForAccessToken();
- } else {
- Menu.triggerOption("Login / Sign Up");
- }
- });
-
- // TODO: setup all the buttons or provide a dynamic interface
-
- raiseBottomBar();
-
-
-}
-
-var setupBottomHudOptionsBar = function() {
- var bottomHud = new QmlFragment({
- qml: "hifi/bottomHudOptions.qml"
- });
-
- bottomHudOptionsBar = {
- show: function() {
- bottomHud.setVisible(true);
- },
- hide: function() {
- bottomHud.setVisible(false);
- },
- qmlFragment: bottomHud
- };
- bottomHud.fromQml.connect(
- function(message) {
- switch (message.method) {
- case 'showUpBar':
- printd('[bottombar.js] showUpBar message from bottomHudOptions.qml: ', JSON.stringify(message));
- raiseBottomBar();
- break;
- default:
- print('[bottombar.js] Unrecognized message from bottomHudOptions.qml:', JSON.stringify(message));
- }
- }
- );
-}
-
-function lowerBottomBar() {
- if (bottombar) {
- bottombar.setVisible(false);
- }
- if (bottomHudOptionsBar) {
- bottomHudOptionsBar.show();
- }
- Controller.setVPadExtraBottomMargin(0);
-}
-
-function raiseBottomBar() {
- print('[bottombar.js] raiseBottomBar begin');
- if (bottombar) {
- bottombar.setVisible(true);
- }
- if (bottomHudOptionsBar) {
- bottomHudOptionsBar.hide();
- }
- Controller.setVPadExtraBottomMargin(255); // Height in bottombar.qml
- print('[bottombar.js] raiseBottomBar end');
-}
-
-function showAddressBar() {
- gotoScript.show();
- gotoBtn.isActive = true;
-}
-
-function hideAddressBar() {
- gotoScript.hide();
- gotoBtn.isActive = false;
-}
-
-function showAvatarSelection() {
- avatarSelection.show();
- avatarBtn.isActive = true;
-}
-
-function hideAvatarSelection() {
- avatarSelection.hide();
- avatarBtn.isActive = false;
-}
-
-// TODO: Move to avatarSelection.js and make it possible to hide the window from there AND switch the button state here too
-function processedNewAvatar(url, modelName) {
- avatarSelection.refreshSelectedAvatar(url);
- hideAvatarSelection();
-}
-
-function handleLogin() {
- if (loginBtn) {
- loginBtn.editProperties({text: "LOG OUT"});
- }
-}
-
-function onUsernameChanged(username) {
- if (Account.isLoggedIn()) {
- MyAvatar.displayName = username;
- }
-}
-
-function handleLogout() {
- MyAvatar.displayName = "";
- if (loginBtn) {
- loginBtn.editProperties({text: "LOG IN"});
- }
-}
-
-Script.scriptEnding.connect(function () {
- shutdown();
- GlobalServices.connected.disconnect(handleLogin);
- GlobalServices.disconnected.disconnect(handleLogout);
- GlobalServices.myUsernameChanged.disconnect(onUsernameChanged);
-});
-
-init();
-
-}()); // END LOCAL_SCOPE
diff --git a/scripts/system/+android/goto.js b/scripts/system/+android/goto.js
deleted file mode 100644
index 750844a2a4..0000000000
--- a/scripts/system/+android/goto.js
+++ /dev/null
@@ -1,108 +0,0 @@
-"use strict";
-//
-// goto-android.js
-// scripts/system/
-//
-// Created by Gabriel Calero & Cristian Duarte on 12 Sep 2017
-// Copyright 2017 High Fidelity, Inc.
-//
-// Distributed under the Apache License, Version 2.0.
-// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
-//
-
-var window;
-
-
-var logEnabled = false;
-function printd(str) {
- if (logEnabled)
- print("[goto-android.js] " + str);
-}
-
-function init() {
-}
-
-function fromQml(message) { // messages are {method, params}, like json-rpc. See also sendToQml.
- switch (message.method) {
- case 'shownChanged':
- if (notifyShownChange) {
- notifyShownChange(message.params.shown);
- } ;
- break;
- case 'hide':
- module.exports.hide();
- module.exports.onHidden();
- break;
- case 'openAndroidActivity':
- App.openAndroidActivity("Home");
- break;
- default:
- print('[goto-android.js] Unrecognized message from AddressBarDialog.qml:', JSON.stringify(message));
- }
-}
-
-function sendToQml(message) {
- window.sendToQml(message);
-}
-
-var isVisible = false;
-var qmlConnected = false;
-var notifyShownChange;
-module.exports = {
- init: function() {
- window = new QmlFragment({
- qml: "AddressBarDialog.qml",
- visible: false
- });
- },
- show: function() {
- if (isVisible) return;
- Controller.setVPadHidden(true);
- if (window) {
- if (!qmlConnected) {
- window.fromQml.connect(fromQml);
- qmlConnected = true;
- }
- window.setVisible(true);
- isVisible = true;
- }
- },
- hide: function() {
- if (!isVisible) return;
- Controller.setVPadHidden(false);
- if (window) {
- if (qmlConnected) {
- window.fromQml.disconnect(fromQml);
- qmlConnected = false;
- }
- window.setVisible(false);
- }
- isVisible = false;
- },
- destroy: function() {
- if (window) {
- window.close();
- window = null;
- }
- },
- isVisible: function() {
- return isVisible;
- },
- width: function() {
- return window ? window.size.x : 0;
- },
- height: function() {
- return window ? window.size.y : 0;
- },
- position: function() {
- return window && isVisible ? window.position : null;
- },
- setOnShownChange: function(f) {
- notifyShownChange = f;
- },
- onHidden: function() { }
-
-
-};
-
-init();