diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 000000000..140a604ec Binary files /dev/null and b/.DS_Store differ diff --git a/.github/ISSUE_TEMPLATE/feat_request.md "b/.github/ISSUE_TEMPLATE/\352\270\260\353\212\245-\354\235\264\354\212\210.md" similarity index 66% rename from .github/ISSUE_TEMPLATE/feat_request.md rename to ".github/ISSUE_TEMPLATE/\352\270\260\353\212\245-\354\235\264\354\212\210.md" index 0f15a18b5..23df0d063 100644 --- a/.github/ISSUE_TEMPLATE/feat_request.md +++ "b/.github/ISSUE_TEMPLATE/\352\270\260\353\212\245-\354\235\264\354\212\210.md" @@ -1,3 +1,12 @@ +--- +name: 기능 이슈 +about: 기능 관련 이슈 +title: feat +labels: '' +assignees: '' + +--- + ## 어떤 기능인가요? > 추가하려는 기능에 대해 간결하게 설명해주세요 diff --git a/.github/ISSUE_TEMPLATE/bug_request.md "b/.github/ISSUE_TEMPLATE/\353\262\204\352\267\270-\354\235\264\354\212\210.md" similarity index 77% rename from .github/ISSUE_TEMPLATE/bug_request.md rename to ".github/ISSUE_TEMPLATE/\353\262\204\352\267\270-\354\235\264\354\212\210.md" index 499cf5599..7ead2f270 100644 --- a/.github/ISSUE_TEMPLATE/bug_request.md +++ "b/.github/ISSUE_TEMPLATE/\353\262\204\352\267\270-\354\235\264\354\212\210.md" @@ -1,3 +1,12 @@ +--- +name: 버그 이슈 +about: 버그 관련 이슈 +title: fix +labels: '' +assignees: '' + +--- + ## 어떤 버그인가요? > 어떤 버그인지 간결하게 설명해주세요 diff --git a/README.md b/README.md index bb366cf67..a096d1e73 100755 --- a/README.md +++ b/README.md @@ -25,19 +25,13 @@ AnDroid + Blossom ### ⛏️ 작업 중... ## 🛠 개발 시스템 구성도 -![image](https://github.com/tukcomCD2024/DroidBlossom/assets/68144059/c3116c5f-cc50-461b-8b3a-24a0566ed7e4) - -## 시스템 디자인 -![image](https://github.com/tukcomCD2024/DroidBlossom/assets/68144059/f7570e1d-c258-4f4e-adab-5b45d3acc901) - -## ⚙️ 운용 환경 -![image](https://github.com/tukcomCD2024/DroidBlossom/assets/68144059/0d43ae45-c953-46f0-aa44-1323713a1bb7) +### ⛏️ 작업 중... ## 시스템 디자인 -![image](https://github.com/tukcomCD2024/DroidBlossom/assets/68144059/f7570e1d-c258-4f4e-adab-5b45d3acc901) +### ⛏️ 작업 중... ## ⚙️ 운용 환경 -![image](https://github.com/tukcomCD2024/DroidBlossom/assets/68144059/0d43ae45-c953-46f0-aa44-1323713a1bb7) +### ⛏️ 작업 중... ## 🦾 기술 스택 ### ⛏️ 작업 중... diff --git "a/documents/\352\260\234\353\260\234 \354\235\274\354\240\225.txt" "b/documents/\352\260\234\353\260\234 \354\235\274\354\240\225.txt" new file mode 100644 index 000000000..9d9599956 --- /dev/null +++ "b/documents/\352\260\234\353\260\234 \354\235\274\354\240\225.txt" @@ -0,0 +1,14 @@ +백엔드 +- 매주 온라인, 오프라인으로 코딩 진행 +- 목요일 마다 오프라인 코드 리뷰 +- 스크럼 미팅 진행 + +프론트엔드 +- 매주 오프라인, 온라인으로 코딩 진행 +- 스크럼 미팅 진행 +- 목요일 마다 오프라인 코드 리뷰 +- 디자이너와 상시 소통 + +팀 회의 +- 특이사항 발생 시 일정 지정해 팀 회의 진행 +- 스프린트 종료 시 만나서 팀 회의 진행 \ No newline at end of file diff --git a/frontend/ARchive/.gitignore b/frontend/ARchive/.gitignore new file mode 100644 index 000000000..16dcd1226 --- /dev/null +++ b/frontend/ARchive/.gitignore @@ -0,0 +1,33 @@ +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Log/OS Files +*.log + +# Android Studio generated files and folders +captures/ +.externalNativeBuild/ +.cxx/ +*.apk +output.json + +# IntelliJ +*.iml +.idea/ +misc.xml +deploymentTargetDropDown.xml +render.experimental.xml + +# Keystore files +*.jks +*.keystore + +# Google Services (e.g. APIs or Firebase) +google-services.json + +# Android Profiling +*.hprof \ No newline at end of file diff --git a/frontend/ARchive/app/.gitignore b/frontend/ARchive/app/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/frontend/ARchive/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/frontend/ARchive/app/build.gradle b/frontend/ARchive/app/build.gradle new file mode 100644 index 000000000..524795a3c --- /dev/null +++ b/frontend/ARchive/app/build.gradle @@ -0,0 +1,108 @@ +plugins { + id 'com.android.application' + id 'org.jetbrains.kotlin.android' + id 'kotlin-kapt' + id 'com.google.dagger.hilt.android' + id 'dagger.hilt.android.plugin' +} + +android { + namespace 'com.droidblossom.archive' + compileSdk 33 + + defaultConfig { + applicationId "com.droidblossom.archive" + minSdk 24 + targetSdk 33 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + kotlinOptions { + jvmTarget = '17' + } + buildFeatures{ + dataBinding = true + viewBinding = true + } +} + +dependencies { + + implementation 'androidx.core:core-ktx:1.8.0' + implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'com.google.android.material:material:1.5.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.5' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' + + //gson + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1' + implementation 'com.google.code.gson:gson:2.10.1' + + //Glide + implementation 'com.github.bumptech.glide:glide:4.14.2' + annotationProcessor 'com.github.bumptech.glide:compiler:4.14.2' + + //coroutines + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1' + + // ViewModel + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2" + implementation "androidx.lifecycle:lifecycle-runtime:2.6.2" + implementation 'androidx.activity:activity-ktx:1.6.1' + + + //lifecycle + implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" + + //Retrofit + implementation "com.squareup.retrofit2:retrofit:2.9.0" + implementation "com.squareup.retrofit2:converter-gson:2.9.0" + implementation "com.squareup.okhttp3:okhttp:5.0.0-alpha.2" + implementation "com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.2" + + + // https://github.com/square/okhttp + implementation "com.squareup.okhttp3:okhttp:5.0.0-alpha.2" + + // https://github.com/square/okhttp/tree/master/okhttp-logging-interceptor + implementation "com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.2" + + //CardView + implementation "androidx.cardview:cardview:1.0.0" + + // photoview + implementation 'com.github.chrisbanes:PhotoView:2.3.0' + + // hilt + implementation "com.google.dagger:hilt-android:2.47" + kapt "com.google.dagger:hilt-compiler:2.47" + + // jetpack navigation + implementation "androidx.navigation:navigation-fragment-ktx:2.5.1" + implementation "androidx.navigation:navigation-ui-ktx:2.5.1" + + //circleImageView : https://github.com/hdodenhof/CircleImageView + implementation 'de.hdodenhof:circleimageview:3.1.0' + + //circleIndicator : https://github.com/ongakuer/CircleIndicator + implementation 'me.relex:circleindicator:2.1.6' +} +kapt { + correctErrorTypes true +} \ No newline at end of file diff --git a/frontend/ARchive/app/proguard-rules.pro b/frontend/ARchive/app/proguard-rules.pro new file mode 100644 index 000000000..481bb4348 --- /dev/null +++ b/frontend/ARchive/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/frontend/ARchive/app/src/androidTest/java/com/droidblossom/archive/ExampleInstrumentedTest.kt b/frontend/ARchive/app/src/androidTest/java/com/droidblossom/archive/ExampleInstrumentedTest.kt new file mode 100644 index 000000000..ca5a33312 --- /dev/null +++ b/frontend/ARchive/app/src/androidTest/java/com/droidblossom/archive/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.droidblossom.archive + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.droidblossom.archive", appContext.packageName) + } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/AndroidManifest.xml b/frontend/ARchive/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..9b592e6ee --- /dev/null +++ b/frontend/ARchive/app/src/main/AndroidManifest.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/ARchiveApplication.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/ARchiveApplication.kt new file mode 100644 index 000000000..b40fb3b6e --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/ARchiveApplication.kt @@ -0,0 +1,7 @@ +package com.droidblossom.archive + +import android.app.Application +import dagger.hilt.android.HiltAndroidApp + +@HiltAndroidApp +class ARchiveApplication : Application() {} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/base/BaseActivity.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/base/BaseActivity.kt new file mode 100644 index 000000000..51d7539cd --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/base/BaseActivity.kt @@ -0,0 +1,37 @@ +package com.droidblossom.archive.presentation.base + +import android.os.Bundle +import androidx.annotation.LayoutRes +import androidx.appcompat.app.AppCompatActivity +import androidx.databinding.DataBindingUtil +import androidx.databinding.ViewDataBinding +import kotlinx.coroutines.Job + +abstract class BaseActivity(@LayoutRes val layoutResource :Int): AppCompatActivity() { + + abstract val viewModel: VM? + private var fetchJob: Job? = null + + private var _binding: V? = null + protected val binding: V get() = _binding!! + + abstract fun observeData() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + _binding = DataBindingUtil.setContentView(this, layoutResource) + binding.lifecycleOwner = this + setContentView(binding.root) + fetchJob = viewModel?.fetchData() + observeData() + } + + override fun onDestroy() { + fetchJob?.let { + if (it.isActive) { + it.cancel() + } + } + super.onDestroy() + } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/base/BaseFragment.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/base/BaseFragment.kt new file mode 100644 index 000000000..c3eef7d4f --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/base/BaseFragment.kt @@ -0,0 +1,51 @@ +package com.droidblossom.archive.presentation.base + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.annotation.LayoutRes +import androidx.databinding.DataBindingUtil +import androidx.databinding.ViewDataBinding +import androidx.fragment.app.Fragment +import kotlinx.coroutines.Job + +abstract class BaseFragment(@LayoutRes val layoutResource :Int): Fragment() { + + abstract val viewModel: VM + private lateinit var fetchJob: Job + + private var _binding: V? = null + protected val binding : V get() = _binding!! + + abstract fun observeData() + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = DataBindingUtil.inflate( + layoutInflater, + layoutResource, + null, + false + ) + //DataBiding Observe + binding.lifecycleOwner =this + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + fetchJob = viewModel.fetchData() + observeData() + } + + override fun onDestroyView() { + super.onDestroyView() + if (fetchJob.isActive) { + fetchJob.cancel() + } + } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/base/BaseViewModel.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/base/BaseViewModel.kt new file mode 100644 index 000000000..0af502b11 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/base/BaseViewModel.kt @@ -0,0 +1,11 @@ +package com.droidblossom.archive.presentation.base + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch + +abstract class BaseViewModel:ViewModel() { + + open fun fetchData(): Job = viewModelScope.launch { } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/MainActivity.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/MainActivity.kt new file mode 100644 index 000000000..686efb3cd --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/MainActivity.kt @@ -0,0 +1,84 @@ +package com.droidblossom.archive.presentation.ui + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import androidx.navigation.NavOptions +import androidx.navigation.findNavController +import androidx.navigation.ui.NavigationUI +import com.droidblossom.archive.R +import com.droidblossom.archive.databinding.ActivityMainBinding +import com.droidblossom.archive.presentation.base.BaseActivity +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class MainActivity : BaseActivity(R.layout.activity_main) { + + override val viewModel: Nothing? = null + + override fun observeData() {} + + override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + + val navController = findNavController(R.id.mainNavHost) + NavigationUI.setupWithNavController(binding.bottomNavigation, findNavController(R.id.mainNavHost)) + + binding.fab.setOnClickListener { + navController.navigate( + R.id.cameraFragment, null, NavOptions.Builder() + .setPopUpTo(R.id.nav_main_graph, true) + .build()) + binding.bottomNavigation.selectedItemId = R.id.menuCamera + } + + binding.bottomNavigation.setOnItemSelectedListener { item -> + if (navController.currentDestination?.id != item.itemId) { + when (item.itemId) { + R.id.menuHome -> { + navController.navigate( + R.id.homeFragment, null, NavOptions.Builder() + .setPopUpTo(R.id.nav_main_graph, true) + .build()) + true + } + R.id.menuSkin -> { + navController.navigate( + R.id.skinFragment, null, NavOptions.Builder() + .setPopUpTo(R.id.nav_main_graph, true) + .build()) + true + } + R.id.menuMyPage -> { + navController.navigate( + R.id.myPageFragment, null, NavOptions.Builder() + .setPopUpTo(R.id.nav_main_graph, true) + .build()) + true + } + R.id.menuSocial -> { + navController.navigate( + R.id.socialFragment, null, NavOptions.Builder() + .setPopUpTo(R.id.nav_main_graph, true) + .build()) + true + } + else -> false + } + } else { + false + } + } + + } + + companion object{ + fun goMain(context: Context) { + val intent = Intent(context, MainActivity::class.java) + intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK + context.startActivity(intent) + } + } + +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/AuthActivity.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/AuthActivity.kt new file mode 100644 index 000000000..787a20d36 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/AuthActivity.kt @@ -0,0 +1,32 @@ +package com.droidblossom.archive.presentation.ui.auth + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import androidx.activity.viewModels +import com.droidblossom.archive.R +import com.droidblossom.archive.databinding.ActivityAuthBinding +import com.droidblossom.archive.presentation.base.BaseActivity +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class AuthActivity : BaseActivity(R.layout.activity_auth) { + + override val viewModel: AuthViewModelImpl by viewModels() + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + } + + override fun observeData() { + + } + + companion object{ + fun goAuth(context: Context) { + val intent = Intent(context, AuthActivity::class.java) + intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK + context.startActivity(intent) + } + } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/AuthViewModel.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/AuthViewModel.kt new file mode 100644 index 000000000..ef2b8da96 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/AuthViewModel.kt @@ -0,0 +1,30 @@ +package com.droidblossom.archive.presentation.ui.auth + +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.flow.StateFlow + +interface AuthViewModel { + val doneEvent: SharedFlow + val phoneNumber: MutableStateFlow + val rawPhoneNumber: StateFlow + val remainTime: StateFlow + val certificationNumber: StateFlow + + val certificationNumber1: MutableStateFlow + val certificationNumber2: MutableStateFlow + val certificationNumber3: MutableStateFlow + val certificationNumber4: MutableStateFlow + + fun initTimer() + fun startTimer() + fun signInToSignUp() + fun signUpToCertification() + fun certificationToSignUpSuccess() + + enum class AuthFlowEvent { + SIGNIN_TO_SIGNUP, + SIGNUP_TO_CERTIFICATION, + CERTIFICATION_TO_SIGNUPSUCCESS, + } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/AuthViewModelImpl.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/AuthViewModelImpl.kt new file mode 100644 index 000000000..78aefc52d --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/AuthViewModelImpl.kt @@ -0,0 +1,87 @@ +package com.droidblossom.archive.presentation.ui.auth + +import androidx.lifecycle.viewModelScope +import com.droidblossom.archive.presentation.base.BaseViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.stateIn +import kotlinx.coroutines.isActive +import kotlinx.coroutines.launch +import javax.inject.Inject + +@HiltViewModel +class AuthViewModelImpl @Inject constructor() : BaseViewModel(), AuthViewModel { + private val _doneEvent = MutableSharedFlow() + override val doneEvent: SharedFlow = _doneEvent.asSharedFlow() + + // SignUpFragment + private val _phoneNumber = MutableStateFlow("") + override val phoneNumber: MutableStateFlow = _phoneNumber + + private val _rawPhoneNumber = _phoneNumber + .map { it.replace("-", "") } + .stateIn(viewModelScope, SharingStarted.Eagerly, "") + override val rawPhoneNumber: StateFlow = _rawPhoneNumber + + // CertificationFragment + private val _remainTime = MutableStateFlow(300) + override val remainTime: StateFlow = _remainTime + private var isTimerStarted = false + + override val certificationNumber1 = MutableStateFlow("") + override val certificationNumber2 = MutableStateFlow("") + override val certificationNumber3 = MutableStateFlow("") + override val certificationNumber4 = MutableStateFlow("") + + private val _certificationNumber: StateFlow = combine( + certificationNumber1, + certificationNumber2, + certificationNumber3, + certificationNumber4 + ) { number1, number2, number3, number4 -> + number1 + number2 + number3 + number4 + }.stateIn(viewModelScope, SharingStarted.Eagerly, "") + override val certificationNumber: StateFlow = _certificationNumber + + override fun initTimer() { + _remainTime.value = 300 + } + + override fun startTimer() { + if (!isTimerStarted) { + isTimerStarted = true + viewModelScope.launch { + while (_remainTime.value > 0 && isActive) { + delay(1000) + _remainTime.value-- + } + } + } + } + + override fun signInToSignUp() { + viewModelScope.launch { + _doneEvent.emit(AuthViewModel.AuthFlowEvent.SIGNIN_TO_SIGNUP) + } + } + + override fun signUpToCertification() { + viewModelScope.launch { + _doneEvent.emit(AuthViewModel.AuthFlowEvent.SIGNUP_TO_CERTIFICATION) + } + } + + override fun certificationToSignUpSuccess() { + viewModelScope.launch { + _doneEvent.emit(AuthViewModel.AuthFlowEvent.CERTIFICATION_TO_SIGNUPSUCCESS) + } + } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/CertificationFragment.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/CertificationFragment.kt new file mode 100644 index 000000000..6f5613ed0 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/CertificationFragment.kt @@ -0,0 +1,108 @@ +package com.droidblossom.archive.presentation.ui.auth + +import android.content.Context +import android.os.Bundle +import android.text.Editable +import android.text.TextWatcher +import android.view.View +import android.view.inputmethod.InputMethodManager +import android.widget.EditText +import androidx.fragment.app.activityViewModels +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import androidx.navigation.NavController +import androidx.navigation.Navigation +import com.droidblossom.archive.R +import com.droidblossom.archive.databinding.FragmentCertificationBinding +import com.droidblossom.archive.presentation.base.BaseFragment +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.launch + +@AndroidEntryPoint +class CertificationFragment : BaseFragment(R.layout.fragment_certification) { + + + lateinit var navController: NavController + override val viewModel : AuthViewModelImpl by activityViewModels() + + override fun onResume() { + super.onResume() + viewModel.initTimer() + if (binding.certificationNumberEditText1.requestFocus()) { + val imm = + requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + imm.showSoftInput(binding.certificationNumberEditText1, InputMethodManager.SHOW_IMPLICIT) + } + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + binding.vm = viewModel + navController = Navigation.findNavController(view) + + viewModel.startTimer() + initView() + } + + private fun initView(){ + + with(binding){ + resendBtn.setOnClickListener { + // 인증번호 재전송 + viewModel.initTimer() + } + + setupAutoFocusOnLength(null, certificationNumberEditText1, certificationNumberEditText2) + setupAutoFocusOnLength(certificationNumberEditText1, certificationNumberEditText2, certificationNumberEditText3) + setupAutoFocusOnLength(certificationNumberEditText2, certificationNumberEditText3, certificationNumberEditText4) + setupAutoFocusOnLength(certificationNumberEditText3, certificationNumberEditText4, null) + } + } + + override fun observeData() { + + lifecycleScope.launch{ + repeatOnLifecycle(Lifecycle.State.STARTED) { + viewModel.doneEvent.filter { it == AuthViewModel.AuthFlowEvent.CERTIFICATION_TO_SIGNUPSUCCESS } + .collect { event -> + if(navController.currentDestination?.id != R.id.signUpSuccessFragment) { + navController.navigate(R.id.action_certificationFragment_to_signUpSuccessFragment) + } + } + } + } + + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.STARTED){ + viewModel.certificationNumber + .filter { it.length == 4 } + .collect { certificationNum -> + // 길이가 4일 때의 처리 로직 + viewModel.certificationToSignUpSuccess() + } + } + } + + } + + private fun setupAutoFocusOnLength(previousEditText: EditText?, currentEditText: EditText, nextEditText: EditText?) { + currentEditText.addTextChangedListener(object : TextWatcher { + override fun afterTextChanged(s: Editable?) { + if (s != null) { + if (s.length == 1) { + nextEditText?.requestFocus() + } else if (s.isEmpty()) { + previousEditText?.requestFocus() + } + } + } + + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {} + }) + } + +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/SignInFragment.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/SignInFragment.kt new file mode 100644 index 000000000..74caa35dc --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/SignInFragment.kt @@ -0,0 +1,53 @@ +package com.droidblossom.archive.presentation.ui.auth + +import android.os.Bundle +import android.view.View +import androidx.fragment.app.activityViewModels +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import androidx.navigation.NavController +import androidx.navigation.Navigation +import com.droidblossom.archive.R +import com.droidblossom.archive.databinding.FragmentSignInBinding +import com.droidblossom.archive.presentation.base.BaseFragment +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.launch + +@AndroidEntryPoint +class SignInFragment : BaseFragment(R.layout.fragment_sign_in) { + + + lateinit var navController: NavController + + override val viewModel : AuthViewModelImpl by activityViewModels() + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + navController = Navigation.findNavController(view) + binding.kakaoLoginBtn.setOnClickListener { + viewModel.signInToSignUp() + } + + binding.googleLoginBtn.setOnClickListener { + viewModel.signInToSignUp() + } + } + + override fun observeData() { + + lifecycleScope.launch{ + repeatOnLifecycle(Lifecycle.State.STARTED) { + viewModel.doneEvent.filter { it == AuthViewModel.AuthFlowEvent.SIGNIN_TO_SIGNUP } + .collect { event -> + if(navController.currentDestination?.id != R.id.signUpFragment) { + navController.navigate(R.id.action_signInFragment_to_signUpFragment) + } + } + } + } + + } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/SignUpFragment.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/SignUpFragment.kt new file mode 100644 index 000000000..7c27398e1 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/SignUpFragment.kt @@ -0,0 +1,66 @@ +package com.droidblossom.archive.presentation.ui.auth + +import android.content.Context +import android.os.Bundle +import android.view.View +import android.view.inputmethod.InputMethodManager +import androidx.fragment.app.activityViewModels +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import androidx.navigation.NavController +import androidx.navigation.Navigation +import com.droidblossom.archive.R +import com.droidblossom.archive.databinding.FragmentSignUpBinding +import com.droidblossom.archive.presentation.base.BaseFragment +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.launch + +@AndroidEntryPoint +class SignUpFragment : BaseFragment(R.layout.fragment_sign_up) { + + + private lateinit var navController: NavController + override val viewModel : AuthViewModelImpl by activityViewModels() + + override fun onResume() { + super.onResume() + if (binding.phoneNumberEditText.requestFocus()) { + val imm = + requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + imm.showSoftInput(binding.phoneNumberEditText, InputMethodManager.SHOW_IMPLICIT) + } + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + binding.vm = viewModel + navController = Navigation.findNavController(view) + + binding.confirmBtn.setOnClickListener { + // 휴대폰 번호 유효성 검사 필요 + +// val rawNumber = viewModel.rawPhoneNumber.value +// Toast.makeText(requireContext(), rawNumber, Toast.LENGTH_SHORT).show() + //Toast.makeText(requireContext(), viewModel.phoneNumber.value, Toast.LENGTH_SHORT).show() + viewModel.signUpToCertification() + } + + } + + override fun observeData() { + lifecycleScope.launch{ + repeatOnLifecycle(Lifecycle.State.STARTED) { + viewModel.doneEvent.filter { it == AuthViewModel.AuthFlowEvent.SIGNUP_TO_CERTIFICATION } + .collect { event -> + if(navController.currentDestination?.id != R.id.certificationFragment) { + navController.navigate(R.id.action_signUpFragment_to_certificationFragment) + } + } + } + } + } + +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/SignUpSuccessFragment.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/SignUpSuccessFragment.kt new file mode 100644 index 000000000..5e9f389df --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/auth/SignUpSuccessFragment.kt @@ -0,0 +1,35 @@ +package com.droidblossom.archive.presentation.ui.auth + +import android.os.Bundle +import android.os.Handler +import android.os.Looper +import android.view.View +import androidx.fragment.app.activityViewModels +import com.droidblossom.archive.R +import com.droidblossom.archive.databinding.FragmentSignUpSuccessBinding +import com.droidblossom.archive.presentation.base.BaseFragment +import com.droidblossom.archive.presentation.ui.MainActivity +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class SignUpSuccessFragment : BaseFragment(R.layout.fragment_sign_up_success) { + + override val viewModel : AuthViewModelImpl by activityViewModels() + + override fun observeData() {} + + private val handler = Handler(Looper.getMainLooper()) + private val runnable = Runnable { + MainActivity.goMain(requireContext()) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + handler.postDelayed(runnable, 2000) + } + + override fun onDestroy() { + handler.removeCallbacks(runnable) + super.onDestroy() + } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/camera/CameraFragment.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/camera/CameraFragment.kt new file mode 100644 index 000000000..16fdd2cbd --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/camera/CameraFragment.kt @@ -0,0 +1,60 @@ +package com.droidblossom.archive.presentation.ui.camera + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.droidblossom.archive.R + +// TODO: Rename parameter arguments, choose names that match +// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER +private const val ARG_PARAM1 = "param1" +private const val ARG_PARAM2 = "param2" + +/** + * A simple [Fragment] subclass. + * Use the [CameraFragment.newInstance] factory method to + * create an instance of this fragment. + */ +class CameraFragment : Fragment() { + // TODO: Rename and change types of parameters + private var param1: String? = null + private var param2: String? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + arguments?.let { + param1 = it.getString(ARG_PARAM1) + param2 = it.getString(ARG_PARAM2) + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_camera, container, false) + } + + companion object { + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment CameraFragment. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance(param1: String, param2: String) = + CameraFragment().apply { + arguments = Bundle().apply { + putString(ARG_PARAM1, param1) + putString(ARG_PARAM2, param2) + } + } + } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/capsule/CapsuleDetailActivity.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/capsule/CapsuleDetailActivity.kt new file mode 100644 index 000000000..c61a52269 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/capsule/CapsuleDetailActivity.kt @@ -0,0 +1,27 @@ +package com.droidblossom.archive.presentation.ui.capsule + +import android.content.Context +import android.content.Intent +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import androidx.activity.viewModels +import androidx.databinding.DataBindingUtil.setContentView +import com.droidblossom.archive.R +import com.droidblossom.archive.databinding.ActivityCapsuleDetailBinding +import com.droidblossom.archive.presentation.base.BaseActivity +import com.droidblossom.archive.presentation.ui.home.createcapsule.CreateCapsuleActivity + +class CapsuleDetailActivity : BaseActivity(R.layout.activity_capsule_detail) { + override val viewModel: CapsuleDetailViewModelImpl? by viewModels() + + override fun observeData() { + } + + + companion object { + const val CAPSULE_DETAIL = "capsule_detail" + + fun newIntent(context: Context) = + Intent(context, CapsuleDetailActivity::class.java) + } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/capsule/CapsuleDetailViewModel.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/capsule/CapsuleDetailViewModel.kt new file mode 100644 index 000000000..b7fb4504c --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/capsule/CapsuleDetailViewModel.kt @@ -0,0 +1,4 @@ +package com.droidblossom.archive.presentation.ui.capsule + +interface CapsuleDetailViewModel { +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/capsule/CapsuleDetailViewModelImpl.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/capsule/CapsuleDetailViewModelImpl.kt new file mode 100644 index 000000000..e35c8551c --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/capsule/CapsuleDetailViewModelImpl.kt @@ -0,0 +1,6 @@ +package com.droidblossom.archive.presentation.ui.capsule + +import com.droidblossom.archive.presentation.base.BaseViewModel + +class CapsuleDetailViewModelImpl: BaseViewModel(), CapsuleDetailViewModel { +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/HomeFragment.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/HomeFragment.kt new file mode 100644 index 000000000..cb892552f --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/HomeFragment.kt @@ -0,0 +1,60 @@ +package com.droidblossom.archive.presentation.ui.home + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.droidblossom.archive.R + +// TODO: Rename parameter arguments, choose names that match +// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER +private const val ARG_PARAM1 = "param1" +private const val ARG_PARAM2 = "param2" + +/** + * A simple [Fragment] subclass. + * Use the [HomeFragment.newInstance] factory method to + * create an instance of this fragment. + */ +class HomeFragment : Fragment() { + // TODO: Rename and change types of parameters + private var param1: String? = null + private var param2: String? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + arguments?.let { + param1 = it.getString(ARG_PARAM1) + param2 = it.getString(ARG_PARAM2) + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_home, container, false) + } + + companion object { + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment HomeFragment. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance(param1: String, param2: String) = + HomeFragment().apply { + arguments = Bundle().apply { + putString(ARG_PARAM1, param1) + putString(ARG_PARAM2, param2) + } + } + } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsule1Fragment.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsule1Fragment.kt new file mode 100644 index 000000000..b91a249f7 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsule1Fragment.kt @@ -0,0 +1,17 @@ +package com.droidblossom.archive.presentation.ui.home.createcapsule + +import androidx.fragment.app.activityViewModels +import androidx.fragment.app.viewModels +import com.droidblossom.archive.R +import com.droidblossom.archive.databinding.FragmentCreateCapsule1Binding +import com.droidblossom.archive.presentation.base.BaseFragment +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class CreateCapsule1Fragment : + BaseFragment(R.layout.fragment_create_capsule1) { + + override val viewModel: CreateCapsuleViewModelImpl by activityViewModels() + + override fun observeData() {} +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsule2Fragment.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsule2Fragment.kt new file mode 100644 index 000000000..a4c767895 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsule2Fragment.kt @@ -0,0 +1,20 @@ +package com.droidblossom.archive.presentation.ui.home.createcapsule + +import androidx.fragment.app.activityViewModels +import androidx.fragment.app.viewModels +import com.droidblossom.archive.R +import com.droidblossom.archive.databinding.FragmentCreateCapsule2Binding +import com.droidblossom.archive.presentation.base.BaseFragment +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class CreateCapsule2Fragment : + BaseFragment(R.layout.fragment_create_capsule2) { + + override val viewModel: CreateCapsuleViewModelImpl by activityViewModels() + + override fun observeData() { + + } + +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsule3Fragment.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsule3Fragment.kt new file mode 100644 index 000000000..f94f077b2 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsule3Fragment.kt @@ -0,0 +1,19 @@ +package com.droidblossom.archive.presentation.ui.home.createcapsule + +import androidx.fragment.app.activityViewModels +import androidx.fragment.app.viewModels +import com.droidblossom.archive.R +import com.droidblossom.archive.databinding.FragmentCreateCapsule3Binding +import com.droidblossom.archive.presentation.base.BaseFragment +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class CreateCapsule3Fragment : + BaseFragment(R.layout.fragment_create_capsule3) { + + override val viewModel: CreateCapsuleViewModelImpl by activityViewModels() + + override fun observeData() { + } + +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsuleActivity.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsuleActivity.kt new file mode 100644 index 000000000..3686c9698 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsuleActivity.kt @@ -0,0 +1,29 @@ +package com.droidblossom.archive.presentation.ui.home.createcapsule + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import androidx.activity.viewModels +import androidx.appcompat.app.AppCompatActivity +import com.droidblossom.archive.R +import com.droidblossom.archive.databinding.ActivityCreateCapsuleBinding +import com.droidblossom.archive.presentation.base.BaseActivity + +class CreateCapsuleActivity : BaseActivity(R.layout.activity_create_capsule) { + + override val viewModel: CreateCapsuleViewModelImpl? by viewModels() + + override fun observeData() {} + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + + } + companion object { + const val CREATE_CAPSULE = "create_capsule" + + fun newIntent(context: Context) = + Intent(context, CreateCapsuleActivity::class.java) + } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsuleViewModel.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsuleViewModel.kt new file mode 100644 index 000000000..a961362e0 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsuleViewModel.kt @@ -0,0 +1,4 @@ +package com.droidblossom.archive.presentation.ui.home.createcapsule + +interface CreateCapsuleViewModel { +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsuleViewModelImpl.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsuleViewModelImpl.kt new file mode 100644 index 000000000..462967340 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/home/createcapsule/CreateCapsuleViewModelImpl.kt @@ -0,0 +1,9 @@ +package com.droidblossom.archive.presentation.ui.home.createcapsule + +import com.droidblossom.archive.presentation.base.BaseViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class CreateCapsuleViewModelImpl @Inject constructor() : BaseViewModel(), CreateCapsuleViewModel{ +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/mypage/MyPageFragment.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/mypage/MyPageFragment.kt new file mode 100644 index 000000000..9104130a2 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/mypage/MyPageFragment.kt @@ -0,0 +1,18 @@ +package com.droidblossom.archive.presentation.ui.mypage + +import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import com.droidblossom.archive.R +import com.droidblossom.archive.databinding.FragmentMyPageBinding +import com.droidblossom.archive.presentation.base.BaseFragment +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class MyPageFragment : BaseFragment(R.layout.fragment_my_page) { + override val viewModel: MyPageViewModelImpl by viewModels() + + override fun observeData() { + + } + +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/mypage/MyPageViewModel.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/mypage/MyPageViewModel.kt new file mode 100644 index 000000000..f30afffe1 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/mypage/MyPageViewModel.kt @@ -0,0 +1,6 @@ +package com.droidblossom.archive.presentation.ui.mypage + +import com.droidblossom.archive.presentation.base.BaseViewModel + +interface MyPageViewModel { +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/mypage/MyPageViewModelImpl.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/mypage/MyPageViewModelImpl.kt new file mode 100644 index 000000000..978a66d06 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/mypage/MyPageViewModelImpl.kt @@ -0,0 +1,11 @@ +package com.droidblossom.archive.presentation.ui.mypage + +import com.droidblossom.archive.presentation.base.BaseViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class MyPageViewModelImpl @Inject constructor() + : BaseViewModel(), MyPageViewModel { + +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/skin/SkinFragment.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/skin/SkinFragment.kt new file mode 100644 index 000000000..6bddebb1a --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/skin/SkinFragment.kt @@ -0,0 +1,39 @@ +package com.droidblossom.archive.presentation.ui.skin + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.droidblossom.archive.R +import com.droidblossom.archive.databinding.FragmentSkinBinding +import com.droidblossom.archive.presentation.ui.skin.skinmake.SkinMakeActivity + +class SkinFragment : Fragment() { + + private var _binding : FragmentSkinBinding? = null + private val binding get() = _binding!! + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + _binding = FragmentSkinBinding.inflate(layoutInflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + binding.fab.setOnClickListener { + SkinMakeActivity.goSkinMake(requireContext()) + } + } + + override fun onDestroy() { + super.onDestroy() + _binding = null + } + +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/skin/skinmake/SkinMakeActivity.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/skin/skinmake/SkinMakeActivity.kt new file mode 100644 index 000000000..bc325eb6c --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/skin/skinmake/SkinMakeActivity.kt @@ -0,0 +1,32 @@ +package com.droidblossom.archive.presentation.ui.skin.skinmake + +import android.content.Context +import android.content.Intent +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import androidx.activity.viewModels +import com.droidblossom.archive.R +import com.droidblossom.archive.databinding.ActivitySkinMakeBinding +import com.droidblossom.archive.presentation.base.BaseActivity +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class SkinMakeActivity : BaseActivity(R.layout.activity_skin_make) { + + override val viewModel: SkinMakeViewModelImpl by viewModels() + + override fun observeData() {} + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + observeData() + } + + companion object{ + fun goSkinMake(context: Context) { + val intent = Intent(context, SkinMakeActivity::class.java) + context.startActivity(intent) + } + } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/skin/skinmake/SkinMakeFragment.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/skin/skinmake/SkinMakeFragment.kt new file mode 100644 index 000000000..ff7014ba4 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/skin/skinmake/SkinMakeFragment.kt @@ -0,0 +1,59 @@ +package com.droidblossom.archive.presentation.ui.skin.skinmake + +import android.os.Bundle +import android.util.Log +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.activity.result.PickVisualMediaRequest +import androidx.activity.result.contract.ActivityResultContracts +import androidx.fragment.app.activityViewModels +import androidx.navigation.NavController +import androidx.navigation.Navigation +import com.droidblossom.archive.R +import com.droidblossom.archive.databinding.FragmentSkinMakeBinding +import com.droidblossom.archive.presentation.base.BaseFragment +import com.droidblossom.archive.presentation.ui.MainActivity +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class SkinMakeFragment : BaseFragment(R.layout.fragment_skin_make) { + + lateinit var navController: NavController + override val viewModel : SkinMakeViewModelImpl by activityViewModels() + + private val picMedia = registerForActivityResult(ActivityResultContracts.PickVisualMedia()) {uri -> + if (uri != null){ + viewModel.imgUri.value = uri + }else{ + Log.d("포토", "No Media selected") + } + } + + override fun observeData() {} + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + navController = Navigation.findNavController(view) + binding.vm = viewModel + initView() + } + + private fun initView(){ + + with(binding){ + skinImageLayout.setOnClickListener { + picMedia.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)) + } + + closeBtn.setOnClickListener { + MainActivity.goMain(requireContext()) + } + + } + + } + +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/skin/skinmake/SkinMakeViewModel.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/skin/skinmake/SkinMakeViewModel.kt new file mode 100644 index 000000000..91db3f4af --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/skin/skinmake/SkinMakeViewModel.kt @@ -0,0 +1,8 @@ +package com.droidblossom.archive.presentation.ui.skin.skinmake + +import android.net.Uri +import kotlinx.coroutines.flow.MutableStateFlow + +interface SkinMakeViewModel { + val imgUri: MutableStateFlow +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/skin/skinmake/SkinMakeViewModelImpl.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/skin/skinmake/SkinMakeViewModelImpl.kt new file mode 100644 index 000000000..d4f5d911c --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/skin/skinmake/SkinMakeViewModelImpl.kt @@ -0,0 +1,13 @@ +package com.droidblossom.archive.presentation.ui.skin.skinmake + +import android.net.Uri +import com.droidblossom.archive.presentation.base.BaseViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import javax.inject.Inject + +@HiltViewModel +class SkinMakeViewModelImpl @Inject constructor() : BaseViewModel(), SkinMakeViewModel { + override val imgUri = MutableStateFlow(null) + +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/social/SocialFragment.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/social/SocialFragment.kt new file mode 100644 index 000000000..195ec7b34 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/social/SocialFragment.kt @@ -0,0 +1,60 @@ +package com.droidblossom.archive.presentation.ui.social + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.droidblossom.archive.R + +// TODO: Rename parameter arguments, choose names that match +// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER +private const val ARG_PARAM1 = "param1" +private const val ARG_PARAM2 = "param2" + +/** + * A simple [Fragment] subclass. + * Use the [SocialFragment.newInstance] factory method to + * create an instance of this fragment. + */ +class SocialFragment : Fragment() { + // TODO: Rename and change types of parameters + private var param1: String? = null + private var param2: String? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + arguments?.let { + param1 = it.getString(ARG_PARAM1) + param2 = it.getString(ARG_PARAM2) + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_social, container, false) + } + + companion object { + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment SocialFragment. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance(param1: String, param2: String) = + SocialFragment().apply { + arguments = Bundle().apply { + putString(ARG_PARAM1, param1) + putString(ARG_PARAM2, param2) + } + } + } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/splash/SplashActivity.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/splash/SplashActivity.kt new file mode 100644 index 000000000..4166a2972 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/presentation/ui/splash/SplashActivity.kt @@ -0,0 +1,20 @@ +package com.droidblossom.archive.presentation.ui.splash + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.os.Handler +import android.os.Looper +import com.droidblossom.archive.R +import com.droidblossom.archive.presentation.ui.auth.AuthActivity + +class SplashActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_splash) + + Handler(Looper.getMainLooper()).postDelayed({ + AuthActivity.goAuth(this@SplashActivity) + finish() + }, 1000) + } +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/java/com/droidblossom/archive/util/BindingAdapter.kt b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/util/BindingAdapter.kt new file mode 100644 index 000000000..83b4931b0 --- /dev/null +++ b/frontend/ARchive/app/src/main/java/com/droidblossom/archive/util/BindingAdapter.kt @@ -0,0 +1,39 @@ +package com.droidblossom.archive.util + +import android.graphics.drawable.Drawable +import android.net.Uri +import android.telephony.PhoneNumberFormattingTextWatcher +import android.widget.EditText +import android.widget.ImageView +import android.widget.TextView +import androidx.databinding.BindingAdapter +import com.bumptech.glide.Glide +import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions + +@BindingAdapter(value = ["bind:imageUrl", "bind:placeholder"], requireAll = false) +fun ImageView.setImage(imageUrl: Uri?, placeholder: Drawable?) { + Glide.with(this.context) + .load(imageUrl) + .transition(DrawableTransitionOptions.withCrossFade(300)) + .apply { + if (placeholder != null) { + placeholder(placeholder) + } + } + .into(this) +} + +@BindingAdapter("bind:applyPhoneNumberFormatting") +fun EditText.applyPhoneNumberFormatting(apply: Boolean) { + // 나중에는 그냥 지역번호를 받아서 각각의 포맷이 되도록 하는게 맞음 + if (apply) { + addTextChangedListener(PhoneNumberFormattingTextWatcher()) + } +} + +@BindingAdapter("bind:displayRemainingTime") +fun TextView.displayRemainingTime(totalSeconds: Int) { + val minutes = totalSeconds / 60 + val seconds = totalSeconds % 60 + this.text = String.format("%02d분 %02d초", minutes, seconds) +} \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/color/bottom_navigation_text_selector.xml b/frontend/ARchive/app/src/main/res/color/bottom_navigation_text_selector.xml new file mode 100644 index 000000000..ceb42f22d --- /dev/null +++ b/frontend/ARchive/app/src/main/res/color/bottom_navigation_text_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/frontend/ARchive/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 000000000..2b068d114 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/drawable/app_logo.png b/frontend/ARchive/app/src/main/res/drawable/app_logo.png new file mode 100644 index 000000000..848b1e9b0 Binary files /dev/null and b/frontend/ARchive/app/src/main/res/drawable/app_logo.png differ diff --git a/frontend/ARchive/app/src/main/res/drawable/app_logo_text.png b/frontend/ARchive/app/src/main/res/drawable/app_logo_text.png new file mode 100644 index 000000000..c144e575f Binary files /dev/null and b/frontend/ARchive/app/src/main/res/drawable/app_logo_text.png differ diff --git a/frontend/ARchive/app/src/main/res/drawable/bottom_navigation_home_selector.xml b/frontend/ARchive/app/src/main/res/drawable/bottom_navigation_home_selector.xml new file mode 100644 index 000000000..395f1436c --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/bottom_navigation_home_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/drawable/bottom_navigation_mypage_selector.xml b/frontend/ARchive/app/src/main/res/drawable/bottom_navigation_mypage_selector.xml new file mode 100644 index 000000000..030c2c1f7 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/bottom_navigation_mypage_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/drawable/bottom_navigation_skin_selector.xml b/frontend/ARchive/app/src/main/res/drawable/bottom_navigation_skin_selector.xml new file mode 100644 index 000000000..45c4ae28a --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/bottom_navigation_skin_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/drawable/bottom_navigation_social_selector.xml b/frontend/ARchive/app/src/main/res/drawable/bottom_navigation_social_selector.xml new file mode 100644 index 000000000..57a3a6de7 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/bottom_navigation_social_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/drawable/capsule_detail_background.png b/frontend/ARchive/app/src/main/res/drawable/capsule_detail_background.png new file mode 100644 index 000000000..4a554861e Binary files /dev/null and b/frontend/ARchive/app/src/main/res/drawable/capsule_detail_background.png differ diff --git a/frontend/ARchive/app/src/main/res/drawable/certification_edittext_background.xml b/frontend/ARchive/app/src/main/res/drawable/certification_edittext_background.xml new file mode 100644 index 000000000..b97989534 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/certification_edittext_background.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/drawable/corner_radius_16_stroke_2.xml b/frontend/ARchive/app/src/main/res/drawable/corner_radius_16_stroke_2.xml new file mode 100644 index 000000000..a98fd6db7 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/corner_radius_16_stroke_2.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/drawable/corner_radius_8.xml b/frontend/ARchive/app/src/main/res/drawable/corner_radius_8.xml new file mode 100644 index 000000000..723ff9fe1 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/corner_radius_8.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_alarm_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_alarm_24.xml new file mode 100644 index 000000000..3590d58bc --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_alarm_24.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_alarm_on_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_alarm_on_24.xml new file mode 100644 index 000000000..a258f5b85 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_alarm_on_24.xml @@ -0,0 +1,33 @@ + + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_arrow_right_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_arrow_right_24.xml new file mode 100644 index 000000000..7f3a7bd7c --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_arrow_right_24.xml @@ -0,0 +1,12 @@ + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_arrow_right_double_40.xml b/frontend/ARchive/app/src/main/res/drawable/ic_arrow_right_double_40.xml new file mode 100644 index 000000000..5e7822d1c --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_arrow_right_double_40.xml @@ -0,0 +1,18 @@ + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_arrow_right_double_48.xml b/frontend/ARchive/app/src/main/res/drawable/ic_arrow_right_double_48.xml new file mode 100644 index 000000000..263868333 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_arrow_right_double_48.xml @@ -0,0 +1,18 @@ + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_camera_40.xml b/frontend/ARchive/app/src/main/res/drawable/ic_camera_40.xml new file mode 100644 index 000000000..030b5f060 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_camera_40.xml @@ -0,0 +1,36 @@ + + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_camera_64.xml b/frontend/ARchive/app/src/main/res/drawable/ic_camera_64.xml new file mode 100644 index 000000000..c08aec6f8 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_camera_64.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_camera_off_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_camera_off_24.xml new file mode 100644 index 000000000..5e70563a6 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_camera_off_24.xml @@ -0,0 +1,36 @@ + + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_camera_on_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_camera_on_24.xml new file mode 100644 index 000000000..bf0815306 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_camera_on_24.xml @@ -0,0 +1,36 @@ + + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_close_40.xml b/frontend/ARchive/app/src/main/res/drawable/ic_close_40.xml new file mode 100644 index 000000000..7b834ac8c --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_close_40.xml @@ -0,0 +1,18 @@ + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_close_circle_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_close_circle_24.xml new file mode 100644 index 000000000..44058ee6c --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_close_circle_24.xml @@ -0,0 +1,21 @@ + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_group_marker_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_group_marker_24.xml new file mode 100644 index 000000000..4d0bd8fda --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_group_marker_24.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_group_marker_28.xml b/frontend/ARchive/app/src/main/res/drawable/ic_group_marker_28.xml new file mode 100644 index 000000000..a02cee59c --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_group_marker_28.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_group_off_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_group_off_24.xml new file mode 100644 index 000000000..1ae3931a3 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_group_off_24.xml @@ -0,0 +1,28 @@ + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_group_on_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_group_on_24.xml new file mode 100644 index 000000000..f1e9b544f --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_group_on_24.xml @@ -0,0 +1,28 @@ + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_home_off_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_home_off_24.xml new file mode 100644 index 000000000..2eb9010d4 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_home_off_24.xml @@ -0,0 +1,12 @@ + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_home_on_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_home_on_24.xml new file mode 100644 index 000000000..5b9142742 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_home_on_24.xml @@ -0,0 +1,12 @@ + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_launcher_background.xml b/frontend/ARchive/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 000000000..07d5da9cb --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_location_off_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_location_off_24.xml new file mode 100644 index 000000000..d7dec8694 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_location_off_24.xml @@ -0,0 +1,11 @@ + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_location_on_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_location_on_24.xml new file mode 100644 index 000000000..5cb7236e8 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_location_on_24.xml @@ -0,0 +1,11 @@ + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_minus_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_minus_24.xml new file mode 100644 index 000000000..f60c8bc8f --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_minus_24.xml @@ -0,0 +1,12 @@ + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_mypage_off_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_mypage_off_24.xml new file mode 100644 index 000000000..6e04cff68 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_mypage_off_24.xml @@ -0,0 +1,21 @@ + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_mypage_on_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_mypage_on_24.xml new file mode 100644 index 000000000..389068c30 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_mypage_on_24.xml @@ -0,0 +1,21 @@ + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_plus_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_plus_24.xml new file mode 100644 index 000000000..e48e8e283 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_plus_24.xml @@ -0,0 +1,18 @@ + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_plus_40.xml b/frontend/ARchive/app/src/main/res/drawable/ic_plus_40.xml new file mode 100644 index 000000000..d5fac9104 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_plus_40.xml @@ -0,0 +1,18 @@ + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_plus_main_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_plus_main_24.xml new file mode 100644 index 000000000..21da378df --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_plus_main_24.xml @@ -0,0 +1,18 @@ + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_plus_main_40.xml b/frontend/ARchive/app/src/main/res/drawable/ic_plus_main_40.xml new file mode 100644 index 000000000..f31ad332b --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_plus_main_40.xml @@ -0,0 +1,18 @@ + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_public_marker_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_public_marker_24.xml new file mode 100644 index 000000000..ae2b9e0bd --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_public_marker_24.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_public_marker_28.xml b/frontend/ARchive/app/src/main/res/drawable/ic_public_marker_28.xml new file mode 100644 index 000000000..17ea1d4b9 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_public_marker_28.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_public_off_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_public_off_24.xml new file mode 100644 index 000000000..e489554d2 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_public_off_24.xml @@ -0,0 +1,29 @@ + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_public_on_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_public_on_24.xml new file mode 100644 index 000000000..fe85c381f --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_public_on_24.xml @@ -0,0 +1,29 @@ + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_search_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_search_24.xml new file mode 100644 index 000000000..a57696a6c --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_search_24.xml @@ -0,0 +1,17 @@ + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_secret_marker_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_secret_marker_24.xml new file mode 100644 index 000000000..c09739cf0 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_secret_marker_24.xml @@ -0,0 +1,18 @@ + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_secret_marker_28.xml b/frontend/ARchive/app/src/main/res/drawable/ic_secret_marker_28.xml new file mode 100644 index 000000000..cd0762637 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_secret_marker_28.xml @@ -0,0 +1,18 @@ + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_secret_off_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_secret_off_24.xml new file mode 100644 index 000000000..8b2ec66ef --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_secret_off_24.xml @@ -0,0 +1,22 @@ + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_secret_on_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_secret_on_24.xml new file mode 100644 index 000000000..e47eed39e --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_secret_on_24.xml @@ -0,0 +1,16 @@ + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_setting_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_setting_24.xml new file mode 100644 index 000000000..094189ba7 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_setting_24.xml @@ -0,0 +1,21 @@ + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_skin_off_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_skin_off_24.xml new file mode 100644 index 000000000..d38241717 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_skin_off_24.xml @@ -0,0 +1,17 @@ + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_skin_on_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_skin_on_24.xml new file mode 100644 index 000000000..56ebe6f17 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_skin_on_24.xml @@ -0,0 +1,17 @@ + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_social_off_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_social_off_24.xml new file mode 100644 index 000000000..a9bc670df --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_social_off_24.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/ic_social_on_24.xml b/frontend/ARchive/app/src/main/res/drawable/ic_social_on_24.xml new file mode 100644 index 000000000..4cea19104 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/ic_social_on_24.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/frontend/ARchive/app/src/main/res/drawable/inset_bottom_navi_item.xml b/frontend/ARchive/app/src/main/res/drawable/inset_bottom_navi_item.xml new file mode 100644 index 000000000..bc1e60046 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/inset_bottom_navi_item.xml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/drawable/main_background.xml b/frontend/ARchive/app/src/main/res/drawable/main_background.xml new file mode 100644 index 000000000..b2001fbed --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/main_background.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/drawable/rectangle_solid_corner_20dp.xml b/frontend/ARchive/app/src/main/res/drawable/rectangle_solid_corner_20dp.xml new file mode 100644 index 000000000..bb6666d2a --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/rectangle_solid_corner_20dp.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/drawable/rectangle_solid_corner_8dp.xml b/frontend/ARchive/app/src/main/res/drawable/rectangle_solid_corner_8dp.xml new file mode 100644 index 000000000..46999587c --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/rectangle_solid_corner_8dp.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/drawable/rectangle_stroke_corner_8dp.xml b/frontend/ARchive/app/src/main/res/drawable/rectangle_stroke_corner_8dp.xml new file mode 100644 index 000000000..9a6fe867a --- /dev/null +++ b/frontend/ARchive/app/src/main/res/drawable/rectangle_stroke_corner_8dp.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/drawable/sample_skin.png b/frontend/ARchive/app/src/main/res/drawable/sample_skin.png new file mode 100644 index 000000000..8f0ac05c5 Binary files /dev/null and b/frontend/ARchive/app/src/main/res/drawable/sample_skin.png differ diff --git a/frontend/ARchive/app/src/main/res/drawable/skin_upload_img.png b/frontend/ARchive/app/src/main/res/drawable/skin_upload_img.png new file mode 100644 index 000000000..c69ed6c02 Binary files /dev/null and b/frontend/ARchive/app/src/main/res/drawable/skin_upload_img.png differ diff --git a/frontend/ARchive/app/src/main/res/drawable/splash_img.png b/frontend/ARchive/app/src/main/res/drawable/splash_img.png new file mode 100644 index 000000000..4b7840f37 Binary files /dev/null and b/frontend/ARchive/app/src/main/res/drawable/splash_img.png differ diff --git a/frontend/ARchive/app/src/main/res/drawable/splash_img2.png b/frontend/ARchive/app/src/main/res/drawable/splash_img2.png new file mode 100644 index 000000000..72c5c2a23 Binary files /dev/null and b/frontend/ARchive/app/src/main/res/drawable/splash_img2.png differ diff --git a/frontend/ARchive/app/src/main/res/font/notosans_bold.ttf b/frontend/ARchive/app/src/main/res/font/notosans_bold.ttf new file mode 100644 index 000000000..d84248ed1 Binary files /dev/null and b/frontend/ARchive/app/src/main/res/font/notosans_bold.ttf differ diff --git a/frontend/ARchive/app/src/main/res/font/notosans_medium.ttf b/frontend/ARchive/app/src/main/res/font/notosans_medium.ttf new file mode 100644 index 000000000..a799b74da Binary files /dev/null and b/frontend/ARchive/app/src/main/res/font/notosans_medium.ttf differ diff --git a/frontend/ARchive/app/src/main/res/font/notosans_regular.ttf b/frontend/ARchive/app/src/main/res/font/notosans_regular.ttf new file mode 100644 index 000000000..fa4cff505 Binary files /dev/null and b/frontend/ARchive/app/src/main/res/font/notosans_regular.ttf differ diff --git a/frontend/ARchive/app/src/main/res/layout/activity_auth.xml b/frontend/ARchive/app/src/main/res/layout/activity_auth.xml new file mode 100644 index 000000000..e5d22d8ef --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/activity_auth.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/activity_capsule_detail.xml b/frontend/ARchive/app/src/main/res/layout/activity_capsule_detail.xml new file mode 100644 index 000000000..47fefd746 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/activity_capsule_detail.xml @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/activity_create_capsule.xml b/frontend/ARchive/app/src/main/res/layout/activity_create_capsule.xml new file mode 100644 index 000000000..d4e6eb874 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/activity_create_capsule.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/activity_main.xml b/frontend/ARchive/app/src/main/res/layout/activity_main.xml new file mode 100644 index 000000000..3d5c45167 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/activity_skin_make.xml b/frontend/ARchive/app/src/main/res/layout/activity_skin_make.xml new file mode 100644 index 000000000..0e2a4c88b --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/activity_skin_make.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/activity_splash.xml b/frontend/ARchive/app/src/main/res/layout/activity_splash.xml new file mode 100644 index 000000000..1803f7b17 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/activity_splash.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/fragment_camera.xml b/frontend/ARchive/app/src/main/res/layout/fragment_camera.xml new file mode 100644 index 000000000..e68c6b97a --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/fragment_camera.xml @@ -0,0 +1,16 @@ + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/fragment_certification.xml b/frontend/ARchive/app/src/main/res/layout/fragment_certification.xml new file mode 100644 index 000000000..991967d82 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/fragment_certification.xml @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/fragment_create_capsule1.xml b/frontend/ARchive/app/src/main/res/layout/fragment_create_capsule1.xml new file mode 100644 index 000000000..f6564b479 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/fragment_create_capsule1.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/fragment_create_capsule2.xml b/frontend/ARchive/app/src/main/res/layout/fragment_create_capsule2.xml new file mode 100644 index 000000000..979c613d1 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/fragment_create_capsule2.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/fragment_create_capsule3.xml b/frontend/ARchive/app/src/main/res/layout/fragment_create_capsule3.xml new file mode 100644 index 000000000..d3f97bbb0 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/fragment_create_capsule3.xml @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/fragment_home.xml b/frontend/ARchive/app/src/main/res/layout/fragment_home.xml new file mode 100644 index 000000000..8dd85a6cb --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/fragment_home.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/fragment_my_page.xml b/frontend/ARchive/app/src/main/res/layout/fragment_my_page.xml new file mode 100644 index 000000000..260812a6c --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/fragment_my_page.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/fragment_sign_in.xml b/frontend/ARchive/app/src/main/res/layout/fragment_sign_in.xml new file mode 100644 index 000000000..1d1ce9e82 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/fragment_sign_in.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/fragment_sign_up.xml b/frontend/ARchive/app/src/main/res/layout/fragment_sign_up.xml new file mode 100644 index 000000000..84b5fedcf --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/fragment_sign_up.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/fragment_sign_up_success.xml b/frontend/ARchive/app/src/main/res/layout/fragment_sign_up_success.xml new file mode 100644 index 000000000..3626f93bc --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/fragment_sign_up_success.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/fragment_skin.xml b/frontend/ARchive/app/src/main/res/layout/fragment_skin.xml new file mode 100644 index 000000000..97008b88a --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/fragment_skin.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/fragment_skin_make.xml b/frontend/ARchive/app/src/main/res/layout/fragment_skin_make.xml new file mode 100644 index 000000000..28d330206 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/fragment_skin_make.xml @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/fragment_social.xml b/frontend/ARchive/app/src/main/res/layout/fragment_social.xml new file mode 100644 index 000000000..c74a82000 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/fragment_social.xml @@ -0,0 +1,16 @@ + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/item_group.xml b/frontend/ARchive/app/src/main/res/layout/item_group.xml new file mode 100644 index 000000000..d7bb853a3 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/item_group.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/item_group_number.xml b/frontend/ARchive/app/src/main/res/layout/item_group_number.xml new file mode 100644 index 000000000..6679f6d16 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/item_group_number.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/item_my_capsule.xml b/frontend/ARchive/app/src/main/res/layout/item_my_capsule.xml new file mode 100644 index 000000000..f24206735 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/item_my_capsule.xml @@ -0,0 +1,38 @@ + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/item_post_image.xml b/frontend/ARchive/app/src/main/res/layout/item_post_image.xml new file mode 100644 index 000000000..9fad4e4f5 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/item_post_image.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + diff --git a/frontend/ARchive/app/src/main/res/layout/item_skin.xml b/frontend/ARchive/app/src/main/res/layout/item_skin.xml new file mode 100644 index 000000000..781422607 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/item_skin.xml @@ -0,0 +1,25 @@ + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/layout/item_story.xml b/frontend/ARchive/app/src/main/res/layout/item_story.xml new file mode 100644 index 000000000..e8728e453 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/layout/item_story.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/menu/menu_main.xml b/frontend/ARchive/app/src/main/res/menu/menu_main.xml new file mode 100644 index 000000000..6d3df33c6 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/menu/menu_main.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/frontend/ARchive/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 000000000..6f3b755bf --- /dev/null +++ b/frontend/ARchive/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/frontend/ARchive/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 000000000..6f3b755bf --- /dev/null +++ b/frontend/ARchive/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/frontend/ARchive/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 000000000..c209e78ec Binary files /dev/null and b/frontend/ARchive/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/frontend/ARchive/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/frontend/ARchive/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 000000000..b2dfe3d1b Binary files /dev/null and b/frontend/ARchive/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/frontend/ARchive/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/frontend/ARchive/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 000000000..4f0f1d64e Binary files /dev/null and b/frontend/ARchive/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/frontend/ARchive/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/frontend/ARchive/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 000000000..62b611da0 Binary files /dev/null and b/frontend/ARchive/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/frontend/ARchive/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/frontend/ARchive/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 000000000..948a3070f Binary files /dev/null and b/frontend/ARchive/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/frontend/ARchive/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/frontend/ARchive/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 000000000..1b9a6956b Binary files /dev/null and b/frontend/ARchive/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/frontend/ARchive/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/frontend/ARchive/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 000000000..28d4b77f9 Binary files /dev/null and b/frontend/ARchive/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/frontend/ARchive/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/frontend/ARchive/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 000000000..9287f5083 Binary files /dev/null and b/frontend/ARchive/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/frontend/ARchive/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/frontend/ARchive/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 000000000..aa7d6427e Binary files /dev/null and b/frontend/ARchive/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/frontend/ARchive/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/frontend/ARchive/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 000000000..9126ae37c Binary files /dev/null and b/frontend/ARchive/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/frontend/ARchive/app/src/main/res/navigation/nav_auth_graph.xml b/frontend/ARchive/app/src/main/res/navigation/nav_auth_graph.xml new file mode 100644 index 000000000..c2aa03730 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/navigation/nav_auth_graph.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/navigation/nav_create_capsule_graph.xml b/frontend/ARchive/app/src/main/res/navigation/nav_create_capsule_graph.xml new file mode 100644 index 000000000..9f2489ef6 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/navigation/nav_create_capsule_graph.xml @@ -0,0 +1,30 @@ + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/navigation/nav_main_bottom_graph.xml b/frontend/ARchive/app/src/main/res/navigation/nav_main_bottom_graph.xml new file mode 100644 index 000000000..e4a646f4d --- /dev/null +++ b/frontend/ARchive/app/src/main/res/navigation/nav_main_bottom_graph.xml @@ -0,0 +1,33 @@ + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/navigation/nav_skin_make_graph.xml b/frontend/ARchive/app/src/main/res/navigation/nav_skin_make_graph.xml new file mode 100644 index 000000000..82e669a68 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/navigation/nav_skin_make_graph.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/values-land/dimens.xml b/frontend/ARchive/app/src/main/res/values-land/dimens.xml new file mode 100644 index 000000000..22d7f0043 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/values-land/dimens.xml @@ -0,0 +1,3 @@ + + 48dp + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/values-night/themes.xml b/frontend/ARchive/app/src/main/res/values-night/themes.xml new file mode 100644 index 000000000..a49ab416a --- /dev/null +++ b/frontend/ARchive/app/src/main/res/values-night/themes.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/values-w1240dp/dimens.xml b/frontend/ARchive/app/src/main/res/values-w1240dp/dimens.xml new file mode 100644 index 000000000..d73f4a359 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/values-w1240dp/dimens.xml @@ -0,0 +1,3 @@ + + 200dp + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/values-w600dp/dimens.xml b/frontend/ARchive/app/src/main/res/values-w600dp/dimens.xml new file mode 100644 index 000000000..22d7f0043 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/values-w600dp/dimens.xml @@ -0,0 +1,3 @@ + + 48dp + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/values/colors.xml b/frontend/ARchive/app/src/main/res/values/colors.xml new file mode 100644 index 000000000..4be005fbe --- /dev/null +++ b/frontend/ARchive/app/src/main/res/values/colors.xml @@ -0,0 +1,24 @@ + + + + #FF131313 + #FFFFFFFF + #FFFF5C5C + #FF4263F7 + #FF6882F9 + #FFB3C1FC + #FFD5DDFD + #FF1B3AC4 + #FFECEFFE + #FFF5F9FF + #FFF3F3F3 + #FFE5E5E5 + #FFD1D1D1 + #FFB7B7B7 + #FF9C9C9C + #FF7E7E7E + #FF424242 + #FF2E2E2E + #FF1C1C1C + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/values/dimen.xml b/frontend/ARchive/app/src/main/res/values/dimen.xml new file mode 100644 index 000000000..6dd5b4410 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/values/dimen.xml @@ -0,0 +1,22 @@ + + + 16dp + 8dp + + 16dp + 8dp + + 26sp + 24sp + 24sp + 20sp + 18sp + 16sp + 16sp + 18sp + 14sp + 14sp + 12sp + 12sp + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/values/dimens.xml b/frontend/ARchive/app/src/main/res/values/dimens.xml new file mode 100644 index 000000000..125df8711 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/values/dimens.xml @@ -0,0 +1,3 @@ + + 16dp + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/values/strings.xml b/frontend/ARchive/app/src/main/res/values/strings.xml new file mode 100644 index 000000000..e6b79f3b6 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/values/strings.xml @@ -0,0 +1,64 @@ + + ARchive + + Hello blank fragment + + 휴대폰 번호를 입력해주세요 + 인증번호를 입력해주세요 + 나만의 스킨을 만들어 보세요 + 내가 보유한 스킨을 확인하세요 + 재전송 + 카카오 로그인 + Google 로그인 + 확인 + ARchive에 오신 것을\n환영합니다! + 가입완료 + 검색 + 스킨 이름을 작성하세요 + 닫기 + 모션 추가 + 완성하기 + SkinMakeActivity + + First Fragment + Second Fragment + Next + Previous + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam in scelerisque sem. Mauris + volutpat, dolor id interdum ullamcorper, risus dolor egestas lectus, sit amet mattis purus + dui nec risus. Maecenas non sodales nisi, vel dictum dolor. Class aptent taciti sociosqu ad + litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse blandit eleifend + diam, vel rutrum tellus vulputate quis. Aliquam eget libero aliquet, imperdiet nisl a, + ornare ex. Sed rhoncus est ut libero porta lobortis. Fusce in dictum tellus.\n\n + Suspendisse interdum ornare ante. Aliquam nec cursus lorem. Morbi id magna felis. Vivamus + egestas, est a condimentum egestas, turpis nisl iaculis ipsum, in dictum tellus dolor sed + neque. Morbi tellus erat, dapibus ut sem a, iaculis tincidunt dui. Interdum et malesuada + fames ac ante ipsum primis in faucibus. Curabitur et eros porttitor, ultricies urna vitae, + molestie nibh. Phasellus at commodo eros, non aliquet metus. Sed maximus nisl nec dolor + bibendum, vel congue leo egestas.\n\n + Sed interdum tortor nibh, in sagittis risus mollis quis. Curabitur mi odio, condimentum sit + amet auctor at, mollis non turpis. Nullam pretium libero vestibulum, finibus orci vel, + molestie quam. Fusce blandit tincidunt nulla, quis sollicitudin libero facilisis et. Integer + interdum nunc ligula, et fermentum metus hendrerit id. Vestibulum lectus felis, dictum at + lacinia sit amet, tristique id quam. Cras eu consequat dui. Suspendisse sodales nunc ligula, + in lobortis sem porta sed. Integer id ultrices magna, in luctus elit. Sed a pellentesque + est.\n\n + Aenean nunc velit, lacinia sed dolor sed, ultrices viverra nulla. Etiam a venenatis nibh. + Morbi laoreet, tortor sed facilisis varius, nibh orci rhoncus nulla, id elementum leo dui + non lorem. Nam mollis ipsum quis auctor varius. Quisque elementum eu libero sed commodo. In + eros nisl, imperdiet vel imperdiet et, scelerisque a mauris. Pellentesque varius ex nunc, + quis imperdiet eros placerat ac. Duis finibus orci et est auctor tincidunt. Sed non viverra + ipsum. Nunc quis augue egestas, cursus lorem at, molestie sem. Morbi a consectetur ipsum, a + placerat diam. Etiam vulputate dignissim convallis. Integer faucibus mauris sit amet finibus + convallis.\n\n + Phasellus in aliquet mi. Pellentesque habitant morbi tristique senectus et netus et + malesuada fames ac turpis egestas. In volutpat arcu ut felis sagittis, in finibus massa + gravida. Pellentesque id tellus orci. Integer dictum, lorem sed efficitur ullamcorper, + libero justo consectetur ipsum, in mollis nisl ex sed nisl. Donec maximus ullamcorper + sodales. Praesent bibendum rhoncus tellus nec feugiat. In a ornare nulla. Donec rhoncus + libero vel nunc consequat, quis tincidunt nisl eleifend. Cras bibendum enim a justo luctus + vestibulum. Fusce dictum libero quis erat maximus, vitae volutpat diam dignissim. + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/values/style.xml b/frontend/ARchive/app/src/main/res/values/style.xml new file mode 100644 index 000000000..9888ceeb4 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/values/style.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/ARchive/app/src/main/res/values/themes.xml b/frontend/ARchive/app/src/main/res/values/themes.xml new file mode 100644 index 000000000..0049d8883 --- /dev/null +++ b/frontend/ARchive/app/src/main/res/values/themes.xml @@ -0,0 +1,14 @@ + + + + +