From a5e3d8bfb3a0c0fdfbee2a9731db03dc991ecdc7 Mon Sep 17 00:00:00 2001 From: bhindor Date: Mon, 14 Jul 2025 14:17:28 +0900 Subject: [PATCH 1/9] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20::=20block=20list=20fi?= =?UTF-8?q?le?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 차단 사이트 목록 파일 생성 --- app/src/main/AndroidManifest.xml | 3 +++ .../screen/block_list/BlockListActivity.kt | 26 +++++++++++++++++++ .../main/res/layout/activity_block_list.xml | 10 +++++++ 3 files changed, 39 insertions(+) create mode 100644 app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt create mode 100644 app/src/main/res/layout/activity_block_list.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6d8139c..e3fb297 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,6 +12,9 @@ android:supportsRtl="true" android:theme="@style/Theme.NoBet" tools:targetApi="31"> + diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt new file mode 100644 index 0000000..a1c3477 --- /dev/null +++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt @@ -0,0 +1,26 @@ +package kr.hs.anu.nobet.presentation.screen.block_list + +import android.os.Bundle +import androidx.activity.enableEdgeToEdge +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import kr.hs.anu.nobet.R +import kr.hs.anu.nobet.databinding.ActivityBlockListBinding + +class BlockListActivity : AppCompatActivity() { + + private lateinit var binding: ActivityBlockListBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + binding = ActivityBlockListBinding.inflate(layoutInflater) + setContentView(binding.root) + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> + val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + insets + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_block_list.xml b/app/src/main/res/layout/activity_block_list.xml new file mode 100644 index 0000000..0d3fc07 --- /dev/null +++ b/app/src/main/res/layout/activity_block_list.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file From 8bdb5c0b92ddbaabf66cd5e83ea64513021662d0 Mon Sep 17 00:00:00 2001 From: bhindor Date: Mon, 14 Jul 2025 14:28:38 +0900 Subject: [PATCH 2/9] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20::=20top=20bar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../screen/block_list/BlockListActivity.kt | 5 +++++ .../main/res/layout/activity_block_list.xml | 20 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt index a1c3477..c0445f9 100644 --- a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt +++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt @@ -22,5 +22,10 @@ class BlockListActivity : AppCompatActivity() { v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) insets } + + // 로고 클릭시 메인 화면으로 + binding.ivTopbarLogo.setOnClickListener { + finish() + } } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_block_list.xml b/app/src/main/res/layout/activity_block_list.xml index 0d3fc07..93b7698 100644 --- a/app/src/main/res/layout/activity_block_list.xml +++ b/app/src/main/res/layout/activity_block_list.xml @@ -7,4 +7,24 @@ android:layout_height="match_parent" tools:context=".presentation.screen.block_list.BlockListActivity"> + + + + + + \ No newline at end of file From 04f75f90cb38932cf2128c4321f72a1d0fe68126 Mon Sep 17 00:00:00 2001 From: bhindor Date: Mon, 14 Jul 2025 14:36:21 +0900 Subject: [PATCH 3/9] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20::=20allow=20empty=20d?= =?UTF-8?q?ata=20state?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 접근 허용 사이트 없을때 텍스트 처리 -> 추후에 상태에 따라 보이고 안보이게 해줘야댐 --- app/src/main/res/layout/activity_allow.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/src/main/res/layout/activity_allow.xml b/app/src/main/res/layout/activity_allow.xml index 2a57d22..7a003ef 100644 --- a/app/src/main/res/layout/activity_allow.xml +++ b/app/src/main/res/layout/activity_allow.xml @@ -99,6 +99,20 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/et_allow_site"> + + Date: Mon, 14 Jul 2025 16:02:08 +0900 Subject: [PATCH 4/9] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20::=20block=20UI=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1차 UI 작업 --- .../screen/block_list/BlockListActivity.kt | 5 + .../main/res/layout/activity_block_list.xml | 114 ++++++++++++++++++ app/src/main/res/layout/block_item.xml | 33 +++++ 3 files changed, 152 insertions(+) create mode 100644 app/src/main/res/layout/block_item.xml diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt index c0445f9..823164f 100644 --- a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt +++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt @@ -7,6 +7,7 @@ import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import kr.hs.anu.nobet.R import kr.hs.anu.nobet.databinding.ActivityBlockListBinding +import kr.hs.anu.nobet.utils.openPage class BlockListActivity : AppCompatActivity() { @@ -27,5 +28,9 @@ class BlockListActivity : AppCompatActivity() { binding.ivTopbarLogo.setOnClickListener { finish() } + + binding.tvMobile.setOnClickListener { + this.openPage() + } } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_block_list.xml b/app/src/main/res/layout/activity_block_list.xml index 93b7698..a55cb16 100644 --- a/app/src/main/res/layout/activity_block_list.xml +++ b/app/src/main/res/layout/activity_block_list.xml @@ -5,6 +5,7 @@ android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@color/white" tools:context=".presentation.screen.block_list.BlockListActivity"> + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/block_item.xml b/app/src/main/res/layout/block_item.xml new file mode 100644 index 0000000..052f9fa --- /dev/null +++ b/app/src/main/res/layout/block_item.xml @@ -0,0 +1,33 @@ + + + + + + + + + + \ No newline at end of file From 7b737c089f69afba8808aa9a7ee0791fd887364b Mon Sep 17 00:00:00 2001 From: bhindor Date: Mon, 14 Jul 2025 16:05:02 +0900 Subject: [PATCH 5/9] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20::=20connect=20block?= =?UTF-8?q?=20to=20main?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 차단 사이트 목록 메인에 연결 --- .../kr/hs/anu/nobet/presentation/screen/main/MainActivity.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/main/MainActivity.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/main/MainActivity.kt index 6cb91e6..6304fb0 100644 --- a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/main/MainActivity.kt +++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/main/MainActivity.kt @@ -20,6 +20,7 @@ import androidx.core.view.WindowInsetsCompat import kr.hs.anu.nobet.R import kr.hs.anu.nobet.databinding.ActivityMainBinding import kr.hs.anu.nobet.presentation.screen.allow.AllowActivity +import kr.hs.anu.nobet.presentation.screen.block_list.BlockListActivity import kr.hs.anu.nobet.presentation.screen.login.LoginActivity import kr.hs.anu.nobet.utils.openPage @@ -117,7 +118,8 @@ class MainActivity : AppCompatActivity() { } popupMenu.findViewById(R.id.menu_log).setOnClickListener { - Toast.makeText(anchor.context, "필터링 로그", Toast.LENGTH_SHORT).show() + val intent = Intent(this, BlockListActivity::class.java) + startActivity(intent) popupWindow.dismiss() } From f93296c0cfe5fbebbcc52f16fe1235a1a049e9cb Mon Sep 17 00:00:00 2001 From: bhindor Date: Mon, 14 Jul 2025 16:17:09 +0900 Subject: [PATCH 6/9] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20::=20viewModel=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/screen/block_list/BlockListActivity.kt | 2 ++ .../presentation/screen/block_list/BlockListViewModel.kt | 7 +++++++ 2 files changed, 9 insertions(+) create mode 100644 app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListViewModel.kt diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt index 823164f..fe23ed7 100644 --- a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt +++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt @@ -2,6 +2,7 @@ package kr.hs.anu.nobet.presentation.screen.block_list import android.os.Bundle import androidx.activity.enableEdgeToEdge +import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat @@ -11,6 +12,7 @@ import kr.hs.anu.nobet.utils.openPage class BlockListActivity : AppCompatActivity() { + private val viewModel: BlockListViewModel by viewModels() private lateinit var binding: ActivityBlockListBinding override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListViewModel.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListViewModel.kt new file mode 100644 index 0000000..9845bbc --- /dev/null +++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListViewModel.kt @@ -0,0 +1,7 @@ +package kr.hs.anu.nobet.presentation.screen.block_list + +import androidx.lifecycle.ViewModel + +class BlockListViewModel : ViewModel() { + +} \ No newline at end of file From 0bbbe099c3aef3f714d7d7cf96d44b4772255ee2 Mon Sep 17 00:00:00 2001 From: bhindor Date: Wed, 16 Jul 2025 15:43:09 +0900 Subject: [PATCH 7/9] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20::=20page=20info?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/drawable/ic_left_arrow.xml | 13 ++++++++ app/src/main/res/drawable/ic_right_arrow.xml | 13 ++++++++ .../main/res/layout/activity_block_list.xml | 30 +++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 app/src/main/res/drawable/ic_left_arrow.xml create mode 100644 app/src/main/res/drawable/ic_right_arrow.xml diff --git a/app/src/main/res/drawable/ic_left_arrow.xml b/app/src/main/res/drawable/ic_left_arrow.xml new file mode 100644 index 0000000..20ffc9e --- /dev/null +++ b/app/src/main/res/drawable/ic_left_arrow.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_right_arrow.xml b/app/src/main/res/drawable/ic_right_arrow.xml new file mode 100644 index 0000000..62fda01 --- /dev/null +++ b/app/src/main/res/drawable/ic_right_arrow.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/app/src/main/res/layout/activity_block_list.xml b/app/src/main/res/layout/activity_block_list.xml index a55cb16..1636df4 100644 --- a/app/src/main/res/layout/activity_block_list.xml +++ b/app/src/main/res/layout/activity_block_list.xml @@ -88,6 +88,36 @@ android:padding="20dp" tools:listitem="@layout/block_item" /> + + + + + + Date: Wed, 16 Jul 2025 16:36:41 +0900 Subject: [PATCH 8/9] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20::=20block=20adapter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit recycler adapter 연결 임시로 더미값 --- .../anu/nobet/domain/model/BlockSiteData.kt | 5 +++ .../screen/block_list/BlockListActivity.kt | 15 +++++++ .../screen/block_list/BlockListViewModel.kt | 19 +++++++- .../screen/block_list/BlockRecyclerAdapter.kt | 43 +++++++++++++++++++ 4 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/kr/hs/anu/nobet/domain/model/BlockSiteData.kt create mode 100644 app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockRecyclerAdapter.kt diff --git a/app/src/main/java/kr/hs/anu/nobet/domain/model/BlockSiteData.kt b/app/src/main/java/kr/hs/anu/nobet/domain/model/BlockSiteData.kt new file mode 100644 index 0000000..89fcaf9 --- /dev/null +++ b/app/src/main/java/kr/hs/anu/nobet/domain/model/BlockSiteData.kt @@ -0,0 +1,5 @@ +package kr.hs.anu.nobet.domain.model + +data class BlockSiteData( + val siteUrl: String +) diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt index fe23ed7..ebf7101 100644 --- a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt +++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListActivity.kt @@ -6,6 +6,7 @@ import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat +import androidx.recyclerview.widget.LinearLayoutManager import kr.hs.anu.nobet.R import kr.hs.anu.nobet.databinding.ActivityBlockListBinding import kr.hs.anu.nobet.utils.openPage @@ -14,6 +15,7 @@ class BlockListActivity : AppCompatActivity() { private val viewModel: BlockListViewModel by viewModels() private lateinit var binding: ActivityBlockListBinding + private lateinit var blockAdapter: BlockRecyclerAdapter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -34,5 +36,18 @@ class BlockListActivity : AppCompatActivity() { binding.tvMobile.setOnClickListener { this.openPage() } + + //TODO 페이징 사용 예정 + + // Adapter + blockAdapter = BlockRecyclerAdapter() + binding.recyclerBlock.apply { + layoutManager = LinearLayoutManager(this@BlockListActivity) + adapter = blockAdapter + } + + viewModel.siteList.observe(this) { list -> + blockAdapter.submitList(list) + } } } \ No newline at end of file diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListViewModel.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListViewModel.kt index 9845bbc..90dea64 100644 --- a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListViewModel.kt +++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockListViewModel.kt @@ -1,7 +1,24 @@ package kr.hs.anu.nobet.presentation.screen.block_list +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import kr.hs.anu.nobet.domain.model.BlockSiteData class BlockListViewModel : ViewModel() { - + private val _siteList = MutableLiveData>() + val siteList: LiveData> get() = _siteList + + init { + loadBlockSites() + } + + private fun loadBlockSites() { + // 임시 데이터 + _siteList.value = listOf( + BlockSiteData("example.com"), + BlockSiteData("example.com"), + BlockSiteData("example.com") + ) + } } \ No newline at end of file diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockRecyclerAdapter.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockRecyclerAdapter.kt new file mode 100644 index 0000000..37ffd0a --- /dev/null +++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/block_list/BlockRecyclerAdapter.kt @@ -0,0 +1,43 @@ +package kr.hs.anu.nobet.presentation.screen.block_list + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import kr.hs.anu.nobet.databinding.BlockItemBinding +import kr.hs.anu.nobet.domain.model.BlockSiteData + +class BlockRecyclerAdapter : RecyclerView.Adapter() { + + private val itemList = mutableListOf() + + fun submitList(newList: List) { + itemList.clear() + itemList.addAll(newList) + notifyDataSetChanged() + } + + inner class BlockViewHolder(private val binding: BlockItemBinding) : + RecyclerView.ViewHolder(binding.root) { + fun bind(item: BlockSiteData) { + binding.tvBlockSite.text = item.siteUrl + } + } + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): BlockRecyclerAdapter.BlockViewHolder { + val binding = BlockItemBinding.inflate( + LayoutInflater.from(parent.context), + parent, + false + ) + return BlockViewHolder(binding) + } + + override fun onBindViewHolder(holder: BlockViewHolder, position: Int) { + holder.bind(itemList[position]) + } + + override fun getItemCount(): Int = itemList.size +} \ No newline at end of file From 51b52cee90c22d44ca8539d297d3e96c7e50566d Mon Sep 17 00:00:00 2001 From: bhindor Date: Wed, 16 Jul 2025 16:40:44 +0900 Subject: [PATCH 9/9] =?UTF-8?q?=F0=9F=8E=A8=20::=20ktlint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ktlint --- app/src/main/AndroidManifest.xml | 2 +- .../screen/{block_list => blockList}/BlockListActivity.kt | 6 +++--- .../screen/{block_list => blockList}/BlockListViewModel.kt | 4 ++-- .../{block_list => blockList}/BlockRecyclerAdapter.kt | 4 ++-- .../hs/anu/nobet/presentation/screen/main/MainActivity.kt | 2 +- app/src/main/res/layout/activity_block_list.xml | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) rename app/src/main/java/kr/hs/anu/nobet/presentation/screen/{block_list => blockList}/BlockListActivity.kt (94%) rename app/src/main/java/kr/hs/anu/nobet/presentation/screen/{block_list => blockList}/BlockListViewModel.kt (91%) rename app/src/main/java/kr/hs/anu/nobet/presentation/screen/{block_list => blockList}/BlockRecyclerAdapter.kt (95%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e3fb297..d1a5da8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,7 +13,7 @@ android:theme="@style/Theme.NoBet" tools:targetApi="31"> + tools:context=".presentation.screen.blockList.BlockListActivity">