diff --git a/app/build.gradle b/app/build.gradle index 2e828e1..39c446a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,17 +20,32 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + dataBinding { + enabled = true + } } dependencies { - implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + + implementation "android.arch.lifecycle:extensions:1.1.1" + annotationProcessor "android.arch.lifecycle:compiler:1.1.1" + + implementation 'com.squareup.retrofit2:retrofit:2.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.3.0' + implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' + implementation 'io.reactivex.rxjava2:rxjava:2.1.6' + implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' implementation 'com.android.support:support-v4:28.0.0' implementation 'com.android.support:design:28.0.0' implementation 'com.android.support:recyclerview-v7:28.0.0' + + kapt "com.android.databinding:compiler:3.0.1" + implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.10' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bbaa63b..090dbcf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,35 +1,76 @@ + + + + + - - - - - - - - + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/Adapter/AuthorListItemAdapter.kt b/app/src/main/java/mashup/loling/Adapter/AuthorListItemAdapter.kt new file mode 100644 index 0000000..5629b29 --- /dev/null +++ b/app/src/main/java/mashup/loling/Adapter/AuthorListItemAdapter.kt @@ -0,0 +1,36 @@ +package mashup.loling.Adapter + +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import kotlinx.android.synthetic.main.item_author_list.view.* +import mashup.loling.R +import mashup.loling.model.Paper + + +class AuthorListItemAdapter(var items : ArrayList) : RecyclerView +.Adapter(){ + + class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + var authorListItemName : TextView = itemView.tvAuthorListItemName + var authorListItemTime : TextView = itemView.tvAuthorListItemDate + } + + override fun onCreateViewHolder(parent: ViewGroup, p1: Int): ViewHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_author_list, parent, false) + return ViewHolder(view) + } + + override fun getItemCount(): Int { + return items.size + } + + override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) { + val item = items[position] + viewHolder.authorListItemName.text = item.name + viewHolder.authorListItemTime.text = item.createdAt.toString()+ item.dueDay.toString() + } +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/Adapter/CreateRoomPagerAdapter.kt b/app/src/main/java/mashup/loling/Adapter/CreateRoomPagerAdapter.kt new file mode 100644 index 0000000..7fb378c --- /dev/null +++ b/app/src/main/java/mashup/loling/Adapter/CreateRoomPagerAdapter.kt @@ -0,0 +1,82 @@ +package mashup.loling.Adapter + +import android.content.Context +import android.support.v4.view.PagerAdapter +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import kotlinx.android.synthetic.main.layout_create_room_calendar.view.* +import kotlinx.android.synthetic.main.layout_create_room_main.view.* +import kotlinx.android.synthetic.main.layout_create_room_new_or_enter.view.* +import mashup.loling.R +import mashup.loling.room.view.CreateRoomActivity +import java.util.* + +class CreateRoomPagerAdapter(val context: Context, + val createRoomMethods : CreateRoomActivity.Companion + .ICreateRoomMethods, val name : String) + : PagerAdapter() { + + companion object { + val PAGE_CALENDAR = 0 + val PAGE_MAIN = 1 + val PAGE_EXISTED_CHK = 2 + val PAGE_EXISTED_LOLING_LIST = 3 + } + + override fun isViewFromObject(p0: View, p1: Any): Boolean { + return p0 == p1 + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + lateinit var view: ViewGroup + val inflater = LayoutInflater.from(context) + when(position) { + PAGE_CALENDAR -> { + view = inflater.inflate(R.layout.layout_create_room_calendar, container, false) as ViewGroup + view.btnOkay.setOnClickListener { + val selDate = Date() + selDate.year = view.calSelectDate.year - 1900 + selDate.month = view.calSelectDate.month + selDate.date = view.calSelectDate.dayOfMonth + createRoomMethods.onDateSelectedFromCal(selDate) + } + view.btnCancel.setOnClickListener { createRoomMethods.onCancelFromCal() } + } + + PAGE_EXISTED_CHK -> { + view = inflater.inflate(R.layout.layout_create_room_new_or_enter, container, false) as ViewGroup + view.btnCreateNewLoling.setOnClickListener { createRoomMethods.onCreateNewLolingClicked() } + view.btnJoinExistedLoling.setOnClickListener { createRoomMethods.onJoinExitedLolingClicked() } + } + + PAGE_EXISTED_LOLING_LIST -> { + view = inflater.inflate(R.layout.layout_create_room_existed_loling_list, container, false) as ViewGroup + + } + else-> { //PAGE_MAIN + view = inflater.inflate(R.layout.layout_create_room_main, container, false) as ViewGroup + view.tvRoomDate.setOnClickListener { createRoomMethods.onSelectRoomTextClicked() } + view.btnCreateLoling.setOnClickListener { createRoomMethods.onCreateLolingButtonClicked() } + view.tvNameAndText.text = String.format( + context.getString(R.string.create_room_ps_type_the_anniversary_date), name) + + } + } + + container.addView(view) + container.setTag(container.hashCode() + position, view) + return view + } + + + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + + override fun getCount(): Int { + return 4 //only 4 items + } + +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/Adapter/FriendItemAdapter.kt b/app/src/main/java/mashup/loling/Adapter/FriendItemAdapter.kt index 811769c..0f46dfd 100644 --- a/app/src/main/java/mashup/loling/Adapter/FriendItemAdapter.kt +++ b/app/src/main/java/mashup/loling/Adapter/FriendItemAdapter.kt @@ -1,15 +1,19 @@ package mashup.loling.Adapter +import android.content.Context +import android.content.Intent import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView import kotlinx.android.synthetic.main.item_friend_day_list.view.* -import mashup.loling.model.FriendItem import mashup.loling.R +import mashup.loling.model.ERoom +import mashup.loling.room.view.CreateRoomActivity -class FriendItemAdapter(var items : ArrayList) : RecyclerView.Adapter(){ +class FriendItemAdapter(val context : Context ,var items : ArrayList) : RecyclerView +.Adapter(){ public class ViewHolder : RecyclerView.ViewHolder{ constructor(itemView: View) : super(itemView) @@ -17,6 +21,7 @@ class FriendItemAdapter(var items : ArrayList) : RecyclerView.Adapte var friendItemName : TextView = itemView.tvFriendItemName var friendItemBday : TextView = itemView.tvFriendItemBday var friendItemDday : TextView = itemView.tvFriendItemDday + var friendItemBtn = itemView.btnFriendItem } @@ -32,8 +37,16 @@ class FriendItemAdapter(var items : ArrayList) : RecyclerView.Adapte override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) { val item = items[position] - viewHolder.friendItemName.text = item.friendItemName - viewHolder.friendItemBday.text = item.friendItemBday - viewHolder.friendItemDday.text = item.friendItemDday + viewHolder.friendItemName.text = item.name + viewHolder.friendItemBday.text = item.date + viewHolder.friendItemDday.text = "D-" + item.Dday + + viewHolder.friendItemBtn.setOnClickListener { + val intent = Intent(context, CreateRoomActivity::class.java) + intent.putExtra("name",item.name) + intent.putExtra("phoneNum",item.phone) + context.startActivity(intent) + } + } } \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/Adapter/LolingItemAdapter.kt b/app/src/main/java/mashup/loling/Adapter/LolingItemAdapter.kt index 2055f95..ee435dc 100644 --- a/app/src/main/java/mashup/loling/Adapter/LolingItemAdapter.kt +++ b/app/src/main/java/mashup/loling/Adapter/LolingItemAdapter.kt @@ -1,10 +1,19 @@ package mashup.loling.Adapter +import android.content.Context +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.support.v7.app.AlertDialog import android.support.v7.widget.RecyclerView +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ImageButton import android.widget.TextView +import android.widget.Toast +import kotlinx.android.synthetic.main.activity_select_friend.view.* +import kotlinx.android.synthetic.main.dialog_delete_list.view.* import kotlinx.android.synthetic.main.item_loling_list.view.* import mashup.loling.model.FriendItem import mashup.loling.R @@ -12,18 +21,21 @@ import mashup.loling.R class LolingItemAdapter(var items : ArrayList) : RecyclerView.Adapter(){ - public class ViewHolder : RecyclerView.ViewHolder{ + var papa : ViewGroup? = null + class ViewHolder : RecyclerView.ViewHolder{ constructor(itemView: View) : super(itemView) var friendItemName : TextView = itemView.tvLolingItem var friendItemBday : TextView = itemView.tvLolingItemBday var friendItemDday : TextView = itemView.tvLolingItemDday + var btnDelete: ImageButton = itemView.btnLolingDelete } override fun onCreateViewHolder(parent: ViewGroup, p1: Int): ViewHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.item_loling_list, parent, false) + papa=parent return ViewHolder(view) } @@ -36,5 +48,18 @@ class LolingItemAdapter(var items : ArrayList) : RecyclerView.Adapte viewHolder.friendItemName.text = item.friendItemName viewHolder.friendItemBday.text = item.friendItemBday viewHolder.friendItemDday.text = item.friendItemDday + + viewHolder.btnDelete.setOnClickListener { v -> + var builder = AlertDialog.Builder(v!!.context) + var mView = LayoutInflater.from(v.context) + .inflate(R.layout.dialog_delete_list, papa, false) + builder.setView(mView) + var dialog = builder.create() + dialog.window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + dialog.show() + + } + } + } \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/Adapter/SelectFriendAddressItemAdapter.kt b/app/src/main/java/mashup/loling/Adapter/SelectFriendAddressItemAdapter.kt new file mode 100644 index 0000000..0d0d9ee --- /dev/null +++ b/app/src/main/java/mashup/loling/Adapter/SelectFriendAddressItemAdapter.kt @@ -0,0 +1,49 @@ +package mashup.loling.Adapter + +import android.content.Context +import android.content.Intent +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import kotlinx.android.synthetic.main.selectfriend_item_address_list.view.* +import mashup.loling.model.FriendItem +import mashup.loling.R +import mashup.loling.room.view.CreateRoomActivity + +class SelectFriendAddressItemAdapter(val context: Context, var items : ArrayList) : +RecyclerView.Adapter(){ + + class ViewHolder : RecyclerView.ViewHolder{ + constructor(itemView: View) : super(itemView) + + var addressItemName : TextView = itemView.tvSelectAddressName + var addressItemPnum : TextView = itemView.tvSelectFriendAddressPnum + var addressItemLayout = itemView.itemSelectAddress + + } + + override fun onCreateViewHolder(parent: ViewGroup, p1: Int): ViewHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.selectfriend_item_address_list, parent, false) + return ViewHolder(view) + } + + override fun getItemCount(): Int { + return items.size + } + + override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) { + val item = items[position] + viewHolder.addressItemName.text = item.friendItemName + viewHolder.addressItemPnum.text = item.friendItemPnum + viewHolder.addressItemLayout.setOnClickListener { + val intent = Intent(context,CreateRoomActivity::class.java) + intent.putExtra("phoneNum",item.friendItemPnum) + intent.putExtra("name",item.friendItemName) + context.startActivity(intent) + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/Adapter/SelectFriendItemAdapter.kt b/app/src/main/java/mashup/loling/Adapter/SelectFriendItemAdapter.kt new file mode 100644 index 0000000..d4475dd --- /dev/null +++ b/app/src/main/java/mashup/loling/Adapter/SelectFriendItemAdapter.kt @@ -0,0 +1,43 @@ +package mashup.loling.Adapter + +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import mashup.loling.model.FriendItem +import mashup.loling.R + +class SelectFriendItemAdapter(var items : ArrayList) : RecyclerView.Adapter(){ + + class ViewHolder : RecyclerView.ViewHolder{ + constructor(itemView: View) : super(itemView) + + var friendItemName : TextView + var friendItemBday : TextView + + init { + friendItemName = itemView.findViewById(R.id.tvSelectFriendItemName) as TextView + friendItemBday = itemView.findViewById(R.id.tvSelectFriendItemBday) as TextView + } + + } + + + + override fun onCreateViewHolder(parent: ViewGroup, p1: Int): ViewHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.selectfriend_item_friend_list, parent, false) + return ViewHolder(view) + } + + override fun getItemCount(): Int { + return items.size + } + + override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) { + val item = items[position] + viewHolder.friendItemName.text = item.friendItemName + viewHolder.friendItemBday.text = item.friendItemBday + } +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/BaseActivity.kt b/app/src/main/java/mashup/loling/BaseActivity.kt new file mode 100644 index 0000000..38d6217 --- /dev/null +++ b/app/src/main/java/mashup/loling/BaseActivity.kt @@ -0,0 +1,26 @@ +package mashup.loling + +import android.graphics.Color +import android.os.Build +import android.os.Bundle +import android.support.v7.app.AppCompatActivity +import android.view.View + + +open class BaseActivity : AppCompatActivity() { + + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + val view = window.decorView + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + view.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR + window.statusBarColor = Color.WHITE + } else if (Build.VERSION.SDK_INT >= 21) { + // 21 버전 이상일 때 + window.statusBarColor = Color.GRAY + } + } +} diff --git a/app/src/main/java/mashup/loling/DataBindingBaseActivity.kt b/app/src/main/java/mashup/loling/DataBindingBaseActivity.kt new file mode 100644 index 0000000..46af248 --- /dev/null +++ b/app/src/main/java/mashup/loling/DataBindingBaseActivity.kt @@ -0,0 +1,18 @@ +package mashup.loling.user.view + + +import android.databinding.DataBindingUtil +import android.databinding.ViewDataBinding +import android.os.Bundle +import mashup.loling.BaseActivity + +abstract class DataBindingBaseActivity: BaseActivity(){ + lateinit var viewDataBinding: T + abstract val layoutResourceId: Int + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + viewDataBinding = DataBindingUtil.setContentView(this, layoutResourceId) + } + +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/Fragment/FriendListFragment.kt b/app/src/main/java/mashup/loling/Fragment/FriendListFragment.kt deleted file mode 100644 index f39a645..0000000 --- a/app/src/main/java/mashup/loling/Fragment/FriendListFragment.kt +++ /dev/null @@ -1,38 +0,0 @@ -package mashup.loling.Fragment - -import android.os.Bundle -import android.support.v4.app.Fragment -import android.support.v7.widget.LinearLayoutManager -import android.support.v7.widget.RecyclerView -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import mashup.loling.Adapter.FriendItemAdapter -import mashup.loling.model.FriendItem -import mashup.loling.R - -class FriendListFragment : Fragment { - constructor() : super() - val friends: ArrayList = ArrayList() - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - val root = inflater.inflate(R.layout.recyclerview, container, false) - - val recyclerView = root.findViewById(R.id.recyclerView) - if(recyclerView != null) { - recyclerView.layoutManager = LinearLayoutManager(context)//this.context/getContext() - makeFriendList() - recyclerView.adapter = FriendItemAdapter(friends) - } - - return root - - } - - fun makeFriendList(){//친구목록 가져와 처리 - for (i in 0..9){ - friends.add(FriendItem("유채원" + i, "D-10" + i, "1996.03.22")) - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/Fragment/WrittenListFragment.kt b/app/src/main/java/mashup/loling/Fragment/WrittenListFragment.kt deleted file mode 100644 index 4645dd7..0000000 --- a/app/src/main/java/mashup/loling/Fragment/WrittenListFragment.kt +++ /dev/null @@ -1,36 +0,0 @@ -package mashup.loling.Fragment - -import android.os.Bundle -import android.support.v4.app.Fragment -import android.support.v7.widget.LinearLayoutManager -import android.support.v7.widget.RecyclerView -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import mashup.loling.Adapter.LolingItemAdapter -import mashup.loling.model.FriendItem -import mashup.loling.R - -class WrittenListFragment : Fragment { - constructor() : super() - val friends: ArrayList = ArrayList() - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - val root = inflater.inflate(R.layout.recyclerview, container, false) - - val recyclerView = root.findViewById(R.id.recyclerView) - if(recyclerView != null) { - recyclerView.layoutManager = LinearLayoutManager(context)//this.context/getContext() - makeFriendList() - recyclerView.adapter = LolingItemAdapter(friends) - } - return root - } - - fun makeFriendList(){//친구목록 가져와 처리 - for (i in 0..9){ - friends.add(FriendItem("유채원" + i, "D-10" + i, "1996.03.22")) - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/IntroActivity.kt b/app/src/main/java/mashup/loling/IntroActivity.kt new file mode 100644 index 0000000..e127165 --- /dev/null +++ b/app/src/main/java/mashup/loling/IntroActivity.kt @@ -0,0 +1,25 @@ +package mashup.loling + +import android.content.Intent +import android.os.Bundle +import android.os.Handler +import android.support.v7.app.AppCompatActivity +import mashup.loling.main.MainActivity +import mashup.loling.user.view.LoginActivityDataBinding + +class IntroActivity : BaseActivity(){ + var r: Runnable = Runnable { + val intent = Intent(applicationContext, LoginActivityDataBinding::class.java) + startActivity(intent) + + finish() + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_intro) + + var handler: Handler = Handler() + handler.postDelayed(r, 3000) + } +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/LoginActivity.kt b/app/src/main/java/mashup/loling/LoginActivity.kt deleted file mode 100644 index 58ffe0a..0000000 --- a/app/src/main/java/mashup/loling/LoginActivity.kt +++ /dev/null @@ -1,12 +0,0 @@ -package mashup.loling - -import android.support.v7.app.AppCompatActivity -import android.os.Bundle - -class LoginActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_login) - } -} diff --git a/app/src/main/java/mashup/loling/MainActivity.kt b/app/src/main/java/mashup/loling/MainActivity.kt deleted file mode 100644 index 2e83e2f..0000000 --- a/app/src/main/java/mashup/loling/MainActivity.kt +++ /dev/null @@ -1,78 +0,0 @@ -package mashup.loling - -import android.content.Context -import android.content.Intent -import android.os.Bundle -import android.support.v4.view.PagerAdapter -import android.support.v4.view.ViewPager -import android.support.v7.app.AppCompatActivity -import android.view.View -import android.view.ViewGroup -import kotlinx.android.synthetic.main.activity_main.* -import mashup.loling.Fragment.FriendListFragment - -class MainActivity : AppCompatActivity() { - - private var context: Context = this - var pageNum = 10 -// var mainIndicator = pagerIndicator - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - - val fragment = FriendListFragment() - supportFragmentManager.beginTransaction().add(R.id.frMainFriendList, fragment).commit() - - val pager = pagerContainer.viewPager as ViewPager - val adapter = MainPageAdepter() - - pager.adapter = adapter - - //필요한 경우 또는 호출기는 표시할 추가 페이지가 하나뿐입니다. - // 최소 몇 페이지 이상 볼 수 있도록 설정 - pager.offscreenPageLimit = adapter.count - //페이지 간의 마진 - pager.pageMargin = 20 - //If hardware acceleration is enabled, you should also remove - // clipping on the pager for its children. - pager.clipChildren = false - pagerIndicator?.createDotPanel(pageNum, R.drawable.indicator_dot_off, R.drawable - .indicator_dot_on, pager.currentItem) - pagerContainer.setIndicator(pagerIndicator) - - btnMainSettingFriend.setOnClickListener { - val intent = Intent(context,MyPageActivity()::class.java) - startActivity(intent) - } - } - - private inner class MainPageAdepter : PagerAdapter() { - - override fun instantiateItem(container: ViewGroup, position: Int): Any { - if (position == 9) { - val view2 = layoutInflater.inflate(R.layout.item_main_loling_room_max - , container, false) - container.addView(view2) - return view2 - } - val view = layoutInflater.inflate(R.layout.item_main_loling_room, container - , false) - container.addView(view) - return view - } - - override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { - container.removeView(`object` as View) - } - - override fun isViewFromObject(view: View, `object`: Any): Boolean { - return view == `object` - } - - override fun getCount(): Int { - return pageNum - } - } - -} diff --git a/app/src/main/java/mashup/loling/MyPageActivity.kt b/app/src/main/java/mashup/loling/MyPageActivity.kt deleted file mode 100644 index 0a94f66..0000000 --- a/app/src/main/java/mashup/loling/MyPageActivity.kt +++ /dev/null @@ -1,73 +0,0 @@ -package mashup.loling - -import android.content.Intent -import android.os.Bundle -import android.support.design.widget.TabLayout -import android.support.v4.app.Fragment -import android.support.v4.app.FragmentManager -import android.support.v4.app.FragmentStatePagerAdapter -import android.support.v7.app.AppCompatActivity -import kotlinx.android.synthetic.main.activity_my_page.* -import mashup.loling.Fragment.FriendListFragment -import mashup.loling.Fragment.ReceivedListFragment -import mashup.loling.Fragment.WrittenListFragment - -class MyPageActivity : AppCompatActivity() { - val friendFrag = FriendListFragment() - val writtenFrag = WrittenListFragment() - val receivedFrag = ReceivedListFragment() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_my_page) - - val tabs = tabsMypage - tabs.addTab(tabs.newTab().setText(R.string.friendList)) - tabs.addTab(tabs.newTab().setText(R.string.writtenLoling)) - tabs.addTab(tabs.newTab().setText(R.string.receiveLiling)) - - val pager = vpMyPage - val adapter = PagerAdapter(supportFragmentManager, tabs.tabCount) - pager.adapter = adapter - pager.addOnPageChangeListener(TabLayout.TabLayoutOnPageChangeListener(tabs)) - - tabs.setOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { - override fun onTabReselected(p0: TabLayout.Tab?) { - } - - override fun onTabUnselected(p0: TabLayout.Tab?) { - } - - override fun onTabSelected(p0: TabLayout.Tab?) { - pager.setCurrentItem(tabs.selectedTabPosition) - } - }) - - btnMypageSetting.setOnClickListener { - val intent = Intent(this, MyPageSettingActivity::class.java) - startActivity(intent) - overridePendingTransition(R.anim.anim_slide_in_left, R.anim.anim_slide_in_left) - } - } - - internal inner class PagerAdapter : FragmentStatePagerAdapter { - var mNumOfTabs: Int - - constructor(fm: FragmentManager?, mNumOfTabs: Int) : super(fm) { - this.mNumOfTabs = mNumOfTabs - } - - override fun getItem(position: Int): Fragment { - return when (position) { - 0 -> friendFrag - 1 -> writtenFrag - 2 -> receivedFrag - else -> friendFrag - } - } - - override fun getCount(): Int { - return mNumOfTabs - } - } -} diff --git a/app/src/main/java/mashup/loling/PagerContainer.kt b/app/src/main/java/mashup/loling/PagerContainer.kt index 4576ffc..c0657aa 100644 --- a/app/src/main/java/mashup/loling/PagerContainer.kt +++ b/app/src/main/java/mashup/loling/PagerContainer.kt @@ -6,7 +6,12 @@ import android.support.annotation.Px import android.support.v4.view.ViewPager import android.util.AttributeSet import android.view.MotionEvent +import android.view.View import android.widget.FrameLayout +import android.widget.TextView +import kotlinx.android.synthetic.main.activity_author_list_detail.view.* +import mashup.loling.R.id.tvAuthorListDetailPage +import org.w3c.dom.Text class PagerContainer : FrameLayout, ViewPager.OnPageChangeListener { var viewPager: ViewPager? = null @@ -64,6 +69,11 @@ class PagerContainer : FrameLayout, ViewPager.OnPageChangeListener { override fun onPageSelected(p0: Int) { mIndicatorView?.selectDot(p0) + + val parentView = parent as View + parentView.tvAuthorListDetailPage?.text = (p0+1).toString() + + } override fun onPageScrolled(position: Int, p1: Float, @Px p2: Int) {} override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/mashup/loling/SelectFriendActivity.kt b/app/src/main/java/mashup/loling/SelectFriendActivity.kt deleted file mode 100644 index 9b67263..0000000 --- a/app/src/main/java/mashup/loling/SelectFriendActivity.kt +++ /dev/null @@ -1,12 +0,0 @@ -package mashup.loling - -import android.support.v7.app.AppCompatActivity -import android.os.Bundle - -class SelectFriendActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_select_friend) - } -} diff --git a/app/src/main/java/mashup/loling/SignupEntryActivity.kt b/app/src/main/java/mashup/loling/SignupEntryActivity.kt deleted file mode 100644 index 776f359..0000000 --- a/app/src/main/java/mashup/loling/SignupEntryActivity.kt +++ /dev/null @@ -1,12 +0,0 @@ -package mashup.loling - -import android.support.v7.app.AppCompatActivity -import android.os.Bundle - -class SignupEntryActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_signup_entry) - } -} diff --git a/app/src/main/java/mashup/loling/SignupPersonalActivity.kt b/app/src/main/java/mashup/loling/SignupPersonalActivity.kt deleted file mode 100644 index 61e2c3f..0000000 --- a/app/src/main/java/mashup/loling/SignupPersonalActivity.kt +++ /dev/null @@ -1,13 +0,0 @@ -package mashup.loling - -import android.support.v7.app.AppCompatActivity -import android.os.Bundle - -class SignupPersonalActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_signup_personal) - - } -} diff --git a/app/src/main/java/mashup/loling/drawpaper/Component.kt b/app/src/main/java/mashup/loling/drawpaper/Component.kt new file mode 100644 index 0000000..e536657 --- /dev/null +++ b/app/src/main/java/mashup/loling/drawpaper/Component.kt @@ -0,0 +1,86 @@ +package mashup.loling.drawpaper + +import android.graphics.drawable.Drawable +import android.graphics.drawable.LayerDrawable +import android.graphics.drawable.ShapeDrawable +import android.support.v4.content.ContextCompat +import android.util.TypedValue +import android.view.MotionEvent +import android.view.View +import android.view.ViewOutlineProvider +import android.widget.TextView +import mashup.loling.R +import mashup.loling.drawpaper.view.IComponentTouchListener + +class Component(val view: View, + var zIndex: Int, + val componentTouchedListener: IComponentTouchListener) { + + var textSize = 20f + + init{ + view.setOnTouchListener { v, event -> + if(event.action == MotionEvent.ACTION_DOWN) { + componentTouchedListener.onComponentTouchedDown(this) + } + + return@setOnTouchListener v.onTouchEvent(event) + } + + // set outlineProvider to BOUNDS for elevation + view.outlineProvider = ViewOutlineProvider.BOUNDS + + } + + /** 현재 꾸미기 컴포넌트의 뷰를 회전한다 + * @param deg (절대값)회전할 각도(degree). 이 각도로 회전 */ + fun rotate(deg: Float) { + view.rotation = deg + } + + /** 현재 꾸미기 컴포넌트의 뷰를 확대/축소한다 + * @param scale (절대값)확대/축소시킬 scale값. 1.0이 기본 크기 */ + fun scale(scale: Float) { + view.scaleX = scale + view.scaleY = scale + } + + /** + * 이 꾸미기 컴포넌트가 선택됐을 때 불리는 메소드 + */ + fun onComponentSelected() { + + } + + /** + * 이 꾸미기 컴포넌트가 선택해제됐을 때 불리는 메소드 + */ + fun onComponentUnselected() { + + } + + fun increaseTextSizeRequest() { + if(textSize >= 150) return + if(view !is TextView) return + textSize += 5 + view.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize) + + } + + fun decreaseTextSizeRequest() { + if(textSize <= 20) return + if(view !is TextView) return + textSize -= 5 + view.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize) + } + + fun onTextColorChangeRequest(colorInt: Int) { + if(view is TextView) { + view.setTextColor(colorInt) + } + } + + fun onTextBackgroundChangeRequest(colorInt: Int) { + view.setBackgroundColor(colorInt) + } +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/drawpaper/DrawPaperActivity.kt b/app/src/main/java/mashup/loling/drawpaper/DrawPaperActivity.kt deleted file mode 100644 index 494617a..0000000 --- a/app/src/main/java/mashup/loling/drawpaper/DrawPaperActivity.kt +++ /dev/null @@ -1,13 +0,0 @@ -package mashup.loling.drawpaper - -import android.support.v7.app.AppCompatActivity -import android.os.Bundle -import mashup.loling.R - -class DrawPaperActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_draw_paper) - } -} diff --git a/app/src/main/java/mashup/loling/drawpaper/LoadImageActivity.kt b/app/src/main/java/mashup/loling/drawpaper/LoadImageActivity.kt deleted file mode 100644 index 7031c10..0000000 --- a/app/src/main/java/mashup/loling/drawpaper/LoadImageActivity.kt +++ /dev/null @@ -1,13 +0,0 @@ -package mashup.loling.drawpaper - -import android.support.v7.app.AppCompatActivity -import android.os.Bundle -import mashup.loling.R - -class LoadImageActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_load_image) - } -} diff --git a/app/src/main/java/mashup/loling/drawpaper/view/DrawPaperActivity.kt b/app/src/main/java/mashup/loling/drawpaper/view/DrawPaperActivity.kt new file mode 100644 index 0000000..77a75c3 --- /dev/null +++ b/app/src/main/java/mashup/loling/drawpaper/view/DrawPaperActivity.kt @@ -0,0 +1,598 @@ +package mashup.loling.drawpaper.view + +import android.app.Activity +import android.app.AlertDialog +import android.content.Intent +import android.graphics.* +import android.graphics.drawable.GradientDrawable +import android.support.v7.app.AppCompatActivity +import android.os.Bundle +import android.os.Environment +import android.os.Handler +import android.text.Editable +import android.text.TextWatcher +import android.util.DisplayMetrics +import android.util.Log +import android.util.TypedValue +import android.view.MotionEvent +import android.view.View +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.RelativeLayout +import android.widget.TextView +import kotlinx.android.synthetic.main.activity_draw_paper.* +import mashup.loling.R +import mashup.loling.drawpaper.Component +import mashup.loling.room.view.ReceivedPaperListActivity +import java.io.File +import java.io.FileOutputStream +import java.lang.Exception +import java.text.SimpleDateFormat +import java.util.* +import kotlin.math.roundToInt + +class DrawPaperActivity : AppCompatActivity(), IComponentTouchListener { + private val REQUEST_CODE_GET_IMAGE = 100 + + private val CLICK_TIME_GAP = 200 + private val CLICK_DIST_THRESHOLD = 10 + private val LONG_CLICK_TIME = 500L + + private val componentList: ArrayList = ArrayList() + private var selectedComponent: Component? = null + + private var selectedName = "" + private var selectedPhoneNum = "" + private var selectedDate = 0L + + enum class State { LOLING_EDIT, TEXT_EDIT, IV_EDIT } + private var currentState = State.LOLING_EDIT + + private val colorList = arrayOf( + R.color.draw_paper_txt_black, + R.color.draw_paper_txt_red, + R.color.draw_paper_txt_yellow, + R.color.draw_paper_txt_green, + R.color.draw_paper_txt_blue, + R.color.draw_paper_txt_violet, + R.color.draw_paper_txt_white + ) + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_draw_paper) + + // Add image or text + btnDrawPaperCamera.setOnClickListener { btnDrawPaperCameraClicked() } + btnDrawPaperText.setOnClickListener { btnDrawPaperTextClicked() } + + // Text size change + btnTextSizeUp.setOnClickListener { btnTextSizeChangeClicked(sizeUp = true) } + btnTextSizeDown.setOnClickListener { btnTextSizeChangeClicked(sizeUp = false) } + + // Component zIndex change + btnTextZindexUp.setOnClickListener { btnZindexAdjustClicked(isUp = true) } + btnTextZindexDown.setOnClickListener { btnZindexAdjustClicked(isUp = false) } + btnIvZindexUp.setOnClickListener { btnZindexAdjustClicked(isUp = true) } + btnIvZindexDown.setOnClickListener { btnZindexAdjustClicked(isUp = false) } + + // Close component edit + btnCloseEditTextPanel.setOnClickListener { closeEditPanel() } + btnCloseIvPanel.setOnClickListener { closeEditPanel() } + + // Exit DrawPaper + btnDrawPaperClose.setOnClickListener { exitDrawPaper() } + + // Save DrawPaper + btnDrawPaperSave.setOnClickListener { saveDrawPaper() } + + generateTvColorChangeBtn() + + // receive passed parameters + selectedName = intent.getStringExtra("name") + selectedPhoneNum = intent.getStringExtra("phoneNum") + selectedDate = intent.getLongExtra("date", 0) + } + + private fun generateTvColorChangeBtn() { + for (colorId: Int in colorList) { + val colorInt = Color.parseColor(getString(colorId)) + val btnSize = resources.getDimensionPixelSize(R.dimen.draw_paper_panel_color_btn_size) + val newIvChangeTxtColor = ImageView(this) + val newIvChangeBgColor = ImageView(this) + + newIvChangeTxtColor.scaleType = ImageView.ScaleType.CENTER + newIvChangeBgColor.scaleType = ImageView.ScaleType.CENTER + + val shapeTxt = GradientDrawable() + shapeTxt.shape = GradientDrawable.OVAL + shapeTxt.setColor(colorInt) + shapeTxt.setStroke(2, Color.WHITE) + shapeTxt.setSize(btnSize, btnSize) + newIvChangeTxtColor.setImageDrawable(shapeTxt) + + val shapeBg = GradientDrawable() + shapeBg.shape = GradientDrawable.RECTANGLE + shapeBg.setColor(colorInt) + shapeBg.setStroke(2, Color.WHITE) + shapeBg.setSize(btnSize, btnSize) + newIvChangeBgColor.setImageDrawable(shapeBg) + + pnTvColorSelector.addView(newIvChangeTxtColor) + pnTvBgSelector.addView(newIvChangeBgColor) + + val paramTxt = newIvChangeTxtColor.layoutParams as LinearLayout.LayoutParams + val paramBg = newIvChangeBgColor.layoutParams as LinearLayout.LayoutParams + + paramTxt.width = btnSize + paramTxt.weight = 1f + paramTxt.height = btnSize + newIvChangeTxtColor.layoutParams = paramTxt + + paramBg.width = btnSize + paramBg.weight = 1f + paramBg.height = btnSize + newIvChangeBgColor.layoutParams = paramBg + + // listener + newIvChangeTxtColor.setOnClickListener { + selectedComponent?.let { + if(it.view is TextView) + it.view.setTextColor(colorInt) + } + } + newIvChangeBgColor.setOnClickListener { + selectedComponent?.let { + it.view.setBackgroundColor(colorInt) + } + } + + } + } + + private fun btnTextSizeChangeClicked(sizeUp: Boolean) { + selectedComponent?.let { + if(it.view !is TextView) return@let + when (sizeUp) { + true -> { + it.increaseTextSizeRequest() + } + false -> { + it.decreaseTextSizeRequest() + } + } + } + } + + private fun btnZindexAdjustClicked(isUp: Boolean) { + selectedComponent?.let { + when (isUp) { + true -> { + // 자기보다 바로 에 있위는 애의 zIndex를 가져온다 + var aboveMin = Int.MAX_VALUE + for(comp: Component in componentList) { + if(comp != it && comp.zIndex > it.zIndex && comp.zIndex < aboveMin) + aboveMin = comp.zIndex + } + // aboveMin 갱신이 없으면 이미 얘가 왕임 + if(aboveMin == Int.MAX_VALUE) return + // 걔보다 1 더 높게 + val targetZIndex = aboveMin + 1 + // zindex가 겹치면 안되기 때문에, 리스트 중 targetIndex와 같거나 높은 모든 컴포넌트의 zIndex를 +1 해준다 + for(comp: Component in componentList) { + if(!comp.equals(it) && comp.zIndex >= targetZIndex) + comp.zIndex += 1 + } + it.zIndex = targetZIndex + } + false -> { + // 자기보다 바로 아래에 있는 애의 zIndex를 가져온다 + var underMax = -1 + for(comp: Component in componentList) { + if(comp != it && comp.zIndex < it.zIndex && comp.zIndex > underMax) + underMax = comp.zIndex + } + // underMax 갱신이 없으면 이미 얘가 바닥임 + if(underMax == -1) return + val targetZIndex = underMax + // zindex가 겹치면 안되기 때문에, 리스트 중 targetIndex와 같거나 높은 모든 컴포넌트의 zIndex를 +1 해준다 + for(comp: Component in componentList) { + if(!comp.equals(it) && comp.zIndex >= targetZIndex) + comp.zIndex += 1 + } + it.zIndex = targetZIndex + } + } + + orderViews() + } + } + + private fun btnDrawPaperCameraClicked() { + val imgIntent = Intent(Intent.ACTION_PICK) + imgIntent.type = "image/*" + startActivityForResult(imgIntent, REQUEST_CODE_GET_IMAGE) + } + + private fun btnDrawPaperTextClicked() { + val newComponent = Component(TextView(this), getMostTopZIndex()+1, this) + // test data + (newComponent.view as TextView).text = "Hello" + newComponent.view.setTextColor(Color.BLACK) + newComponent.view.setTextSize(TypedValue.COMPLEX_UNIT_SP, 30f) + addComponent(newComponent) + + Log.v(DrawPaperActivity::class.java.simpleName, "New Text Component Added!!") + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + when(requestCode) { + REQUEST_CODE_GET_IMAGE -> { + if(resultCode == Activity.RESULT_OK && data != null && data.data != null) { + val imgUri = data.data + val inputStream = contentResolver.openInputStream(imgUri!!) + + val bitmap = BitmapFactory.decodeStream(inputStream) + + // 이미지 가로세로 다시 계산 (적절한 크기) + var bWidth = bitmap.width + var bHeight = bitmap.height + var toWidth = drawArea.width/2 + var scale = toWidth / bWidth.toFloat() + var toHeight = (bHeight * scale).roundToInt() + + val resizedBmp = Bitmap.createScaledBitmap(bitmap, toWidth, toHeight, true) + + val newComponent = Component(ImageView(this), getMostTopZIndex()+1, this) + (newComponent.view as ImageView).setImageBitmap(resizedBmp) + newComponent.view.scaleType = ImageView.ScaleType.FIT_XY + addComponent(newComponent) + + Log.v(DrawPaperActivity::class.java.simpleName, "New Image Component Added!!") + } + } + } + } + + override fun onBackPressed() { + // 컴포넌트 편집상태라면 편집 전으로, 롤링 편집상태라면 만들기 취소하고 버리시겠습니까? 메시지박스 + when (currentState) { + State.LOLING_EDIT -> { + exitDrawPaper() + } + + State.TEXT_EDIT, State.IV_EDIT -> { + closeEditPanel() + } + } + } + + private fun exitDrawPaper() { + val dialog = AlertDialog.Builder(this, R.style.AlertDialogStyle) + dialog.setMessage(R.string.draw_activity_msg_do_you_really_wanna_go_back_and_discard) + .setCancelable(false) + .setPositiveButton(R.string.btn_yes) { _, _ -> + super.onBackPressed() + return@setPositiveButton + }.setNegativeButton(R.string.btn_cancel) { _, _ -> + return@setNegativeButton + }.create().show() + } + + private fun saveDrawPaper() { + // 물어본다 + val dialog = AlertDialog.Builder(this, R.style.AlertDialogStyle) + dialog.setMessage(R.string.draw_activity_msg_do_you_want_to_submit_your_paper) + .setCancelable(false) + .setPositiveButton(R.string.btn_yes) { _, _ -> + // 크기가져와 + val displayMetrics = DisplayMetrics() + windowManager.defaultDisplay.getMetrics(displayMetrics) + val w = displayMetrics.widthPixels + val h = displayMetrics.heightPixels + + // View를 Bitmap으로 변환 + drawArea.layout(0, 0, w,h) + val bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888) + bmp.eraseColor(Color.TRANSPARENT) + val canvas = Canvas(bmp) + drawArea.draw(canvas) + + // 저장 + val fileName = "loling/loling_" + SimpleDateFormat("yyMMdd-hhmmss", Locale.getDefault()).format(Date()) + ".png" + val path = Environment.getExternalStorageDirectory() + val dir = File(path, "loling") + if(!dir.exists()) dir.mkdir() + val file = File(path, fileName) + file.createNewFile() + + val fileOutputStream = FileOutputStream(file, false) + try { + bmp.compress(Bitmap.CompressFormat.JPEG, 50, fileOutputStream) + } catch (e: Exception) { + e.printStackTrace() + Log.v("JUJIN", "Cannot save img") + } + + // 다음 액티비티로 가즈아 + val intent = Intent(this, ReceivedPaperListActivity::class.java) + intent.putExtra("name", selectedName) + intent.putExtra("phoneNum", selectedPhoneNum) + intent.putExtra("date", selectedDate) + startActivity(intent) + + return@setPositiveButton + }.setNegativeButton(R.string.btn_cancel) { _, _ -> + return@setNegativeButton + }.create().show() + } + + /** Text 컴포넌트에서 문자열 수정시 즉시 적용될 수 있도록 하는 watcher */ + private val textChangeWatcher: TextWatcher = object : TextWatcher { + override fun afterTextChanged(s: Editable?) {} + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + selectedComponent?.let { + if(it.view is TextView && s != null) { + it.view.text = s.toString() + } + } + } + } + + private fun closeEditPanel() { + if (selectedComponent != null) { + selectedComponent?.onComponentUnselected() + selectedComponent = null + } + pnTvEdit.visibility = View.GONE + pnIvEdit.visibility = View.GONE + pnAddComponent.visibility = View.VISIBLE + txtTvEdit.removeTextChangedListener(textChangeWatcher) + + currentState = State.LOLING_EDIT + } + + override fun onComponentTouchedDown(component: Component) { + if(selectedComponent == null) { + // 이미 선택된 컴포넌트가 있다면 해당 컴포넌트 컨트롤을 유지한다 + selectedComponent = component + selectedComponent?.onComponentSelected() + } + } + + override fun onComponentClicked(component: Component) { + // 컴포넌트가 텍스트뷰면 텍스트 수정모드로 들어간다 + if (component.view is TextView) { + pnAddComponent.visibility = View.GONE + pnTvEdit.visibility = View.VISIBLE + txtTvEdit.setText(component.view.text) + currentState = State.TEXT_EDIT + + txtTvEdit.addTextChangedListener(textChangeWatcher) + + } else // 컴포넌트가 이미지뷰면 zindex조절만 + if (component.view is ImageView) { + pnAddComponent.visibility = View.GONE + pnIvEdit.visibility = View.VISIBLE + currentState = State.IV_EDIT + } + } + + override fun onComponentLongClicked(component: Component) { + val dialog = AlertDialog.Builder(this, R.style.AlertDialogStyle) + dialog.setMessage(R.string.draw_activity_msg_do_you_want_to_delete_selected_component) + .setCancelable(false) + .setPositiveButton(R.string.btn_yes) { _, _ -> + removeComponent(component) + selectedComponent = null + return@setPositiveButton + }.setNegativeButton(R.string.btn_cancel) { _, _ -> + return@setNegativeButton + }.create().show() + } + + /** 새로운 꾸미기 컴포넌트를 추가한다 */ + private fun addComponent(newComponent: Component) { + componentList.add(newComponent) + drawArea.addView(newComponent.view) + + val lParams = newComponent.view.layoutParams as RelativeLayout.LayoutParams + lParams.width = RelativeLayout.LayoutParams.WRAP_CONTENT + lParams.height = RelativeLayout.LayoutParams.WRAP_CONTENT + newComponent.view.layoutParams = lParams + newComponent.view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED) + lParams.leftMargin = drawArea.width/2 - newComponent.view.measuredWidth/2 + lParams.topMargin = drawArea.height/2 - newComponent.view.measuredHeight/2 + newComponent.view.layoutParams = lParams + } + + /** 꾸미기 컴포넌트를 삭제한다 */ + private fun removeComponent(component : Component) { + componentList.remove(component) + drawArea.removeView(component.view) + } + + // variables for position + private var originTouchPoint = PointF(0f, 0f) + private var originLeft = 0f + private var originTop = 0f + // variables for scale + private var originDistance = 0f + private var originScale = 0f + // variables for rotation + private var originDegree = 0f + private var originRotation = 0f + // variables to implement click/long click event + private var touchedTime: Long = 0 // timestamp + private var isStillHolding = false // for long click + private val longClickHandler = Handler() + private val longClickRunnable = Runnable { + selectedComponent?.let { if(isStillHolding) onComponentLongClicked(it); isStillHolding = false } + } + override fun onTouchEvent(ev: MotionEvent?): Boolean { + if (ev == null) return super.onTouchEvent(ev) + + var pointerCnt = ev.pointerCount // 터치된 손가락 개수 저장 + pointerCnt = if(pointerCnt > 2) 2 else pointerCnt // 최대 멀티터치는 두개까지만 제한 + + when(ev.action and MotionEvent.ACTION_MASK) { + MotionEvent.ACTION_DOWN -> { // 1개 터치 다운 + // 처음 터치 위치 저장 + originTouchPoint.x = ev.getX(0) + originTouchPoint.y = ev.getY(0) + selectedComponent?.let { + // 처음 뷰 위치 저장 + val lParam: RelativeLayout.LayoutParams = it.view.layoutParams as RelativeLayout.LayoutParams + originLeft = it.view.translationX + originTop = it.view.translationY + + } + + // 터치된 시간 저장 + touchedTime = System.currentTimeMillis() + + // 롱 터치 인식을 위한 flag on + isStillHolding = true + longClickHandler.removeCallbacks(longClickRunnable) + longClickHandler.postDelayed(longClickRunnable, LONG_CLICK_TIME) + + } + MotionEvent.ACTION_POINTER_DOWN -> { // 터치 다운 + if(pointerCnt == 2) { // 두 손가락만 지원 + selectedComponent?.let { + // 처음 뷰의 크기/회전 저장 + originScale = it.view.scaleX + originRotation = it.view.rotation + } + + // 처음 손가락 거리/손가락 좌표 기울기 저장 + originDistance = calculateDistance(ev) + originDegree = calculateDegree(ev) + } + isStillHolding = false + } + + MotionEvent.ACTION_MOVE -> { // 무-브 + // 처음 터치 위치로부터 얼마나 움직였나? + val dMove = PointF(ev.getX(0), ev.getY(0)) + dMove.offset(-originTouchPoint.x, -originTouchPoint.y) + + // 처음 손가락 거리로부터 얼마나 벌어졌나? (기준 1, 몇 배나 벌어졌는지) (1개 손가락일 경우 0) + var dDist = if(pointerCnt < 2) 0f else calculateDistance(ev) / originDistance + + // 처음 두 손가락 좌표의 기울기로부터 얼마나 돌아갔나? (degree로) (1개 손가락일 경우 0) + var dDeg = if(pointerCnt < 2) 0f else calculateDegree(ev) - originDegree + + selectedComponent?.let { + // 뷰 이동 + val lParam: RelativeLayout.LayoutParams = it.view.layoutParams as RelativeLayout.LayoutParams + it.view.translationX = originLeft + dMove.x + it.view.translationY = originTop + dMove.y + it.view.layoutParams = lParam + + // 뷰 확대축소/회전(2개 손가락일 경우에만) + if(pointerCnt > 1) { + if (dDist.isNaN() || dDist == 0f) dDist = 1f + it.scale(originScale * dDist) + it.rotate(originRotation + dDeg) + } + } + + if(Math.abs(dMove.x) > CLICK_DIST_THRESHOLD || Math.abs(dMove.y) > CLICK_DIST_THRESHOLD || pointerCnt != 1) { + isStillHolding = false + } + } + + MotionEvent.ACTION_POINTER_UP -> { // 터치 업 + selectedComponent?.let { + // 두 손가락 중 첫번째 댓던 손가락을 때면 선택된 컴포넌트 없음으로 한다 + if (ev.actionIndex == 0) { + if (isClickGesture( + touchedTime, + System.currentTimeMillis(), + originTouchPoint, + PointF(ev.getX(0), ev.getY(0)))) { + onComponentClicked(it) + } else if (currentState == State.LOLING_EDIT) { + it.onComponentUnselected() + selectedComponent = null + } + } + } + isStillHolding = false + } + MotionEvent.ACTION_UP -> { // 마지막 터치 업 + selectedComponent?.let { + if (isClickGesture( + touchedTime, + System.currentTimeMillis(), + originTouchPoint, + PointF(ev.getX(0), ev.getY(0)))) { + onComponentClicked(it) + } else if (currentState == State.LOLING_EDIT) { + // 모든 손가락을 때면 선택된 컴포넌트 없음으로 한다 (선택중이 아니면) + it.onComponentUnselected() + selectedComponent = null + } + } + isStillHolding = false + } + } + + return super.onTouchEvent(ev) + } + + private fun calculateDistance(ev: MotionEvent): Float { + if(ev.pointerCount < 2) return 0f + return calculateDistance( + ev.getX(0), ev.getY(0), + ev.getX(1), ev.getY(1)) + } + private fun calculateDistance(x1: Float, y1: Float, x2: Float, y2: Float): Float { + val dx = (x1 - x2).toDouble() + val dy = (y1 - y2).toDouble() + return Math.sqrt((dx*dx)+(dy*dy)).toFloat() + } + + private fun calculateDegree(ev: MotionEvent): Float { + if(ev.pointerCount < 2) return 0f + return calculateDegree( + ev.getX(0), ev.getY(0), + ev.getX(1), ev.getY(1)) + } + private fun calculateDegree(x1: Float, y1: Float, x2: Float, y2: Float): Float { + val rad = Math.atan2(y1-y2.toDouble(), x1-x2.toDouble()) + return Math.toDegrees(rad).toFloat() + } + + private fun isClickGesture(touchDownTime: Long, touchUpTime: Long, touchDownPoint: PointF, touchUpPoint: PointF ) : Boolean { + if (touchUpTime - touchDownTime > CLICK_TIME_GAP) return false + if (Math.abs(touchDownPoint.x - touchUpPoint.x) > CLICK_DIST_THRESHOLD || + Math.abs(touchDownPoint.y - touchUpPoint.y) > CLICK_DIST_THRESHOLD) + return false + return true + } + + /** + * 현재 컴포넌트들중 가장 높은 zIndex값을 가져온다 + */ + private fun getMostTopZIndex(): Int{ + var top = 0 + for(comp: Component in componentList) { + if(comp.zIndex > top) top = comp.zIndex + } + return top + } + + /** + * 뷰들 보이는 순서를 다시 정리한다. + * 각 꾸미기 컴포넌트들의 zIndex값이 낮을수록 밑에 보여지고(가려지고), 높을수록 위에 보여진다. + */ + private fun orderViews() { + val sortedList = componentList.sortedWith(compareBy{it.zIndex}) + for(comp: Component in sortedList) + comp.view.bringToFront() + } + +} diff --git a/app/src/main/java/mashup/loling/drawpaper/view/IComponentTouchListener.kt b/app/src/main/java/mashup/loling/drawpaper/view/IComponentTouchListener.kt new file mode 100644 index 0000000..ad5ec2e --- /dev/null +++ b/app/src/main/java/mashup/loling/drawpaper/view/IComponentTouchListener.kt @@ -0,0 +1,9 @@ +package mashup.loling.drawpaper.view + +import mashup.loling.drawpaper.Component + +interface IComponentTouchListener { + fun onComponentTouchedDown(component: Component) + fun onComponentClicked(component: Component) + fun onComponentLongClicked(component: Component) +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/fagment/FriendListFragment.kt b/app/src/main/java/mashup/loling/fagment/FriendListFragment.kt new file mode 100644 index 0000000..8791ea2 --- /dev/null +++ b/app/src/main/java/mashup/loling/fagment/FriendListFragment.kt @@ -0,0 +1,46 @@ +package mashup.loling.fagment + +import android.annotation.SuppressLint +import android.os.Bundle +import android.support.v4.app.Fragment +import android.support.v7.widget.LinearLayoutManager +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import kotlinx.android.synthetic.main.recyclerview.view.* +import mashup.loling.Adapter.FriendItemAdapter +import mashup.loling.model.FriendItem +import mashup.loling.R +import mashup.loling.model.ERoom + +@SuppressLint("ValidFragment") +class FriendListFragment(dataList: ArrayList) : Fragment() { + val friends: ArrayList = dataList + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + val root = inflater.inflate(R.layout.recyclerview, container, false) + + root.recyclerView.layoutManager = LinearLayoutManager(context) +// root.recyclerView.isNestedScrollingEnabled = false +// makeFriendList() + root.recyclerView.adapter = FriendItemAdapter( + context!!,friends) + + return root + + } + + +// fun makeFriendList(){//친구목록 가져와 처리 +// for (i in 0..15){ +// friends.add(FriendItem("유채원" + i, "D-10" + i, "1996.03.22")) +// } +// } + + fun friendsSzie(): Int{ + //makeFriendList() + return friends.size + } + +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/Fragment/ReceivedListFragment.kt b/app/src/main/java/mashup/loling/fagment/ReceivedListFragment.kt similarity index 64% rename from app/src/main/java/mashup/loling/Fragment/ReceivedListFragment.kt rename to app/src/main/java/mashup/loling/fagment/ReceivedListFragment.kt index 7065dc6..1a8c9ce 100644 --- a/app/src/main/java/mashup/loling/Fragment/ReceivedListFragment.kt +++ b/app/src/main/java/mashup/loling/fagment/ReceivedListFragment.kt @@ -1,4 +1,4 @@ -package mashup.loling.Fragment +package mashup.loling.fagment import android.os.Bundle import android.support.v4.app.Fragment @@ -7,6 +7,8 @@ import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import kotlinx.android.synthetic.main.recyclerview.view.* +import mashup.loling.Adapter.FriendItemAdapter import mashup.loling.Adapter.LolingItemAdapter import mashup.loling.model.FriendItem import mashup.loling.R @@ -18,19 +20,23 @@ class ReceivedListFragment : Fragment { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val root = inflater.inflate(R.layout.recyclerview, container, false) - val recyclerView = root.findViewById(R.id.recyclerView) - if(recyclerView != null) { - recyclerView.layoutManager = LinearLayoutManager(context)//this.context/getContext() - makeFriendList() - recyclerView.adapter = LolingItemAdapter(friends) - } + root.recyclerView.layoutManager = LinearLayoutManager(context) + root.recyclerView.isNestedScrollingEnabled = false + makeFriendList() + root.recyclerView.adapter = LolingItemAdapter(friends) + return root } fun makeFriendList(){//친구목록 가져와 처리 - for (i in 0..9){ + for (i in 0..10){ friends.add(FriendItem("유채원" + i, "D-10" + i, "1996.03.22")) } } + fun friendsSzie(): Int{ + makeFriendList() + return friends.size + } + } \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/fagment/SelectFriendAddressListFragment.kt b/app/src/main/java/mashup/loling/fagment/SelectFriendAddressListFragment.kt new file mode 100644 index 0000000..8fbd0ce --- /dev/null +++ b/app/src/main/java/mashup/loling/fagment/SelectFriendAddressListFragment.kt @@ -0,0 +1,73 @@ +package mashup.loling.fagment + +import android.os.Bundle +import android.provider.ContactsContract +import android.support.v4.app.Fragment +import android.support.v7.widget.LinearLayoutManager +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import mashup.loling.Adapter.SelectFriendAddressItemAdapter +import mashup.loling.R +import mashup.loling.model.FriendItem +import java.util.HashMap +import kotlin.collections.ArrayList +import kotlin.collections.Map + +class SelectFriendAddressListFragment : Fragment { + constructor() : super() + + val friends: ArrayList = ArrayList() + + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + + //get contract + val dataList = ArrayList>() + val c = context!!.contentResolver.query(ContactsContract.Contacts.CONTENT_URI + , null, null, null + , ContactsContract.Contacts.DISPLAY_NAME_PRIMARY) + + while (c.moveToNext()) { + val map: HashMap = HashMap() + val id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID)) + val name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME_PRIMARY)) + map.put("name", name) + + val phoneCursor = context!!.contentResolver.query( + ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null + , ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id, null, null) + + if (phoneCursor!!.moveToFirst()) { + val number = phoneCursor.getString(phoneCursor.getColumnIndex( + ContactsContract.CommonDataKinds.Phone.NUMBER)) + map.put("phone", number) + } + phoneCursor.close() + dataList.add(map) + } + c.close() + + val root = inflater.inflate(R.layout.recyclerview, container, false) + + val recyclerView = root.findViewById(R.id.recyclerView) + if (recyclerView != null) { + recyclerView.layoutManager = LinearLayoutManager(context) + makeFriendList(dataList) + recyclerView.adapter = SelectFriendAddressItemAdapter(context!!,friends) + } + + return root + } + + fun makeFriendList(dataList: ArrayList>) {//연락처에서가져와 처리 + + for (i in 0..dataList.size - 1) { + + friends.add(FriendItem(dataList[i]["name"].toString(), "", "", dataList[i]["phone"].toString())) + } + + } + +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/fagment/SelectFriendListFragment.kt b/app/src/main/java/mashup/loling/fagment/SelectFriendListFragment.kt new file mode 100644 index 0000000..a978040 --- /dev/null +++ b/app/src/main/java/mashup/loling/fagment/SelectFriendListFragment.kt @@ -0,0 +1,38 @@ +package mashup.loling.fagment + +import android.annotation.SuppressLint +import android.os.Bundle +import android.support.v4.app.Fragment +import android.support.v7.widget.LinearLayoutManager +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import kotlinx.android.synthetic.main.recyclerview.view.* +import mashup.loling.Adapter.FriendItemAdapter +import mashup.loling.R +import mashup.loling.model.ERoom + +@SuppressLint("ValidFragment") +class SelectFriendListFragment(dataList: ArrayList) : Fragment() { + val friends: ArrayList = dataList + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + val root = inflater.inflate(R.layout.recyclerview, container, false) + + root.recyclerView.layoutManager = LinearLayoutManager(context) + root.recyclerView.isNestedScrollingEnabled = false +// makeFriendList() + root.recyclerView.adapter = FriendItemAdapter(context!!,friends) + + + return root + + } + +// fun makeFriendList(){//친구목록 가져와 처리 +// for (i in 0..9){ +// friends.add(FriendItem("유채원" + i, "1996.03.22")) +// } +// } + +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/fagment/WrittenListFragment.kt b/app/src/main/java/mashup/loling/fagment/WrittenListFragment.kt new file mode 100644 index 0000000..59a3a8a --- /dev/null +++ b/app/src/main/java/mashup/loling/fagment/WrittenListFragment.kt @@ -0,0 +1,54 @@ +package mashup.loling.fagment + +import android.os.Bundle +import android.support.v4.app.Fragment +import android.support.v7.widget.LinearLayoutManager +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Toast +import kotlinx.android.synthetic.main.item_loling_list.* +import kotlinx.android.synthetic.main.recyclerview.view.* +import mashup.loling.Adapter.FriendItemAdapter +import mashup.loling.Adapter.LolingItemAdapter +import mashup.loling.model.FriendItem +import mashup.loling.R + +class WrittenListFragment : Fragment { + constructor() : super() + val friends: ArrayList = ArrayList() + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + val root = inflater.inflate(R.layout.recyclerview, container, false) + + root.recyclerView.layoutManager = LinearLayoutManager(context) + root.recyclerView.isNestedScrollingEnabled = false + makeFriendList() + root.recyclerView.adapter = LolingItemAdapter(friends) + + return root + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) +/* + btnLolingDelete.setOnClickListener (object : View.OnClickListener{ + override fun onClick(v: View?) { + Toast.makeText(v!!.context, "삭제삭제", Toast.LENGTH_LONG).show() + } + })*/ + } + + fun makeFriendList(){//친구목록 가져와 처리 + for (i in 0..3){ + friends.add(FriendItem("유채원" + i, "D-10" + i, "1996.03.22")) + } + } + + fun friendsSzie(): Int{ + makeFriendList() + return friends.size + } + +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/main/MainActivity.kt b/app/src/main/java/mashup/loling/main/MainActivity.kt new file mode 100644 index 0000000..2c6ae2b --- /dev/null +++ b/app/src/main/java/mashup/loling/main/MainActivity.kt @@ -0,0 +1,202 @@ +package mashup.loling.main + +import android.Manifest +import android.app.Notification +import android.app.NotificationChannel +import android.app.NotificationManager +import android.app.PendingIntent +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import android.graphics.BitmapFactory +import android.os.Build +import android.os.Bundle +import android.support.v4.app.ActivityCompat +import android.support.v4.app.NotificationCompat +import android.support.v4.content.ContextCompat +import android.support.v4.view.PagerAdapter +import android.support.v4.view.ViewPager +import android.support.v7.app.AppCompatActivity +import android.view.View +import android.view.ViewGroup +import android.widget.Toast +import kotlinx.android.synthetic.main.activity_main.* +import kotlinx.android.synthetic.main.item_main_loling_room.view.* +import mashup.loling.BaseActivity +import mashup.loling.R +import mashup.loling.fagment.FriendListFragment +import mashup.loling.model.ERoom +import mashup.loling.mypage.MyPageActivity +import mashup.loling.room.view.CreateRoomActivity +import mashup.loling.room.view.SelectFriendActivity + + +class MainActivity : BaseActivity() { + + private var dataList = arrayListOf( + ERoom("생일축하", 1, "소현", "2019.02.23", 30, "01025017444"), + ERoom("100일 기념", 1, "유정", "2019.02.23", 10, "01025017444"), + ERoom("생일축하", 4, "주진", "2019.02.26", 3, "01025017444"), + ERoom("생일축하", 4, "상희", "2019.02.26", 22, "01025017444"), + ERoom("생일축하", 5, "민수", "2019.02.28", 22, "01025017444"), + ERoom("생일축하", 8, "김희철", "2019.03.3", 22, "01025017444"), + ERoom("졸업", 11, "강민석", "2019.03.5", 1, "01025017444"), + ERoom("생일축하", 12, "김유정", "2019.03.6", 4, "01025017444"), + ERoom("생일축하", 18, "이민희", "2019.03.11", 110, "01025017444"), + ERoom("생일축하", 30, "elden", "2019.03.23", 2, "01025017444"), + ERoom("생일축하", 50, "happy", "2019.04.10", 4, "01025017444"), + ERoom("생일축하", 51, "이민상", "2019.04.11", 22, "01025017444"), + ERoom("생일축하", 52, "최상희", "2019.04.12", 4, "01025017444"), + ERoom("생일축하", 60, "소연", "2019.04.20", 2, "01025017444") + ) + + private var context: Context = this + + private val READ_CONTACTS_PERMISSIONS_REQUEST = 1 + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + + var pageNum = dataList.size + if (pageNum>9) { + pageNum = 9 + } + faBtnMain.setImageResource(R.drawable.ic_add) + contactPermissionCheck() + + val fragment = FriendListFragment(dataList) + supportFragmentManager.beginTransaction().add(R.id.frMainFriendList, fragment).commit() + + val pager = pagerContainer.viewPager as ViewPager + val adapter = MainPageAdepter() + + pager.adapter = adapter + + pager.offscreenPageLimit = adapter.count + pager.pageMargin = 20 + pager.clipChildren = false + + pagerIndicator?.createDotPanel(pageNum, R.drawable.indicator_dot_off, R.drawable.indicator_dot_on, pager.currentItem) + pagerContainer.setIndicator(pagerIndicator) + + faBtnMain.setOnClickListener { + val intent = Intent(context, SelectFriendActivity()::class.java) + startActivity(intent) + } + btnMainSettingFriend.setOnClickListener { + val intent = Intent(context, MyPageActivity()::class.java) + startActivity(intent) + } + + //채널생성 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + // Create the NotificationChannel + val name = getString(R.string.channel_name) + val descriptionText = getString(R.string.channel_description) + val importance = NotificationManager.IMPORTANCE_DEFAULT + val mChannel = NotificationChannel("22", name, importance) + mChannel.description = descriptionText + // Register the channel with the system; you can't change the importance + // or other notification behaviors after this + val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager + notificationManager.createNotificationChannel(mChannel) + /* 채널 삭제 + val id: String = "my_channel_01" + notificationManager.deleteNotificationChannel(id)*/ + } + val resultIntent = Intent(this, PaperNotiActivity::class.java) + startActivity(resultIntent) + val mPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent + .FLAG_UPDATE_CURRENT) + + val mBuilder = NotificationCompat.Builder(this, "22") + .setSmallIcon(R.drawable.indicator_dot_on) + .setContentTitle("축하합니다! 롤링페이퍼가 도착했습니다.") + .setContentText("롤링페이퍼 보러가기!") + .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.img_main)) + .setOngoing(true) + .setDefaults(Notification.DEFAULT_VIBRATE) + .setPriority(NotificationCompat.PRIORITY_DEFAULT) + .setAutoCancel(true) + .setContentIntent(mPendingIntent) + val mNotificationManager: NotificationManager = (getSystemService(NOTIFICATION_SERVICE)) as NotificationManager + mNotificationManager.notify(0, mBuilder.build()) + } + + private inner class MainPageAdepter : PagerAdapter() { + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + if (position == 9) { + val view2 = layoutInflater.inflate(R.layout.item_main_loling_room_max + , container, false) + container.addView(view2) + view2.setOnClickListener { + intent = Intent(context, SelectFriendActivity::class.java) + startActivity(intent) + } + return view2 + } + val view = layoutInflater.inflate(R.layout.item_main_loling_room, container + , false) + container.addView(view) + view.tvLolingRoomTitle.text = dataList[position].title + view.tvLolingRoomDday.text = "D - " + dataList[position].Dday + view.tvLolingRoomTarget.text = dataList[position].name + "님에게" + view.tvLolingRoomDate.text = dataList[position].date + view.tvLolingRoomCountParticipant.text = dataList[position].participant.toString() + view.setOnClickListener { + intent = Intent(context, CreateRoomActivity::class.java) + intent.putExtra("name", dataList[position].name) + intent.putExtra("phoneNum", dataList[position].phone) + startActivity(intent) + } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + + override fun isViewFromObject(view: View, `object`: Any): Boolean { + return view == `object` + } + + override fun getCount(): Int { + if (dataList.size > 9) { + return 10 + } + return dataList.size + } + + } + + private fun contactPermissionCheck() { + if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) + != PackageManager.PERMISSION_GRANTED|| + ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) + != PackageManager.PERMISSION_GRANTED|| + ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) + != PackageManager.PERMISSION_GRANTED) { + if (ActivityCompat.shouldShowRequestPermissionRationale(this, + Manifest.permission.READ_CONTACTS)) { + + } + ActivityCompat.requestPermissions(this, + arrayOf(Manifest.permission.READ_CONTACTS, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE), + 3) + } + } + + override fun onRequestPermissionsResult(requestCode: Int, + permissions: Array, grantResults: IntArray) { + when (requestCode) { + READ_CONTACTS_PERMISSIONS_REQUEST -> { + if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + } else { + } + return + } + } + } +} diff --git a/app/src/main/java/mashup/loling/main/PaperNotiActivity.kt b/app/src/main/java/mashup/loling/main/PaperNotiActivity.kt new file mode 100644 index 0000000..5eab58f --- /dev/null +++ b/app/src/main/java/mashup/loling/main/PaperNotiActivity.kt @@ -0,0 +1,22 @@ +package mashup.loling.main + +import android.content.Intent +import android.os.Bundle +import android.support.v7.app.AppCompatActivity +import kotlinx.android.synthetic.main.activity_paper_noti.* +import mashup.loling.R +import mashup.loling.room.view.ReceivedPaperListActivity + +class PaperNotiActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_paper_noti) + + btnPagerNotification.setOnClickListener { + val intent = Intent(this,ReceivedPaperListActivity::class.java) + startActivity(intent) + finish() + } + } +} diff --git a/app/src/main/java/mashup/loling/model/ERoom.kt b/app/src/main/java/mashup/loling/model/ERoom.kt new file mode 100644 index 0000000..96aecdc --- /dev/null +++ b/app/src/main/java/mashup/loling/model/ERoom.kt @@ -0,0 +1,11 @@ +package mashup.loling.model + +class ERoom ( + var title : String, + var Dday : Int, + var name : String, + var date : String, + var participant : Int, + var phone : String + +) \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/model/FriendItem.kt b/app/src/main/java/mashup/loling/model/FriendItem.kt index 300cc43..1e1d9f3 100644 --- a/app/src/main/java/mashup/loling/model/FriendItem.kt +++ b/app/src/main/java/mashup/loling/model/FriendItem.kt @@ -1,9 +1,16 @@ package mashup.loling.model -import android.widget.TextView +class FriendItem( + var friendItemName: String, + var friendItemDday: String, + var friendItemBday: String, + var friendItemPnum: String) { + constructor(friendItemName: String, friendItemDday: String, friendItemBday: String) : this(friendItemName, friendItemDday, friendItemBday, "") + constructor(friendItemName: String, friendItemBday: String) : this(friendItemName, "", friendItemBday, "") + //constructor(name: String, friendItemPnum: String) : this(name, "", "", friendItemPnum) + -class FriendItem (var friendItemName: String, var friendItemDday: String, var friendItemBday: String){ override fun toString(): String { - return "FriendItem(friendItemName='$friendItemName', friendItemDday='$friendItemDday', friendItemBday='$friendItemBday')" + return "FriendItem(name='$friendItemName', friendItemDday='$friendItemDday', friendItemBday='$friendItemBday')" } } diff --git a/app/src/main/java/mashup/loling/model/Paper.kt b/app/src/main/java/mashup/loling/model/Paper.kt new file mode 100644 index 0000000..7bc1435 --- /dev/null +++ b/app/src/main/java/mashup/loling/model/Paper.kt @@ -0,0 +1,10 @@ +package mashup.loling.model + +class Paper( + var id: Int, + var creatorId: Int, + var receiverId: Int, + var name: String, + var createdAt: Int, + var dueDay: Int +) \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/model/Room.kt b/app/src/main/java/mashup/loling/model/Room.kt new file mode 100644 index 0000000..30b000d --- /dev/null +++ b/app/src/main/java/mashup/loling/model/Room.kt @@ -0,0 +1,12 @@ +package mashup.loling.model + +import java.util.* + +class Room ( + var id : Int, + var creatorId : Int, + var parperId : Int, + var createdAt : Date, + var invitationLink : String, + var invitationToken : String +) \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/mypage/MyPageActivity.kt b/app/src/main/java/mashup/loling/mypage/MyPageActivity.kt new file mode 100644 index 0000000..8096a53 --- /dev/null +++ b/app/src/main/java/mashup/loling/mypage/MyPageActivity.kt @@ -0,0 +1,102 @@ +package mashup.loling.mypage + +import android.content.Intent +import android.os.Bundle +import android.support.design.widget.TabLayout +import android.support.v4.app.Fragment +import android.support.v4.app.FragmentManager +import android.support.v4.app.FragmentStatePagerAdapter +import kotlinx.android.synthetic.main.activity_my_page.* +import mashup.loling.BaseActivity +import mashup.loling.R +import mashup.loling.fagment.FriendListFragment +import mashup.loling.fagment.ReceivedListFragment +import mashup.loling.fagment.WrittenListFragment + +import mashup.loling.model.ERoom + +class MyPageActivity : BaseActivity() { + private var dataList = arrayListOf( + ERoom("생일축하", 1, "소현", "2019.02.23", 30, "01025017444"), + ERoom("100일 기념", 1, "유정", "2019.02.23", 10, "01025017444"), + ERoom("생일축하", 4, "주진", "2019.02.26", 3, "01025017444"), + ERoom("생일축하", 4, "상희", "2019.02.26", 22, "01025017444"), + ERoom("생일축하", 5, "민수", "2019.02.28", 22, "01025017444"), + ERoom("생일축하", 8, "김희철", "2019.03.3", 22, "01025017444"), + ERoom("졸업", 11, "강민석", "2019.03.5", 1, "01025017444"), + ERoom("생일축하", 12, "김유정", "2019.03.6", 4, "01025017444"), + ERoom("생일축하", 18, "이민희", "2019.03.11", 110, "01025017444"), + ERoom("생일축하", 30, "elden", "2019.03.23", 2, "01025017444"), + ERoom("생일축하", 50, "happy", "2019.04.10", 4, "01025017444"), + ERoom("생일축하", 51, "이민상", "2019.04.11", 22, "01025017444"), + ERoom("생일축하", 52, "최상희", "2019.04.12", 4, "01025017444"), + ERoom("생일축하", 60, "소연", "2019.04.20", 2, "01025017444") + ) + + val friendFrag = FriendListFragment(dataList) + val writtenFrag = WrittenListFragment() + val receivedFrag = ReceivedListFragment() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_my_page) + var friendListStr = friendFrag.friendsSzie().toString() + "\n" + getText(R.string.friendList) + var writtenLolingStr = writtenFrag.friendsSzie().toString() + "\n" + getText(R.string.writtenLoling) + var receiveLolingStr = receivedFrag.friendsSzie().toString() + "\n" + getText(R.string.receiveLoling) + + val tabs = tabsMypage + tabs.addTab(tabs.newTab().setText(friendListStr)) + tabs.addTab(tabs.newTab().setText(writtenLolingStr)) + tabs.addTab(tabs.newTab().setText(receiveLolingStr)) + + val pager = vpMyPage + val adapter = PagerAdapter(supportFragmentManager, tabs.tabCount) + pager.adapter = adapter + pager.addOnPageChangeListener(TabLayout.TabLayoutOnPageChangeListener(tabs)) + + tabs.setOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { + override fun onTabReselected(p0: TabLayout.Tab?) { + } + + override fun onTabUnselected(p0: TabLayout.Tab?) { + } + + override fun onTabSelected(p0: TabLayout.Tab?) { + pager.setCurrentItem(tabs.selectedTabPosition) + } + }) + + btnMypageSetting.setOnClickListener { + val intent = Intent(this, MyPageSettingActivity::class.java) + startActivity(intent) + overridePendingTransition(R.anim.anim_slide_in_left, R.anim.anim_slide_in_left) + } + + btnMypageClose.setOnClickListener { + finish() + } + + + } + + internal inner class PagerAdapter : FragmentStatePagerAdapter { + var mNumOfTabs: Int + + constructor(fm: FragmentManager?, mNumOfTabs: Int) : super(fm) { + this.mNumOfTabs = mNumOfTabs + } + + override fun getItem(position: Int): Fragment { + return when (position) { + 0 -> friendFrag + 1 -> writtenFrag + 2 -> receivedFrag + else -> friendFrag + } + } + + override fun getCount(): Int { + return mNumOfTabs + } + } +} diff --git a/app/src/main/java/mashup/loling/MyPageSettingActivity.kt b/app/src/main/java/mashup/loling/mypage/MyPageSettingActivity.kt similarity index 69% rename from app/src/main/java/mashup/loling/MyPageSettingActivity.kt rename to app/src/main/java/mashup/loling/mypage/MyPageSettingActivity.kt index 3df8528..ef452c4 100644 --- a/app/src/main/java/mashup/loling/MyPageSettingActivity.kt +++ b/app/src/main/java/mashup/loling/mypage/MyPageSettingActivity.kt @@ -1,11 +1,11 @@ -package mashup.loling +package mashup.loling.mypage -import android.support.v7.app.AppCompatActivity import android.os.Bundle -import android.view.View import kotlinx.android.synthetic.main.activity_mypage_setting.* +import mashup.loling.BaseActivity +import mashup.loling.R -class MyPageSettingActivity : AppCompatActivity() { +class MyPageSettingActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/mashup/loling/room/AuthorListActivity.kt b/app/src/main/java/mashup/loling/room/AuthorListActivity.kt deleted file mode 100644 index 35f39a9..0000000 --- a/app/src/main/java/mashup/loling/room/AuthorListActivity.kt +++ /dev/null @@ -1,13 +0,0 @@ -package mashup.loling.room - -import android.support.v7.app.AppCompatActivity -import android.os.Bundle -import mashup.loling.R - -class AuthorListActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_author_list) - } -} diff --git a/app/src/main/java/mashup/loling/room/AuthorListDetailActivity.kt b/app/src/main/java/mashup/loling/room/AuthorListDetailActivity.kt deleted file mode 100644 index 3f3dc0b..0000000 --- a/app/src/main/java/mashup/loling/room/AuthorListDetailActivity.kt +++ /dev/null @@ -1,13 +0,0 @@ -package mashup.loling.room - -import android.support.v7.app.AppCompatActivity -import android.os.Bundle -import mashup.loling.R - -class AuthorListDetailActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_author_list_detail) - } -} diff --git a/app/src/main/java/mashup/loling/room/BlockSwipeViewPager.kt b/app/src/main/java/mashup/loling/room/BlockSwipeViewPager.kt new file mode 100644 index 0000000..cd2fe1c --- /dev/null +++ b/app/src/main/java/mashup/loling/room/BlockSwipeViewPager.kt @@ -0,0 +1,19 @@ +package mashup.loling.room + +import android.content.Context +import android.support.v4.view.ViewPager +import android.util.AttributeSet +import android.view.MotionEvent + +class BlockSwipeViewPager: ViewPager { + constructor(context: Context) : super(context) + constructor(context: Context, attributeSet: AttributeSet?) : super(context, attributeSet) + + override fun onTouchEvent(ev: MotionEvent?): Boolean { + return false + } + + override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean { + return false + } +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/room/ReceivedPage.kt b/app/src/main/java/mashup/loling/room/ReceivedPage.kt new file mode 100644 index 0000000..c7773f6 --- /dev/null +++ b/app/src/main/java/mashup/loling/room/ReceivedPage.kt @@ -0,0 +1,8 @@ +package mashup.loling.room + +import android.net.Uri + +class ReceivedPage( + var sender: String, + var image: Uri +) \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/room/RecivedPaperAdapter.kt b/app/src/main/java/mashup/loling/room/RecivedPaperAdapter.kt new file mode 100644 index 0000000..8f021fc --- /dev/null +++ b/app/src/main/java/mashup/loling/room/RecivedPaperAdapter.kt @@ -0,0 +1,57 @@ +package mashup.loling.room + +import android.content.Context +import android.content.Intent +import android.support.v7.widget.RecyclerView +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import kotlinx.android.synthetic.main.item_receive_paper_sender.view.* +import mashup.loling.R +import mashup.loling.room.view.ReceivedPaperRoomActivity + +class RecivedPaperAdapter(val context: Context, val receiverList: List): + RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viweType: Int): Holder { + val view = LayoutInflater.from(context).inflate( + R.layout.item_receive_paper_sender, parent, false + ) + return Holder(view) + } + + override fun getItemCount(): Int { + return receiverList.size + } + + override fun onBindViewHolder(holder: Holder, position: Int) { + holder.bind(receiverList[position]) + } + + inner class Holder(itemView: View) : RecyclerView.ViewHolder(itemView) { + private val sender = itemView.tvSender + + fun bind(receivePaper: ReceivedPage) { + sender.text = receivePaper.sender + + sender.setOnClickListener{ + val intent = Intent(context,ReceivedPaperRoomActivity()::class.java) + intent.putExtra("position",position) + val nameList = ArrayList() + val uriList = ArrayList() + + for(receivedRoom in receiverList) { + nameList.add(receivedRoom.sender) + uriList.add(receivedRoom.image.toString()) + } + + intent.putStringArrayListExtra("nameList", nameList) + intent.putStringArrayListExtra("uriList", uriList) + context.startActivity(intent) + } + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/room/SelectTargetActivity.kt b/app/src/main/java/mashup/loling/room/SelectTargetActivity.kt deleted file mode 100644 index eac4cd0..0000000 --- a/app/src/main/java/mashup/loling/room/SelectTargetActivity.kt +++ /dev/null @@ -1,13 +0,0 @@ -package mashup.loling.room - -import android.support.v7.app.AppCompatActivity -import android.os.Bundle -import mashup.loling.R - -class SelectTargetActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_select_target) - } -} diff --git a/app/src/main/java/mashup/loling/room/view/AuthorListActivity.kt b/app/src/main/java/mashup/loling/room/view/AuthorListActivity.kt new file mode 100644 index 0000000..341d04a --- /dev/null +++ b/app/src/main/java/mashup/loling/room/view/AuthorListActivity.kt @@ -0,0 +1,46 @@ +package mashup.loling.room.view + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.support.v7.widget.LinearLayoutManager +import kotlinx.android.synthetic.main.activity_author_list.* +import mashup.loling.R +import mashup.loling.drawpaper.view.DrawPaperActivity +import mashup.loling.model.Paper +import mashup.loling.Adapter.AuthorListItemAdapter +import mashup.loling.BaseActivity +import java.util.* + +class AuthorListActivity : BaseActivity() { + + private var context: Context = this + val weterList: ArrayList = ArrayList() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_author_list) + + //지우기 + tvAuthorListAnyDay.text="2019.02.28" + tvAuthorListAnyDayParticipant.text = "10" + + if(rvAuthorList != null) { + rvAuthorList.layoutManager = LinearLayoutManager(context) + writerList() + rvAuthorList.adapter = AuthorListItemAdapter(weterList) + } + + faBtnWrite.setImageResource(R.drawable.ic_add) + faBtnWrite.setOnClickListener{ + val intent = Intent(context, DrawPaperActivity()::class.java) + startActivity(intent) + } + } + + private fun writerList(){//친구목록 가져와 처리 + for (i in 0..19){ + weterList.add(Paper(i,i+1,i+3,"유정", Date().day, Date().hours)) + } + } +} diff --git a/app/src/main/java/mashup/loling/room/view/AuthorListDetailActivity.kt b/app/src/main/java/mashup/loling/room/view/AuthorListDetailActivity.kt new file mode 100644 index 0000000..7c2e019 --- /dev/null +++ b/app/src/main/java/mashup/loling/room/view/AuthorListDetailActivity.kt @@ -0,0 +1,57 @@ +package mashup.loling.room.view + +import android.support.v7.app.AppCompatActivity +import android.os.Bundle +import android.support.v4.view.PagerAdapter +import android.support.v4.view.ViewPager +import android.view.View +import android.view.ViewGroup +import kotlinx.android.synthetic.main.activity_author_list_detail.* +import kotlinx.android.synthetic.main.activity_main.* +import mashup.loling.R + +class AuthorListDetailActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_author_list_detail) + + val pager = authorListPageContainer.viewPager as ViewPager + val adapter = AuthorListAdepter() + + pager.adapter = adapter + + // 최소 몇 페이지 이상 볼 수 있도록 설정 + pager.offscreenPageLimit = adapter.count + pager.pageMargin = 8 + //If hardware acceleration is enabled, you should also remove + // clipping on the pager for its children. + pager.clipChildren = false + + } + + + private inner class AuthorListAdepter : PagerAdapter() { + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = layoutInflater.inflate(R.layout.item_author_list_detail, container + , false) + container.addView(view) + tvAuthorListDetailPageMax.text = "/"+(position+1) + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + + override fun isViewFromObject(view: View, `object`: Any): Boolean { + return view == `object` + } + + override fun getCount(): Int { + return 10 + } + + } +} diff --git a/app/src/main/java/mashup/loling/room/view/CreateRoomActivity.kt b/app/src/main/java/mashup/loling/room/view/CreateRoomActivity.kt new file mode 100644 index 0000000..12a2f58 --- /dev/null +++ b/app/src/main/java/mashup/loling/room/view/CreateRoomActivity.kt @@ -0,0 +1,118 @@ +package mashup.loling.room.view + +import android.content.Intent +import android.os.Bundle +import android.util.DisplayMetrics +import android.view.View +import android.view.WindowManager +import kotlinx.android.synthetic.main.activity_create_room.* +import kotlinx.android.synthetic.main.layout_create_room_main.* +import kotlinx.android.synthetic.main.layout_create_room_main.view.* +import mashup.loling.Adapter.CreateRoomPagerAdapter +import mashup.loling.Adapter.CreateRoomPagerAdapter.Companion.PAGE_CALENDAR +import mashup.loling.Adapter.CreateRoomPagerAdapter.Companion.PAGE_EXISTED_CHK +import mashup.loling.Adapter.CreateRoomPagerAdapter.Companion.PAGE_EXISTED_LOLING_LIST +import mashup.loling.Adapter.CreateRoomPagerAdapter.Companion.PAGE_MAIN +import mashup.loling.BaseActivity +import mashup.loling.R +import mashup.loling.drawpaper.view.DrawPaperActivity +import java.text.SimpleDateFormat +import java.util.* + +class CreateRoomActivity : BaseActivity() { + + var selectedDate: Date = Date() + var selectedName = "" + var selectedPhoneNum = "" + + val createRoomMethods = object : ICreateRoomMethods { + override fun onSelectRoomTextClicked() { + createRoomViewPager.currentItem = PAGE_CALENDAR + } + + override fun onDateSelectedFromCal(date: Date) { + selectedDate = date + (createRoomViewPager.getTag(createRoomViewPager.hashCode() + PAGE_MAIN) as View).btnCreateLoling.isEnabled = true + (createRoomViewPager.getTag(createRoomViewPager.hashCode() + PAGE_MAIN) as View).tvRoomDate.text = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(selectedDate) + createRoomViewPager.currentItem = PAGE_MAIN + } + + override fun onCancelFromCal() { + createRoomViewPager.currentItem = PAGE_MAIN + } + + override fun onCreateLolingButtonClicked() { + // Check whether loling for selected user/date is already existed or not\ + if (false) { //this should be executed as async + // open new loling activity + onCreateNewLolingClicked() + } else { + // show newLoling or joinExisted + createRoomViewPager.currentItem = PAGE_EXISTED_CHK + } + } + + override fun onCreateNewLolingClicked() { + + } + + override fun onJoinExitedLolingClicked() { + val intent = Intent(baseContext, DrawPaperActivity::class.java) + intent.putExtra("name", selectedName) + intent.putExtra("phoneNum", selectedPhoneNum) + intent.putExtra("date", selectedDate.time) + startActivity(intent) + } + + override fun onExistedLolingItemClicked(lolingId: Int) { + createRoomViewPager.currentItem = PAGE_EXISTED_LOLING_LIST + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_create_room) + + // if window size is over the 350x500 dp, set size 350x500 dp. if smaller, set match_parent + val dm = DisplayMetrics() + windowManager.defaultDisplay.getMetrics(dm) + val maxWidthPx = resources.getDimensionPixelSize(R.dimen.create_room_window_max_width) + val maxHeightPx = resources.getDimensionPixelSize(R.dimen.create_room_window_max_height) + + window.setLayout( + if (dm.widthPixels > maxWidthPx) maxWidthPx else WindowManager.LayoutParams.MATCH_PARENT, + if (dm.heightPixels > maxHeightPx) maxHeightPx else WindowManager.LayoutParams.MATCH_PARENT) + + selectedName = intent.getStringExtra("name") + selectedPhoneNum = intent.getStringExtra("phoneNum") + + createRoomViewPager.adapter = CreateRoomPagerAdapter(this, createRoomMethods,selectedName) + createRoomViewPager.offscreenPageLimit = (createRoomViewPager.adapter as CreateRoomPagerAdapter).count + createRoomViewPager.currentItem = PAGE_MAIN + + ivClose.setOnClickListener { finish() } + + } + + override fun onBackPressed() { + when (createRoomViewPager.currentItem) { + PAGE_CALENDAR -> createRoomViewPager.currentItem = PAGE_MAIN + PAGE_EXISTED_CHK -> createRoomViewPager.currentItem = PAGE_MAIN + PAGE_EXISTED_LOLING_LIST -> createRoomViewPager.currentItem = PAGE_EXISTED_CHK + else -> super.onBackPressed() + } + } + + companion object { + interface ICreateRoomMethods { + fun onSelectRoomTextClicked() + fun onDateSelectedFromCal(date: Date) + fun onCancelFromCal() + fun onCreateLolingButtonClicked() + fun onCreateNewLolingClicked() + fun onJoinExitedLolingClicked() + fun onExistedLolingItemClicked(lolingId: Int) + } + } + +} diff --git a/app/src/main/java/mashup/loling/room/view/ReceivedPaperListActivity.kt b/app/src/main/java/mashup/loling/room/view/ReceivedPaperListActivity.kt new file mode 100644 index 0000000..418b3de --- /dev/null +++ b/app/src/main/java/mashup/loling/room/view/ReceivedPaperListActivity.kt @@ -0,0 +1,55 @@ +package mashup.loling.room.view + +import android.content.Context +import android.net.Uri +import android.os.Bundle +import android.support.v7.widget.GridLayoutManager +import kotlinx.android.synthetic.main.activity_recive_paper_list.* +import kotlinx.android.synthetic.main.item_receive_paper_sender.* +import mashup.loling.BaseActivity +import mashup.loling.R +import mashup.loling.room.ReceivedPage +import mashup.loling.room.RecivedPaperAdapter +import mashup.loling.user.User + + +class ReceivedPaperListActivity : BaseActivity() { + private var reciverList = arrayListOf( + ReceivedPage("유정", Uri.EMPTY), + ReceivedPage("주지니",Uri.EMPTY), + ReceivedPage("상희?",Uri.EMPTY), + ReceivedPage("현우야",Uri.EMPTY), + ReceivedPage("석주",Uri.EMPTY), + ReceivedPage("해은",Uri.EMPTY), + ReceivedPage("영은",Uri.EMPTY), + ReceivedPage("소현",Uri.EMPTY), + ReceivedPage("채채",Uri.EMPTY), + ReceivedPage("시스터즈",Uri.EMPTY) + ) + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_recive_paper_list) + + val mAdapter = RecivedPaperAdapter(this, reciverList) + rvSender.adapter = mAdapter + + rvSender.layoutManager = (GridLayoutManager(this,2)) + rvSender.setHasFixedSize(true) + + layoutRecivePaperList.addOnLayoutChangeListener { v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom -> + val num1 = convertPxToDp(this,layoutRecivePaperList.width).toInt() + val num2 = convertPxToDp(this,layoutRecivePaperSender.width).toInt() + val num3 = num1/num2 + (rvSender.layoutManager as GridLayoutManager).spanCount = num3 + } + tvSenderListPersonName.text = User.name + btnSenderListClose.setOnClickListener { + finish() + } + } + + private fun convertPxToDp(context: Context, px: Int): Float { + return px / context.resources.displayMetrics.density + } +} diff --git a/app/src/main/java/mashup/loling/room/view/ReceivedPaperRoomActivity.kt b/app/src/main/java/mashup/loling/room/view/ReceivedPaperRoomActivity.kt new file mode 100644 index 0000000..56d138c --- /dev/null +++ b/app/src/main/java/mashup/loling/room/view/ReceivedPaperRoomActivity.kt @@ -0,0 +1,74 @@ +package mashup.loling.room.view + +import android.net.Uri +import android.support.v7.app.AppCompatActivity +import android.os.Bundle +import android.support.v4.view.PagerAdapter +import android.support.v4.view.ViewPager +import android.view.View +import android.view.ViewGroup +import kotlinx.android.synthetic.main.activity_author_list_detail.* +import kotlinx.android.synthetic.main.item_author_list_detail.view.* +import mashup.loling.R +import mashup.loling.room.ReceivedPage + +class ReceivedPaperRoomActivity : AppCompatActivity() { + + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_author_list_detail) + + val nameList = intent.getStringArrayListExtra("nameList") + val uriList = intent.getStringArrayListExtra("uriList") + val receivedList = ArrayList() + + for(i in 0 until nameList.size) { + receivedList.add(ReceivedPage(nameList[i], Uri.parse(uriList[i]))) + } + + val pager = authorListPageContainer.viewPager as ViewPager + val adapter = AuthorListAdepter(receivedList) + + pager.adapter = adapter + + // 최소 몇 페이지 이상 볼 수 있도록 설정 + pager.offscreenPageLimit = adapter.count + pager.pageMargin = 8 + //If hardware acceleration is enabled, you should also remove + // clipping on the pager for its children. + pager.clipChildren = false + pager.currentItem = intent.getIntExtra("position",0) + + tvAuthorListDetailPageMax.text = "/${receivedList.size}" + btnAuthorListDetailClose.setOnClickListener { + finish() + } + } + + + private inner class AuthorListAdepter(var receivedList: ArrayList) : PagerAdapter + () { + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = layoutInflater.inflate(R.layout.item_author_list_detail, container + , false) + container.addView(view) + view.tvSenderName.text=receivedList[position].sender + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + + override fun isViewFromObject(view: View, `object`: Any): Boolean { + return view == `object` + } + + override fun getCount(): Int { + return receivedList.size + } + + } +} diff --git a/app/src/main/java/mashup/loling/room/view/SelectFriendActivity.kt b/app/src/main/java/mashup/loling/room/view/SelectFriendActivity.kt new file mode 100644 index 0000000..f98402f --- /dev/null +++ b/app/src/main/java/mashup/loling/room/view/SelectFriendActivity.kt @@ -0,0 +1,82 @@ +package mashup.loling.room.view + +import android.os.Bundle +import android.support.design.widget.TabLayout +import android.support.v4.app.Fragment +import android.support.v4.app.FragmentManager +import android.support.v4.app.FragmentStatePagerAdapter +import kotlinx.android.synthetic.main.activity_select_friend.* +import mashup.loling.BaseActivity +import mashup.loling.R +import mashup.loling.fagment.SelectFriendAddressListFragment +import mashup.loling.fagment.SelectFriendListFragment +import mashup.loling.model.ERoom + +class SelectFriendActivity : BaseActivity() { + private var dataList = arrayListOf( + ERoom("생일축하", 1, "소현", "2019.02.23", 30, "01025017444"), + ERoom("100일 기념", 1, "유정", "2019.02.23", 10, "01025017444"), + ERoom("생일축하", 4, "주진", "2019.02.26", 3, "01025017444"), + ERoom("생일축하", 4, "상희", "2019.02.26", 22, "01025017444"), + ERoom("생일축하", 5, "민수", "2019.02.28", 22, "01025017444"), + ERoom("생일축하", 8, "김희철", "2019.03.3", 22, "01025017444"), + ERoom("졸업", 11, "강민석", "2019.03.5", 1, "01025017444"), + ERoom("생일축하", 12, "김유정", "2019.03.6", 4, "01025017444"), + ERoom("생일축하", 18, "이민희", "2019.03.11", 110, "01025017444"), + ERoom("생일축하", 30, "elden", "2019.03.23", 2, "01025017444"), + ERoom("생일축하", 50, "happy", "2019.04.10", 4, "01025017444"), + ERoom("생일축하", 51, "이민상", "2019.04.11", 22, "01025017444"), + ERoom("생일축하", 52, "최상희", "2019.04.12", 4, "01025017444"), + ERoom("생일축하", 60, "소연", "2019.04.20", 2, "01025017444") + ) + val friendFrag = SelectFriendListFragment(dataList) + val addressFrag = SelectFriendAddressListFragment() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_select_friend) + + val tabs = tabsSelectFriend + tabs.addTab(tabs.newTab().setText(R.string.friend)) + tabs.addTab(tabs.newTab().setText(R.string.phone_num)) + + val pager = vpSelectFriend + val adapter = PagerAdapter(supportFragmentManager,tabs.tabCount) + pager.adapter = adapter + pager.addOnPageChangeListener(TabLayout.TabLayoutOnPageChangeListener(tabs)) + + tabs.setOnTabSelectedListener(object : TabLayout.OnTabSelectedListener{ + override fun onTabReselected(p0: TabLayout.Tab?) { + } + override fun onTabUnselected(p0: TabLayout.Tab?) { + } + override fun onTabSelected(p0: TabLayout.Tab?) { + pager.currentItem = tabs.selectedTabPosition + } + }) + + btnSelectFriendBack.setOnClickListener { + finish() + } + + + + } + + internal inner class PagerAdapter(fm: FragmentManager?, private var mNumOfTabs: Int) : FragmentStatePagerAdapter(fm) { + override fun getItem(position: Int): Fragment { + return when (position) { + 0 -> { + friendFrag + } + 1 -> { + addressFrag + } + else -> friendFrag + } + } + override fun getCount(): Int { + return mNumOfTabs + } + } +} diff --git a/app/src/main/java/mashup/loling/user/User.kt b/app/src/main/java/mashup/loling/user/User.kt new file mode 100644 index 0000000..d808cfe --- /dev/null +++ b/app/src/main/java/mashup/loling/user/User.kt @@ -0,0 +1,20 @@ +package mashup.loling.user + +import mashup.loling.user.pojo.BirthDay +import java.util.* + +/** + * 현재 로그인한 유저의 정보를 담고있는 싱글톤 + */ +object User { + var id: String = "" + var password: String = "" + var salt: String = "" + var encryptedPhoneNumber: String = "" + var name: String = "유댕" + var phoneNumber: String = "01025017444" + var birthday: BirthDay = BirthDay(0,0,0) + var createdAt: Date = Date() + var anonymous: Boolean = false + var token: String = "" +} diff --git a/app/src/main/java/mashup/loling/user/api/ApiManager.kt b/app/src/main/java/mashup/loling/user/api/ApiManager.kt new file mode 100644 index 0000000..a72b44f --- /dev/null +++ b/app/src/main/java/mashup/loling/user/api/ApiManager.kt @@ -0,0 +1,63 @@ +package mashup.loling.user.api + +import android.util.Log +import io.reactivex.Single +import mashup.loling.user.User +import mashup.loling.user.pojo.request.RegisterRequest +import mashup.loling.user.pojo.request.SignInRequest +import retrofit2.Retrofit +import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory +import retrofit2.converter.gson.GsonConverterFactory + + +object ApiManager { + var url = "https://0ec805.emporter.eu/" + + fun register(): Single { + var retrofit = Retrofit.Builder() + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) + .addConverterFactory(GsonConverterFactory.create()) + .baseUrl(url) + .build() + .create(UserApi::class.java) + + return Single.create{subscribe -> + var registerRequest = RegisterRequest(User.id, User.name, User.birthday, User.phoneNumber, User.password) + retrofit.register(registerRequest) + .map { response -> + response.name + } + .subscribe({responseResult-> + Log.v("csh","ApiManager success : "+responseResult) + subscribe.onSuccess(responseResult) + }, {exception-> + Log.v("csh","fail : "+exception) + subscribe.onError(Throwable(exception)) + }) + } + } + + fun login(id: String, pw: String): Single { + var retrofit = Retrofit.Builder() + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) + .addConverterFactory(GsonConverterFactory.create()) + .baseUrl(url) + .build() + .create(UserApi::class.java) + + var signInRequest = SignInRequest(id, pw) + return Single.create{subscribe -> + retrofit.login(signInRequest) + .map { response -> + response.userId + } + .subscribe({responseResult-> + Log.v("csh","success:"+responseResult) + subscribe.onSuccess(responseResult + "로그인 완료") + }, { except -> + Log.v("csh","fail:"+except) + subscribe.onError(Throwable("Login Failed")) + }) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/user/api/UserApi.kt b/app/src/main/java/mashup/loling/user/api/UserApi.kt new file mode 100644 index 0000000..e54c03b --- /dev/null +++ b/app/src/main/java/mashup/loling/user/api/UserApi.kt @@ -0,0 +1,26 @@ +package mashup.loling.user.api + +import io.reactivex.Single +import mashup.loling.user.pojo.request.RegisterRequest +import mashup.loling.user.pojo.response.RegisterResponse +import mashup.loling.user.pojo.request.SignInRequest +import mashup.loling.user.pojo.response.SignInResponse +import retrofit2.http.* + +interface UserApi { + + /** + * 로그인 + */ + @Headers("Content-Type: application/json") + @POST("auth/sign-in") + fun login(@Body body: SignInRequest) : Single + + + /** + * 회원가입 + */ + @Headers("Content-Type: application/json") + @POST("users") + fun register(@Body body: RegisterRequest) : Single +} \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/user/pojo/BirthDay.kt b/app/src/main/java/mashup/loling/user/pojo/BirthDay.kt new file mode 100644 index 0000000..f8338bf --- /dev/null +++ b/app/src/main/java/mashup/loling/user/pojo/BirthDay.kt @@ -0,0 +1,7 @@ +package mashup.loling.user.pojo + +import java.io.Serializable + +data class BirthDay(var year: Int, + var month: Int, + var day: Int) : Serializable \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/user/pojo/ProfileImage.kt b/app/src/main/java/mashup/loling/user/pojo/ProfileImage.kt new file mode 100644 index 0000000..e3c6a88 --- /dev/null +++ b/app/src/main/java/mashup/loling/user/pojo/ProfileImage.kt @@ -0,0 +1,6 @@ +package mashup.loling.user.pojo + +data class ProfileImage(val id: Int, + val url: String, + val filename: String, + val extension: String) \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/user/pojo/request/RegisterRequest.kt b/app/src/main/java/mashup/loling/user/pojo/request/RegisterRequest.kt new file mode 100644 index 0000000..fd58cd1 --- /dev/null +++ b/app/src/main/java/mashup/loling/user/pojo/request/RegisterRequest.kt @@ -0,0 +1,17 @@ +package mashup.loling.user.pojo.request + +import com.google.gson.annotations.SerializedName +import mashup.loling.user.pojo.BirthDay +import java.io.Serializable + +data class RegisterRequest( + @SerializedName("id") + var id : String, + @SerializedName("name") + var name: String, + @SerializedName("birthday") + var birthday: BirthDay, + @SerializedName("phoneNumber") + var phoneNumber: String, + @SerializedName("password") + var password: String) \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/user/pojo/request/SignInRequest.kt b/app/src/main/java/mashup/loling/user/pojo/request/SignInRequest.kt new file mode 100644 index 0000000..36b2d8e --- /dev/null +++ b/app/src/main/java/mashup/loling/user/pojo/request/SignInRequest.kt @@ -0,0 +1,10 @@ +package mashup.loling.user.pojo.request + +import com.google.gson.annotations.SerializedName +import java.io.Serializable + +data class SignInRequest( + @SerializedName("userId") + var userId : String, + @SerializedName("password") + var password: String) \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/user/pojo/response/ErrorResponse.kt b/app/src/main/java/mashup/loling/user/pojo/response/ErrorResponse.kt new file mode 100644 index 0000000..c74c454 --- /dev/null +++ b/app/src/main/java/mashup/loling/user/pojo/response/ErrorResponse.kt @@ -0,0 +1,4 @@ +package mashup.loling.user.pojo.response + +data class ErrorResponse(val code: String, + val message: String) \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/user/pojo/response/RegisterResponse.kt b/app/src/main/java/mashup/loling/user/pojo/response/RegisterResponse.kt new file mode 100644 index 0000000..7931ce8 --- /dev/null +++ b/app/src/main/java/mashup/loling/user/pojo/response/RegisterResponse.kt @@ -0,0 +1,13 @@ +package mashup.loling.user.pojo.response + +import mashup.loling.user.pojo.BirthDay +import mashup.loling.user.pojo.ProfileImage + +data class RegisterResponse(val id: Int, + val userId: String, + val name: String, + val birthday: BirthDay, + val phoneNumber: String, + val createdAt: String, + val anonymous: Boolean + ) \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/user/pojo/response/SignInResponse.kt b/app/src/main/java/mashup/loling/user/pojo/response/SignInResponse.kt new file mode 100644 index 0000000..2ca2477 --- /dev/null +++ b/app/src/main/java/mashup/loling/user/pojo/response/SignInResponse.kt @@ -0,0 +1,14 @@ +package mashup.loling.user.pojo.response + +import mashup.loling.user.pojo.BirthDay + + +data class SignInResponse(val id: Int, + val userId: String, + val name: String, + val phoneNumber: String, + val birthday: BirthDay, + val createdAt: String, + val anonymous: Boolean, + val token: String +) \ No newline at end of file diff --git a/app/src/main/java/mashup/loling/user/view/LoginActivityDataBinding.kt b/app/src/main/java/mashup/loling/user/view/LoginActivityDataBinding.kt new file mode 100644 index 0000000..af4d360 --- /dev/null +++ b/app/src/main/java/mashup/loling/user/view/LoginActivityDataBinding.kt @@ -0,0 +1,101 @@ +package mashup.loling.user.view + +import android.content.Intent +import android.content.SharedPreferences +import android.os.Bundle +import android.util.Log +import android.view.WindowManager +import android.widget.Toast +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.CompositeDisposable +import io.reactivex.schedulers.Schedulers +import kotlinx.android.synthetic.main.activity_login.* +import mashup.loling.R +import mashup.loling.databinding.ActivityLoginBinding +import mashup.loling.main.MainActivity +import mashup.loling.user.api.ApiManager + +class LoginActivityDataBinding : DataBindingBaseActivity() { + + private val mDisposable: CompositeDisposable = CompositeDisposable() + override val layoutResourceId: Int = R.layout.activity_login + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + val pref: SharedPreferences = getSharedPreferences("autoLogin", MODE_PRIVATE) + val editor: SharedPreferences.Editor = pref.edit() + if (pref.getBoolean("checkAutoLogin", false)) { + val intent = Intent(this, MainActivity::class.java) + startActivity(intent) + finish() + } + + + /* + viewDataBinding.btnLoginSignup.setOnClickListener { view -> + mDisposable.add(ApiManager.register(viewDataBinding.etLoginID.text.toString(), viewDataBinding.etLoginPW.text.toString()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ result -> + Toast.makeText(applicationContext, result + " 회원가입 완료!", Toast.LENGTH_SHORT).show() + }, { exception -> + Toast.makeText(applicationContext, exception.message, Toast.LENGTH_SHORT).show() + })) + }*/ + + viewDataBinding.setLifecycleOwner(this) + viewDataBinding.btnLoginSignup.setOnClickListener { view -> + val intent = Intent(this, SignupEntryActivity::class.java) + startActivity(intent) + } + + + + viewDataBinding.btnLogin.setOnClickListener { + Log.v("csh", "id:" + viewDataBinding.etLoginID.text) + Log.v("csh", "pw:" + viewDataBinding.etLoginPW.text) + + if (viewDataBinding.etLoginID.text.toString() == "admin" && viewDataBinding.etLoginPW.text.toString() == "admin") { + val intent = Intent(this, MainActivity::class.java) + editor.putBoolean("checkAutoLogin", checkAutoLogin.isChecked) + editor.apply() + startActivity(intent) + finish() + } + + mDisposable.add(ApiManager.login(viewDataBinding.etLoginID.text.toString(), viewDataBinding.etLoginPW.text.toString()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeOn(Schedulers.io()) + .doOnSubscribe { freezeUI() } + .doAfterTerminate { unFreezeUI() } + .subscribe({ result -> + Toast.makeText(applicationContext, result, Toast.LENGTH_SHORT).show() + + editor.putBoolean("checkAutoLogin", checkAutoLogin.isChecked) + editor.apply() + + val intent = Intent(this, MainActivity::class.java) + startActivity(intent) + finish() + }, { exception -> + Toast.makeText(applicationContext, exception.message, Toast.LENGTH_SHORT).show() + })) + } + } + + override fun onStop() { + super.onStop() + mDisposable.dispose() + } + + fun freezeUI() { + viewDataBinding.getRoot().setAlpha(0.6f) + window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE) + } + + fun unFreezeUI() { + viewDataBinding.getRoot().setAlpha(1.0f) + window.clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE) + } + +} diff --git a/app/src/main/java/mashup/loling/user/view/SignupEntryActivity.kt b/app/src/main/java/mashup/loling/user/view/SignupEntryActivity.kt new file mode 100644 index 0000000..7d6e41d --- /dev/null +++ b/app/src/main/java/mashup/loling/user/view/SignupEntryActivity.kt @@ -0,0 +1,37 @@ +package mashup.loling.user.view + +import android.content.Intent +import android.os.Bundle +import android.widget.Toast +import kotlinx.android.synthetic.main.activity_signup_entry.* +import mashup.loling.BaseActivity +import mashup.loling.R +import mashup.loling.user.User + +class SignupEntryActivity : BaseActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_signup_entry) + // etSignupEntryId.text + btnSignupEntryNext.setOnClickListener { v -> + if(etSignupEntryPw.text.toString().equals(etSignupEntryPwCheck.text.toString()) != true) { + Toast.makeText(applicationContext, "비밀번호가 일치하지 않습니다.", Toast.LENGTH_SHORT).show() + return@setOnClickListener + } + + if(etSignupEntryId.text.toString().length < 6) { + Toast.makeText(applicationContext, "아이디를 6글자 이상 입력해주세요.", Toast.LENGTH_SHORT).show() + return@setOnClickListener + } + + val intent = Intent(this, SignupPersonalActivity::class.java) + User.id = etSignupEntryId.text.toString() + User.password = etSignupEntryPw.text.toString() + + startActivity(intent) + + } + + } +} diff --git a/app/src/main/java/mashup/loling/user/view/SignupPersonalActivity.kt b/app/src/main/java/mashup/loling/user/view/SignupPersonalActivity.kt new file mode 100644 index 0000000..0ccd607 --- /dev/null +++ b/app/src/main/java/mashup/loling/user/view/SignupPersonalActivity.kt @@ -0,0 +1,78 @@ +package mashup.loling.user.view + +import android.os.Bundle +import kotlinx.android.synthetic.main.activity_signup_personal.* +import mashup.loling.BaseActivity +import mashup.loling.R +import java.util.* +import android.app.DatePickerDialog +import android.content.Intent +import android.view.View +import android.widget.DatePicker +import android.widget.Toast +import io.reactivex.Scheduler +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.CompositeDisposable +import io.reactivex.schedulers.Schedulers +import mashup.loling.user.User +import mashup.loling.user.api.ApiManager +import mashup.loling.user.pojo.BirthDay + + +class SignupPersonalActivity : BaseActivity(), View.OnClickListener, DatePickerDialog.OnDateSetListener { + + var dayOfMonth = 0 + var month = 0 + var year = 0 + val mDisposable = CompositeDisposable() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_signup_personal) + etSignupPersonalBirthDay.setOnClickListener(this) + + btnSignupPersonalNext.setOnClickListener { v -> + var birthDay = BirthDay(year, month, dayOfMonth) + User.birthday = birthDay + + + mDisposable.add(ApiManager.register() + .observeOn(AndroidSchedulers.mainThread()) + .subscribeOn(Schedulers.io()) + .subscribe({ result -> + Toast.makeText(applicationContext, result, Toast.LENGTH_SHORT).show() + val intent = Intent(this, LoginActivityDataBinding::class.java) + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) + startActivity(intent) + }, { exception -> + Toast.makeText(applicationContext, exception.message, Toast.LENGTH_SHORT).show() + })) + } + } + + override fun onClick(v: View?) { + val calendar = Calendar.getInstance(TimeZone.getDefault()) + val dialog = DatePickerDialog(this@SignupPersonalActivity, R.style.PickerTheme, this, + calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), + calendar.get(Calendar.DAY_OF_MONTH)) + dialog.show() + } + + override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) { + this.year = year; + this.month = month; + this.dayOfMonth = dayOfMonth; + updateDisplay(); + } + + private fun updateDisplay() { + + etSignupPersonalBirthDay.setText(StringBuilder() + .append(dayOfMonth).append("/").append(month + 1).append("/").append(year).append(" ")) + } + + override fun onDestroy() { + super.onDestroy() + mDisposable.dispose() + } +} diff --git a/app/src/main/java/mashup/loling/SignupPhotoActivity.kt b/app/src/main/java/mashup/loling/user/view/SignupPhotoActivity.kt similarity index 58% rename from app/src/main/java/mashup/loling/SignupPhotoActivity.kt rename to app/src/main/java/mashup/loling/user/view/SignupPhotoActivity.kt index 3af5391..e20a41b 100644 --- a/app/src/main/java/mashup/loling/SignupPhotoActivity.kt +++ b/app/src/main/java/mashup/loling/user/view/SignupPhotoActivity.kt @@ -1,9 +1,10 @@ -package mashup.loling +package mashup.loling.user.view -import android.support.v7.app.AppCompatActivity import android.os.Bundle +import mashup.loling.BaseActivity +import mashup.loling.R -class SignupPhotoActivity : AppCompatActivity() { +class SignupPhotoActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/res/drawable-hdpi/img_inroom.png b/app/src/main/res/drawable-hdpi/img_inroom.png new file mode 100755 index 0000000..c79a9d1 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/img_inroom.png differ diff --git a/app/src/main/res/drawable-hdpi/img_main.png b/app/src/main/res/drawable-hdpi/img_main.png new file mode 100755 index 0000000..74ffcd6 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/img_main.png differ diff --git a/app/src/main/res/drawable-hdpi/img_newroom.png b/app/src/main/res/drawable-hdpi/img_newroom.png new file mode 100755 index 0000000..04274d9 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/img_newroom.png differ diff --git a/app/src/main/res/drawable-hdpi/img_popup_01.png b/app/src/main/res/drawable-hdpi/img_popup_01.png new file mode 100755 index 0000000..203cbea Binary files /dev/null and b/app/src/main/res/drawable-hdpi/img_popup_01.png differ diff --git a/app/src/main/res/drawable-hdpi/img_popup_02.png b/app/src/main/res/drawable-hdpi/img_popup_02.png new file mode 100755 index 0000000..d1ae3d8 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/img_popup_02.png differ diff --git a/app/src/main/res/drawable-hdpi/img_temp_01.png b/app/src/main/res/drawable-hdpi/img_temp_01.png new file mode 100755 index 0000000..a494029 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/img_temp_01.png differ diff --git a/app/src/main/res/drawable-hdpi/img_temp_02.png b/app/src/main/res/drawable-hdpi/img_temp_02.png new file mode 100755 index 0000000..24739f4 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/img_temp_02.png differ diff --git a/app/src/main/res/drawable-mdpi/img_inroom.png b/app/src/main/res/drawable-mdpi/img_inroom.png new file mode 100755 index 0000000..603b211 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/img_inroom.png differ diff --git a/app/src/main/res/drawable-mdpi/img_main.png b/app/src/main/res/drawable-mdpi/img_main.png new file mode 100755 index 0000000..f3d8ead Binary files /dev/null and b/app/src/main/res/drawable-mdpi/img_main.png differ diff --git a/app/src/main/res/drawable-mdpi/img_newroom.png b/app/src/main/res/drawable-mdpi/img_newroom.png new file mode 100755 index 0000000..fb45615 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/img_newroom.png differ diff --git a/app/src/main/res/drawable-mdpi/img_popup_01.png b/app/src/main/res/drawable-mdpi/img_popup_01.png new file mode 100755 index 0000000..aab6195 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/img_popup_01.png differ diff --git a/app/src/main/res/drawable-mdpi/img_popup_02.png b/app/src/main/res/drawable-mdpi/img_popup_02.png new file mode 100755 index 0000000..a0d655b Binary files /dev/null and b/app/src/main/res/drawable-mdpi/img_popup_02.png differ diff --git a/app/src/main/res/drawable-mdpi/img_temp_01.png b/app/src/main/res/drawable-mdpi/img_temp_01.png new file mode 100755 index 0000000..2afab32 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/img_temp_01.png differ diff --git a/app/src/main/res/drawable-mdpi/img_temp_02.png b/app/src/main/res/drawable-mdpi/img_temp_02.png new file mode 100755 index 0000000..d38475c Binary files /dev/null and b/app/src/main/res/drawable-mdpi/img_temp_02.png differ diff --git a/app/src/main/res/drawable-xhdpi/img_inroom.png b/app/src/main/res/drawable-xhdpi/img_inroom.png new file mode 100755 index 0000000..5951380 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_inroom.png differ diff --git a/app/src/main/res/drawable-xhdpi/img_main.png b/app/src/main/res/drawable-xhdpi/img_main.png new file mode 100755 index 0000000..74e1826 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_main.png differ diff --git a/app/src/main/res/drawable-xhdpi/img_newroom.png b/app/src/main/res/drawable-xhdpi/img_newroom.png new file mode 100755 index 0000000..538edea Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_newroom.png differ diff --git a/app/src/main/res/drawable-xhdpi/img_popup_01.png b/app/src/main/res/drawable-xhdpi/img_popup_01.png new file mode 100755 index 0000000..b7d3d45 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_popup_01.png differ diff --git a/app/src/main/res/drawable-xhdpi/img_popup_02.png b/app/src/main/res/drawable-xhdpi/img_popup_02.png new file mode 100755 index 0000000..dd317c2 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_popup_02.png differ diff --git a/app/src/main/res/drawable-xhdpi/img_temp_01.png b/app/src/main/res/drawable-xhdpi/img_temp_01.png new file mode 100755 index 0000000..e770597 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_temp_01.png differ diff --git a/app/src/main/res/drawable-xhdpi/img_temp_02.png b/app/src/main/res/drawable-xhdpi/img_temp_02.png new file mode 100755 index 0000000..1b56d97 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_temp_02.png differ diff --git a/app/src/main/res/drawable-xxhdpi/circle_fill.xml b/app/src/main/res/drawable-xxhdpi/circle_fill.xml new file mode 100644 index 0000000..aa17d15 --- /dev/null +++ b/app/src/main/res/drawable-xxhdpi/circle_fill.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-xxhdpi/ic_icon_image_layer_dowm.xml b/app/src/main/res/drawable-xxhdpi/ic_icon_image_layer_dowm.xml new file mode 100644 index 0000000..950c108 --- /dev/null +++ b/app/src/main/res/drawable-xxhdpi/ic_icon_image_layer_dowm.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable-xxhdpi/ic_launcher_icon_forground.xml b/app/src/main/res/drawable-xxhdpi/ic_launcher_icon_forground.xml new file mode 100644 index 0000000..57d336c --- /dev/null +++ b/app/src/main/res/drawable-xxhdpi/ic_launcher_icon_forground.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable-xxhdpi/img_inroom.png b/app/src/main/res/drawable-xxhdpi/img_inroom.png new file mode 100755 index 0000000..df30ce2 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_inroom.png differ diff --git a/app/src/main/res/drawable-xxhdpi/img_main.png b/app/src/main/res/drawable-xxhdpi/img_main.png new file mode 100755 index 0000000..0fbbe42 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_main.png differ diff --git a/app/src/main/res/drawable-xxhdpi/img_newroom.png b/app/src/main/res/drawable-xxhdpi/img_newroom.png new file mode 100755 index 0000000..1f33021 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_newroom.png differ diff --git a/app/src/main/res/drawable-xxhdpi/img_popup_01.png b/app/src/main/res/drawable-xxhdpi/img_popup_01.png new file mode 100755 index 0000000..728c6d6 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_popup_01.png differ diff --git a/app/src/main/res/drawable-xxhdpi/img_popup_02.png b/app/src/main/res/drawable-xxhdpi/img_popup_02.png new file mode 100755 index 0000000..32cd36f Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_popup_02.png differ diff --git a/app/src/main/res/drawable-xxhdpi/img_temp_01.png b/app/src/main/res/drawable-xxhdpi/img_temp_01.png new file mode 100755 index 0000000..b7b4054 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_temp_01.png differ diff --git a/app/src/main/res/drawable-xxhdpi/img_temp_02.png b/app/src/main/res/drawable-xxhdpi/img_temp_02.png new file mode 100755 index 0000000..77424e4 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_temp_02.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/img_inroom.png b/app/src/main/res/drawable-xxxhdpi/img_inroom.png new file mode 100755 index 0000000..720c1db Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/img_inroom.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/img_main.png b/app/src/main/res/drawable-xxxhdpi/img_main.png new file mode 100755 index 0000000..e3e3261 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/img_main.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/img_newroom.png b/app/src/main/res/drawable-xxxhdpi/img_newroom.png new file mode 100755 index 0000000..5bb6b2d Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/img_newroom.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/img_popup_01.png b/app/src/main/res/drawable-xxxhdpi/img_popup_01.png new file mode 100755 index 0000000..6b5247a Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/img_popup_01.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/img_popup_02.png b/app/src/main/res/drawable-xxxhdpi/img_popup_02.png new file mode 100755 index 0000000..86bddb1 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/img_popup_02.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/img_temp_01.png b/app/src/main/res/drawable-xxxhdpi/img_temp_01.png new file mode 100755 index 0000000..6eda9cd Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/img_temp_01.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/img_temp_02.png b/app/src/main/res/drawable-xxxhdpi/img_temp_02.png new file mode 100755 index 0000000..94c9905 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/img_temp_02.png differ diff --git a/app/src/main/res/drawable/bottom_left_round10.xml b/app/src/main/res/drawable/bottom_left_round10.xml new file mode 100644 index 0000000..900b3c4 --- /dev/null +++ b/app/src/main/res/drawable/bottom_left_round10.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/app/src/main/res/drawable/bottom_right_round10.xml b/app/src/main/res/drawable/bottom_right_round10.xml new file mode 100644 index 0000000..56510c1 --- /dev/null +++ b/app/src/main/res/drawable/bottom_right_round10.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/app/src/main/res/drawable/bottom_round20.xml b/app/src/main/res/drawable/bottom_round20.xml new file mode 100644 index 0000000..1791eef --- /dev/null +++ b/app/src/main/res/drawable/bottom_round20.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/app/src/main/res/drawable/button_background_color.xml b/app/src/main/res/drawable/button_background_color.xml new file mode 100644 index 0000000..74ced83 --- /dev/null +++ b/app/src/main/res/drawable/button_background_color.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/circle.xml b/app/src/main/res/drawable/circle.xml index 38895ad..9ae9284 100644 --- a/app/src/main/res/drawable/circle.xml +++ b/app/src/main/res/drawable/circle.xml @@ -1,8 +1,8 @@ - + + android:color="#aaaaaa" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/circle_round10_2.xml b/app/src/main/res/drawable/circle_round10_2.xml new file mode 100644 index 0000000..03f9080 --- /dev/null +++ b/app/src/main/res/drawable/circle_round10_2.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/app/src/main/res/drawable/circle_round20.xml b/app/src/main/res/drawable/circle_round20.xml new file mode 100644 index 0000000..1a31faa --- /dev/null +++ b/app/src/main/res/drawable/circle_round20.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/app/src/main/res/drawable/draw_activity_color_selector_bg.xml b/app/src/main/res/drawable/draw_activity_color_selector_bg.xml new file mode 100644 index 0000000..b777348 --- /dev/null +++ b/app/src/main/res/drawable/draw_activity_color_selector_bg.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/drawable-mdpi/logo_main.png b/app/src/main/res/drawable/drawable-mdpi/logo_main.png new file mode 100644 index 0000000..fa48acf Binary files /dev/null and b/app/src/main/res/drawable/drawable-mdpi/logo_main.png differ diff --git a/app/src/main/res/drawable/drawable-xhdpi/logo_main.png b/app/src/main/res/drawable/drawable-xhdpi/logo_main.png new file mode 100644 index 0000000..56d883e Binary files /dev/null and b/app/src/main/res/drawable/drawable-xhdpi/logo_main.png differ diff --git a/app/src/main/res/drawable/drawable-xxhdpi/logo_main.png b/app/src/main/res/drawable/drawable-xxhdpi/logo_main.png new file mode 100644 index 0000000..ab858be Binary files /dev/null and b/app/src/main/res/drawable/drawable-xxhdpi/logo_main.png differ diff --git a/app/src/main/res/drawable/drawable-xxxhdpi/logo_main.png b/app/src/main/res/drawable/drawable-xxxhdpi/logo_main.png new file mode 100644 index 0000000..8f4155c Binary files /dev/null and b/app/src/main/res/drawable/drawable-xxxhdpi/logo_main.png differ diff --git a/app/src/main/res/drawable/ic_add.xml b/app/src/main/res/drawable/ic_add.xml new file mode 100644 index 0000000..0b91901 --- /dev/null +++ b/app/src/main/res/drawable/ic_add.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_chevron_left.xml b/app/src/main/res/drawable/ic_chevron_left.xml deleted file mode 100644 index e6bb3ca..0000000 --- a/app/src/main/res/drawable/ic_chevron_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_close.xml b/app/src/main/res/drawable/ic_close.xml deleted file mode 100644 index 23737c4..0000000 --- a/app/src/main/res/drawable/ic_close.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ic_icon_back.xml b/app/src/main/res/drawable/ic_icon_back.xml new file mode 100644 index 0000000..bd74c92 --- /dev/null +++ b/app/src/main/res/drawable/ic_icon_back.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/main/res/drawable/ic_icon_camera.xml b/app/src/main/res/drawable/ic_icon_camera.xml new file mode 100644 index 0000000..fc92387 --- /dev/null +++ b/app/src/main/res/drawable/ic_icon_camera.xml @@ -0,0 +1,23 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_icon_clear.xml b/app/src/main/res/drawable/ic_icon_clear.xml new file mode 100644 index 0000000..83b7e67 --- /dev/null +++ b/app/src/main/res/drawable/ic_icon_clear.xml @@ -0,0 +1,16 @@ + + + + diff --git a/app/src/main/res/drawable/ic_icon_done.xml b/app/src/main/res/drawable/ic_icon_done.xml new file mode 100644 index 0000000..e7560fc --- /dev/null +++ b/app/src/main/res/drawable/ic_icon_done.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_icon_image_layer_up.xml b/app/src/main/res/drawable/ic_icon_image_layer_up.xml new file mode 100644 index 0000000..c1aad9e --- /dev/null +++ b/app/src/main/res/drawable/ic_icon_image_layer_up.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_icon_link.xml b/app/src/main/res/drawable/ic_icon_link.xml new file mode 100644 index 0000000..b6854c3 --- /dev/null +++ b/app/src/main/res/drawable/ic_icon_link.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_icon_move.xml b/app/src/main/res/drawable/ic_icon_move.xml new file mode 100644 index 0000000..c367406 --- /dev/null +++ b/app/src/main/res/drawable/ic_icon_move.xml @@ -0,0 +1,16 @@ + + + + diff --git a/app/src/main/res/drawable/ic_icon_mypage.xml b/app/src/main/res/drawable/ic_icon_mypage.xml new file mode 100644 index 0000000..a9ca3ce --- /dev/null +++ b/app/src/main/res/drawable/ic_icon_mypage.xml @@ -0,0 +1,16 @@ + + + + diff --git a/app/src/main/res/drawable/ic_icon_search.xml b/app/src/main/res/drawable/ic_icon_search.xml new file mode 100644 index 0000000..6fd3028 --- /dev/null +++ b/app/src/main/res/drawable/ic_icon_search.xml @@ -0,0 +1,16 @@ + + + + diff --git a/app/src/main/res/drawable/ic_icon_setting.xml b/app/src/main/res/drawable/ic_icon_setting.xml new file mode 100644 index 0000000..af12c62 --- /dev/null +++ b/app/src/main/res/drawable/ic_icon_setting.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_icon_text.xml b/app/src/main/res/drawable/ic_icon_text.xml new file mode 100644 index 0000000..df4891a --- /dev/null +++ b/app/src/main/res/drawable/ic_icon_text.xml @@ -0,0 +1,18 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_icon_text_size_down.xml b/app/src/main/res/drawable/ic_icon_text_size_down.xml new file mode 100644 index 0000000..e030765 --- /dev/null +++ b/app/src/main/res/drawable/ic_icon_text_size_down.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_icon_text_size_up.xml b/app/src/main/res/drawable/ic_icon_text_size_up.xml new file mode 100644 index 0000000..335290f --- /dev/null +++ b/app/src/main/res/drawable/ic_icon_text_size_up.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher.xml b/app/src/main/res/drawable/ic_launcher.xml new file mode 100644 index 0000000..65f90d2 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_icon_background.xml b/app/src/main/res/drawable/ic_launcher_icon_background.xml new file mode 100644 index 0000000..de5fa19 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_icon_background.xml @@ -0,0 +1,6 @@ + + + diff --git a/app/src/main/res/drawable/ic_logo.xml b/app/src/main/res/drawable/ic_logo.xml new file mode 100644 index 0000000..11fce64 --- /dev/null +++ b/app/src/main/res/drawable/ic_logo.xml @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_person.xml b/app/src/main/res/drawable/ic_person.xml deleted file mode 100644 index b2cb337..0000000 --- a/app/src/main/res/drawable/ic_person.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml deleted file mode 100644 index ace746c..0000000 --- a/app/src/main/res/drawable/ic_settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/img_inroom.png b/app/src/main/res/drawable/img_inroom.png new file mode 100755 index 0000000..df30ce2 Binary files /dev/null and b/app/src/main/res/drawable/img_inroom.png differ diff --git a/app/src/main/res/drawable/img_main.png b/app/src/main/res/drawable/img_main.png new file mode 100755 index 0000000..0fbbe42 Binary files /dev/null and b/app/src/main/res/drawable/img_main.png differ diff --git a/app/src/main/res/drawable/img_newroom.png b/app/src/main/res/drawable/img_newroom.png new file mode 100755 index 0000000..1f33021 Binary files /dev/null and b/app/src/main/res/drawable/img_newroom.png differ diff --git a/app/src/main/res/drawable/img_popup_01.png b/app/src/main/res/drawable/img_popup_01.png new file mode 100755 index 0000000..728c6d6 Binary files /dev/null and b/app/src/main/res/drawable/img_popup_01.png differ diff --git a/app/src/main/res/drawable/img_popup_02.png b/app/src/main/res/drawable/img_popup_02.png new file mode 100755 index 0000000..32cd36f Binary files /dev/null and b/app/src/main/res/drawable/img_popup_02.png differ diff --git a/app/src/main/res/drawable/img_temp_01.png b/app/src/main/res/drawable/img_temp_01.png new file mode 100755 index 0000000..b7b4054 Binary files /dev/null and b/app/src/main/res/drawable/img_temp_01.png differ diff --git a/app/src/main/res/drawable/img_temp_02.png b/app/src/main/res/drawable/img_temp_02.png new file mode 100755 index 0000000..77424e4 Binary files /dev/null and b/app/src/main/res/drawable/img_temp_02.png differ diff --git a/app/src/main/res/drawable/intro.gif b/app/src/main/res/drawable/intro.gif new file mode 100644 index 0000000..a830e7b Binary files /dev/null and b/app/src/main/res/drawable/intro.gif differ diff --git a/app/src/main/res/drawable/logo_main.png b/app/src/main/res/drawable/logo_main.png new file mode 100644 index 0000000..ab6b1bd Binary files /dev/null and b/app/src/main/res/drawable/logo_main.png differ diff --git a/app/src/main/res/drawable/loling_splash.gif b/app/src/main/res/drawable/loling_splash.gif new file mode 100644 index 0000000..d0cbc9a Binary files /dev/null and b/app/src/main/res/drawable/loling_splash.gif differ diff --git a/app/src/main/res/drawable/textview_bottom_border_black.xml b/app/src/main/res/drawable/textview_bottom_border_black.xml new file mode 100644 index 0000000..a526338 --- /dev/null +++ b/app/src/main/res/drawable/textview_bottom_border_black.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_author_list.xml b/app/src/main/res/layout/activity_author_list.xml index 08ceae3..02f8411 100644 --- a/app/src/main/res/layout/activity_author_list.xml +++ b/app/src/main/res/layout/activity_author_list.xml @@ -4,6 +4,176 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".room.AuthorListActivity"> + android:background="@color/white0" + tools:context=".room.view.AuthorListActivity"> + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_author_list_detail.xml b/app/src/main/res/layout/activity_author_list_detail.xml index dc52933..e262fea 100644 --- a/app/src/main/res/layout/activity_author_list_detail.xml +++ b/app/src/main/res/layout/activity_author_list_detail.xml @@ -4,6 +4,61 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".room.AuthorListDetailActivity"> + android:background="@color/mainLightPink" + tools:context=".room.view.AuthorListDetailActivity"> + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_create_room.xml b/app/src/main/res/layout/activity_create_room.xml new file mode 100644 index 0000000..3a35f77 --- /dev/null +++ b/app/src/main/res/layout/activity_create_room.xml @@ -0,0 +1,29 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_draw_paper.xml b/app/src/main/res/layout/activity_draw_paper.xml index 3f30959..dd55c7e 100644 --- a/app/src/main/res/layout/activity_draw_paper.xml +++ b/app/src/main/res/layout/activity_draw_paper.xml @@ -4,6 +4,223 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".drawpaper.DrawPaperActivity"> + android:background="@color/white0" + android:clipChildren="false" + android:clipToPadding="false" + tools:context=".drawpaper.view.DrawPaperActivity"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_intro.xml b/app/src/main/res/layout/activity_intro.xml new file mode 100644 index 0000000..303d541 --- /dev/null +++ b/app/src/main/res/layout/activity_intro.xml @@ -0,0 +1,30 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_load_image.xml b/app/src/main/res/layout/activity_load_image.xml deleted file mode 100644 index aa785b2..0000000 --- a/app/src/main/res/layout/activity_load_image.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 9e04146..82b311f 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -1,80 +1,113 @@ - + xmlns:tools="http://schemas.android.com/tools"> - - - + android:layout_height="match_parent" + android:background="@color/white0" + android:padding="@dimen/LoginActivityPadding" + tools:context=".user.view.LoginActivityDataBinding"> - + - + - - \ No newline at end of file + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 34d748e..64d2953 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,18 +1,20 @@ - - + tools:context=".main.MainActivity" + android:focusableInTouchMode="true"> @@ -51,7 +53,7 @@ + android:layout_height="@dimen/MainLolingRoomY5" /> + app:layout_constraintTop_toBottomOf="@+id/mainView" /> + - - + + + + diff --git a/app/src/main/res/layout/activity_my_page.xml b/app/src/main/res/layout/activity_my_page.xml index e1eb03f..91165fc 100644 --- a/app/src/main/res/layout/activity_my_page.xml +++ b/app/src/main/res/layout/activity_my_page.xml @@ -1,9 +1,9 @@ + app:srcCompat="@drawable/ic_icon_setting" /> + app:srcCompat="@drawable/ic_icon_clear" /> + app:srcCompat="@drawable/circle_fill" /> - - - - - - - - - + style="@style/TabLayoutStyle"/> @@ -67,12 +66,11 @@ @@ -98,12 +96,11 @@ diff --git a/app/src/main/res/layout/activity_paper_noti.xml b/app/src/main/res/layout/activity_paper_noti.xml new file mode 100644 index 0000000..9847bd5 --- /dev/null +++ b/app/src/main/res/layout/activity_paper_noti.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_recive_paper_list.xml b/app/src/main/res/layout/activity_recive_paper_list.xml new file mode 100644 index 0000000..e049aff --- /dev/null +++ b/app/src/main/res/layout/activity_recive_paper_list.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_select_friend.xml b/app/src/main/res/layout/activity_select_friend.xml index 41012c2..c08488d 100644 --- a/app/src/main/res/layout/activity_select_friend.xml +++ b/app/src/main/res/layout/activity_select_friend.xml @@ -1,48 +1,71 @@ - - - + tools:context=".room.view.SelectFriendActivity"> - + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/appBarLayout"> + + + - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_select_target.xml b/app/src/main/res/layout/activity_select_target.xml deleted file mode 100644 index 46572ad..0000000 --- a/app/src/main/res/layout/activity_select_target.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/app/src/main/res/layout/activity_signup_entry.xml b/app/src/main/res/layout/activity_signup_entry.xml index 4f10e81..4d99d1b 100644 --- a/app/src/main/res/layout/activity_signup_entry.xml +++ b/app/src/main/res/layout/activity_signup_entry.xml @@ -4,9 +4,9 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:padding="@dimen/SignupEntryActivityPadding" - tools:context=".SignupEntryActivity"> - + android:background="@color/white0" + android:padding="@dimen/SignupPersonalActivityPadding" + tools:context=".user.view.SignupPersonalActivity"> - + app:layout_constraintTop_toBottomOf="@+id/tvSignupEntryMsg" > + + - + app:layout_constraintTop_toBottomOf="@+id/etSignupEntryIdSurface" > + + - + app:layout_constraintTop_toBottomOf="@+id/etSignupEntryPwSurface" > + + - + app:layout_constraintStart_toStartOf="parent" /> diff --git a/app/src/main/res/layout/activity_signup_personal.xml b/app/src/main/res/layout/activity_signup_personal.xml index ba99ecb..ae1c172 100644 --- a/app/src/main/res/layout/activity_signup_personal.xml +++ b/app/src/main/res/layout/activity_signup_personal.xml @@ -4,8 +4,9 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@color/white0" android:padding="@dimen/SignupPersonalActivityPadding" - tools:context=".SignupPersonalActivity"> + tools:context=".user.view.SignupPersonalActivity"> - + app:layout_constraintTop_toBottomOf="@+id/tvSignupPersonalMsg" + > + + + - + app:layout_constraintTop_toBottomOf="@+id/etSignupPersonalNameSurface" + > + + + - + app:layout_constraintTop_toBottomOf="@+id/etSignupPersonalBirthDaySurface" > - + + +