Skip to content
Snippets Groups Projects
Commit bedb39cd authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Implement sharing of links and plain text

parent c0514653
No related branches found
No related tags found
No related merge requests found
......@@ -14,10 +14,23 @@
android:theme="@style/Theme.SplashTheme">
<activity
android:name=".ui.chat.ChatActivity"
android:exported="false"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleInstance"
android:windowSoftInputMode="adjustResize" />
android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
<activity
android:name=".ui.setup.accounts.AccountSetupActivity"
android:exported="false"
......@@ -38,16 +51,9 @@
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".ui.setup.accounts.AccountSelectionActivity"
android:exported="true"
android:exported="false"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
android:windowSoftInputMode="adjustResize" />
<service
android:name=".service.QuasselService"
......
package de.kuschku.quasseldroid_ng.ui.chat
import android.annotation.TargetApi
import android.app.Activity
import android.arch.lifecycle.Observer
import android.arch.lifecycle.ViewModelProviders
import android.content.Context
......@@ -39,6 +38,7 @@ import de.kuschku.quasseldroid_ng.settings.AppearanceSettings
import de.kuschku.quasseldroid_ng.settings.BacklogSettings
import de.kuschku.quasseldroid_ng.settings.Settings
import de.kuschku.quasseldroid_ng.ui.settings.SettingsActivity
import de.kuschku.quasseldroid_ng.ui.setup.accounts.AccountSelectionActivity
import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel
import de.kuschku.quasseldroid_ng.util.AndroidHandlerThread
import de.kuschku.quasseldroid_ng.util.helper.*
......@@ -123,6 +123,17 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) = Unit
}
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
if (intent != null) {
when {
intent.type == "text/plain" -> {
inputEditor.share(intent.getStringExtra(Intent.EXTRA_TEXT))
}
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
handler.onCreate()
super.onCreate(savedInstanceState)
......@@ -385,8 +396,10 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
putBoolean(Keys.Status.reconnect, false)
}
}
setResult(Activity.RESULT_OK)
finish()
val intent = Intent(this, AccountSelectionActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
startActivityForResult(intent, REQUEST_SELECT_ACCOUNT)
}
true
}
......
......@@ -222,4 +222,9 @@ class InputEditor(private val editText: EditText) {
editText.setSelection(editText.text.length)
}
}
fun share(text: CharSequence?) {
editText.setText(text)
editText.setSelection(editText.text.length)
}
}
\ No newline at end of file
......@@ -2,19 +2,16 @@ package de.kuschku.quasseldroid_ng.ui.setup.accounts
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import de.kuschku.quasseldroid_ng.Keys
import de.kuschku.quasseldroid_ng.ui.chat.ChatActivity
import de.kuschku.quasseldroid_ng.ui.setup.SetupActivity
import de.kuschku.quasseldroid_ng.util.helper.editApply
import de.kuschku.quasseldroid_ng.util.helper.editCommit
class AccountSelectionActivity : SetupActivity() {
companion object {
const val REQUEST_CHAT = 0
const val REQUEST_CREATE_FIRST = 1
const val REQUEST_CREATE_NEW = 2
const val REQUEST_CREATE_FIRST = 0
const val REQUEST_CREATE_NEW = 1
}
override val fragments = listOf(
......@@ -23,13 +20,12 @@ class AccountSelectionActivity : SetupActivity() {
private lateinit var statusPreferences: SharedPreferences
override fun onDone(data: Bundle) {
statusPreferences.editApply {
statusPreferences.editCommit {
putLong(Keys.Status.selectedAccount, data.getLong(Keys.Status.selectedAccount, -1))
putBoolean(Keys.Status.reconnect, true)
}
val intent = Intent(this, ChatActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
startActivityForResult(intent, REQUEST_CHAT)
setResult(Activity.RESULT_OK)
finish()
}
override fun onCreate(savedInstanceState: Bundle?) {
......@@ -39,18 +35,5 @@ class AccountSelectionActivity : SetupActivity() {
val selectedAccount = statusPreferences.getLong(Keys.Status.selectedAccount, -1)
data.putLong(Keys.Status.selectedAccount, selectedAccount)
setInitData(data)
if (statusPreferences.getBoolean(Keys.Status.reconnect, false) && selectedAccount != -1L) {
val intent = Intent(this, ChatActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
startActivityForResult(intent, REQUEST_CHAT)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CHAT && resultCode == Activity.RESULT_CANCELED) {
finish()
}
}
}
......@@ -3,6 +3,7 @@ package de.kuschku.quasseldroid_ng.util.service
import android.app.Activity
import android.arch.lifecycle.LiveData
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import android.support.annotation.ColorRes
......@@ -14,6 +15,7 @@ import de.kuschku.quasseldroid_ng.R
import de.kuschku.quasseldroid_ng.settings.AppearanceSettings
import de.kuschku.quasseldroid_ng.settings.ConnectionSettings
import de.kuschku.quasseldroid_ng.settings.Settings
import de.kuschku.quasseldroid_ng.ui.setup.accounts.AccountSelectionActivity
import de.kuschku.quasseldroid_ng.util.helper.sharedPreferences
import de.kuschku.quasseldroid_ng.util.helper.updateRecentsHeaderIfExisting
......@@ -32,17 +34,18 @@ abstract class ServiceBoundActivity : AppCompatActivity(),
protected lateinit var connectionSettings: ConnectionSettings
protected var accountId: Long = -1
private var startedSelection = false
override fun onCreate(savedInstanceState: Bundle?) {
connection.context = this
appearanceSettings = Settings.appearance(this)
connectionSettings = Settings.connection(this)
accountId = getSharedPreferences(Keys.Status.NAME, Context.MODE_PRIVATE)
?.getLong(Keys.Status.selectedAccount, -1) ?: -1
checkConnection()
setTheme(appearanceSettings.theme.style)
super.onCreate(savedInstanceState)
connection.start()
updateRecentsHeader()
}
......@@ -79,16 +82,41 @@ abstract class ServiceBoundActivity : AppCompatActivity(),
}
private fun checkConnection() {
accountId = getSharedPreferences(Keys.Status.NAME, Context.MODE_PRIVATE)
?.getLong(Keys.Status.selectedAccount, -1) ?: -1
if (!sharedPreferences(Keys.Status.NAME, Context.MODE_PRIVATE) {
getBoolean(Keys.Status.reconnect, false)
}) {
setResult(Activity.RESULT_OK)
} || accountId == -1L) {
if (!startedSelection) {
startActivityForResult(
Intent(this, AccountSelectionActivity::class.java), REQUEST_SELECT_ACCOUNT
)
startedSelection = true
}
} else {
connection.start()
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_SELECT_ACCOUNT) {
startedSelection = false
if (resultCode == Activity.RESULT_CANCELED) {
finish()
}
}
}
protected fun stopService() {
connection.unbind()
connection.stop()
}
companion object {
const val REQUEST_SELECT_ACCOUNT = 0
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment