Change icon and dd button to the notification

This commit is contained in:
Alex Sytnyk 2018-09-07 15:34:03 +03:00
parent 956606e3f6
commit aecf98195c
5 changed files with 38 additions and 10 deletions

View file

@ -79,6 +79,12 @@ class TelegramApplication : Application(), OsmandHelperListener {
telegramHelper.close() telegramHelper.close()
} }
fun stopSharingLocation() {
settings.stopSharingLocationToChats()
shareLocationHelper.stopSharingLocation()
telegramHelper.stopSendingLiveLocationMessages()
}
fun isOsmAndInstalled() = AndroidUtils.isAppInstalled(this, settings.appToConnectPackage) fun isOsmAndInstalled() = AndroidUtils.isAppInstalled(this, settings.appToConnectPackage)
val isWifiConnected: Boolean val isWifiConnected: Boolean

View file

@ -1,5 +1,10 @@
package net.osmand.telegram.notifications package net.osmand.telegram.notifications
import android.app.PendingIntent
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.support.v4.app.NotificationCompat import android.support.v4.app.NotificationCompat
import android.support.v4.content.ContextCompat import android.support.v4.content.ContextCompat
import net.osmand.telegram.R import net.osmand.telegram.R
@ -8,9 +13,18 @@ import net.osmand.telegram.utils.OsmandFormatter
import net.osmand.util.Algorithms import net.osmand.util.Algorithms
private const val GROUP_NAME = "share_location" private const val GROUP_NAME = "share_location"
private const val DISABLE_SHARING_ACTION = "disable_sharing_action"
class LocationNotification(app: TelegramApplication) : TelegramNotification(app, GROUP_NAME) { class LocationNotification(app: TelegramApplication) : TelegramNotification(app, GROUP_NAME) {
init {
app.registerReceiver(object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
app.stopSharingLocation()
}
}, IntentFilter(DISABLE_SHARING_ACTION))
}
override val type: TelegramNotification.NotificationType override val type: TelegramNotification.NotificationType
get() = TelegramNotification.NotificationType.LOCATION get() = TelegramNotification.NotificationType.LOCATION
@ -39,11 +53,18 @@ class LocationNotification(app: TelegramApplication) : TelegramNotification(app,
if (shareLocationHelper.sharingLocation) { if (shareLocationHelper.sharingLocation) {
val sharedDistance = shareLocationHelper.distance.toFloat() val sharedDistance = shareLocationHelper.distance.toFloat()
color = ContextCompat.getColor(app, R.color.osmand_orange) color = ContextCompat.getColor(app, R.color.osmand_orange)
icon = R.drawable.ic_action_polygom_dark icon = R.drawable.ic_action_share_location
notificationTitle = (app.getString(R.string.sharing_location) + "" notificationTitle = (app.getString(R.string.sharing_location) + ""
+ Algorithms.formatDuration((shareLocationHelper.duration / 1000).toInt(), true)) + Algorithms.formatDuration((shareLocationHelper.duration / 1000).toInt(), true))
notificationText = (app.getString(R.string.shared_string_distance) notificationText = (app.getString(R.string.shared_string_distance)
+ ": " + OsmandFormatter.getFormattedDistance(sharedDistance, app)) + ": " + OsmandFormatter.getFormattedDistance(sharedDistance, app))
actionTextId = R.string.disable_all_sharing
actionIntent = PendingIntent.getBroadcast(
app,
0,
Intent(DISABLE_SHARING_ACTION),
PendingIntent.FLAG_UPDATE_CURRENT
)
} else { } else {
notificationTitle = app.getString(R.string.show_users_on_map) notificationTitle = app.getString(R.string.show_users_on_map)
notificationText = app.getString(R.string.active_chats) + ": " + app.settings.getShowOnMapChatsCount() notificationText = app.getString(R.string.active_chats) + ": " + app.settings.getShowOnMapChatsCount()

View file

@ -5,8 +5,8 @@ import android.app.PendingIntent
import android.content.Intent import android.content.Intent
import android.support.v4.app.NotificationCompat import android.support.v4.app.NotificationCompat
import android.support.v4.app.NotificationManagerCompat import android.support.v4.app.NotificationManagerCompat
import net.osmand.telegram.ui.MainActivity
import net.osmand.telegram.TelegramApplication import net.osmand.telegram.TelegramApplication
import net.osmand.telegram.ui.MainActivity
abstract class TelegramNotification(protected var app: TelegramApplication, val groupName: String) { abstract class TelegramNotification(protected var app: TelegramApplication, val groupName: String) {
@ -22,6 +22,10 @@ abstract class TelegramNotification(protected var app: TelegramApplication, val
protected var color: Int = 0 protected var color: Int = 0
protected var icon: Int = 0 protected var icon: Int = 0
protected var actionIconId: Int = 0
protected var actionTextId: Int = 0
protected var actionIntent: PendingIntent? = null
abstract val type: NotificationType abstract val type: NotificationType
abstract val telegramNotificationId: Int abstract val telegramNotificationId: Int
@ -59,6 +63,9 @@ abstract class TelegramNotification(protected var app: TelegramApplication, val
if (icon != 0) { if (icon != 0) {
builder.setSmallIcon(icon) builder.setSmallIcon(icon)
} }
if (actionTextId != 0 && actionIntent != null) {
builder.addAction(actionIconId, app.getString(actionTextId), actionIntent)
}
return builder return builder
} }

View file

@ -291,19 +291,13 @@ class MainActivity : AppCompatActivity(), TelegramListener, ActionButtonsListene
settings.removeNonexistingChats(presentChatTitles) settings.removeNonexistingChats(presentChatTitles)
} }
fun stopSharingLocation() {
settings.stopSharingLocationToChats()
app.shareLocationHelper.stopSharingLocation()
telegramHelper.stopSendingLiveLocationMessages()
}
fun stopShowingChatsOnMap(forceStop: Boolean) { fun stopShowingChatsOnMap(forceStop: Boolean) {
settings.getShowOnMapChats().forEach { app.showLocationHelper.hideChatMessages(it) } settings.getShowOnMapChats().forEach { app.showLocationHelper.hideChatMessages(it) }
app.showLocationHelper.stopShowingLocation(forceStop) app.showLocationHelper.stopShowingLocation(forceStop)
} }
private fun closeApp() { private fun closeApp() {
stopSharingLocation() app.stopSharingLocation()
stopShowingChatsOnMap(true) stopShowingChatsOnMap(true)
finish() finish()
android.os.Process.killProcess(android.os.Process.myPid()) android.os.Process.killProcess(android.os.Process.myPid())

View file

@ -225,7 +225,7 @@ class MyLocationTabFragment : Fragment(), TelegramListener {
} }
DisableSharingBottomSheet.SHARING_DISABLED_REQUEST_CODE -> { DisableSharingBottomSheet.SHARING_DISABLED_REQUEST_CODE -> {
sharingMode = false sharingMode = false
(activity as MainActivity).stopSharingLocation() app.stopSharingLocation()
updateContent() updateContent()
} }
} }