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"