diff --git a/app/.idea/.gitignore b/app/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/app/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/app/.idea/gradle.xml b/app/.idea/gradle.xml new file mode 100644 index 0000000..0cb0e08 --- /dev/null +++ b/app/.idea/gradle.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/app/.idea/misc.xml b/app/.idea/misc.xml new file mode 100644 index 0000000..f845854 --- /dev/null +++ b/app/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/.idea/modules.xml b/app/.idea/modules.xml new file mode 100644 index 0000000..e1f9e1c --- /dev/null +++ b/app/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/.idea/vcs.xml b/app/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/app/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c94b2e8..88ce5d4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,6 +31,13 @@ android { kotlinOptions { jvmTarget = '1.8' } + + + buildFeatures { + + viewBinding true + + } } dependencies { diff --git a/app/local.properties b/app/local.properties new file mode 100644 index 0000000..62eb5ae --- /dev/null +++ b/app/local.properties @@ -0,0 +1,8 @@ +## This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Fri May 28 20:01:59 MSK 2021 +sdk.dir=C\:\\Users\\Natalya\\AppData\\Local\\Android\\Sdk diff --git a/app/src/main/java/ru/mail/fancywork/controller/Controller.kt b/app/src/main/java/ru/mail/fancywork/controller/Controller.kt index b4717c5..b1348a7 100644 --- a/app/src/main/java/ru/mail/fancywork/controller/Controller.kt +++ b/app/src/main/java/ru/mail/fancywork/controller/Controller.kt @@ -19,5 +19,9 @@ class Controller( return auth.getAuthIntent() } + fun logOut() { + auth.logOut(); + } + fun isAuthorized(): Boolean = auth.isAuthorized() } diff --git a/app/src/main/java/ru/mail/fancywork/model/fancyLib/Difficulty.kt b/app/src/main/java/ru/mail/fancywork/model/fancyLib/Difficulty.kt new file mode 100644 index 0000000..3fa392d --- /dev/null +++ b/app/src/main/java/ru/mail/fancywork/model/fancyLib/Difficulty.kt @@ -0,0 +1,5 @@ +package ru.mail.fancywork.model.fancyLib + +enum class Difficulty { + UNDEFINED, EASY, MEDIUM, HARD, EXTREMELY_HARD +} \ No newline at end of file diff --git a/app/src/main/java/ru/mail/fancywork/model/fancyLib/FancyPicture.kt b/app/src/main/java/ru/mail/fancywork/model/fancyLib/FancyPicture.kt new file mode 100644 index 0000000..cae1c7b --- /dev/null +++ b/app/src/main/java/ru/mail/fancywork/model/fancyLib/FancyPicture.kt @@ -0,0 +1,36 @@ +package ru.mail.fancywork.model.fancyLib + +import android.graphics.Bitmap + +data class FancyPicture( + val id: String, + val title: String, + val image: Bitmap, + val colors: List> +) { + // todo id generator + // todo difficulty definer + + var author: String = "unknown" + var difficulty: Difficulty = Difficulty.UNDEFINED + + constructor( + id: String, + title: String, + image: Bitmap, + colors: List>, + author: String, + difficulty: Difficulty + ) : this(id, title, image, colors) { + this.author = author + this.difficulty = difficulty + } + + fun getProportions(): Pair? { + if (colors.isEmpty() || colors[0].isEmpty()) { + return null + } + + return Pair(colors.size, colors[0].size) + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/mail/fancywork/model/repo/AuthRepository.kt b/app/src/main/java/ru/mail/fancywork/model/repo/AuthRepository.kt index ca0190e..4f2b5aa 100644 --- a/app/src/main/java/ru/mail/fancywork/model/repo/AuthRepository.kt +++ b/app/src/main/java/ru/mail/fancywork/model/repo/AuthRepository.kt @@ -23,6 +23,10 @@ class AuthRepository(private val auth: FirebaseAuth = FirebaseAuth.getInstance() return FirebaseAuth.getInstance().currentUser != null } + fun logOut() { + FirebaseAuth.getInstance().signOut() + } + companion object { private const val TAG = "FirebaseRepository" } diff --git a/app/src/main/java/ru/mail/fancywork/ui/primary/MainActivity.kt b/app/src/main/java/ru/mail/fancywork/ui/primary/MainActivity.kt index d4fd77a..e0e5e22 100644 --- a/app/src/main/java/ru/mail/fancywork/ui/primary/MainActivity.kt +++ b/app/src/main/java/ru/mail/fancywork/ui/primary/MainActivity.kt @@ -1,24 +1,49 @@ package ru.mail.fancywork.ui.primary +import android.content.Intent import android.os.Bundle +import android.view.LayoutInflater import android.view.View import androidx.appcompat.app.AppCompatActivity +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import ru.mail.fancywork.R +import ru.mail.fancywork.controller.Controller +import ru.mail.fancywork.ui.auth.AuthActivity class MainActivity : AppCompatActivity() { + private val controller = Controller() + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) - } - // todo google auth - public fun loginGoogle(view: View) { - // БОРЕМСЯ С КОДСТАЙЛОМ + findViewById(R.id.top_bar) + .setOnMenuItemClickListener { item -> + when (item.itemId) { + R.id.logout -> { + controller.logOut() + startActivity(Intent(this, AuthActivity::class.java)) + finish() + true + } + else -> false + } + } + + var worksList: RecyclerView = findViewById(R.id.rv_works) + var ar: ArrayList = ArrayList() + ar.add(6) + ar.add(5) + ar.add(4) + var adapter = WorksListAdapter(ar) + + worksList.adapter = adapter + worksList.layoutManager = LinearLayoutManager(this.applicationContext) } - // todo local auth - public fun loginWithoutGoogle(view: View) { - // todo open recycle view activity + public fun add(view:View){ + //todo открыть активити просмотра вышивки } -} +} \ No newline at end of file diff --git a/app/src/main/java/ru/mail/fancywork/ui/primary/WorksListAdapter.kt b/app/src/main/java/ru/mail/fancywork/ui/primary/WorksListAdapter.kt new file mode 100644 index 0000000..d23644e --- /dev/null +++ b/app/src/main/java/ru/mail/fancywork/ui/primary/WorksListAdapter.kt @@ -0,0 +1,41 @@ +package ru.mail.fancywork.ui.primary + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import ru.mail.fancywork.databinding.WorkItemInRvBinding + +class WorksListAdapter( + private var worksList: List//dataclasses +) : RecyclerView.Adapter() { + + inner class ViewHolder(val binding: WorkItemInRvBinding) : RecyclerView.ViewHolder(binding.root) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val binding = + WorkItemInRvBinding.inflate(LayoutInflater.from(parent.context), parent, false) + return ViewHolder(binding) + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + + with(holder) { + with(worksList[position]) { + binding.name.text = "ВЫЩЩЩИВКА" + binding.difficulty.rating = 4F + var str = "размер: " + worksList[position] + "x" + worksList[position] + "\nцветов: 5" + + binding.info.text = str + +// binding.cardLayout.setOnClickListener { +// //todo открываем активити просмотра +// notifyDataSetChanged() +// } + } + } + } + + override fun getItemCount(): Int { + return worksList.size + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/items_in_rv.xml b/app/src/main/res/drawable/items_in_rv.xml new file mode 100644 index 0000000..7f83013 --- /dev/null +++ b/app/src/main/res/drawable/items_in_rv.xml @@ -0,0 +1,19 @@ + + + + + + + + + + \ 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 7a2b8e6..c5c1adf 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -7,82 +7,48 @@ tools:context="ru.mail.fancywork.ui.primary.MainActivity" android:theme="@style/Theme.FancyWork"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/work_item_in_rv.xml b/app/src/main/res/layout/work_item_in_rv.xml new file mode 100644 index 0000000..922038d --- /dev/null +++ b/app/src/main/res/layout/work_item_in_rv.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/top_main_actionbar.xml b/app/src/main/res/menu/top_main_actionbar.xml new file mode 100644 index 0000000..66985b6 --- /dev/null +++ b/app/src/main/res/menu/top_main_actionbar.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index 1eb2481..3b49998 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -13,4 +13,13 @@ ?attr/colorPrimaryVariant + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b9a813f..fc7c952 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,4 +6,5 @@ Загрузить картинку войти без Google аккаунта войти через Google аккаунт + размер: %dх%d\nцветов: %d \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 1eb2481..3b49998 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -13,4 +13,13 @@ ?attr/colorPrimaryVariant + + + + \ No newline at end of file