diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8004036..6d8139c 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/domain/model/.gitkeep b/app/src/main/java/kr/hs/anu/nobet/domain/model/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/app/src/main/java/kr/hs/anu/nobet/domain/model/AllowSiteData.kt b/app/src/main/java/kr/hs/anu/nobet/domain/model/AllowSiteData.kt
new file mode 100644
index 0000000..192dd1c
--- /dev/null
+++ b/app/src/main/java/kr/hs/anu/nobet/domain/model/AllowSiteData.kt
@@ -0,0 +1,5 @@
+package kr.hs.anu.nobet.domain.model
+
+data class AllowSiteData(
+ val siteUrl: String
+)
diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/allow/AllowActivity.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/allow/AllowActivity.kt
new file mode 100644
index 0000000..87979ee
--- /dev/null
+++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/allow/AllowActivity.kt
@@ -0,0 +1,49 @@
+package kr.hs.anu.nobet.presentation.screen.allow
+
+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
+import androidx.recyclerview.widget.LinearLayoutManager
+import kr.hs.anu.nobet.R
+import kr.hs.anu.nobet.databinding.ActivityAllowBinding
+import kr.hs.anu.nobet.utils.openPage
+
+class AllowActivity : AppCompatActivity() {
+
+ private val viewModel: AllowViewModel by viewModels()
+ private lateinit var binding: ActivityAllowBinding
+ private lateinit var allowAdapter: AllowRecyclerAdapter
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ binding = ActivityAllowBinding.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
+ }
+
+ binding.ivTopbarLogo.setOnClickListener {
+ finish()
+ }
+
+ binding.tvMobile.setOnClickListener {
+ this.openPage()
+ }
+
+ allowAdapter = AllowRecyclerAdapter()
+ binding.recyclerAllow.apply {
+ layoutManager = LinearLayoutManager(this@AllowActivity)
+ adapter = allowAdapter
+ }
+
+ viewModel.siteList.observe(this) { list ->
+ allowAdapter.submitList(list)
+ }
+ }
+}
diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/allow/AllowRecyclerAdapter.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/allow/AllowRecyclerAdapter.kt
new file mode 100644
index 0000000..14de09a
--- /dev/null
+++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/allow/AllowRecyclerAdapter.kt
@@ -0,0 +1,46 @@
+package kr.hs.anu.nobet.presentation.screen.allow
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import kr.hs.anu.nobet.databinding.AllowItemBinding
+import kr.hs.anu.nobet.domain.model.AllowSiteData
+
+class AllowRecyclerAdapter : RecyclerView.Adapter() {
+
+ private val itemList = mutableListOf()
+
+ fun submitList(newList: List) {
+ itemList.clear()
+ itemList.addAll(newList)
+ notifyDataSetChanged()
+ }
+
+ inner class AllowViewHolder(private val binding: AllowItemBinding) :
+ RecyclerView.ViewHolder(binding.root) {
+
+ fun bind(item: AllowSiteData) {
+ // TODO 데이터 넣어주기
+ binding.tvAllowSite.text = item.siteUrl
+
+ binding.btnDel.setOnClickListener {
+ // TODO 삭제
+ }
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AllowViewHolder {
+ val binding = AllowItemBinding.inflate(
+ LayoutInflater.from(parent.context),
+ parent,
+ false
+ )
+ return AllowViewHolder(binding)
+ }
+
+ override fun onBindViewHolder(holder: AllowViewHolder, position: Int) {
+ holder.bind(itemList[position])
+ }
+
+ override fun getItemCount(): Int = itemList.size
+}
diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/allow/AllowViewModel.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/allow/AllowViewModel.kt
new file mode 100644
index 0000000..571af67
--- /dev/null
+++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/allow/AllowViewModel.kt
@@ -0,0 +1,24 @@
+package kr.hs.anu.nobet.presentation.screen.allow
+
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+import kr.hs.anu.nobet.domain.model.AllowSiteData
+
+class AllowViewModel : ViewModel() {
+ private val _siteList = MutableLiveData>()
+ val siteList: LiveData> get() = _siteList
+
+ init {
+ loadAllowSites()
+ }
+
+ private fun loadAllowSites() {
+ // 임시 데이터
+ _siteList.value = listOf(
+ AllowSiteData("naver.com"),
+ AllowSiteData("google.com"),
+ AllowSiteData("youtube.com")
+ )
+ }
+}
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 86cc5cb..6cb91e6 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
@@ -19,7 +19,9 @@ import androidx.core.view.ViewCompat
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.login.LoginActivity
+import kr.hs.anu.nobet.utils.openPage
class MainActivity : AppCompatActivity() {
@@ -73,6 +75,11 @@ class MainActivity : AppCompatActivity() {
binding.ivMenu.setOnClickListener {
showMenu(it)
}
+
+ // 온라인 상담 연결
+ binding.tvMobile.setOnClickListener {
+ this.openPage()
+ }
}
// 메뉴 커스텀 함수
@@ -104,7 +111,8 @@ class MainActivity : AppCompatActivity() {
}
popupMenu.findViewById(R.id.menu_block_pass).setOnClickListener {
- Toast.makeText(anchor.context, "차단 제외 하기", Toast.LENGTH_SHORT).show()
+ val intent = Intent(this, AllowActivity::class.java)
+ startActivity(intent)
popupWindow.dismiss()
}
diff --git a/app/src/main/res/drawable/add_btn.xml b/app/src/main/res/drawable/add_btn.xml
new file mode 100644
index 0000000..f32ee1f
--- /dev/null
+++ b/app/src/main/res/drawable/add_btn.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/allow_del_btn.xml b/app/src/main/res/drawable/allow_del_btn.xml
new file mode 100644
index 0000000..8835c95
--- /dev/null
+++ b/app/src/main/res/drawable/allow_del_btn.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/allow_list_background.xml b/app/src/main/res/drawable/allow_list_background.xml
new file mode 100644
index 0000000..3c31a4a
--- /dev/null
+++ b/app/src/main/res/drawable/allow_list_background.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/allow_site_list_background.xml b/app/src/main/res/drawable/allow_site_list_background.xml
new file mode 100644
index 0000000..44047aa
--- /dev/null
+++ b/app/src/main/res/drawable/allow_site_list_background.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/et_site_background.xml b/app/src/main/res/drawable/et_site_background.xml
new file mode 100644
index 0000000..750a4aa
--- /dev/null
+++ b/app/src/main/res/drawable/et_site_background.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_allow.xml b/app/src/main/res/layout/activity_allow.xml
new file mode 100644
index 0000000..2a57d22
--- /dev/null
+++ b/app/src/main/res/layout/activity_allow.xml
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 162f212..2b736be 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.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.login.LoginActivity">
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 976ebf3..40d247c 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,5 +1,5 @@
[versions]
-agp = "8.10.0"
+agp = "8.10.1"
kotlin = "2.0.21"
coreKtx = "1.16.0"
junit = "4.13.2"