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

Improved editor

- properly handle keyboard events
parent 1275a9d7
No related branches found
No related tags found
No related merge requests found
...@@ -13,8 +13,6 @@ import android.support.v7.widget.Toolbar ...@@ -13,8 +13,6 @@ import android.support.v7.widget.Toolbar
import android.view.Gravity import android.view.Gravity
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.widget.Button
import android.widget.EditText
import butterknife.BindView import butterknife.BindView
import butterknife.ButterKnife import butterknife.ButterKnife
import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.MaterialDialog
...@@ -46,12 +44,6 @@ class ChatActivity : ServiceBoundActivity() { ...@@ -46,12 +44,6 @@ class ChatActivity : ServiceBoundActivity() {
@BindView(R.id.progressBar) @BindView(R.id.progressBar)
lateinit var progressBar: MaterialContentLoadingProgressBar lateinit var progressBar: MaterialContentLoadingProgressBar
@BindView(R.id.buttonSend)
lateinit var buttonSend: Button
@BindView(R.id.input)
lateinit var input: EditText
private lateinit var drawerToggle: ActionBarDrawerToggle private lateinit var drawerToggle: ActionBarDrawerToggle
private val handler = AndroidHandlerThread("Chat") private val handler = AndroidHandlerThread("Chat")
...@@ -120,17 +112,6 @@ class ChatActivity : ServiceBoundActivity() { ...@@ -120,17 +112,6 @@ class ChatActivity : ServiceBoundActivity() {
} }
) )
buttonSend.setOnClickListener {
viewModel.session { session ->
viewModel.getBuffer().let { bufferId ->
session.bufferSyncer?.bufferInfo(bufferId)?.also { bufferInfo ->
session.rpcHandler?.sendInput(bufferInfo, input.text.toString())
}
}
}
input.text.clear()
}
viewModel.connectionState.observe( viewModel.connectionState.observe(
this, Observer { this, Observer {
val status = it ?: ConnectionState.DISCONNECTED val status = it ?: ConnectionState.DISCONNECTED
...@@ -148,7 +129,7 @@ class ChatActivity : ServiceBoundActivity() { ...@@ -148,7 +129,7 @@ class ChatActivity : ServiceBoundActivity() {
snackbar?.dismiss() snackbar?.dismiss()
snackbar = Snackbar.make( snackbar = Snackbar.make(
findViewById(R.id.contentMessages), findViewById(R.id.toolbar),
status.name, status.name,
Snackbar.LENGTH_SHORT Snackbar.LENGTH_SHORT
) )
......
package de.kuschku.quasseldroid_ng.ui.chat
import android.arch.lifecycle.ViewModelProviders
import android.os.Bundle
import android.view.KeyEvent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import android.widget.ImageButton
import butterknife.BindView
import butterknife.ButterKnife
import de.kuschku.quasseldroid_ng.R
import de.kuschku.quasseldroid_ng.ui.settings.Settings
import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings
import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel
import de.kuschku.quasseldroid_ng.util.helper.invoke
import de.kuschku.quasseldroid_ng.util.helper.let
import de.kuschku.quasseldroid_ng.util.irc.format.IrcFormatSerializer
import de.kuschku.quasseldroid_ng.util.service.ServiceBoundFragment
class EditorFragment : ServiceBoundFragment() {
@BindView(R.id.send)
lateinit var send: ImageButton
@BindView(R.id.chatline)
lateinit var chatline: EditText
private lateinit var viewModel: QuasselViewModel
private var ircFormatSerializer: IrcFormatSerializer? = null
private lateinit var appearanceSettings: AppearanceSettings
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProviders.of(activity!!)[QuasselViewModel::class.java]
appearanceSettings = Settings.appearance(activity!!)
if (ircFormatSerializer == null) {
ircFormatSerializer = IrcFormatSerializer(context!!)
}
}
override fun onCreateView(inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_editor, container, false)
ButterKnife.bind(this, view)
send.setOnClickListener {
send()
}
chatline.setOnKeyListener { _, keyCode, event ->
if (event.hasNoModifiers() && (keyCode == KeyEvent.KEYCODE_ENTER || keyCode == KeyEvent.KEYCODE_NUMPAD_ENTER)) {
send()
}
false
}
return view
}
fun send() {
viewModel.session { session ->
viewModel.getBuffer().let { bufferId ->
session.bufferSyncer?.bufferInfo(bufferId)?.also { bufferInfo ->
session.rpcHandler?.sendInput(bufferInfo, chatline.text.toString())
}
}
}
chatline.text.clear()
}
}
\ No newline at end of file
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
app:popupTheme="@style/Widget.PopupOverlay"> app:popupTheme="@style/Widget.PopupOverlay">
<fragment <fragment
android:id="@+id/toolbarFragment" android:id="@+id/fragment_toolbar"
android:name="de.kuschku.quasseldroid_ng.ui.chat.ToolbarFragment" android:name="de.kuschku.quasseldroid_ng.ui.chat.ToolbarFragment"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
...@@ -53,43 +53,24 @@ ...@@ -53,43 +53,24 @@
</android.support.design.widget.AppBarLayout> </android.support.design.widget.AppBarLayout>
<fragment <fragment
android:id="@+id/contentMessages" android:id="@+id/fragment_messages"
android:name="de.kuschku.quasseldroid_ng.ui.chat.messages.MessageListFragment" android:name="de.kuschku.quasseldroid_ng.ui.chat.messages.MessageListFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dip" android:layout_height="0dip"
android:layout_weight="1" android:layout_weight="1"
tools:layout="@layout/fragment_messages" /> tools:layout="@layout/fragment_messages" />
<android.support.v7.widget.CardView <fragment
android:id="@+id/fragment_editor"
android:name="de.kuschku.quasseldroid_ng.ui.chat.EditorFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?colorBackgroundCard" tools:layout="@layout/fragment_editor" />
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="?actionBarSize">
<EditText
android:id="@+id/input"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_weight="1" />
<Button
android:id="@+id/buttonSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="Send" />
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout> </LinearLayout>
<fragment <fragment
android:id="@+id/nickListFragment" android:id="@+id/fragment_nick_list"
android:name="de.kuschku.quasseldroid_ng.ui.chat.NickListFragment" android:name="de.kuschku.quasseldroid_ng.ui.chat.NickListFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
...@@ -105,7 +86,7 @@ ...@@ -105,7 +86,7 @@
app:insetForeground="?attr/colorPrimaryDark"> app:insetForeground="?attr/colorPrimaryDark">
<fragment <fragment
android:id="@+id/chatListFragment" android:id="@+id/fragment_chat_list"
android:name="de.kuschku.quasseldroid_ng.ui.chat.buffers.BufferViewConfigFragment" android:name="de.kuschku.quasseldroid_ng.ui.chat.buffers.BufferViewConfigFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?colorBackgroundCard"
android:elevation="4dp"
tools:showIn="@layout/activity_main">
<android.support.v7.widget.AppCompatEditText
android:id="@+id/chatline"
android:layout_width="0dip"
android:layout_height="?attr/actionBarSize"
android:layout_weight="1"
android:background="@android:color/transparent"
android:gravity="top"
android:hint="@string/label_placeholder"
android:inputType="textCapSentences|textShortMessage|textAutoCorrect"
android:paddingBottom="17dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="17dp"
android:textColor="?attr/colorForeground"
android:textSize="16sp" />
<android.support.v7.widget.AppCompatImageButton
android:id="@+id/send"
style="?attr/buttonStyleSmall"
android:layout_width="?attr/actionBarSize"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="top"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="12dp"
android:scaleType="fitXY"
android:tint="?attr/colorAccent"
app:srcCompat="@drawable/ic_send" />
</LinearLayout>
\ No newline at end of file
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
<string name="label_drawer_close">Close</string> <string name="label_drawer_close">Close</string>
<string name="label_drawer_open">Open</string> <string name="label_drawer_open">Open</string>
<string name="label_filter_messages">Filter Messages</string> <string name="label_filter_messages">Filter Messages</string>
<string name="label_placeholder">Write a message…</string>
<string name="label_save">Save</string> <string name="label_save">Save</string>
<string name="label_select_multiple">Select</string> <string name="label_select_multiple">Select</string>
<string name="label_settings">Settings</string> <string name="label_settings">Settings</string>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment