Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@
android:supportsRtl="true"
android:theme="@style/Theme.YouDongKnowMe"
android:usesCleartextTraffic="true">
<activity
android:name=".ui.view.search.SearchActivity"
android:exported="false" />
<activity
android:name=".ui.view.setting.OnboardingPermissionActivity"
android:exported="false" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package com.dongyang.android.youdongknowme.ui.view.notice

import android.content.Intent
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.dongyang.android.youdongknowme.R
import com.dongyang.android.youdongknowme.databinding.FragmentNoticeBinding
import com.dongyang.android.youdongknowme.standard.base.BaseFragment
import com.dongyang.android.youdongknowme.ui.adapter.NoticeAdapter
import com.dongyang.android.youdongknowme.ui.view.detail.DetailActivity
import com.dongyang.android.youdongknowme.ui.view.search.SearchActivity
import com.dongyang.android.youdongknowme.ui.view.util.EventObserver
import com.google.android.material.tabs.TabLayout
import org.koin.androidx.viewmodel.ext.android.viewModel
Expand All @@ -28,6 +31,11 @@ class NoticeFragment : BaseFragment<FragmentNoticeBinding, NoticeViewModel>() {
}
setupTabLayout()
setupInfinityScroll()

binding.btnSearch.setOnClickListener {
val intent = Intent(requireContext(), SearchActivity::class.java)
startActivity(intent)
}
}

override fun initDataBinding() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,11 @@ import android.text.TextWatcher
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.EditorInfo
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.dongyang.android.youdongknowme.R
import com.dongyang.android.youdongknowme.databinding.FragmentSearchBinding
import com.dongyang.android.youdongknowme.standard.base.BaseFragment
import com.dongyang.android.youdongknowme.databinding.ActivitySearchBinding
import com.dongyang.android.youdongknowme.standard.base.BaseActivity
import com.dongyang.android.youdongknowme.standard.util.dpToPx
import com.dongyang.android.youdongknowme.ui.adapter.NoticeAdapter
import com.dongyang.android.youdongknowme.ui.view.detail.DetailActivity
Expand All @@ -20,9 +19,9 @@ import com.dongyang.android.youdongknowme.ui.view.util.hideKeyboard
import com.dongyang.android.youdongknowme.ui.view.util.showKeyboard
import org.koin.androidx.viewmodel.ext.android.viewModel

class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
class SearchActivity : BaseActivity<ActivitySearchBinding, SearchViewModel>() {

override val layoutResourceId: Int = R.layout.fragment_search
override val layoutResourceId: Int = R.layout.activity_search
override val viewModel: SearchViewModel by viewModel()

private lateinit var adapter: NoticeAdapter
Expand All @@ -40,12 +39,12 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
}

