diff --git a/app/build.gradle b/app/build.gradle
index c70e914..60b4f84 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -45,6 +45,10 @@
}
}
+kapt {
+ generateStubs = true
+}
+
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
@@ -85,7 +89,8 @@
// Kotlin DataBinding
kapt "com.android.databinding:compiler:2.5.0-alpha-preview-02"
- // Kuromoji
- compile "com.atilika.kuromoji:kuromoji-ipadic:0.9.0"
+ // CalenderView
+ compile 'com.github.sundeepk:compact-calendar-view:2.0.2.1'
+ compile 'com.prolificinteractive:material-calendarview:1.4.3'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d99f369..453d3f0 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,20 +8,22 @@
android:name=".App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
- android:label="@string/app_name"
+ android:label="LoRie"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
-
+
+
+
+
-
\ No newline at end of file
diff --git a/app/src/main/assets/cookie.ttf b/app/src/main/assets/cookie.ttf
new file mode 100755
index 0000000..59d62df
--- /dev/null
+++ b/app/src/main/assets/cookie.ttf
Binary files differ
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/Constant.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/Constant.kt
new file mode 100644
index 0000000..8cfcdf4
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/Constant.kt
@@ -0,0 +1,9 @@
+package org.ntlab.leftoverrecipe
+
+/**
+ * Created by matsumoto_k on 2017/07/09.
+ */
+class Constant {
+ companion object {
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/Mapping.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/Mapping.kt
new file mode 100644
index 0000000..a650b07
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/Mapping.kt
@@ -0,0 +1,17 @@
+package org.ntlab.leftoverrecipe
+
+/**
+ * Created by matsumoto_k on 2017/07/09.
+ */
+class Mapping {
+ companion object {
+ fun getRecipeTimeZone(num: Int): String {
+ when (num) {
+ 0 -> return "朝"
+ 1 -> return "昼"
+ 2 -> return "晩"
+ }
+ return ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/DetailDialyActivity.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/DetailDialyActivity.kt
new file mode 100644
index 0000000..5a3bc69
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/DetailDialyActivity.kt
@@ -0,0 +1,47 @@
+package org.ntlab.leftoverrecipe.activity
+
+import android.os.Bundle
+import android.support.v7.app.AppCompatActivity
+import kotlinx.android.synthetic.main.activity_dialy_detail.*
+import org.ntlab.leftoverrecipe.Mapping
+import org.ntlab.leftoverrecipe.R
+import org.ntlab.leftoverrecipe.model.db.RecipeDataRealm
+import org.ntlab.leftoverrecipe.util.BitmapUtil
+import java.text.SimpleDateFormat
+import java.util.*
+
+/**
+ * Created by matsumoto_k on 2017/07/10.
+ */
+class DetailDialyActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_dialy_detail)
+
+ val long = intent.getLongExtra("date", 0)
+ val cal = Calendar.getInstance()
+ cal.timeInMillis = long
+
+ val recipeData = RecipeDataRealm.findWithDate(cal.time)
+
+ val sdf = SimpleDateFormat("yyyy-MM-dd")
+ if (recipeData.image != null) {
+ detailDialyImageView.setImageBitmap(BitmapUtil.createBitmap(recipeData.image!!))
+ } else {
+ detailDialyImageView.setImageResource(R.drawable.nonimage)
+ }
+ detailDialyRecipeName.text = recipeData.recipeName
+ detailDialyComment.text = recipeData.comment
+
+ supportActionBar?.setDisplayHomeAsUpEnabled(true)
+ supportActionBar?.setDisplayShowHomeEnabled(true)
+ supportActionBar?.title = "${sdf.format(recipeData.date.time).toString()} : ${Mapping.getRecipeTimeZone(recipeData.makeTimeZone)}ご飯"
+
+ }
+
+ override fun onSupportNavigateUp(): Boolean {
+ overridePendingTransition(0, 0);
+ finish()
+ return super.onSupportNavigateUp()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/DetailRecipeActivity.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/DetailRecipeActivity.kt
index 05abda1..f890106 100644
--- a/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/DetailRecipeActivity.kt
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/DetailRecipeActivity.kt
@@ -2,7 +2,7 @@
import android.databinding.DataBindingUtil
import android.os.Bundle
-import android.support.v4.app.FragmentActivity
+import android.support.v7.app.AppCompatActivity
import com.bumptech.glide.Glide
import kotlinx.android.synthetic.main.activity_detail_recipe.*
import org.ntlab.leftoverrecipe.R
@@ -10,7 +10,7 @@
import org.ntlab.leftoverrecipe.databinding.ActivityDetailRecipeBinding
import org.ntlab.leftoverrecipe.viewmodel.DetailRecipeViewModel
-class DetailRecipeActivity : FragmentActivity() {
+class DetailRecipeActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -25,5 +25,15 @@
Glide.with(this).load("").into(hogeImage)
+
+ supportActionBar?.setDisplayHomeAsUpEnabled(true)
+ supportActionBar?.setDisplayShowHomeEnabled(true)
+ supportActionBar?.title = ""
+ }
+
+ override fun onSupportNavigateUp(): Boolean {
+ finish()
+ overridePendingTransition(0, 0);
+ return super.onSupportNavigateUp()
}
}
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/DialyActivity.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/DialyActivity.kt
index 4cf3f59..8bc7058 100644
--- a/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/DialyActivity.kt
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/DialyActivity.kt
@@ -1,18 +1,31 @@
package org.ntlab.leftoverrecipe.activity
-import android.app.Activity
+import android.content.Intent
import android.databinding.DataBindingUtil
+import android.graphics.Color
import android.os.Bundle
+import android.support.v7.app.AppCompatActivity
+import android.support.v7.widget.GridLayoutManager
+import com.prolificinteractive.materialcalendarview.CalendarDay
+import kotlinx.android.synthetic.main.activity_dialy.*
import org.ntlab.leftoverrecipe.R
+import org.ntlab.leftoverrecipe.adapter.GridListAdapter
+import org.ntlab.leftoverrecipe.contract.MenuViewContract
import org.ntlab.leftoverrecipe.databinding.ActivityDialyBinding
+import org.ntlab.leftoverrecipe.model.db.RecipeData
+import org.ntlab.leftoverrecipe.model.db.RecipeDataRealm
+import org.ntlab.leftoverrecipe.util.decorators.EventDecorator
import org.ntlab.leftoverrecipe.viewmodel.DialyViewModel
+import java.util.*
+
/**
* Created by matsumoto_k on 2017/07/09.
*/
-class DialyActivity : Activity() {
+class DialyActivity : AppCompatActivity(), MenuViewContract {
var viewModel: DialyViewModel? = null
+ var adapter: GridListAdapter? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -20,5 +33,50 @@
val binding = DataBindingUtil.setContentView(this, R.layout.activity_dialy)
viewModel = DialyViewModel(this)
binding.viewModel = viewModel
+
+ val hoge = RecipeDataRealm.findAll()
+ val list: ArrayList = ArrayList()
+ for (data in hoge) {
+ val day = CalendarDay.from(data.date)
+ list.add(day)
+ }
+
+ dialyCalendar.addDecorator(EventDecorator(Color.RED, list))
+
+ dialyCalendar.setOnDateChangedListener { materialCalendarView, calendarDay, b ->
+ val hoge = RecipeDataRealm.findBetween(calendarDay.date.time)
+
+ adapter?.setItemAndRefresh(hoge)
+ }
+
+ dialyCalendar.setHeaderTextAppearance(R.style.TextAppearance_AppCompat_Large);
+ dialyCalendar.setDateTextAppearance(R.style.TextAppearance_AppCompat_Medium);
+ dialyCalendar.setWeekDayTextAppearance(R.style.TextAppearance_AppCompat_Medium);
+
+ dialyRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ adapter = GridListAdapter(this, this as MenuViewContract)
+ dialyRecyclerView.adapter = adapter
+
+ supportActionBar?.setDisplayHomeAsUpEnabled(true)
+ supportActionBar?.title = ""
+
+ }
+
+ override fun onSupportNavigateUp(): Boolean {
+ overridePendingTransition(0, 0);
+ finish()
+ return super.onSupportNavigateUp()
+ }
+
+ override fun startSearchActivity() {
+ }
+
+ override fun startCalendarActivity() {
+ }
+
+ override fun startDetailActivity(recipeData: RecipeData) {
+ val intent = Intent(this, DetailDialyActivity::class.java)
+ intent.putExtra("date", recipeData.date.time)
+ startActivity(intent)
}
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/MenuActivity.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/MenuActivity.kt
index d02560a..2503705 100644
--- a/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/MenuActivity.kt
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/MenuActivity.kt
@@ -3,10 +3,17 @@
import android.app.Activity
import android.content.Intent
import android.databinding.DataBindingUtil
+import android.graphics.Color
import android.os.Bundle
+import android.support.v7.widget.GridLayoutManager
+import android.view.MenuItem
+import kotlinx.android.synthetic.main.activity_menu.*
import org.ntlab.leftoverrecipe.R
+import org.ntlab.leftoverrecipe.adapter.GridListAdapter
import org.ntlab.leftoverrecipe.contract.MenuViewContract
import org.ntlab.leftoverrecipe.databinding.ActivityMenuBinding
+import org.ntlab.leftoverrecipe.model.db.RecipeData
+import org.ntlab.leftoverrecipe.model.db.RecipeDataRealm
import org.ntlab.leftoverrecipe.viewmodel.MenuViewModel
/**
@@ -15,22 +22,57 @@
class MenuActivity : Activity(), MenuViewContract {
var viewModel: MenuViewModel? = null
+ var adapter: GridListAdapter? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = DataBindingUtil.setContentView(this, R.layout.activity_menu)
- viewModel = MenuViewModel(this, this as MenuViewContract)
+ setUpViews()
+ viewModel = MenuViewModel(this, this as MenuViewContract, adapter!!)
binding.viewModel = viewModel
+
+ if (RecipeDataRealm.dayCount() == 0) {
+ println("dummyDataCreate")
+ RecipeDataRealm.insertDummy(this)
+ }
+
+ customToolbar.inflateMenu(R.menu.menu_main)
+ customToolbar.title = "LoRie"
+ customToolbar.setTitleTextColor(Color.WHITE)
+
+ customToolbar.setOnMenuItemClickListener(
+ object : android.support.v7.widget.Toolbar.OnMenuItemClickListener {
+ override fun onMenuItemClick(item: MenuItem?): Boolean {
+ val intent = Intent(this@MenuActivity, DialyActivity::class.java)
+ startActivity(intent)
+ overridePendingTransition(0, 0);
+ return false
+ }
+ }
+ )
+ }
+
+ fun setUpViews() {
+ menuRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ adapter = GridListAdapter(this, this as MenuViewContract)
+ menuRecyclerView.adapter = adapter
}
override fun startSearchActivity() {
val intent = Intent(this@MenuActivity, SearchActivity::class.java)
startActivity(intent)
+ overridePendingTransition(0, 0);
}
- override fun startDialyActivity() {
- val intent = Intent(this@MenuActivity, DialyActivity::class.java)
+ override fun startCalendarActivity() {
+
+ }
+
+ override fun startDetailActivity(recipeData: RecipeData) {
+ val intent = Intent(this@MenuActivity, DetailDialyActivity::class.java)
+ intent.putExtra("date", recipeData.date.time)
startActivity(intent)
+ overridePendingTransition(0, 0);
}
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/SearchActivity.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/SearchActivity.kt
index d090827..3f36182 100644
--- a/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/SearchActivity.kt
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/SearchActivity.kt
@@ -1,10 +1,11 @@
package org.ntlab.leftoverrecipe.activity
-import android.app.Activity
import android.content.Intent
import android.databinding.DataBindingUtil
import android.os.Bundle
+import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.LinearLayoutManager
+import android.view.View
import kotlinx.android.synthetic.main.activity_search.*
import org.ntlab.leftoverrecipe.R
import org.ntlab.leftoverrecipe.adapter.SearchListAdapter
@@ -13,19 +14,29 @@
import org.ntlab.leftoverrecipe.databinding.ActivitySearchBinding
import org.ntlab.leftoverrecipe.viewmodel.SearchViewModel
-class SearchActivity : Activity(), SearchListViewContract {
+class SearchActivity : AppCompatActivity(), SearchListViewContract {
var adapter: SearchListAdapter? = null
+ var viewModel: SearchViewModel? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_search)
val binding = DataBindingUtil.setContentView(this, R.layout.activity_search)
- val viewModel = SearchViewModel(this, this as SearchListViewContract)
+ viewModel = SearchViewModel(this, this as SearchListViewContract)
binding.viewModel = viewModel
setupViews()
+
+ supportActionBar?.setDisplayHomeAsUpEnabled(true)
+ supportActionBar?.title = ""
+ }
+
+ override fun onSupportNavigateUp(): Boolean {
+ finish()
+ overridePendingTransition(0, 0);
+ return super.onNavigateUp()
}
fun setupViews() {
@@ -34,6 +45,10 @@
searchListView.adapter = adapter
}
+ override fun onPostResume() {
+ super.onPostResume()
+ }
+
override fun showRecipe(response: RecipeApiResponse) {
adapter?.setItemAndRefresh(response.result!!)
}
@@ -43,5 +58,6 @@
val intent = Intent(this@SearchActivity, DetailRecipeActivity::class.java)
intent.putExtra("recipeData", recipeData)
startActivity(intent)
+ overridePendingTransition(0, 0);
}
}
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/SplashActivity.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/SplashActivity.kt
new file mode 100644
index 0000000..ca97ef2
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/SplashActivity.kt
@@ -0,0 +1,46 @@
+package org.ntlab.leftoverrecipe.activity
+
+import android.app.Activity
+import android.content.Intent
+import android.graphics.Typeface
+import android.os.Bundle
+import android.view.View
+import android.view.animation.AnimationUtils
+import kotlinx.android.synthetic.main.splasy_activity.*
+import org.ntlab.leftoverrecipe.R
+
+/**
+ * Created by matsumoto_k on 2017/07/10.
+ */
+class SplashActivity : Activity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.splasy_activity)
+
+ Thread(object : Runnable {
+ override fun run() {
+ try {
+ Thread.sleep(1000)
+ } catch (e: Exception) {
+
+ }
+ runOnUiThread {
+ splashTitleLogo.setTypeface(Typeface.createFromAsset(assets, "cookie.ttf"))
+ splashTitleLogo.visibility = View.VISIBLE
+ splashTitleLogo.startAnimation(AnimationUtils.loadAnimation(this@SplashActivity, R.anim.splash))
+ }
+
+ try {
+ Thread.sleep(1500)
+ } catch (e: Exception) {
+
+ }
+
+ val intent = Intent(this@SplashActivity,MenuActivity::class.java)
+ startActivity(intent)
+ finish()
+ }
+ }).start()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/adapter/DialyListAdapter.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/adapter/DialyListAdapter.kt
new file mode 100644
index 0000000..ee7b113
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/adapter/DialyListAdapter.kt
@@ -0,0 +1,61 @@
+package org.ntlab.leftoverrecipe.adapter
+
+import android.app.Activity
+import android.databinding.DataBindingUtil
+import android.support.v7.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import kotlinx.android.synthetic.main.search_list_item.view.*
+import org.ntlab.leftoverrecipe.R
+import org.ntlab.leftoverrecipe.databinding.DialyListItemBinding
+import org.ntlab.leftoverrecipe.model.db.RecipeData
+import org.ntlab.leftoverrecipe.viewmodel.DialyListItemViewModel
+
+/**
+ * Created by matsumoto_k on 2017/07/09.
+ */
+class DialyListAdapter(var context: Activity/*, var view: SearchListViewContract*/) : RecyclerView.Adapter() {
+
+ var items: ArrayList? = null
+
+ inner class ViewHolder(itemView: View, viewModel: DialyListItemViewModel) : RecyclerView.ViewHolder(itemView) {
+ var viewModel: DialyListItemViewModel? = null
+ var imageVieww = itemView?.rootView?.listImageView
+
+ init {
+ this.viewModel = viewModel
+ }
+
+ fun loadItem(item: RecipeData) {
+ viewModel?.loadItem(item)
+ }
+ }
+
+ fun setItemAndRefresh(items: ArrayList) {
+ this.items = items
+ notifyDataSetChanged()
+ }
+
+ fun getItemAt(position: Int): RecipeData? {
+ return items?.get(position)
+ }
+
+ override fun onBindViewHolder(holder: ViewHolder?, position: Int) {
+ val item = getItemAt(position)
+ holder?.loadItem(item!!)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder {
+ val binding = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.dialy_list_item, parent, false)
+ binding.viewModel = DialyListItemViewModel(context)
+ return ViewHolder(binding.root, binding.viewModel!!)
+ }
+
+ override fun getItemCount(): Int {
+ if (items == null) {
+ return 0
+ }
+ return items?.size!!
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/adapter/GridListAdapter.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/adapter/GridListAdapter.kt
new file mode 100644
index 0000000..89b71c7
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/adapter/GridListAdapter.kt
@@ -0,0 +1,69 @@
+package org.ntlab.leftoverrecipe.adapter
+
+import android.app.Activity
+import android.databinding.DataBindingUtil
+import android.support.v7.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import org.ntlab.leftoverrecipe.R
+import org.ntlab.leftoverrecipe.contract.MenuViewContract
+import org.ntlab.leftoverrecipe.databinding.MenuListItemBinding
+import org.ntlab.leftoverrecipe.model.db.RecipeData
+import org.ntlab.leftoverrecipe.util.BitmapUtil
+import org.ntlab.leftoverrecipe.viewmodel.MenuListItemViewModel
+
+/**
+ * Created by matsumoto_k on 2017/07/10.
+ */
+class GridListAdapter(var context: Activity, var view: MenuViewContract?) : RecyclerView.Adapter() {
+
+ var items: ArrayList? = null
+
+ inner class ViewHolder(itemView: View, viewModel: MenuListItemViewModel) : RecyclerView.ViewHolder(itemView) {
+ var viewModel: MenuListItemViewModel? = null
+ var imageView: ImageView? = null
+
+ init {
+ this.viewModel = viewModel
+ imageView = itemView.findViewById(R.id.listRecipeImage) as ImageView
+ }
+
+ fun loadItem(item: RecipeData) {
+ if (item.image != null) {
+ imageView?.setImageBitmap(BitmapUtil.createBitmap(item.image!!))
+ }else{
+ imageView?.setImageResource(R.drawable.list_no_image)
+ }
+ viewModel?.loadItem(item)
+ }
+ }
+
+ fun setItemAndRefresh(items: ArrayList) {
+ this.items = items
+ notifyDataSetChanged()
+ }
+
+ fun getItemAt(position: Int): RecipeData? {
+ return items?.get(position)
+ }
+
+ override fun onBindViewHolder(holder: ViewHolder?, position: Int) {
+ val item = getItemAt(position)
+ holder?.loadItem(item!!)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder {
+ val binding = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.menu_list_item, parent, false)
+ binding.viewModel = MenuListItemViewModel(context, view)
+ return ViewHolder(binding.root, binding.viewModel!!)
+ }
+
+ override fun getItemCount(): Int {
+ if (items == null) {
+ return 0
+ }
+ return items?.size!!
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/adapter/SearchListAdapter.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/adapter/SearchListAdapter.kt
index 78c5414..12b8002 100644
--- a/app/src/main/kotlin/org/ntlab/leftoverrecipe/adapter/SearchListAdapter.kt
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/adapter/SearchListAdapter.kt
@@ -34,7 +34,6 @@
}
fun setItemAndRefresh(items: ArrayList) {
- println("きたよ")
this.items = items
notifyDataSetChanged()
}
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/contract/MenuViewContract.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/contract/MenuViewContract.kt
index cd70da5..0539cc3 100644
--- a/app/src/main/kotlin/org/ntlab/leftoverrecipe/contract/MenuViewContract.kt
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/contract/MenuViewContract.kt
@@ -1,10 +1,13 @@
package org.ntlab.leftoverrecipe.contract
+import org.ntlab.leftoverrecipe.model.db.RecipeData
+
/**
* Created by matsumoto_k on 2017/07/09.
*/
interface MenuViewContract {
fun startSearchActivity()
- fun startDialyActivity()
+ fun startCalendarActivity()
+ fun startDetailActivity(recipeData: RecipeData)
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/fragment/RegistDialogFragment.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/fragment/RegistDialogFragment.kt
index 7028bf0..a91b0a8 100644
--- a/app/src/main/kotlin/org/ntlab/leftoverrecipe/fragment/RegistDialogFragment.kt
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/fragment/RegistDialogFragment.kt
@@ -20,9 +20,10 @@
/**
* Created by matsumoto_k on 2017/05/20.
*/
-class RegistDialogFragment(var recipeData: RecipeApiResponse.RecipeData) : DialogFragment(), RegistDialogViewContract {
+class RegistDialogFragment(var recipeData: RecipeApiResponse.RecipeData?) : DialogFragment(), RegistDialogViewContract {
var bitmap: Bitmap? = null
+ var viewModel: RegistDialogViewModel? = null
companion object {
val RESULT_CAMERA = 1
@@ -34,7 +35,8 @@
val binding = DataBindingUtil.inflate(LayoutInflater.from(dialog.context), R.layout.fragment_regist_dialog, null, false)
dialog.setContentView(binding.root)
dialog.window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT)
- val viewModel = RegistDialogViewModel(activity, dialog, recipeData, this as RegistDialogViewContract)
+ this.viewModel = RegistDialogViewModel(activity, dialog, recipeData, this as RegistDialogViewContract)
+ val viewModel = this.viewModel
binding.viewModel = viewModel
return dialog
}
@@ -57,7 +59,7 @@
imageView.visibility = View.VISIBLE
this.bitmap = bitmap
- imageView.setImageBitmap(bitmap)
+ this.viewModel?.bitmap = bitmap
}
}
}
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RecipeData.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RecipeData.kt
index 40a4834..677ec02 100644
--- a/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RecipeData.kt
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RecipeData.kt
@@ -1,6 +1,7 @@
package org.ntlab.leftoverrecipe.model.db
import io.realm.RealmObject
+import java.io.Serializable
import java.util.*
/**
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RecipeDataRealm.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RecipeDataRealm.kt
index b188b81..97d1833 100644
--- a/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RecipeDataRealm.kt
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RecipeDataRealm.kt
@@ -1,6 +1,12 @@
package org.ntlab.leftoverrecipe.model.db
+import android.app.Activity
import io.realm.Realm
+import io.realm.Sort
+import java.text.SimpleDateFormat
+import java.util.*
+import kotlin.collections.ArrayList
+import kotlin.collections.HashMap
/**
* Created by matsumoto_k on 2017/07/06.
@@ -17,4 +23,82 @@
}
}
}
+
+ fun insertDummy(activity: Activity) {
+
+
+ Thread(object : Runnable {
+ override fun run() {
+ mRealm = Realm.getInstance(config)
+ mRealm.use {
+ realm ->
+ realm?.executeTransaction {
+ val dateStart = Calendar.getInstance()
+ dateStart.set(2017, 5, 1)
+
+ // 終了日
+ val dateEnd = Calendar.getInstance()
+
+ // 期間日数
+ val dateDiff = (dateEnd.timeInMillis - dateStart.timeInMillis) / (1000 * 60 * 60 * 24)
+ for (i in 0..30) {
+ try {
+ Thread.sleep(1000)
+ } catch (e: Exception) {
+
+ }
+ // ランダムな年月日の生成
+ val dateRandom = Calendar.getInstance()
+ dateRandom.add(Calendar.DATE, -Random().nextInt(dateDiff.toInt()))
+ val dummyData = RecipeData()
+ dummyData.date = dateRandom.time
+ dummyData.makeTimeZone = Random().nextInt(3)
+ dummyData.comment = "コメント(${i})"
+ dummyData.recipeName = "料理名(${i})"
+ realm.copyToRealm(dummyData)
+ }
+ }
+ }
+ // realm.copyToRealm(recipeData)
+ }
+ }).start()
+ }
+
+ fun findAll(): ArrayList {
+ mRealm = Realm.getInstance(config)
+ val results = ArrayList(mRealm?.where(RecipeData::class.java)?.findAll()?.sort("date", Sort.DESCENDING))
+ return results
+ }
+
+ fun findBetween(startTime: Long): ArrayList {
+ mRealm = Realm.getInstance(config)
+ val startDate = Calendar.getInstance()
+ startDate.timeInMillis = startTime
+ val endDate = Calendar.getInstance()
+ endDate.timeInMillis = (startTime + 86400000L)
+ return ArrayList(mRealm?.where(RecipeData::class.java)?.between("date", startDate.time, endDate.time)?.findAll()?.sort("makeTimeZone"))
+ }
+
+ fun findWithDate(date: Date): RecipeData {
+ mRealm = Realm.getInstance(config)
+ return mRealm?.where(RecipeData::class.java)?.equalTo("date", date)?.findFirst()!!
+ }
+
+ fun dayCount(): Int {
+ mRealm = Realm.getInstance(config)
+ val results = ArrayList(mRealm?.where(RecipeData::class.java)?.findAll())
+ val count = HashMap()
+ for (data in results) {
+ val tmpDate = SimpleDateFormat("yyyy/MM/dd 00:00:00");
+ count.put(tmpDate.format(data.date), 0)
+ }
+ return count.size
+ }
+
+ fun recipeCount(): Int {
+ mRealm = Realm.getInstance(config)
+ val results = ArrayList(mRealm?.where(RecipeData::class.java)?.findAll())
+ return results.size
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/util/decorators/EventDecorator.java b/app/src/main/kotlin/org/ntlab/leftoverrecipe/util/decorators/EventDecorator.java
new file mode 100644
index 0000000..9f409ce
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/util/decorators/EventDecorator.java
@@ -0,0 +1,30 @@
+package org.ntlab.leftoverrecipe.util.decorators;
+
+import com.prolificinteractive.materialcalendarview.CalendarDay;
+import com.prolificinteractive.materialcalendarview.DayViewDecorator;
+import com.prolificinteractive.materialcalendarview.DayViewFacade;
+import com.prolificinteractive.materialcalendarview.spans.DotSpan;
+
+import java.util.Collection;
+import java.util.HashSet;
+
+public class EventDecorator implements DayViewDecorator {
+
+ private int color;
+ private HashSet dates;
+
+ public EventDecorator(int color, Collection dates) {
+ this.color = color;
+ this.dates = new HashSet<>(dates);
+ }
+
+ @Override
+ public boolean shouldDecorate(CalendarDay day) {
+ return dates.contains(day);
+ }
+
+ @Override
+ public void decorate(DayViewFacade view) {
+ view.addSpan(new DotSpan(5, color));
+ }
+}
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/DetailRecipeViewModel.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/DetailRecipeViewModel.kt
index 3f55fdc..85ff903 100644
--- a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/DetailRecipeViewModel.kt
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/DetailRecipeViewModel.kt
@@ -4,6 +4,7 @@
import android.databinding.BaseObservable
import android.databinding.BindingAdapter
import android.databinding.ObservableField
+import android.databinding.ObservableInt
import android.view.View
import android.widget.ImageView
import com.bumptech.glide.Glide
@@ -24,17 +25,22 @@
val stepText = ObservableField()
val anyone = ObservableField()
val material = ObservableField()
+ var descriptionText: ObservableField = ObservableField()
- companion object {
+ val loadVisible = ObservableInt(View.VISIBLE)
+ val fabVisible = ObservableInt(View.GONE)
+
+ var imageLoad = false
+ var recipeLoad = false
+
+ object CustomBindingAdapter {
@JvmStatic @BindingAdapter("imageUrl")
fun imageUrl(imageView: ImageView, url: String) {
- println(url)
Glide.with(imageView.context).load(url).into(imageView)
}
}
init {
- println(recipeData.recipeTitle)
recipeTitle.set(recipeData.recipeTitle)
imageUrl.set(recipeData.foodImageUrl)
@@ -45,17 +51,19 @@
var material = ""
var count = 1
for (data in it.howto) {
- stepText += "${count}.${data.step}\n"
+ stepText += "(${count})\n${data.step}\n\n"
count++
}
- for (data in it.material){
- material+= "${data.amount}\n${data.material}\n\n"
+ for (data in it.material) {
+ material += "${data.amount}\n${data.material}\n\n"
}
- println(stepText)
this.stepText.set(stepText)
this.anyone.set(it.anyone)
this.material.set(material)
- println("DetailApiResponseRxBus")
+ this.descriptionText.set(recipeData.recipeDescription)
+
+ fabVisible.set(View.VISIBLE)
+ loadVisible.set(View.GONE)
}.registerInBus(this)
}
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/DialyListItemViewModel.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/DialyListItemViewModel.kt
new file mode 100644
index 0000000..90c1837
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/DialyListItemViewModel.kt
@@ -0,0 +1,51 @@
+package org.ntlab.leftoverrecipe.viewmodel
+
+import android.app.Activity
+import android.databinding.BaseObservable
+import android.databinding.BindingAdapter
+import android.databinding.ObservableField
+import android.databinding.ObservableInt
+import android.graphics.Bitmap
+import android.graphics.BitmapFactory
+import android.view.View
+import android.widget.ImageView
+import org.ntlab.leftoverrecipe.Mapping
+import org.ntlab.leftoverrecipe.R
+import org.ntlab.leftoverrecipe.model.db.RecipeData
+import org.ntlab.leftoverrecipe.util.BitmapUtil
+import java.text.SimpleDateFormat
+
+/**
+ * Created by matsumoto_k on 2017/07/09.
+ */
+class DialyListItemViewModel(var activity: Activity) : BaseObservable() {
+
+ val recipeTitle = ObservableField()
+ val date = ObservableField()
+ val timeZone = ObservableField()
+ val bitmap = ObservableField()
+ val comment = ObservableField()
+ val noImageVisible = ObservableInt(View.GONE)
+
+ companion object {
+ @JvmStatic @BindingAdapter("android:src")
+ fun setImageView(view: ImageView, bitmap: Bitmap) {
+ view.setImageBitmap(bitmap)
+ }
+ }
+
+ fun loadItem(item: RecipeData) {
+ recipeTitle.set("料理名 : ${item.recipeName}")
+ timeZone.set("時間帯 : ${Mapping.getRecipeTimeZone(item.makeTimeZone)}")
+ val sdf = SimpleDateFormat("yyyy-MM-dd")
+ date.set(sdf.format(item.date.time).toString())
+ comment.set("一言コメント\n${item.comment}")
+ if (item.image != null) {
+ noImageVisible.set(View.VISIBLE)
+ this.bitmap.set(BitmapUtil.createBitmap(item.image!!))
+ } else {
+ noImageVisible.set(View.GONE)
+ this.bitmap.set(BitmapFactory.decodeResource(activity.resources, R.drawable.nonimage))
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/ListItemViewModel.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/ListItemViewModel.kt
index ab9a1c1..ab51330 100644
--- a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/ListItemViewModel.kt
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/ListItemViewModel.kt
@@ -5,7 +5,6 @@
import android.view.View
import android.widget.ImageView
import com.bumptech.glide.Glide
-import org.ntlab.leftoverrecipe.api.recipe.DetailApiResponse
import org.ntlab.leftoverrecipe.api.recipe.RecipeApiResponse
import org.ntlab.leftoverrecipe.contract.SearchListViewContract
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/MenuListItemViewModel.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/MenuListItemViewModel.kt
new file mode 100644
index 0000000..40c5095
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/MenuListItemViewModel.kt
@@ -0,0 +1,37 @@
+package org.ntlab.leftoverrecipe.viewmodel
+
+import android.app.Activity
+import android.databinding.BindingAdapter
+import android.databinding.ObservableField
+import android.databinding.ObservableInt
+import android.graphics.Bitmap
+import android.view.View
+import android.widget.ImageView
+import org.ntlab.leftoverrecipe.contract.MenuViewContract
+import org.ntlab.leftoverrecipe.model.db.RecipeData
+import org.ntlab.leftoverrecipe.util.BitmapUtil
+import java.text.SimpleDateFormat
+
+/**
+ * Created by matsumoto_k on 2017/07/10.
+ */
+class MenuListItemViewModel(var context: Activity, var view: MenuViewContract?) {
+
+ var load = false
+ val date = ObservableField()
+ val recipeName = ObservableField()
+ var recipeData: RecipeData? = null
+
+
+ fun loadItem(item: RecipeData) {
+ load = true
+ this.recipeData = item
+ val sdf = SimpleDateFormat("yyyy-MM-dd")
+ date.set(sdf.format(item.date.time).toString())
+ recipeName.set(item.recipeName)
+ }
+
+ fun onClick(view: View) {
+ this.view?.startDetailActivity(recipeData!!)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/MenuViewModel.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/MenuViewModel.kt
index d3a508d..a73e10c 100644
--- a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/MenuViewModel.kt
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/MenuViewModel.kt
@@ -1,21 +1,114 @@
package org.ntlab.leftoverrecipe.viewmodel
import android.app.Activity
+import android.databinding.BindingAdapter
+import android.databinding.ObservableField
+import android.databinding.ObservableInt
+import android.support.design.widget.FloatingActionButton
import android.view.View
+import android.view.animation.AnimationUtils
+import android.widget.FrameLayout
+import org.ntlab.leftoverrecipe.R
+import org.ntlab.leftoverrecipe.adapter.GridListAdapter
import org.ntlab.leftoverrecipe.contract.MenuViewContract
+import org.ntlab.leftoverrecipe.fragment.RegistDialogFragment
+import org.ntlab.leftoverrecipe.model.RxBus
+import org.ntlab.leftoverrecipe.model.db.RecipeDataRealm
+import org.ntlab.leftoverrecipe.model.registerInBus
/**
* Created by matsumoto_k on 2017/07/09.
*/
-class MenuViewModel(var context: Activity, var view: MenuViewContract) {
+class MenuViewModel(var context: Activity, var view: MenuViewContract, var adapter: GridListAdapter) {
+
+
+ val count = ObservableInt(0)
+ val dayCount = ObservableField()
+ val recipeCount = ObservableField()
+
+ init {
+ dayCount.set(RecipeDataRealm.dayCount().toString())
+ recipeCount.set(RecipeDataRealm.recipeCount().toString())
+
+ val data = RecipeDataRealm.findAll()
+ adapter?.setItemAndRefresh(data)
+
+ RxBus.observe().subscribe {
+ when (it) {
+ RequireRecipeListUpdate -> {
+ adapter?.items?.clear()
+ val data = RecipeDataRealm.findAll()
+ adapter?.setItemAndRefresh(data)
+ dayCount.set(RecipeDataRealm.dayCount().toString())
+ recipeCount.set(RecipeDataRealm.recipeCount().toString())
+ }
+ }
+ }.registerInBus(this)
+ }
+
+ companion object {
+ const val RequireRecipeListUpdate = "RequireRecipeListUpdate"
+
+ private var isOpen: Boolean = false
+ @JvmStatic @BindingAdapter("animation")
+ fun setIsBusy(view: FloatingActionButton, count: Int) {
+ if (count == 0)
+ return
+ if (isOpen) {
+ when (view.id) {
+ R.id.fabRecipePlus -> {
+ view.startAnimation(AnimationUtils.loadAnimation(view.context, R.anim.rotate_clockwise))
+ }
+ R.id.fabSearchButton, R.id.fabAddRecipe -> {
+ view.visibility = View.VISIBLE
+ view.startAnimation(AnimationUtils.loadAnimation(view.context, R.anim.fab_open))
+ }
+ }
+
+ } else {
+ when (view.id) {
+ R.id.fabRecipePlus -> {
+ view.startAnimation(AnimationUtils.loadAnimation(view.context, R.anim.rotate_anticlockwise))
+ }
+ R.id.fabSearchButton, R.id.fabAddRecipe -> {
+ view.visibility = View.GONE
+ view.startAnimation(AnimationUtils.loadAnimation(view.context, R.anim.fab_close))
+ }
+ }
+
+ }
+ }
+
+ @JvmStatic @BindingAdapter("animation")
+ fun hoge(view: FrameLayout, count: Int) {
+ if (isOpen) {
+ view.visibility = View.VISIBLE
+ } else {
+ view.visibility = View.GONE
+ }
+ }
+ }
fun onClickSearch(view: View) {
- println("onclicksearch")
this.view.startSearchActivity()
+ isOpen = !isOpen
+ count.set(count.get() + 1)
}
- fun onClickDialy(view: View) {
- this.view.startDialyActivity()
+ fun onClickCalendar(view: View) {
+ this.view.startCalendarActivity()
}
+
+ fun onClickPlus(view: View) {
+ count.set(count.get() + 1)
+ isOpen = !isOpen
+ }
+
+ fun onClickRegistRecipe(view: View) {
+ count.set(count.get() + 1)
+ isOpen = !isOpen
+ val dialog = RegistDialogFragment(null)
+ dialog.show(context.fragmentManager, "hoge")
+ }
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/RegistDialogViewModel.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/RegistDialogViewModel.kt
index 251e72f..6819997 100644
--- a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/RegistDialogViewModel.kt
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/RegistDialogViewModel.kt
@@ -11,6 +11,7 @@
import android.widget.Toast
import org.ntlab.leftoverrecipe.api.recipe.RecipeApiResponse
import org.ntlab.leftoverrecipe.contract.RegistDialogViewContract
+import org.ntlab.leftoverrecipe.model.RxBus
import org.ntlab.leftoverrecipe.model.db.RecipeData
import org.ntlab.leftoverrecipe.model.db.RecipeDataRealm
import org.ntlab.leftoverrecipe.util.BitmapUtil
@@ -19,7 +20,7 @@
/**
* Created by matsumoto_k on 2017/05/20.
*/
-class RegistDialogViewModel(var context: Context, var customDialog: Dialog, var recipeData: RecipeApiResponse.RecipeData, var registDialog: RegistDialogViewContract) : BaseObservable() {
+class RegistDialogViewModel(var context: Context, var customDialog: Dialog, var recipeData: RecipeApiResponse.RecipeData?, var registDialog: RegistDialogViewContract) : BaseObservable() {
val recipeTitle = ObservableField()
@Bindable
@@ -35,8 +36,7 @@
var bitmap: Bitmap? = null
init {
- recipeTitle.set(recipeData.recipeTitle)
- println(recipeData.recipeTitle)
+ recipeTitle.set(recipeData?.recipeTitle)
}
//RegistDialogのOkButtonListener
@@ -54,18 +54,19 @@
recipeData.recipeName = recipeName.get()
if (comment.get() != null)
recipeData.comment = comment.get()
- if (bitmap != null)
+ if (bitmap != null) {
recipeData.image = BitmapUtil.createImageByteArray(this.bitmap!!)
+ }
if (selectedPosition.get() != null) {
recipeData.makeTimeZone = selectedPosition.get()
}
RecipeDataRealm.insert(recipeData)
- println(comment.get())
-
Toast.makeText(context, "記録しました", Toast.LENGTH_SHORT).show()
customDialog.dismiss()
+
+ RxBus.send(MenuViewModel.RequireRecipeListUpdate)
}
//RegistDialogのCancelButtonListener
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/SearchViewModel.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/SearchViewModel.kt
index a4be55a..bf96353 100644
--- a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/SearchViewModel.kt
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/SearchViewModel.kt
@@ -1,11 +1,13 @@
package org.ntlab.leftoverrecipe.viewmodel
import android.content.Context
+import android.content.Context.INPUT_METHOD_SERVICE
import android.databinding.BaseObservable
import android.databinding.Bindable
import android.databinding.ObservableField
import android.databinding.ObservableInt
import android.view.View
+import android.view.inputmethod.InputMethodManager
import android.widget.Toast
import org.ntlab.leftoverrecipe.api.recipe.RecipeApiResponse
import org.ntlab.leftoverrecipe.api.recipe.RecipeClient
@@ -13,13 +15,12 @@
import org.ntlab.leftoverrecipe.model.RxBus
import org.ntlab.leftoverrecipe.model.registerInBus
import org.ntlab.leftoverrecipe.util.Category
-import java.sql.DriverManager.println
/**
* Created by matsumoto_k on 2017/05/20.
*/
-class SearchViewModel(var context: Context, var hoge: SearchListViewContract) : BaseObservable() {
+class SearchViewModel(var context: Context, var view: SearchListViewContract) : BaseObservable() {
val progressBarVisibility = ObservableInt(View.GONE)
@Bindable
@@ -41,22 +42,21 @@
EndRecipeApi -> progressBarVisibility.set(View.GONE)
ErrorRecipeApi -> {
progressBarVisibility.set(View.GONE)
- //Toast.makeText(context, "通信エラーが発生しました", Toast.LENGTH_SHORT).show()
}
}
}.registerInBus(this)
RxBus.observe().subscribe {
- hoge.showRecipe(it)
- for (data in it?.result!!) {
- println(data.recipeTitle)
- }
+ view.showRecipe(it)
}.registerInBus(this)
}
//検索ボタンクリック
fun onClickSearch(view: View) {
loadRecipe()
+ val inputMethodMgr = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
+ inputMethodMgr.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS)
+
}
fun loadRecipe() {
diff --git a/app/src/main/res/anim/fab_close.xml b/app/src/main/res/anim/fab_close.xml
new file mode 100644
index 0000000..51f68c1
--- /dev/null
+++ b/app/src/main/res/anim/fab_close.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/anim/fab_open.xml b/app/src/main/res/anim/fab_open.xml
new file mode 100644
index 0000000..c749223
--- /dev/null
+++ b/app/src/main/res/anim/fab_open.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/anim/rotate_anticlockwise.xml b/app/src/main/res/anim/rotate_anticlockwise.xml
new file mode 100644
index 0000000..a61a7db
--- /dev/null
+++ b/app/src/main/res/anim/rotate_anticlockwise.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/anim/rotate_clockwise.xml b/app/src/main/res/anim/rotate_clockwise.xml
new file mode 100644
index 0000000..cc76a61
--- /dev/null
+++ b/app/src/main/res/anim/rotate_clockwise.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/anim/splash.xml b/app/src/main/res/anim/splash.xml
new file mode 100644
index 0000000..8f1fb19
--- /dev/null
+++ b/app/src/main/res/anim/splash.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable-hdpi/ic_action_add_recipe.png b/app/src/main/res/drawable-hdpi/ic_action_add_recipe.png
new file mode 100644
index 0000000..58e86a7
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_action_add_recipe.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/ic_action_name.png b/app/src/main/res/drawable-hdpi/ic_action_name.png
new file mode 100644
index 0000000..be65564
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_action_name.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/ic_action_search.png b/app/src/main/res/drawable-hdpi/ic_action_search.png
new file mode 100644
index 0000000..c587ed8
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_action_search.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_action_add_recipe.png b/app/src/main/res/drawable-mdpi/ic_action_add_recipe.png
new file mode 100644
index 0000000..c4c9573
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_action_add_recipe.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_action_name.png b/app/src/main/res/drawable-mdpi/ic_action_name.png
new file mode 100644
index 0000000..7f132f5
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_action_name.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_action_search.png b/app/src/main/res/drawable-mdpi/ic_action_search.png
new file mode 100644
index 0000000..62a72ba
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_action_search.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_action_add_recipe.png b/app/src/main/res/drawable-xhdpi/ic_action_add_recipe.png
new file mode 100644
index 0000000..f06f66f
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_action_add_recipe.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_action_name.png b/app/src/main/res/drawable-xhdpi/ic_action_name.png
new file mode 100644
index 0000000..5a7c1a6
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_action_name.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_action_search.png b/app/src/main/res/drawable-xhdpi/ic_action_search.png
new file mode 100644
index 0000000..91402f4
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_action_search.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/calendar.png b/app/src/main/res/drawable-xxhdpi/calendar.png
new file mode 100644
index 0000000..791b8e7
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/calendar.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/day_count.png b/app/src/main/res/drawable-xxhdpi/day_count.png
new file mode 100644
index 0000000..e558167
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/day_count.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_add_recipe.png b/app/src/main/res/drawable-xxhdpi/ic_action_add_recipe.png
new file mode 100644
index 0000000..f218141
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_action_add_recipe.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_name.png b/app/src/main/res/drawable-xxhdpi/ic_action_name.png
new file mode 100644
index 0000000..5eea2f1
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_action_name.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_search.png b/app/src/main/res/drawable-xxhdpi/ic_action_search.png
new file mode 100644
index 0000000..18ae92f
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_action_search.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/noimage.png b/app/src/main/res/drawable-xxhdpi/noimage.png
new file mode 100644
index 0000000..ea094ad
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/noimage.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/recipe_count.png b/app/src/main/res/drawable-xxhdpi/recipe_count.png
new file mode 100644
index 0000000..a2ddb00
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/recipe_count.png
Binary files differ
diff --git a/app/src/main/res/drawable/list_no_image.gif b/app/src/main/res/drawable/list_no_image.gif
new file mode 100644
index 0000000..de20c55
--- /dev/null
+++ b/app/src/main/res/drawable/list_no_image.gif
Binary files differ
diff --git a/app/src/main/res/drawable/nonimage.png b/app/src/main/res/drawable/nonimage.png
new file mode 100644
index 0000000..b6ffa81
--- /dev/null
+++ b/app/src/main/res/drawable/nonimage.png
Binary files differ
diff --git a/app/src/main/res/drawable/splash.gif b/app/src/main/res/drawable/splash.gif
new file mode 100644
index 0000000..f1643f3
--- /dev/null
+++ b/app/src/main/res/drawable/splash.gif
Binary files differ
diff --git a/app/src/main/res/drawable/toolbar_calendar.png b/app/src/main/res/drawable/toolbar_calendar.png
new file mode 100644
index 0000000..549f08b
--- /dev/null
+++ b/app/src/main/res/drawable/toolbar_calendar.png
Binary files differ
diff --git a/app/src/main/res/layout/activity_detail_recipe.xml b/app/src/main/res/layout/activity_detail_recipe.xml
index d40badc..357195f 100644
--- a/app/src/main/res/layout/activity_detail_recipe.xml
+++ b/app/src/main/res/layout/activity_detail_recipe.xml
@@ -36,8 +36,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp"
+ android:textColor="#005299"
android:text="@{viewModel.recipeTitle}"
- android:textSize="14dp" />
+ android:textSize="18dp" />
+ android:text="材料"
+ android:textSize="20dp"
+ android:textStyle="bold" />
+
+
+
+
@@ -63,13 +80,17 @@
+ android:text="一言コメント"
+ android:textSize="20dp"
+ android:textStyle="bold" />
@@ -85,8 +106,28 @@
android:onClick="@{viewModel.onClickFab}"
android:padding="5dp"
android:src="@drawable/float_regist"
+ android:visibility="@{viewModel.fabVisible}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_dialy.xml b/app/src/main/res/layout/activity_dialy.xml
index 020d7f2..500fa40 100644
--- a/app/src/main/res/layout/activity_dialy.xml
+++ b/app/src/main/res/layout/activity_dialy.xml
@@ -1,6 +1,8 @@
-
+
@@ -15,10 +17,38 @@
android:layout_height="match_parent"
android:orientation="vertical">
-
+
+
+
+
+
+
+
+
+
+
+
+ tools:layout_editor_absoluteY="0dp"
+ app:layout_constraintStart_toStartOf="parent"
+ android:layout_marginStart="8dp"
+ android:layout_marginEnd="8dp"
+ app:layout_constraintEnd_toEndOf="parent">
+
+
diff --git a/app/src/main/res/layout/activity_dialy_detail.xml b/app/src/main/res/layout/activity_dialy_detail.xml
new file mode 100644
index 0000000..1978494
--- /dev/null
+++ b/app/src/main/res/layout/activity_dialy_detail.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_menu.xml b/app/src/main/res/layout/activity_menu.xml
index 428f55e..67e20af 100644
--- a/app/src/main/res/layout/activity_menu.xml
+++ b/app/src/main/res/layout/activity_menu.xml
@@ -15,32 +15,190 @@
android:layout_height="match_parent"
android:orientation="vertical">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:backgroundTint="#cecece"
+ android:clickable="true"
+ android:elevation="6dp"
+ android:onClick="@{viewModel.onClickSearch}"
+ android:src="@drawable/ic_action_search"
+ android:visibility="gone"
+ app:borderWidth="0dp"
+ app:layout_constraintBottom_toTopOf="@+id/fabRecipePlus"
+ app:layout_constraintEnd_toEndOf="@+id/fabRecipePlus"
+ app:layout_constraintStart_toStartOf="@+id/fabRecipePlus"
+ app:pressedTranslationZ="12dp" />
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml
index ebc34a7..36ad003 100644
--- a/app/src/main/res/layout/activity_search.xml
+++ b/app/src/main/res/layout/activity_search.xml
@@ -51,9 +51,9 @@
android:id="@+id/searchListView"
android:layout_width="0dp"
android:layout_height="0dp"
- android:layout_marginBottom="8dp"
- android:layout_marginEnd="8dp"
- android:layout_marginStart="8dp"
+ android:layout_marginBottom="0dp"
+ android:layout_marginEnd="4dp"
+ android:layout_marginStart="4dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -71,7 +71,7 @@
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
- android:visibility="@{viewModel.progressBarVisibility}"
+ android:visibility="@{viewModel.progressBarVisibility,default=gone}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/dialy_list_item.xml b/app/src/main/res/layout/dialy_list_item.xml
new file mode 100644
index 0000000..2289029
--- /dev/null
+++ b/app/src/main/res/layout/dialy_list_item.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_regist_dialog.xml b/app/src/main/res/layout/fragment_regist_dialog.xml
index 07b9aae..2422259 100644
--- a/app/src/main/res/layout/fragment_regist_dialog.xml
+++ b/app/src/main/res/layout/fragment_regist_dialog.xml
@@ -7,13 +7,14 @@
+ type="org.ntlab.leftoverrecipe.viewmodel.RegistDialogViewModel" />
-
+ app:layout_constraintTop_toBottomOf="@+id/dialogSpinner"
+ app:roundedCorners="true" />
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/search_list_item.xml b/app/src/main/res/layout/search_list_item.xml
index 1cdebfa..3760301 100644
--- a/app/src/main/res/layout/search_list_item.xml
+++ b/app/src/main/res/layout/search_list_item.xml
@@ -13,7 +13,7 @@
+ android:layout_margin="4dp">
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml
new file mode 100644
index 0000000..f7a327b
--- /dev/null
+++ b/app/src/main/res/menu/menu_main.xml
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index bd10b84..ad7caea 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -2,9 +2,9 @@
- - 朝
- - 昼
- - 晩
+ - 朝ご飯
+ - 昼ご飯
+ - 晩ご飯
\ No newline at end of file
diff --git a/app/src/main/res/values/dimen.xml b/app/src/main/res/values/dimen.xml
new file mode 100644
index 0000000..2577517
--- /dev/null
+++ b/app/src/main/res/values/dimen.xml
@@ -0,0 +1,4 @@
+
+
+ 150
+
\ 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 f136bc3..85be9c8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,3 +1,4 @@
LeftoverRecipe
+ 300
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 34fbb88..ca84827 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -12,4 +12,9 @@
- @android:color/transparent
+
+
+
diff --git a/build.gradle b/build.gradle
index 1bc6672..9c57597 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
- ext.kotlin_version = '1.1.3'
+ ext.kotlin_version = '1.1.2-4'
repositories {
google()
jcenter()