From 9d8846e105904b31478ed19d3a34c0d62708abcf Mon Sep 17 00:00:00 2001 From: pacien Date: Tue, 7 Aug 2018 01:08:22 +0200 Subject: Revert "Rename source directory" This reverts commit dbba24e --- .../main/java/org/pacien/tincapp/intent/Actions.kt | 39 ++++++++++++++++++++++ .../org/pacien/tincapp/intent/BroadcastMapper.kt | 38 +++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 app/src/main/java/org/pacien/tincapp/intent/Actions.kt create mode 100644 app/src/main/java/org/pacien/tincapp/intent/BroadcastMapper.kt (limited to 'app/src/main/java/org/pacien/tincapp/intent') diff --git a/app/src/main/java/org/pacien/tincapp/intent/Actions.kt b/app/src/main/java/org/pacien/tincapp/intent/Actions.kt new file mode 100644 index 0000000..85cfd29 --- /dev/null +++ b/app/src/main/java/org/pacien/tincapp/intent/Actions.kt @@ -0,0 +1,39 @@ +/* + * Tinc App, an Android binding and user interface for the tinc mesh VPN daemon + * Copyright (C) 2017-2018 Pacien TRAN-GIRARD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.pacien.tincapp.intent + +import android.net.Uri +import org.pacien.tincapp.BuildConfig + +/** + * @author pacien + */ +object Actions { + const val PREFIX = "${BuildConfig.APPLICATION_ID}.intent.action" + const val ACTION_CONNECT = "$PREFIX.CONNECT" + const val ACTION_DISCONNECT = "$PREFIX.DISCONNECT" + const val ACTION_SYSTEM_CONNECT = "android.net.VpnService" + const val EVENT_CONNECTED = "$PREFIX.CONNECTED" + const val EVENT_DISCONNECTED = "$PREFIX.DISCONNECTED" + const val EVENT_ABORTED = "$PREFIX.ABORTED" + const val TINC_SCHEME = "tinc" + + fun buildNetworkUri(netName: String, passphrase: String? = null): Uri = + Uri.Builder().scheme(Actions.TINC_SCHEME).opaquePart(netName).fragment(passphrase).build() +} diff --git a/app/src/main/java/org/pacien/tincapp/intent/BroadcastMapper.kt b/app/src/main/java/org/pacien/tincapp/intent/BroadcastMapper.kt new file mode 100644 index 0000000..f581c99 --- /dev/null +++ b/app/src/main/java/org/pacien/tincapp/intent/BroadcastMapper.kt @@ -0,0 +1,38 @@ +/* + * Tinc App, an Android binding and user interface for the tinc mesh VPN daemon + * Copyright (C) 2017-2018 Pacien TRAN-GIRARD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.pacien.tincapp.intent + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.support.v4.content.LocalBroadcastManager +import org.pacien.tincapp.context.App + +/** + * @author pacien + */ +class BroadcastMapper(private val actionHandlers: Map Unit>) : BroadcastReceiver() { + private val broadcastManager = LocalBroadcastManager.getInstance(App.getContext()) + private val intentFilter = actionHandlers.keys.fold(IntentFilter()) { filter, action -> filter.apply { addAction(action) } } + + fun register() = broadcastManager.registerReceiver(this, intentFilter) + fun unregister() = broadcastManager.unregisterReceiver(this) + override fun onReceive(context: Context?, intent: Intent?) = actionHandlers[intent?.action]?.invoke() ?: Unit +} -- cgit v1.2.3