override fun initDataBinding() {
viewModel.isLoading.observe(viewLifecycleOwner) {
viewModel.isLoading.observe(this) {
if (it) showLoading()
else dismissLoading()
}

viewModel.searchNotices.observe(viewLifecycleOwner) { searchNotices ->
viewModel.searchNotices.observe(this) { searchNotices ->
if (searchNotices.isNotEmpty()) {
setupRecyclerViewMargin()
adapter.submitList(searchNotices)
Expand All @@ -56,15 +55,15 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
}
}

viewModel.searchContent.observe(viewLifecycleOwner) { content ->
viewModel.searchContent.observe(this) { content ->
searchContent = content
}

viewModel.errorState.observe(viewLifecycleOwner, EventObserver { resId ->
viewModel.errorState.observe(this, EventObserver { resId ->
showToast(getString(resId))
})

viewModel.noSearchResult.observe(viewLifecycleOwner) { noSearchResult ->
viewModel.noSearchResult.observe(this) { noSearchResult ->
if (noSearchResult) {
binding.clSearchEmpty.visibility = View.VISIBLE
} else {
Expand All @@ -73,18 +72,20 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
}
}

override fun initAfterBinding() = Unit
override fun initAfterBinding() {
binding.toolbarSearch.btnToolbarExit.setOnClickListener { finish() }
}

private fun setupRecyclerViewMargin() {
if (::adapter.isInitialized.not()) {
val marginDp = SEARCH_RESULT_RECYCLERVIEW_MARGIN_TOP_FOR_TOUCH
val marginPx = marginDp.dpToPx(requireContext())
val marginPx = marginDp.dpToPx(this)
val layoutParams = binding.rvSearchResult.layoutParams as ViewGroup.MarginLayoutParams
layoutParams.topMargin = marginPx
binding.rvSearchResult.layoutParams = layoutParams
} else {
val marginDp = SEARCH_RESULT_RECYCLERVIEW_MARGIN_TOP_DEFAULT
val marginPx = marginDp.dpToPx(requireContext())
val marginPx = marginDp.dpToPx(this)
val layoutParams = binding.rvSearchResult.layoutParams as ViewGroup.MarginLayoutParams
layoutParams.topMargin = marginPx
binding.rvSearchResult.layoutParams = layoutParams
Expand All @@ -94,22 +95,22 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
private fun setupRecyclerview() {
adapter = NoticeAdapter(onItemClick = { url -> navigateToDetail(url) })
binding.rvSearchResult.apply {
this.adapter = this@SearchFragment.adapter
layoutManager = LinearLayoutManager(requireActivity())
this.adapter = this@SearchActivity.adapter
layoutManager = LinearLayoutManager(this@SearchActivity)
itemAnimator = null
setHasFixedSize(true)
}
}

private fun showKeyboardOnEditTextFocus() {
binding.etSearchBar.requestFocus()
requireContext().showKeyboard(binding.etSearchBar)
showKeyboard(binding.etSearchBar)
}

@SuppressLint("ClickableViewAccessibility")
private fun setupHideKeyboardOnOutsideTouch() {
binding.root.setOnTouchListener { _, _ ->
requireContext().hideKeyboard(binding.root)
hideKeyboard(binding.root)
false
}
}
Expand All @@ -127,7 +128,7 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
}
})

viewModel.searchClearVisibility.observe(viewLifecycleOwner) { isValid ->
viewModel.searchClearVisibility.observe(this) { isValid ->
binding.ivSearchClear.visibility = if (isValid) View.VISIBLE else View.GONE
}
}
Expand All @@ -139,7 +140,7 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
}

private fun onSearchBtnClickListener() {
binding.etSearchBar.setOnEditorActionListener { v, actionId, event ->
binding.etSearchBar.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
if (validateSearchContentLength()) {
viewModel.fetchSearchNotices()
Expand All @@ -148,7 +149,7 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
binding.etSearchBar.text.clear()
showToast(getString(R.string.search_minimum))
}
requireContext().hideKeyboard(binding.root)
hideKeyboard(binding.root)
true
} else {
false
Expand All @@ -161,7 +162,7 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
}

private fun navigateToDetail(url: String) {
val intent = DetailActivity.newIntent(requireContext(), url)
val intent = DetailActivity.newIntent(this, url)
startActivity(intent)
}

Expand Down
14 changes: 8 additions & 6 deletions app/src/main/res/drawable/ic_menu_cafeteria.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<vector android:height="10.240964dp" android:viewportHeight="85"
android:viewportWidth="83" android:width="10dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#7F8295" android:pathData="M0,21.483a19,21.483 0,1 0,38 0a19,21.483 0,1 0,-38 0z"/>
<path android:fillColor="#7F8295" android:pathData="M18.405,28.636L18.845,28.636A5,5 0,0 1,23.845 33.636L23.845,79.119A5,5 0,0 1,18.845 84.119L18.405,84.119A5,5 0,0 1,13.405 79.119L13.405,33.636A5,5 0,0 1,18.405 28.636z"/>
<path android:fillColor="#7F8295" android:pathData="M57.703,0.398L57.703,0.398A4.945,4.945 0,0 1,62.648 5.343L62.648,79.572A4.945,4.945 0,0 1,57.703 84.517L57.703,84.517A4.945,4.945 0,0 1,52.758 79.572L52.758,5.343A4.945,4.945 0,0 1,57.703 0.398z"/>
<path android:fillColor="#7F8295" android:pathData="M77.484,0.398L77.484,0.398A4.945,4.945 0,0 1,82.429 5.343L82.429,79.572A4.945,4.945 0,0 1,77.484 84.517L77.484,84.517A4.945,4.945 0,0 1,72.539 79.572L72.539,5.343A4.945,4.945 0,0 1,77.484 0.398z"/>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="25dp"
android:height="24dp"
android:viewportWidth="25"
android:viewportHeight="24">
<path
android:pathData="M9.645,21.021C8.947,21.021 8.524,20.631 8.532,19.951L8.69,10.629C8.69,10.338 8.565,10.123 8.308,10.006C7.212,9.525 6.739,9.019 6.806,7.566L7.03,2.469C7.046,2.104 7.262,1.896 7.603,1.896C7.935,1.896 8.125,2.112 8.125,2.486L8.067,7.441C8.067,7.732 8.258,7.915 8.532,7.915C8.814,7.915 9.014,7.74 9.014,7.466L9.097,2.336C9.105,1.979 9.304,1.772 9.645,1.772C9.985,1.772 10.192,1.979 10.201,2.336L10.284,7.466C10.284,7.74 10.483,7.915 10.765,7.915C11.039,7.915 11.222,7.732 11.222,7.441L11.164,2.486C11.164,2.112 11.363,1.896 11.686,1.896C12.027,1.896 12.243,2.104 12.259,2.469L12.492,7.566C12.55,9.019 12.077,9.525 10.981,10.006C10.724,10.123 10.599,10.338 10.599,10.629L10.765,19.951C10.773,20.631 10.342,21.021 9.645,21.021ZM16.136,13.783C16.152,13.484 16.02,13.252 15.721,13.044L15.231,12.712C14.816,12.439 14.608,12.015 14.608,11.442V11.036C14.608,7.715 15.488,4.204 16.825,2.328C17.09,1.938 17.298,1.772 17.613,1.772C17.912,1.772 18.203,1.971 18.203,2.395V20C18.203,20.665 17.771,21.021 17.065,21.021C16.376,21.021 15.936,20.631 15.961,19.909L16.136,13.783Z"
android:fillColor="#7F8295"/>
</vector>
12 changes: 8 additions & 4 deletions app/src/main/res/drawable/ic_menu_calendar.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
<vector android:height="24dp" android:tint="#7F8295"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M20,3h-1L19,1h-2v2L7,3L7,1L5,1v2L4,3c-1.1,0 -2,0.9 -2,2v16c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,5c0,-1.1 -0.9,-2 -2,-2zM20,21L4,21L4,8h16v13z"/>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="25dp"
android:height="24dp"
android:viewportWidth="25"
android:viewportHeight="24">
<path
android:pathData="M6.831,19.66C5.096,19.66 4.224,18.805 4.224,17.087V6.952C4.224,5.233 5.096,4.378 6.831,4.378H18.169C19.904,4.378 20.768,5.242 20.768,6.952V17.087C20.768,18.797 19.904,19.66 18.169,19.66H6.831ZM6.706,18.324H18.277C19.016,18.324 19.431,17.934 19.431,17.162V9.334C19.431,8.57 19.016,8.172 18.277,8.172H6.706C5.967,8.172 5.561,8.57 5.561,9.334V17.162C5.561,17.934 5.967,18.324 6.706,18.324ZM10.881,11.152C10.591,11.152 10.491,11.069 10.491,10.778V10.289C10.491,9.998 10.591,9.907 10.881,9.907H11.371C11.662,9.907 11.753,9.998 11.753,10.289V10.778C11.753,11.069 11.662,11.152 11.371,11.152H10.881ZM13.637,11.152C13.347,11.152 13.247,11.069 13.247,10.778V10.289C13.247,9.998 13.347,9.907 13.637,9.907H14.127C14.417,9.907 14.517,9.998 14.517,10.289V10.778C14.517,11.069 14.417,11.152 14.127,11.152H13.637ZM16.393,11.152C16.103,11.152 16.011,11.069 16.011,10.778V10.289C16.011,9.998 16.103,9.907 16.393,9.907H16.883C17.173,9.907 17.273,9.998 17.273,10.289V10.778C17.273,11.069 17.173,11.152 16.883,11.152H16.393ZM8.125,13.866C7.827,13.866 7.735,13.783 7.735,13.493V13.003C7.735,12.712 7.827,12.629 8.125,12.629H8.607C8.906,12.629 8.997,12.712 8.997,13.003V13.493C8.997,13.783 8.906,13.866 8.607,13.866H8.125ZM10.881,13.866C10.591,13.866 10.491,13.783 10.491,13.493V13.003C10.491,12.712 10.591,12.629 10.881,12.629H11.371C11.662,12.629 11.753,12.712 11.753,13.003V13.493C11.753,13.783 11.662,13.866 11.371,13.866H10.881ZM13.637,13.866C13.347,13.866 13.247,13.783 13.247,13.493V13.003C13.247,12.712 13.347,12.629 13.637,12.629H14.127C14.417,12.629 14.517,12.712 14.517,13.003V13.493C14.517,13.783 14.417,13.866 14.127,13.866H13.637ZM16.393,13.866C16.103,13.866 16.011,13.783 16.011,13.493V13.003C16.011,12.712 16.103,12.629 16.393,12.629H16.883C17.173,12.629 17.273,12.712 17.273,13.003V13.493C17.273,13.783 17.173,13.866 16.883,13.866H16.393ZM8.125,16.589C7.827,16.589 7.735,16.498 7.735,16.207V15.717C7.735,15.427 7.827,15.344 8.125,15.344H8.607C8.906,15.344 8.997,15.427 8.997,15.717V16.207C8.997,16.498 8.906,16.589 8.607,16.589H8.125ZM10.881,16.589C10.591,16.589 10.491,16.498 10.491,16.207V15.717C10.491,15.427 10.591,15.344 10.881,15.344H11.371C11.662,15.344 11.753,15.427 11.753,15.717V16.207C11.753,16.498 11.662,16.589 11.371,16.589H10.881ZM13.637,16.589C13.347,16.589 13.247,16.498 13.247,16.207V15.717C13.247,15.427 13.347,15.344 13.637,15.344H14.127C14.417,15.344 14.517,15.427 14.517,15.717V16.207C14.517,16.498 14.417,16.589 14.127,16.589H13.637Z"
android:fillColor="#7F8295"/>
</vector>
6 changes: 3 additions & 3 deletions app/src/main/res/drawable/ic_menu_home.xml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:width="25dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportWidth="25"
android:viewportHeight="24">
<path
android:pathData="M10.359,0.996C10.824,0.623 11.403,0.42 11.999,0.42C12.596,0.42 13.174,0.623 13.639,0.996L21.514,7.296C22.137,7.794 22.5,8.548 22.5,9.346V19.875C22.5,20.571 22.223,21.239 21.731,21.731C21.239,22.223 20.571,22.5 19.875,22.5H14.625C14.327,22.5 14.04,22.381 13.83,22.17C13.618,21.959 13.5,21.673 13.5,21.375V13.5H10.5V21.375C10.5,21.673 10.382,21.959 10.17,22.17C9.96,22.381 9.673,22.5 9.375,22.5H4.125C3.429,22.5 2.761,22.223 2.269,21.731C1.777,21.239 1.5,20.571 1.5,19.875V9.345C1.5,8.548 1.863,7.794 2.486,7.296L10.359,0.996ZM12.234,2.752C12.168,2.699 12.085,2.67 12,2.67C11.915,2.67 11.832,2.699 11.766,2.752L3.891,9.052C3.847,9.088 3.811,9.132 3.787,9.183C3.762,9.234 3.75,9.29 3.75,9.346V19.875C3.75,20.082 3.918,20.25 4.125,20.25H8.25V12.375C8.25,12.076 8.369,11.79 8.58,11.579C8.79,11.368 9.077,11.25 9.375,11.25H14.625C14.923,11.25 15.21,11.368 15.42,11.579C15.632,11.79 15.75,12.076 15.75,12.375V20.25H19.875C19.975,20.25 20.07,20.21 20.14,20.14C20.211,20.07 20.25,19.974 20.25,19.875V9.345C20.25,9.289 20.237,9.233 20.213,9.183C20.188,9.132 20.153,9.087 20.109,9.052L12.234,2.752Z"
android:pathData="M20.045,19.345C19.049,19.345 18.36,18.656 18.36,17.66V4.843C18.36,3.839 19.049,3.15 20.045,3.15C21.058,3.15 21.739,3.839 21.739,4.843V17.66C21.739,18.656 21.058,19.345 20.045,19.345ZM9.653,15.252V7.309C11.794,7.076 14.915,6.362 17.223,5.233V17.319C14.94,16.199 12.002,15.51 9.653,15.252ZM6.731,15.244C4.465,15.244 3.253,14.057 3.253,11.882V10.67C3.253,8.487 4.465,7.309 6.731,7.309H8.516V15.244H6.731ZM10.035,20.864C9.072,20.864 8.557,20.324 8.142,19.419L6.748,16.373C7.013,16.373 7.271,16.39 7.42,16.39C9.52,16.448 10.458,16.522 11.089,16.63L11.554,18.863C11.819,20.142 11.064,20.864 10.035,20.864Z"
android:fillColor="#7F8295"/>
</vector>
9 changes: 0 additions & 9 deletions app/src/main/res/drawable/ic_menu_search.xml

This file was deleted.

Loading
Loading