From fe5dd1e615e26b8c3ef735b4c7a124a2396c6eeb Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Tue, 16 Apr 2019 14:11:29 -0700 Subject: [PATCH] general purpose and ongoing android notifications --- android/AndroidManifest.xml | 6 +- android/res/drawable-hdpi/ic_launcher.png | Bin 4100 -> 0 bytes android/res/drawable-mdpi/ic_launcher.png | Bin 4100 -> 0 bytes android/res/drawable-xhdpi/ic_launcher.png | Bin 4100 -> 0 bytes android/res/drawable-xxhdpi/ic_launcher.png | Bin 4100 -> 0 bytes android/res/drawable-xxxhdpi/ic_launcher.png | Bin 4100 -> 0 bytes android/res/drawable/ic_launcher.png | Bin 0 -> 4030 bytes .../openprivacy/cwtch/ui/CwtchActivity.java | 125 ++++++++++++++++++ go/gothings/androidCwtchActivity.go | 50 +++++++ go/the/globals.go | 6 +- main.go | 26 ++-- qml/overlays/ChatOverlay.qml | 3 + 12 files changed, 203 insertions(+), 13 deletions(-) delete mode 100644 android/res/drawable-hdpi/ic_launcher.png delete mode 100644 android/res/drawable-mdpi/ic_launcher.png delete mode 100644 android/res/drawable-xhdpi/ic_launcher.png delete mode 100644 android/res/drawable-xxhdpi/ic_launcher.png delete mode 100644 android/res/drawable-xxxhdpi/ic_launcher.png create mode 100644 android/res/drawable/ic_launcher.png create mode 100644 android/src/ca/openprivacy/cwtch/ui/CwtchActivity.java create mode 100644 go/gothings/androidCwtchActivity.go diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index 4d16620d..cc765118 100644 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -1,7 +1,7 @@ - + @@ -66,10 +66,10 @@ - + - + diff --git a/android/res/drawable-hdpi/ic_launcher.png b/android/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index 37bcf0feb1f69da0fdc1a92471c73003f028dd49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4100 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 literal 0 HcmV?d00001 diff --git a/android/src/ca/openprivacy/cwtch/ui/CwtchActivity.java b/android/src/ca/openprivacy/cwtch/ui/CwtchActivity.java new file mode 100644 index 00000000..4623ae15 --- /dev/null +++ b/android/src/ca/openprivacy/cwtch/ui/CwtchActivity.java @@ -0,0 +1,125 @@ +package ca.openprivacy.cwtch.ui; + +import android.app.Notification; +import android.app.NotificationManager; +import android.app.NotificationChannel; +import android.content.Context; +import android.util.Log; + + +import static android.app.Notification.DEFAULT_LIGHTS; +import static android.app.Notification.DEFAULT_SOUND; +import static android.app.Notification.DEFAULT_VIBRATE; +import static android.app.NotificationManager.IMPORTANCE_DEFAULT; +import static android.app.NotificationManager.IMPORTANCE_LOW; +import static android.content.Context.NOTIFICATION_SERVICE; +import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; +import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; +import static android.os.Build.VERSION.SDK_INT; +import static android.app.Notification.CATEGORY_SERVICE; + + +/*import static android.support.v4.app.NotificationCompat.CATEGORY_MESSAGE; +import static android.support.v4.app.NotificationCompat.CATEGORY_SERVICE; +import static android.support.v4.app.NotificationCompat.CATEGORY_SOCIAL; +import static android.support.v4.app.NotificationCompat.PRIORITY_LOW; +import static android.support.v4.app.NotificationCompat.PRIORITY_MIN; +import static android.support.v4.app.NotificationCompat.PRIORITY_DEFAULT; +import static android.support.v4.app.NotificationCompat.VISIBILITY_SECRET; +import static android.support.v4.content.ContextCompat.getColor;*/ + + + + +public class CwtchActivity extends org.qtproject.qt5.android.bindings.QtActivity +{ + private static NotificationManager m_notificationManager; + private static Notification.Builder m_builder; + private static Notification.Builder m_builderOngoing; + private static CwtchActivity m_instance; + + private static int PRIORITY_MIN = -2; // From NotificationCompat + private static int PRIORITY_DEFAULT = 0; // From NotificationCompat + + private static String NOTIFICATION_CHANNEL_ID = "cwtch_notification_channel"; + + private static int ONGOING_NOTIFICATION_ID = 0; + private static String ONGOING_NOTIFICATION_ID_NAME = "ongoing"; + + private static int CONTENT_NOTIFICATION_ID = 1; + private static String CONTENT_NOTIFICATION_ID_NAME = "content"; + + + public CwtchActivity() + { + m_instance = this; + } + + public static void notify(String s) + { + if (m_notificationManager == null) { + m_notificationManager = (NotificationManager)m_instance.getSystemService(Context.NOTIFICATION_SERVICE); + createNotificationChannel(); + } + + if (m_builder == null) { + m_builder = new Notification.Builder(m_instance); + m_builder.setSmallIcon(R.drawable.ic_launcher); + m_builder.setContentTitle("Cwtch"); + m_builder.setPriority(PRIORITY_DEFAULT); + + } + + m_builder.setContentText(s); + m_notificationManager.notify(CONTENT_NOTIFICATION_ID, m_builder.build()); + } + + public static void ongoingNotify(String s) + { + if (m_notificationManager == null) { + m_notificationManager = (NotificationManager)m_instance.getSystemService(Context.NOTIFICATION_SERVICE); + createNotificationChannel(); + } + + if (m_builderOngoing == null) { + m_builderOngoing = new Notification.Builder(m_instance); + m_builderOngoing.setSmallIcon(R.drawable.ic_launcher); + m_builderOngoing.setContentTitle("Cwtch"); + m_builderOngoing.setPriority(PRIORITY_MIN); + + m_builderOngoing.setWhen(0); // Don't show the time + m_builderOngoing.setOngoing(true); + if (SDK_INT >= 21) { + m_builderOngoing.setCategory(CATEGORY_SERVICE); + //m_builder.setVisibility(VISIBILITY_SECRET); + } + + } + + m_builderOngoing.setContentText(s); + m_notificationManager.notify(ONGOING_NOTIFICATION_ID, m_builderOngoing.build()); + } + + private static void createNotificationChannel() { + // Create the NotificationChannel, but only on API 26+ because + // the NotificationChannel class is new and not in the support library + if (SDK_INT >= 26) { + String description = "Cwtch Ongoing Notification Channel"; + int importance = NotificationManager.IMPORTANCE_LOW; + NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, ONGOING_NOTIFICATION_ID_NAME, importance); + channel.setDescription(description); + // Register the channel with the system; you can't change the importance + // or other notification behaviors after this + m_notificationManager.createNotificationChannel(channel); + + description = "Cwtch Content Notification Channel"; + importance = NotificationManager.IMPORTANCE_DEFAULT; + channel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, CONTENT_NOTIFICATION_ID_NAME, importance); + channel.setDescription(description); + // Register the channel with the system; you can't change the importance + // or other notification behaviors after this + m_notificationManager.createNotificationChannel(channel); + + } + } +} diff --git a/go/gothings/androidCwtchActivity.go b/go/gothings/androidCwtchActivity.go new file mode 100644 index 00000000..72e41fa8 --- /dev/null +++ b/go/gothings/androidCwtchActivity.go @@ -0,0 +1,50 @@ +package gothings + +import ( + "github.com/therecipe/qt/androidextras" + "github.com/therecipe/qt/core" +) + +type AndroidCwtchActivity struct { + core.QObject + + _ func() `constructor:"init"` + + _ string `property:"notification"` + + _ func(string) `slot:"updateAndroidNotification"` +} + +func (c *AndroidCwtchActivity) init() { + + c.createOngoingNotification() + c.ConnectNotificationChanged(c.updateAndroidNotification) +} + +func (c *AndroidCwtchActivity) updateAndroidNotification(n string) { + + var err = androidextras.QAndroidJniObject_CallStaticMethodVoid2Caught( + "ca/openprivacy/cwtch/ui/CwtchActivity", + "notify", + "(Ljava/lang/String;)V", + n, + ) + + if err != nil { + println(err.Error()) + } +} + +func (c *AndroidCwtchActivity) createOngoingNotification() { + + var err = androidextras.QAndroidJniObject_CallStaticMethodVoid2Caught( + "ca/openprivacy/cwtch/ui/CwtchActivity", + "ongoingNotify", + "(Ljava/lang/String;)V", + "Cwtch is running", + ) + + if err != nil { + println(err.Error()) + } +} diff --git a/go/the/globals.go b/go/the/globals.go index 0b82bca7..06b40a69 100644 --- a/go/the/globals.go +++ b/go/the/globals.go @@ -3,15 +3,17 @@ package the import ( "cwtch.im/cwtch/app" libPeer "cwtch.im/cwtch/peer" + "git.openprivacy.ca/openprivacy/libricochet-go/connectivity" ) var CwtchApp app.Application +var ACN connectivity.ACN var Peer libPeer.CwtchPeer var CwtchDir string type AckId struct { - ID string - Ack bool + ID string + Ack bool Error bool } diff --git a/main.go b/main.go index eeb163ea..cf0e1980 100644 --- a/main.go +++ b/main.go @@ -111,8 +111,21 @@ func main() { gcd.SetThemeScale(1.0) } engine.RootContext().SetContextProperty("gcd", gcd) - engine.Load(qmlSource) + var androidCwtchActivity = gothings.NewAndroidCwtchActivity(nil) + engine.RootContext().SetContextProperty("androidCwtchActivity", androidCwtchActivity) + + engine.Load(qmlSource) + the.ACN = nil + go loadNetworkingAndFiles(gcd) + app.Exec() + + if the.ACN != nil { + the.ACN.Close() + } +} + +func loadNetworkingAndFiles(gcd *gothings.GrandCentralDispatcher) { if os.Getenv("CWTCH_FOLDER") != "" { the.CwtchDir = os.Getenv("CWTCH_FOLDER") } else if runtime.GOOS == "android" { @@ -145,17 +158,17 @@ func main() { torpath = path.Join(dir, "tor") } } - - acn, err := connectivity.StartTor(the.CwtchDir, torpath) + var err error + the.ACN, err = connectivity.StartTor(the.CwtchDir, torpath) if err != nil { log.Errorf("Could not start Tor: %v", err) os.Exit(1) } // these are long-lived pollers/listeners for incoming messages and status changes - loadCwtchData(gcd, acn) + loadCwtchData(gcd, the.ACN) go characters.IncomingListener(gcd.UIState.AddMessage, gcd.UIState.AddSendMessageError) - go characters.TorStatusPoller(gcd.TorStatus, acn) + go characters.TorStatusPoller(gcd.TorStatus, the.ACN) go characters.PresencePoller(gcd.UIState.GetContact, gcd.UIState.AddContact, gcd.UIState.UpdateContact) go characters.GroupPoller(gcd.UIState.GetContact, gcd.UIState.UpdateContact) @@ -165,9 +178,6 @@ func main() { if exists { gcd.SetLocale_helper(locale) } - - app.Exec() - acn.Close() } // this is mostly going to get factored out when we add profile support diff --git a/qml/overlays/ChatOverlay.qml b/qml/overlays/ChatOverlay.qml index 3b90577f..ac2986f4 100644 --- a/qml/overlays/ChatOverlay.qml +++ b/qml/overlays/ChatOverlay.qml @@ -77,6 +77,9 @@ ColumnLayout { // If the window is out of focus, alert the user (makes taskbar light up) windowItem.alert(0) + if (gcd.os == "android" && windowItem.activeFocusItem == null) { + androidCwtchActivity.notification = "New Content" + } } onPrependMessage: function(handle, from, displayName, message, image, mid, fromMe, ts, ackd, error) {