diff --git a/app/src/main/java/com/articrew/artic/ui/mypage/mypage_scrap/MyPageScrapActivity.kt b/app/src/main/java/com/articrew/artic/ui/mypage/mypage_scrap/MyPageScrapActivity.kt index 508fba4..b28974d 100644 --- a/app/src/main/java/com/articrew/artic/ui/mypage/mypage_scrap/MyPageScrapActivity.kt +++ b/app/src/main/java/com/articrew/artic/ui/mypage/mypage_scrap/MyPageScrapActivity.kt @@ -8,11 +8,13 @@ import com.articrew.artic.R import com.articrew.artic.repository.ArticRepository import com.articrew.artic.ui.base.BaseActivity import com.articrew.artic.ui.adapter.article.ArticleOverviewRecyclerViewAdapter +import com.articrew.artic.util.PopupSystem import kotlinx.android.synthetic.main.activity_my_page_scrap.* import org.jetbrains.anko.toast import org.koin.android.ext.android.inject +// TODO 내가 만든 아카이브 목록을 보여주는 Activity이다. 즉, Scrap 목록을 보여주는 화면이 아니다. 따라서 네이밍 수정이 필요하다. class MyPageScrapActivity : BaseActivity() { private val repository :ArticRepository by inject() // private var archiveId : Int=-1 @@ -53,5 +55,32 @@ class MyPageScrapActivity : BaseActivity() { toast(R.string.network_error) } ).apply { addDisposable(this) } + + btn_mypage_myarchive_modify.setOnClickListener { + // TODO 아카이브를 제거할 것인지, 이름을 변경할 것인지를 보여줄 팝업을 띄워준다. + PopupSystem.show(this, R.layout.dlg_modify_archive, + mapOf( + R.id.btn_dlg_archive_modify to { + // TODO 아카이브 수정 activity로 이동해야한다. + toast("아카이브 수정") + }, + R.id.btn_dlg_archive_delete to { + toast("아카이브 제거") + // TODO 아카이브 제거 popup을 다시 띄워주어야 한다. + PopupSystem.show(this, R.layout.dlg_confirm_delete_archive, + mapOf( + R.id.btn_dlg_confirm_delete to { + // TODO 아카이브 제거 서버 통신을 해야한다. + toast("아카이브 제거 확실!") + }, + R.id.btn_dlg_confirm_cancel to { + // 팝업창을 종료하면 되니까 아무것도 하지않는다. (PopupSystem에서 알아서 종료시켜준다.) + } + ) + ) + } + ) + ) + } } } diff --git a/app/src/main/java/com/articrew/artic/ui/splash/SplashActivity.kt b/app/src/main/java/com/articrew/artic/ui/splash/SplashActivity.kt index d9210e9..4b1d58f 100644 --- a/app/src/main/java/com/articrew/artic/ui/splash/SplashActivity.kt +++ b/app/src/main/java/com/articrew/artic/ui/splash/SplashActivity.kt @@ -31,6 +31,8 @@ class SplashActivity : BaseSocialLoginActivity() { // 데이터 캐싱은 어떻게 할까? + // TODO 테스트용 모듈로 시작하면 회원가입-데이터 받아오기 확인을 쉽게 할 수 있어야하는데... 전철에서 해보니까 네트워크 연결이 안되면 테스트가 어렵다. UI 작업인데도. + // 적어도 스플래쉬 화면이 한 번의 애니메이션을 실행해야한다. // 스플래쉬 화면에서 자동 로그인을 요청해야 한다. 그리고 요청 결과에 따라 다음 화면으로 이동해야 한다. diff --git a/app/src/main/java/com/articrew/artic/util/PopupSystem.kt b/app/src/main/java/com/articrew/artic/util/PopupSystem.kt new file mode 100644 index 0000000..d42a66d --- /dev/null +++ b/app/src/main/java/com/articrew/artic/util/PopupSystem.kt @@ -0,0 +1,31 @@ +package com.articrew.artic.util + +import android.app.Activity +import android.app.AlertDialog +import android.view.View + +object PopupSystem { + /** + * 버튼을 누르면 dialog를 종료하는 popup을 만든다. + * @param activity popup이 나타나는 곳 + * @param layoutId dialog의 layout id값 + * @param map key는 click event가 적용될 view, value는 click이벤트 + * */ + fun show(activity: Activity?, layoutId: Int, map: MapAny)?>) { + activity?.run { + val view = layoutInflater.inflate(layoutId, null, false) + val dialog = AlertDialog.Builder(this) + .setView(view) + .create() + + for (pair in map) { + view.findViewById(pair.key).setOnClickListener { + pair.value?.invoke() + dialog.dismiss() + } + } + + dialog.show() + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_my_page_scrap.xml b/app/src/main/res/layout/activity_my_page_scrap.xml index 933ba13..e6ce731 100644 --- a/app/src/main/res/layout/activity_my_page_scrap.xml +++ b/app/src/main/res/layout/activity_my_page_scrap.xml @@ -82,6 +82,18 @@ app:layout_constraintStart_toEndOf="@+id/mypage_scrap_link_num" app:layout_constraintTop_toBottomOf="@+id/mypage_scrap_link_title" /> +