parent
							
								
									0db1b7c143
								
							
						
					
					
						commit
						dbd3c733ba
					
				@ -0,0 +1,89 @@ | 
				
			||||
package io.legado.app.ui.book.arrange | 
				
			||||
 | 
				
			||||
import android.content.Context | 
				
			||||
import android.os.Bundle | 
				
			||||
import android.view.View | 
				
			||||
import android.view.ViewGroup | 
				
			||||
import androidx.appcompat.widget.SearchView | 
				
			||||
import androidx.recyclerview.widget.LinearLayoutManager | 
				
			||||
import io.legado.app.R | 
				
			||||
import io.legado.app.base.BaseDialogFragment | 
				
			||||
import io.legado.app.base.adapter.ItemViewHolder | 
				
			||||
import io.legado.app.base.adapter.RecyclerAdapter | 
				
			||||
import io.legado.app.data.entities.BookSource | 
				
			||||
import io.legado.app.databinding.DialogSourcePickerBinding | 
				
			||||
import io.legado.app.databinding.ItemTextBinding | 
				
			||||
import io.legado.app.lib.theme.primaryColor | 
				
			||||
import io.legado.app.lib.theme.primaryTextColor | 
				
			||||
import io.legado.app.utils.applyTint | 
				
			||||
import io.legado.app.utils.dpToPx | 
				
			||||
import io.legado.app.utils.setLayout | 
				
			||||
import io.legado.app.utils.viewbindingdelegate.viewBinding | 
				
			||||
import splitties.views.rightPadding | 
				
			||||
 | 
				
			||||
class SourcePickerDialog : BaseDialogFragment(R.layout.dialog_source_picker) { | 
				
			||||
 | 
				
			||||
    private val binding by viewBinding(DialogSourcePickerBinding::bind) | 
				
			||||
    private val searchView: SearchView by lazy { | 
				
			||||
        binding.toolBar.findViewById(R.id.search_view) | 
				
			||||
    } | 
				
