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
import android.view.Gravity
import android.view.Menu
import android.view.MenuItem
import android.widget.Button
import android.widget.EditText
import butterknife.BindView
import butterknife.ButterKnife
import com.afollestad.materialdialogs.MaterialDialog
......@@ -46,12 +44,6 @@ class ChatActivity : ServiceBoundActivity() {
@BindView(R.id.progressBar)
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 val handler = AndroidHandlerThread("Chat")
......@@ -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(
this, Observer {
val status = it ?: ConnectionState.DISCONNECTED
......@@ -148,7 +129,7 @@ class ChatActivity : ServiceBoundActivity() {
snackbar?.dismiss()
snackbar = Snackbar.make(
findViewById(R.id.contentMessages),
findViewById(R.id.toolbar),
status.name,
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 @@
app:popupTheme="@style/Widget.PopupOverlay">
<fragment
android:id="@+id/toolbarFragment"
android:id="@+id/fragment_toolbar"
android:name="de.kuschku.quasseldroid_ng.ui.chat.ToolbarFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
......@@ -53,43 +53,24 @@
</android.support.design.widget.AppBarLayout>
<fragment
android:id="@+id/contentMessages"
android:id="@+id/fragment_messages"
android:name="de.kuschku.quasseldroid_ng.ui.chat.messages.MessageListFragment"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
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_height="wrap_content"
android:background="?colorBackgroundCard"
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>
tools:layout="@layout/fragment_editor" />
</LinearLayout>
<fragment
android:id="@+id/nickListFragment"
android:id="@+id/fragment_nick_list"
android:name="de.kuschku.quasseldroid_ng.ui.chat.NickListFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
......@@ -105,7 +86,7 @@
app:insetForeground="?attr/colorPrimaryDark">
<fragment
android:id="@+id/chatListFragment"
android:id="@+id/fragment_chat_list"
android:name="de.kuschku.quasseldroid_ng.ui.chat.buffers.BufferViewConfigFragment"
android:layout_width="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 @@
<string name="label_drawer_close">Close</string>
<string name="label_drawer_open">Open</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_select_multiple">Select</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