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 1b4b2d5c46c66a946f54cbae7b747d98b902b8e9..22e282891e76ba677213fc2d41c54e70ac621dab 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 @@ -35,6 +35,7 @@ class ChatActivity : ServiceBoundActivity() { private var contentMessages: MessageListFragment? = null private var chatListFragment: BufferViewConfigFragment? = null private var nickListFragment: NickListFragment? = null + private var toolbarFragment: ToolbarFragment? = null @BindView(R.id.drawerLayout) lateinit var drawerLayout: DrawerLayout @@ -82,12 +83,16 @@ class ChatActivity : ServiceBoundActivity() { nickListFragment = supportFragmentManager.findFragmentById( R.id.nickListFragment ) as? NickListFragment + toolbarFragment = supportFragmentManager.findFragmentById( + R.id.toolbarFragment + ) as? ToolbarFragment setSupportActionBar(toolbar) chatListFragment?.currentBuffer?.value = currentBuffer nickListFragment?.currentBuffer?.value = currentBuffer contentMessages?.currentBuffer?.value = currentBuffer + toolbarFragment?.currentBuffer?.value = currentBuffer chatListFragment?.clickListeners?.add { currentBuffer.value = it diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt new file mode 100644 index 0000000000000000000000000000000000000000..1423c78ad4eda8e08d52513bcbfecac352db76bb --- /dev/null +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt @@ -0,0 +1,73 @@ +package de.kuschku.quasseldroid_ng.ui.chat + +import android.arch.lifecycle.LiveData +import android.arch.lifecycle.MutableLiveData +import android.arch.lifecycle.Observer +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import butterknife.BindView +import butterknife.ButterKnife +import de.kuschku.libquassel.protocol.BufferId +import de.kuschku.libquassel.quassel.BufferInfo +import de.kuschku.libquassel.session.Backend +import de.kuschku.libquassel.session.SessionManager +import de.kuschku.quasseldroid_ng.R +import de.kuschku.quasseldroid_ng.util.helper.map +import de.kuschku.quasseldroid_ng.util.helper.switchMap +import de.kuschku.quasseldroid_ng.util.helper.switchMapRx +import de.kuschku.quasseldroid_ng.util.helper.visibleIf +import de.kuschku.quasseldroid_ng.util.service.ServiceBoundFragment + +class ToolbarFragment : ServiceBoundFragment() { + @BindView(R.id.toolbar_title) + lateinit var toolbarTitle: TextView + + @BindView(R.id.toolbar_subtitle) + lateinit var toolbarSubtitle: TextView + + val currentBuffer: MutableLiveData<LiveData<BufferId?>?> = MutableLiveData() + val buffer = currentBuffer.switchMap { it } + + private val sessionManager: LiveData<SessionManager?> + = backend.map(Backend::sessionManager) + + private val currentBufferInfo: LiveData<BufferInfo?> + = sessionManager.switchMapRx(SessionManager::session).switchMap { session -> + buffer.switchMapRx { + session.bufferSyncer?.liveBufferInfo(it) + } + } + + var title: CharSequence + get() = toolbarTitle.text + set(value) { + toolbarTitle.text = value + } + + var subtitle: CharSequence + get() = toolbarTitle.text + set(value) { + toolbarSubtitle.text = value + toolbarSubtitle.visibleIf(value.isNotEmpty()) + } + + override fun onCreateView(inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle?): View? { + val view = inflater.inflate(R.layout.fragment_toolbar, container, false) + ButterKnife.bind(this, view) + + currentBufferInfo.observe( + this, Observer { + title = it?.bufferName ?: resources.getString( + R.string.app_name + ) + } + ) + + return view + } +} \ 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 4ba82b1eb0bebe90ed98e37824fdcc6e27fb206a..0d1864a8e0eba64a55ca92f6aa494794ba9b48e3 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -30,60 +30,12 @@ app:contentInsetStartWithNavigation="0dp" app:popupTheme="@style/Widget.PopupOverlay"> - <LinearLayout - android:id="@+id/toolbar_action_area" + <fragment + android:id="@+id/toolbarFragment" + android:name="de.kuschku.quasseldroid_ng.ui.chat.ToolbarFragment" android:layout_width="fill_parent" android:layout_height="fill_parent" - android:background="?attr/selectableItemBackgroundBorderless" - android:clickable="true" - android:focusable="true" - android:focusableInTouchMode="false" - android:gravity="center_vertical|start" - android:minHeight="?attr/actionBarSize" - android:orientation="vertical"> - - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center_vertical" - android:layout_marginTop="-2dp" - android:baselineAligned="false" - android:gravity="center_vertical"> - - <TextView - android:id="@+id/key" - style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title" - android:layout_width="16dp" - android:layout_height="16dp" - android:layout_marginEnd="2dp" - android:layout_marginRight="2dp" - android:layout_marginTop="2dp" - android:gravity="center" - android:textSize="16sp" - android:visibility="gone" /> - - <TextView - android:id="@+id/toolbar_title" - style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:ellipsize="end" - android:gravity="center_vertical" - android:singleLine="true" - android:text="@string/app_name" /> - - </LinearLayout> - - <TextView - android:id="@+id/toolbar_subtitle" - style="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="-3dp" - android:ellipsize="end" - android:singleLine="true" - android:visibility="gone" /> - </LinearLayout> + tools:layout="@layout/fragment_toolbar" /> </android.support.v7.widget.Toolbar> diff --git a/app/src/main/res/layout/fragment_toolbar.xml b/app/src/main/res/layout/fragment_toolbar.xml new file mode 100644 index 0000000000000000000000000000000000000000..6a2d724136b56e93bf09cff79b8275f274cd94c1 --- /dev/null +++ b/app/src/main/res/layout/fragment_toolbar.xml @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/toolbar_action_area" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:background="?attr/selectableItemBackgroundBorderless" + android:clickable="true" + android:focusable="true" + android:focusableInTouchMode="false" + android:gravity="center_vertical|start" + android:minHeight="?attr/actionBarSize" + android:orientation="vertical" + android:theme="?attr/actionBarTheme" + tools:showIn="@layout/activity_main" + tools:theme="@style/Widget.AppBarOverlay"> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:layout_marginTop="-2dp" + android:baselineAligned="false" + android:gravity="center_vertical"> + + <TextView + android:id="@+id/key" + style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title" + android:layout_width="16dp" + android:layout_height="16dp" + android:layout_marginEnd="2dp" + android:layout_marginRight="2dp" + android:layout_marginTop="2dp" + android:gravity="center" + android:textSize="16sp" + android:visibility="gone" /> + + <TextView + android:id="@+id/toolbar_title" + style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:ellipsize="end" + android:gravity="center_vertical" + android:singleLine="true" + android:text="@string/app_name" /> + + </LinearLayout> + + <TextView + android:id="@+id/toolbar_subtitle" + style="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="-3dp" + android:ellipsize="end" + android:singleLine="true" + android:visibility="gone" /> +</LinearLayout> \ No newline at end of file