diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt index 471a9054e9c4a38c298dda689f585f80a9630242..b624fcdff6b18157c13205d636e9d193614a6c30 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt @@ -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 ) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/EditorFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/EditorFragment.kt new file mode 100644 index 0000000000000000000000000000000000000000..75cade9ace28ccb0d61bf652cd0d5a5f56ccdab7 --- /dev/null +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/EditorFragment.kt @@ -0,0 +1,78 @@ +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 diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 076e9706c5fe5d02e1f76218a4eef174a8ad151f..5ab133c09f289c5411d8dd41141732169e836b7e 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -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" diff --git a/app/src/main/res/layout/fragment_editor.xml b/app/src/main/res/layout/fragment_editor.xml new file mode 100644 index 0000000000000000000000000000000000000000..de98aaac6f19b1de8c9b5a0f74c8fc25c671c449 --- /dev/null +++ b/app/src/main/res/layout/fragment_editor.xml @@ -0,0 +1,38 @@ +<?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 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5012780a94e664a56c95866e80a9412f48fd3993..9e5efd640576cf9ee0134048af3d1289b6cf1f79 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -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>