diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9f3d4b89..edf2f071 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,26 @@ android:exported="false" android:screenOrientation="portrait" tools:ignore="LockedOrientationActivity" /> + + + + (R.layout.activity_new_group) { + private val viewModel: NewGroupViewModel by viewModels() + private lateinit var fragmentList: ArrayList + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + initLayout() + addListeners() + collectData() + } + + private fun initLayout() { + navigateToNewGroupInfo() + setPlanFragmentStateAdapter() + } + + private fun addListeners() { + binding.btnNewGroupNext.setOnClickListener { + when (binding.vpNewGroup.currentItem) { + fragmentList.size - LAST_INDEX_OFFSET -> { + navigateToNewGroupAnnouncement() + finish() + } + + else -> binding.vpNewGroup.currentItem++ + } + } + + binding.includeNewGroupTopbar.ivAllTopbarArrowWithTitleArrowLeft.setOnClickListener { + navigateToPreviousPage() + } + + binding.ivNewGroupTopbarInfo.setOnClickListener { + navigateToNewGroupInfo() + } + } + + private fun collectData() { + viewModel.currentPage.flowWithLifecycle(lifecycle).onEach { currentPage -> + when (currentPage) { + fragmentList.size - LAST_INDEX_OFFSET -> + binding.btnNewGroupNext.text = + stringOf(R.string.new_group_create) + + else -> binding.btnNewGroupNext.text = stringOf(R.string.new_group_next) + } + }.launchIn(lifecycleScope) + } + + private fun setPlanFragmentStateAdapter() { + fragmentList = ArrayList() + fragmentList.apply { + add(NewGroupInputFragment()) + add(NewGroupKeywordFragment()) + add(NewGroupCreateFragment()) + } + + val adapter = PingleFragmentStateAdapter(fragmentList, this) + with(binding.vpNewGroup) { + this.adapter = adapter + isUserInputEnabled = false + + registerOnPageChangeCallback(object : + ViewPager2.OnPageChangeCallback() { + override fun onPageSelected(position: Int) { + super.onPageSelected(position) + viewModel.setCurrentPage(position) + } + }) + } + } + + private fun navigateToNewGroupInfo() { + Intent(this, NewGroupInfoActivity::class.java).apply { + startActivity( + this, + ActivityOptions.makeCustomAnimation(this@NewGroupActivity, R.anim.slide_up, 0) + .toBundle() + ) + } + } + + private fun navigateToNewGroupAnnouncement() { + Intent(this, NewGroupAnnouncementActivity::class.java).apply { + startActivity(this) + } + } + + private fun navigateToPreviousPage() { + when (binding.vpNewGroup.currentItem) { + FIRST_PAGE -> finish() + else -> binding.vpNewGroup.currentItem-- + } + } + + companion object { + const val FIRST_PAGE = 0 + const val LAST_INDEX_OFFSET = 1 + } +} diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/NewGroupViewModel.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/NewGroupViewModel.kt new file mode 100644 index 00000000..dffb977b --- /dev/null +++ b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/NewGroupViewModel.kt @@ -0,0 +1,21 @@ +package org.sopt.pingle.presentation.ui.newgroup + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow + +@HiltViewModel +class NewGroupViewModel @Inject constructor() : ViewModel() { + private val _currentPage = MutableStateFlow(FIRST_PAGE_POSITION) + val currentPage get() = _currentPage.asStateFlow() + + fun setCurrentPage(position: Int) { + _currentPage.value = position + } + + companion object { + const val FIRST_PAGE_POSITION = 0 + } +} diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupannouncement/NewGroupAnnouncementActivity.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupannouncement/NewGroupAnnouncementActivity.kt new file mode 100644 index 00000000..c05556b2 --- /dev/null +++ b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupannouncement/NewGroupAnnouncementActivity.kt @@ -0,0 +1,56 @@ +package org.sopt.pingle.presentation.ui.newgroup.newgroupannouncement + +import android.content.Intent +import android.os.Bundle +import androidx.activity.OnBackPressedCallback +import dagger.hilt.android.AndroidEntryPoint +import org.sopt.pingle.R +import org.sopt.pingle.databinding.ActivityNewGroupAnnouncementBinding +import org.sopt.pingle.presentation.ui.main.MainActivity +import org.sopt.pingle.presentation.ui.newgroup.newgroupcodeshare.NewGroupCodeShareActivity +import org.sopt.pingle.util.base.BindingActivity + +@AndroidEntryPoint +class NewGroupAnnouncementActivity : + BindingActivity(R.layout.activity_new_group_announcement) { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + addListeners() + } + + private fun addListeners() { + onBackPressedCallBack() + binding.btnNewGroupAnnouncementInvitation.setOnClickListener { + navigateToNewGroupShare() + } + binding.tvNewGroupAnnouncementHome.setOnClickListener { + navigateToHome() + } + } + + private fun navigateToNewGroupShare() { + Intent(this, NewGroupCodeShareActivity::class.java).apply { + startActivity(this) + } + } + + private fun navigateToHome() { + Intent(this, MainActivity::class.java).apply { + startActivity(this) + finish() + } + } + + private fun onBackPressedCallBack() { + onBackPressedDispatcher.addCallback( + this, + object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + navigateToHome() + } + } + ) + } +} diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupcodeshare/NewGroupCodeShareActivity.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupcodeshare/NewGroupCodeShareActivity.kt new file mode 100644 index 00000000..d113cb3d --- /dev/null +++ b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupcodeshare/NewGroupCodeShareActivity.kt @@ -0,0 +1,28 @@ +package org.sopt.pingle.presentation.ui.newgroup.newgroupcodeshare + +import android.os.Bundle +import dagger.hilt.android.AndroidEntryPoint +import org.sopt.pingle.R +import org.sopt.pingle.databinding.ActivityNewGroupCodeShareBinding +import org.sopt.pingle.util.base.BindingActivity + +@AndroidEntryPoint +class NewGroupCodeShareActivity : + BindingActivity(R.layout.activity_new_group_code_share) { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + initLayout() + addListeners() + } + + private fun initLayout() { + binding.etNewGroupCodeShareCode.editText.isEnabled = false + } + + private fun addListeners() { + binding.includeNewGroupCodeShareTopbar.ivAllTopbarArrowWithTitleArrowLeft.setOnClickListener { + finish() + } + } +} diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupcreate/NewGroupCreateFragment.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupcreate/NewGroupCreateFragment.kt new file mode 100644 index 00000000..6cb579b3 --- /dev/null +++ b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupcreate/NewGroupCreateFragment.kt @@ -0,0 +1,17 @@ +package org.sopt.pingle.presentation.ui.newgroup.newgroupcreate + +import android.os.Bundle +import android.view.View +import dagger.hilt.android.AndroidEntryPoint +import org.sopt.pingle.R +import org.sopt.pingle.databinding.FragmentNewGroupCreateBinding +import org.sopt.pingle.util.base.BindingFragment + +@AndroidEntryPoint +class NewGroupCreateFragment : + BindingFragment(R.layout.fragment_new_group_create) { + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + } +} diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupinfo/NewGroupInfoActivity.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupinfo/NewGroupInfoActivity.kt new file mode 100644 index 00000000..c39a0f92 --- /dev/null +++ b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupinfo/NewGroupInfoActivity.kt @@ -0,0 +1,23 @@ +package org.sopt.pingle.presentation.ui.newgroup.newgroupinfo + +import android.os.Bundle +import dagger.hilt.android.AndroidEntryPoint +import org.sopt.pingle.R +import org.sopt.pingle.databinding.ActivityNewGroupInfoBinding +import org.sopt.pingle.util.base.BindingActivity + +@AndroidEntryPoint +class NewGroupInfoActivity : + BindingActivity(R.layout.activity_new_group_info) { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + addListeners() + } + + private fun addListeners() { + binding.ivNewGroupInfoX.setOnClickListener { + finish() + } + } +} diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupinput/NewGroupInputFragment.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupinput/NewGroupInputFragment.kt new file mode 100644 index 00000000..4b2c9c7e --- /dev/null +++ b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupinput/NewGroupInputFragment.kt @@ -0,0 +1,16 @@ +package org.sopt.pingle.presentation.ui.newgroup.newgroupinput + +import android.os.Bundle +import android.view.View +import dagger.hilt.android.AndroidEntryPoint +import org.sopt.pingle.R +import org.sopt.pingle.databinding.FragmentNewGroupInputBinding +import org.sopt.pingle.util.base.BindingFragment + +@AndroidEntryPoint +class NewGroupInputFragment : + BindingFragment(R.layout.fragment_new_group_input) { + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + } +} diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupkeyword/NewGroupKeywordFragment.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupkeyword/NewGroupKeywordFragment.kt new file mode 100644 index 00000000..d07ec839 --- /dev/null +++ b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupkeyword/NewGroupKeywordFragment.kt @@ -0,0 +1,46 @@ +package org.sopt.pingle.presentation.ui.newgroup.newgroupkeyword + +import android.os.Bundle +import android.view.View +import com.google.android.material.chip.Chip +import dagger.hilt.android.AndroidEntryPoint +import org.sopt.pingle.R +import org.sopt.pingle.databinding.FragmentNewGroupKeywordBinding +import org.sopt.pingle.util.base.BindingFragment + +@AndroidEntryPoint +class NewGroupKeywordFragment : + BindingFragment(R.layout.fragment_new_group_keyword) { + private val itemList = + listOf(Item(1, "연합동아리"), Item(2, "교내동아리"), Item(3, "학생회"), Item(4, "대학교")) + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + initLayout() + } + + private fun initLayout() { + setChipKeyword() + } + + private fun setChipKeyword() { + binding.cgNewGroupKeyword.removeAllViews() + + for (item in itemList) { + val chip = + layoutInflater.inflate(R.layout.view_new_group_chip_keyword, null, false) as Chip + chip.text = item.name + chip.setOnCheckedChangeListener { _, isChecked -> + when (isChecked) { + true -> chip.setTextAppearance(R.style.TextAppearance_Pingle_Sub_Semi_16) + false -> chip.setTextAppearance(R.style.TextAppearance_Pingle_Body_Med_16) + } + } + binding.cgNewGroupKeyword.addView(chip) + } + } + + // TODO Api연결시 response로 변경 예정 + data class Item(val id: Int, val name: String) +} diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/onboarding/onboarding/OnboardingActivity.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/onboarding/onboarding/OnboardingActivity.kt index 8009ce7a..40c877ab 100644 --- a/app/src/main/java/org/sopt/pingle/presentation/ui/onboarding/onboarding/OnboardingActivity.kt +++ b/app/src/main/java/org/sopt/pingle/presentation/ui/onboarding/onboarding/OnboardingActivity.kt @@ -5,9 +5,9 @@ import android.os.Bundle import org.sopt.pingle.R import org.sopt.pingle.databinding.ActivityOnboardingBinding import org.sopt.pingle.presentation.ui.joingroup.JoinGroupSearchActivity +import org.sopt.pingle.presentation.ui.newgroup.NewGroupActivity import org.sopt.pingle.util.activity.setDoubleBackPressToExit import org.sopt.pingle.util.base.BindingActivity -import org.sopt.pingle.util.context.navigateToWebView class OnboardingActivity : BindingActivity(R.layout.activity_onboarding) { @@ -25,7 +25,7 @@ class OnboardingActivity : } binding.includeOnboardingGroupNew.root.setOnClickListener { - startActivity(navigateToWebView(NEW_GROUP_LINK)) + navigateToNewGroup() } } @@ -35,8 +35,9 @@ class OnboardingActivity : } } - companion object { - const val NEW_GROUP_LINK = - "https://docs.google.com/forms/d/10WxvEzSVRrRvRGXsYf9Z5oXv4HsNuAwG2QicB4bY0aY/edit" + private fun navigateToNewGroup() { + Intent(this, NewGroupActivity::class.java).apply { + startActivity(this) + } } } diff --git a/app/src/main/java/org/sopt/pingle/util/component/PingleEditText.kt b/app/src/main/java/org/sopt/pingle/util/component/PingleEditText.kt index ca8fd57b..e60acda5 100644 --- a/app/src/main/java/org/sopt/pingle/util/component/PingleEditText.kt +++ b/app/src/main/java/org/sopt/pingle/util/component/PingleEditText.kt @@ -6,6 +6,7 @@ import android.content.res.TypedArray import android.text.InputFilter import android.util.AttributeSet import android.view.LayoutInflater +import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import androidx.databinding.DataBindingUtil import org.sopt.pingle.R @@ -45,9 +46,30 @@ class PingleEditText @JvmOverloads constructor( binding.etEditText.hint = hint val maxLength = getInt(R.styleable.PingleEditText_pingleEditTextMaxLength, -1) - if (maxLength > 0) { + if (maxLength > INITIAL_LENGTH) { binding.etEditText.filters = arrayOf(InputFilter.LengthFilter(maxLength)) } + + val checkVisibilityValue = + getInt(R.styleable.PingleEditText_pingleEditTextCheckVisibility, View.GONE) + val copyVisibilityValue = + getInt(R.styleable.PingleEditText_pingleEditTextCopyVisibility, View.GONE) + binding.btnEditCheck.visibility = visibility(checkVisibilityValue) + binding.ivEditCopy.visibility = visibility(copyVisibilityValue) } } + + private fun visibility(visibilityValue: Int) = when (visibilityValue) { + VISIBLE_VALUE -> View.VISIBLE + INVISIBLE_VALUE -> View.INVISIBLE + GONE_VALUE -> View.GONE + else -> View.GONE + } + + companion object { + const val INITIAL_LENGTH = 0 + const val VISIBLE_VALUE = 0 + const val INVISIBLE_VALUE = 1 + const val GONE_VALUE = 2 + } } diff --git a/app/src/main/res/anim/slide_up.xml b/app/src/main/res/anim/slide_up.xml new file mode 100644 index 00000000..f5aa59b8 --- /dev/null +++ b/app/src/main/res/anim/slide_up.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/color/selector_pingle_tag_l_text_color.xml b/app/src/main/res/color/selector_pingle_tag_l_text_color.xml index 39c53871..a4cc5a19 100644 --- a/app/src/main/res/color/selector_pingle_tag_l_text_color.xml +++ b/app/src/main/res/color/selector_pingle_tag_l_text_color.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/color/selector_plan_recruitment_btn.xml b/app/src/main/res/color/selector_plan_recruitment_btn_background.xml similarity index 100% rename from app/src/main/res/color/selector_plan_recruitment_btn.xml rename to app/src/main/res/color/selector_plan_recruitment_btn_background.xml diff --git a/app/src/main/res/drawable-xhdpi/img_group_graphic.png b/app/src/main/res/drawable-xhdpi/img_group_graphic.png new file mode 100644 index 00000000..f524baf1 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_group_graphic.png differ diff --git a/app/src/main/res/drawable-xhdpi/img_info_impossible.png b/app/src/main/res/drawable-xhdpi/img_info_impossible.png new file mode 100644 index 00000000..22217108 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_info_impossible.png differ diff --git a/app/src/main/res/drawable-xhdpi/img_info_reissue.png b/app/src/main/res/drawable-xhdpi/img_info_reissue.png new file mode 100644 index 00000000..2c00f471 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_info_reissue.png differ diff --git a/app/src/main/res/drawable-xxhdpi/img_group_graphic.png b/app/src/main/res/drawable-xxhdpi/img_group_graphic.png new file mode 100644 index 00000000..7b7db705 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_group_graphic.png differ diff --git a/app/src/main/res/drawable-xxhdpi/img_info_impossible.png b/app/src/main/res/drawable-xxhdpi/img_info_impossible.png new file mode 100644 index 00000000..6359ce7b Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_info_impossible.png differ diff --git a/app/src/main/res/drawable-xxhdpi/img_info_reissue.png b/app/src/main/res/drawable-xxhdpi/img_info_reissue.png new file mode 100644 index 00000000..4e5429ca Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_info_reissue.png differ diff --git a/app/src/main/res/drawable/ic_all_copy_24.xml b/app/src/main/res/drawable/ic_all_copy_24.xml new file mode 100644 index 00000000..b9d17a0d --- /dev/null +++ b/app/src/main/res/drawable/ic_all_copy_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_all_info_24.xml b/app/src/main/res/drawable/ic_all_info_24.xml new file mode 100644 index 00000000..60409b05 --- /dev/null +++ b/app/src/main/res/drawable/ic_all_info_24.xml @@ -0,0 +1,16 @@ + + + + diff --git a/app/src/main/res/drawable/img_group_graphic.png b/app/src/main/res/drawable/img_group_graphic.png new file mode 100644 index 00000000..af85a009 Binary files /dev/null and b/app/src/main/res/drawable/img_group_graphic.png differ diff --git a/app/src/main/res/drawable/img_info_impossible.png b/app/src/main/res/drawable/img_info_impossible.png new file mode 100644 index 00000000..5c71f891 Binary files /dev/null and b/app/src/main/res/drawable/img_info_impossible.png differ diff --git a/app/src/main/res/drawable/img_info_reissue.png b/app/src/main/res/drawable/img_info_reissue.png new file mode 100644 index 00000000..b47f0a87 Binary files /dev/null and b/app/src/main/res/drawable/img_info_reissue.png differ diff --git a/app/src/main/res/layout/activity_new_group.xml b/app/src/main/res/layout/activity_new_group.xml new file mode 100644 index 00000000..0992e40f --- /dev/null +++ b/app/src/main/res/layout/activity_new_group.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_new_group_announcement.xml b/app/src/main/res/layout/activity_new_group_announcement.xml new file mode 100644 index 00000000..3a8c1470 --- /dev/null +++ b/app/src/main/res/layout/activity_new_group_announcement.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_new_group_code_share.xml b/app/src/main/res/layout/activity_new_group_code_share.xml new file mode 100644 index 00000000..4e6b7774 --- /dev/null +++ b/app/src/main/res/layout/activity_new_group_code_share.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_new_group_info.xml b/app/src/main/res/layout/activity_new_group_info.xml new file mode 100644 index 00000000..a28b972d --- /dev/null +++ b/app/src/main/res/layout/activity_new_group_info.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/edit_text_pingle.xml b/app/src/main/res/layout/edit_text_pingle.xml index b50717ca..48830588 100644 --- a/app/src/main/res/layout/edit_text_pingle.xml +++ b/app/src/main/res/layout/edit_text_pingle.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools"> + @@ -41,8 +42,43 @@ android:textColor="@color/white" android:textColorHint="@color/g_07" android:textCursorDrawable="@drawable/shape_pingle_green_solid_width_1" - app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintEnd_toStartOf="@id/layout_edit_visibility" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tv_title" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_new_group_create.xml b/app/src/main/res/layout/fragment_new_group_create.xml new file mode 100644 index 00000000..68ff435e --- /dev/null +++ b/app/src/main/res/layout/fragment_new_group_create.xml @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_new_group_input.xml b/app/src/main/res/layout/fragment_new_group_input.xml new file mode 100644 index 00000000..637400c8 --- /dev/null +++ b/app/src/main/res/layout/fragment_new_group_input.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_new_group_keyword.xml b/app/src/main/res/layout/fragment_new_group_keyword.xml new file mode 100644 index 00000000..9d55e2b8 --- /dev/null +++ b/app/src/main/res/layout/fragment_new_group_keyword.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/view_all_topbar_arrow_with_title.xml b/app/src/main/res/layout/view_all_topbar_arrow_with_title.xml index e113a951..ae35c343 100644 --- a/app/src/main/res/layout/view_all_topbar_arrow_with_title.xml +++ b/app/src/main/res/layout/view_all_topbar_arrow_with_title.xml @@ -40,6 +40,5 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/iv_all_topbar_arrow_with_title_arrow_left" tools:text="단체 입장하기" /> - \ No newline at end of file diff --git a/app/src/main/res/layout/view_new_group_chip_keyword.xml b/app/src/main/res/layout/view_new_group_chip_keyword.xml new file mode 100644 index 00000000..beceb0a2 --- /dev/null +++ b/app/src/main/res/layout/view_new_group_chip_keyword.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 40a14f00..b0239a5e 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -4,6 +4,16 @@ + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c023fe68..c83c598f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -92,7 +92,44 @@ 현재 개최된 핑글이 없어요\n핑글을 직접 개최해보세요! 검색 결과가 없어요 - + + 신규 단체 개설하기 + 다음으로 + 개설하기 + + + 신규 단체 개설 안내 + 단체 개설자는 탈퇴할 수 없어요 + 해당 단체의 초대코드 및 구성원을\n관리할 책임자가 없어지기 때문이에요. + 탈퇴를 원할 경우, 핑글에게 문의하기를 통해\n개설자를 변경해주셔야 해요. + 초대 코드가 유출되었다면\n핑글에게 문의 후\n재발급할 수 있어요 + + + 속해있는 단체의\n이름을 알려주세요! + 단체명을 입력해주세요 + 단체명 + ex. 단체 공식 이메일, 개설자님의 이메일 + 대표 이메일 + 해당 이메일은 초대 코드 공유 및 단체 관리를 위해 사용될 예정입니다 + + + 단체가\n개설되었어요! + %s에 친구들을 초대하고 + 핑글 여정을 함께해보세요! + 친구 초대하러 가기 + 홈으로 시작하기 + + + 단체 정보를\n확인해주세요 + 대표 이메일 + + + 친구 초대하기 + 초대 코드를\n확인하세요 + 초대코드는 나의 단체 페이지에서 다시 확인할 수 있어요 + 공유하기 + + 나중에 만드시겠어요? 나가기 다음으로 @@ -104,7 +141,7 @@ 원하는 장소에서 사람들과 갖는 모임을 뜻해요 핑글 개최하러 가기 - + 잠깐! 나가실건가요? 지금까지 입력한 정보는 전부 사라져요 이어서 작성하기 @@ -198,7 +235,7 @@ 핑글에 오신걸\n환영합니다! 이미 등록된\n 단체가 있어요 새로운 단체를\n등록하고 싶어요 - + 우리의 모임, PINGLE 원하는 장소에서 사람들과 갖는\n나만의 모임을 뜻해요 @@ -235,4 +272,7 @@ 초대코드 복사하기 공유하기 핑글 앱을 다운받고, %s 사람들을 만나보세요!\n\n%s %s\n\n %s + + + 중복 확인 \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 789605ec..094f007d 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -60,10 +60,18 @@ 8dp @dimen/button_corner_radius @style/TextAppearance.Pingle.Title.Semi.24 - @color/selector_plan_recruitment_btn + @color/selector_plan_recruitment_btn_background @color/selector_plan_recruitment_btn_text + +