			||||
    private val adapter by lazy { | 
				
			||||
        SourceAdapter(requireContext()) | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    override fun onStart() { | 
				
			||||
        super.onStart() | 
				
			||||
        setLayout(1f, ViewGroup.LayoutParams.MATCH_PARENT) | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { | 
				
			||||
        initView() | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    private fun initView() { | 
				
			||||
        binding.toolBar.setBackgroundColor(primaryColor) | 
				
			||||
        binding.toolBar.title = "选择书源" | 
				
			||||
        binding.toolBar.rightPadding = 16.dpToPx() | 
				
			||||
        binding.recyclerView.layoutManager = LinearLayoutManager(requireContext()) | 
				
			||||
        binding.recyclerView.adapter = adapter | 
				
			||||
        searchView.applyTint(primaryTextColor) | 
				
			||||
        searchView.onActionViewExpanded() | 
				
			||||
        searchView.isSubmitButtonEnabled = true | 
				
			||||
        searchView.queryHint = getString(R.string.search_book_source) | 
				
			||||
        searchView.clearFocus() | 
				
			||||
        searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { | 
				
			||||
            override fun onQueryTextSubmit(query: String?): Boolean { | 
				
			||||
                return false | 
				
			||||
            } | 
				
			||||
 | 
				
			||||
            override fun onQueryTextChange(newText: String?): Boolean { | 
				
			||||
 | 
				
			||||
                return false | 
				
			||||
            } | 
				
			||||
        }) | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
 | 
				
			||||
    inner class SourceAdapter(context: Context) : | 
				
			||||
        RecyclerAdapter<BookSource, ItemTextBinding>(context) { | 
				
			||||
 | 
				
			||||
        override fun getViewBinding(parent: ViewGroup): ItemTextBinding { | 
				
			||||
            return ItemTextBinding.inflate(inflater, parent, false) | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        override fun convert( | 
				
			||||
            holder: ItemViewHolder, | 
				
			||||
            binding: ItemTextBinding, | 
				
			||||
            item: BookSource, | 
				
			||||
            payloads: MutableList<Any> | 
				
			||||
        ) { | 
				
			||||
            binding.textView.text = item.getDisPlayNameGroup() | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        override fun registerListener(holder: ItemViewHolder, binding: ItemTextBinding) { | 
				
			||||
 | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -0,0 +1,98 @@ | 
				
			||||
<?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="match_parent" | 
				
			||||
    android:orientation="vertical"> | 
				
			||||
 | 
				
			||||
    <io.legado.app.ui.widget.TitleBar | 
				
			||||
        android:id="@+id/tool_bar" | 
				
			||||
        android:layout_width="match_parent" | 
				
			||||
        android:layout_height="wrap_content" | 
				
			||||
        android:theme="?attr/actionBarStyle" | 
				
			||||
        app:attachToActivity="false" | 
				
			||||
        app:contentLayout="@layout/view_search" | 
				
			||||
        app:fitStatusBar="false" | 
				
			||||
        app:popupTheme="@style/AppTheme.PopupOverlay" | 
				
			||||
        app:titleTextAppearance="@style/ToolbarTitle" /> | 
				
			||||
 | 
				
			||||
    <FrameLayout | 
				
			||||
        android:layout_width="match_parent" | 
				
			||||
        android:layout_height="0dp" | 
				
			||||
        android:layout_weight="1"> | 
				
			||||
 | 
				
			||||
        <io.legado.app.ui.widget.recycler.scroller.FastScrollRecyclerView | 
				
			||||
            android:id="@+id/recycler_view" | 
				
			||||
            android:layout_width="match_parent" | 
				
			||||
            android:layout_height="match_parent" | 
				
			||||
            android:scrollbars="none" | 
				
			||||
            tools:ignore="SpeakableTextPresentCheck" /> | 
				
			||||
 | 
				
			||||
        <io.legado.app.ui.widget.anima.RotateLoading | 
				
			||||
            android:id="@+id/rotate_loading" | 
				
			||||
            android:layout_width="36dp" | 
				
			||||
            android:layout_height="36dp" | 
				
			||||
            android:layout_gravity="center" | 
				
			||||
            android:layout_margin="6dp" | 
				
			||||
            android:visibility="gone" | 
				
			||||
            app:loading_width="2dp" /> | 
				
			||||
 | 
				
			||||
        <TextView | 
				
			||||
            android:id="@+id/tv_msg" | 
				
			||||
            android:layout_width="match_parent" | 
				
			||||
            android:layout_height="wrap_content" | 
				
			||||
            android:layout_gravity="center" | 
				
			||||
            android:padding="16dp" | 
				
			||||
            android:textColor="@color/secondaryText" | 
				
			||||
            android:visibility="gone" /> | 
				
			||||
 | 
				
			||||
    </FrameLayout> | 
				
			||||
 | 
				
			||||
    <com.google.android.flexbox.FlexboxLayout | 
				
			||||
        android:layout_width="match_parent" | 
				
			||||
        android:layout_height="wrap_content" | 
				
			||||
        android:paddingLeft="12dp" | 
				
			||||
        android:paddingRight="12dp" | 
				
			||||
        app:flexWrap="wrap" | 
				
			||||
        app:justifyContent="space_between"> | 
				
			||||
 | 
				
			||||
        <io.legado.app.ui.widget.text.AccentTextView | 
				
			||||
            android:id="@+id/tv_footer_left" | 
				
			||||
            android:layout_width="wrap_content" | 
				
			||||
            android:layout_height="wrap_content" | 
				
			||||
            android:padding="12dp" | 
				
			||||
            android:visibility="gone" | 
				
			||||
            tools:ignore="RtlHardcoded" /> | 
				
			||||
 | 
				
			||||
        <Space | 
				
			||||
            android:layout_width="0dp" | 
				
			||||
            android:layout_height="0dp" /> | 
				
			||||
 | 
				
			||||
        <LinearLayout | 
				
			||||
            android:layout_width="wrap_content" | 
				
			||||
            android:layout_height="wrap_content" | 
				
			||||
            android:orientation="horizontal"> | 
				
			||||
 | 
				
			||||
            <io.legado.app.ui.widget.text.AccentTextView | 
				
			||||
                android:id="@+id/tv_cancel" | 
				
			||||
                android:layout_width="wrap_content" | 
				
			||||
                android:layout_height="wrap_content" | 
				
			||||
                android:padding="12dp" | 
				
			||||
                android:text="@string/cancel" | 
				
			||||
                android:visibility="gone" | 
				
			||||
                tools:ignore="RtlHardcoded" /> | 
				
			||||
 | 
				
			||||
            <io.legado.app.ui.widget.text.AccentTextView | 
				
			||||
                android:id="@+id/tv_ok" | 
				
			||||
                android:layout_width="wrap_content" | 
				
			||||
                android:layout_height="wrap_content" | 
				
			||||
                android:padding="12dp" | 
				
			||||
                android:text="@string/ok" | 
				
			||||
                android:visibility="gone" | 
				
			||||
                tools:ignore="RtlHardcoded" /> | 
				
			||||
 | 
				
			||||
        </LinearLayout> | 
				
			||||
 | 
				
			||||
    </com.google.android.flexbox.FlexboxLayout> | 
				
			||||
</LinearLayout> | 
				
			||||
					Loading…
					
					
				
		Reference in new issue