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

Improved toolbar

parent 4cf5fa57
No related branches found
No related tags found
No related merge requests found
...@@ -35,6 +35,7 @@ class ChatActivity : ServiceBoundActivity() { ...@@ -35,6 +35,7 @@ class ChatActivity : ServiceBoundActivity() {
private var contentMessages: MessageListFragment? = null private var contentMessages: MessageListFragment? = null
private var chatListFragment: BufferViewConfigFragment? = null private var chatListFragment: BufferViewConfigFragment? = null
private var nickListFragment: NickListFragment? = null private var nickListFragment: NickListFragment? = null
private var toolbarFragment: ToolbarFragment? = null
@BindView(R.id.drawerLayout) @BindView(R.id.drawerLayout)
lateinit var drawerLayout: DrawerLayout lateinit var drawerLayout: DrawerLayout
...@@ -82,12 +83,16 @@ class ChatActivity : ServiceBoundActivity() { ...@@ -82,12 +83,16 @@ class ChatActivity : ServiceBoundActivity() {
nickListFragment = supportFragmentManager.findFragmentById( nickListFragment = supportFragmentManager.findFragmentById(
R.id.nickListFragment R.id.nickListFragment
) as? NickListFragment ) as? NickListFragment
toolbarFragment = supportFragmentManager.findFragmentById(
R.id.toolbarFragment
) as? ToolbarFragment
setSupportActionBar(toolbar) setSupportActionBar(toolbar)
chatListFragment?.currentBuffer?.value = currentBuffer chatListFragment?.currentBuffer?.value = currentBuffer
nickListFragment?.currentBuffer?.value = currentBuffer nickListFragment?.currentBuffer?.value = currentBuffer
contentMessages?.currentBuffer?.value = currentBuffer contentMessages?.currentBuffer?.value = currentBuffer
toolbarFragment?.currentBuffer?.value = currentBuffer
chatListFragment?.clickListeners?.add { chatListFragment?.clickListeners?.add {
currentBuffer.value = it currentBuffer.value = it
......
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
...@@ -30,60 +30,12 @@ ...@@ -30,60 +30,12 @@
app:contentInsetStartWithNavigation="0dp" app:contentInsetStartWithNavigation="0dp"
app:popupTheme="@style/Widget.PopupOverlay"> app:popupTheme="@style/Widget.PopupOverlay">
<LinearLayout <fragment
android:id="@+id/toolbar_action_area" android:id="@+id/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"
android:background="?attr/selectableItemBackgroundBorderless" tools:layout="@layout/fragment_toolbar" />
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>
</android.support.v7.widget.Toolbar> </android.support.v7.widget.Toolbar>
......
<?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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment