From fa9a36d96efeeef79c9f3c819353e2738edf4346 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Thu, 10 May 2018 11:11:35 +0900 Subject: [PATCH 01/52] =?UTF-8?q?AndroidStudio=E3=81=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 5 ++--- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 057af5b6..962f8334 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,12 +18,11 @@ def appVersionCode = versionMajor * 10000 + versionMinor * 1000 + versionPatch * def appVersionName = "${versionMajor}.${versionMinor}.${versionPatch}" android { - compileSdkVersion 27 - buildToolsVersion '27.0.3' + compileSdkVersion 'android-P' defaultConfig { applicationId "com.numero.sojodia" minSdkVersion 17 - targetSdkVersion 27 + targetSdkVersion 28 versionCode appVersionCode versionName appVersionName testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" diff --git a/build.gradle b/build.gradle index ee98176c..f253fa38 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.1.2' + classpath 'com.android.tools.build:gradle:3.2.0-alpha14' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8108a4b9..e4f0598a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Apr 23 10:11:17 JST 2018 +#Thu May 10 11:09:42 JST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip From 15a854586e4189c6546f517e829598a1d6d6e3c1 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Thu, 10 May 2018 11:14:46 +0900 Subject: [PATCH 02/52] =?UTF-8?q?AndroidX=E3=81=AB=E6=9B=B8=E3=81=8D?= =?UTF-8?q?=E6=8F=9B=E3=81=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 16 ++++++++-------- .../numero/sojodia/activity/LicensesActivity.kt | 2 +- .../com/numero/sojodia/activity/MainActivity.kt | 8 ++++---- .../numero/sojodia/activity/SettingsActivity.kt | 2 +- .../extension/AppCompatActivityExtension.kt | 6 +++--- .../sojodia/extension/FragmentExtension.kt | 4 ++-- .../numero/sojodia/extension/TimeExtension.kt | 2 +- .../sojodia/fragment/BusScheduleFragment.kt | 4 ++-- .../sojodia/fragment/TimeTableDialogFragment.kt | 12 ++++++------ .../sojodia/manager/NotificationManager.kt | 6 +++--- .../com/numero/sojodia/util/BroadCastUtil.kt | 4 ++-- .../sojodia/view/CountDownClockTextView.kt | 2 +- .../com/numero/sojodia/view/NotSwipeViewPager.kt | 4 ++-- .../numero/sojodia/view/TimeTableRowHolder.kt | 7 +++---- .../adapter/BusScheduleFragmentPagerAdapter.kt | 10 +++++----- .../sojodia/view/adapter/BusTimePagerAdapter.kt | 6 +++--- .../sojodia/view/adapter/TimeTableRowAdapter.kt | 4 ++-- .../res/layout-land/bus_schedule_fragment.xml | 8 ++++---- app/src/main/res/layout/activity_licenses.xml | 10 +++++----- app/src/main/res/layout/activity_main.xml | 14 +++++++------- app/src/main/res/layout/activity_settings.xml | 10 +++++----- .../main/res/layout/bus_schedule_fragment.xml | 8 ++++---- app/src/main/res/layout/dialog_time_table.xml | 4 ++-- gradle.properties | 4 +++- 24 files changed, 79 insertions(+), 78 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 962f8334..6d6a57f0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -25,7 +25,7 @@ android { targetSdkVersion 28 versionCode appVersionCode versionName appVersionName - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" buildConfigField("String", "BUS_DATA_URL", "\"https://raw.githubusercontent.com\"") } @@ -57,16 +57,16 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.1' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' + androidTestImplementation 'androidx.test:runner:1.1.0-alpha1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha1' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation "androidx.core:core-ktx:$ktx_version" + implementation "androidx.core:core-ktx:1.0.0-alpha1" - implementation "com.android.support:design:$support_library_version" - implementation "com.android.support:appcompat-v7:$support_library_version" - implementation "com.android.support:recyclerview-v7:$support_library_version" - implementation "com.android.support:cardview-v7:$support_library_version" + implementation 'com.google.android.material:material:1.0.0-alpha1' + implementation 'androidx.appcompat:appcompat:1.0.0-alpha1' + implementation 'androidx.recyclerview:recyclerview:1.0.0-alpha1' + implementation 'androidx.cardview:cardview:1.0.0-alpha1' implementation "com.squareup.okhttp3:okhttp:$okhttp_version" implementation "com.squareup.okhttp3:logging-interceptor:$okhttp_version" diff --git a/app/src/main/kotlin/com/numero/sojodia/activity/LicensesActivity.kt b/app/src/main/kotlin/com/numero/sojodia/activity/LicensesActivity.kt index 0726c8cf..490636ef 100644 --- a/app/src/main/kotlin/com/numero/sojodia/activity/LicensesActivity.kt +++ b/app/src/main/kotlin/com/numero/sojodia/activity/LicensesActivity.kt @@ -3,7 +3,7 @@ package com.numero.sojodia.activity import android.content.Context import android.content.Intent import android.os.Bundle -import android.support.v7.app.AppCompatActivity +import androidx.appcompat.app.AppCompatActivity import android.view.MenuItem import com.numero.sojodia.R diff --git a/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt b/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt index 7d3a3e02..b6cd98f3 100644 --- a/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt +++ b/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt @@ -5,8 +5,8 @@ import android.content.Context import android.content.Intent import android.content.IntentFilter import android.os.Bundle -import android.support.v4.content.LocalBroadcastManager -import android.support.v7.app.AppCompatActivity +import androidx.localbroadcastmanager.content.LocalBroadcastManager +import androidx.appcompat.app.AppCompatActivity import android.view.Menu import android.view.MenuItem import com.numero.sojodia.R @@ -56,12 +56,12 @@ class MainActivity : AppCompatActivity(), BusScheduleFragment.BusScheduleFragmen override fun onStart() { super.onStart() - LocalBroadcastManager.getInstance(this).registerReceiver(finishDownloadReceiver, IntentFilter(BroadCastUtil.ACTION_FINISH_DOWNLOAD)) + androidx.localbroadcastmanager.content.LocalBroadcastManager.getInstance(this).registerReceiver(finishDownloadReceiver, IntentFilter(BroadCastUtil.ACTION_FINISH_DOWNLOAD)) } public override fun onStop() { super.onStop() - LocalBroadcastManager.getInstance(this).unregisterReceiver(finishDownloadReceiver) + androidx.localbroadcastmanager.content.LocalBroadcastManager.getInstance(this).unregisterReceiver(finishDownloadReceiver) } override fun onCreateOptionsMenu(menu: Menu): Boolean { diff --git a/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt b/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt index 82456413..731a9b27 100644 --- a/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt +++ b/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt @@ -3,7 +3,7 @@ package com.numero.sojodia.activity import android.content.Context import android.content.Intent import android.os.Bundle -import android.support.v7.app.AppCompatActivity +import androidx.appcompat.app.AppCompatActivity import android.view.MenuItem import com.numero.sojodia.R diff --git a/app/src/main/kotlin/com/numero/sojodia/extension/AppCompatActivityExtension.kt b/app/src/main/kotlin/com/numero/sojodia/extension/AppCompatActivityExtension.kt index 071294ff..116e6978 100644 --- a/app/src/main/kotlin/com/numero/sojodia/extension/AppCompatActivityExtension.kt +++ b/app/src/main/kotlin/com/numero/sojodia/extension/AppCompatActivityExtension.kt @@ -1,9 +1,9 @@ package com.numero.sojodia.extension import android.content.DialogInterface -import android.support.annotation.StringRes -import android.support.v7.app.AlertDialog -import android.support.v7.app.AppCompatActivity +import androidx.annotation.StringRes +import androidx.appcompat.app.AlertDialog +import androidx.appcompat.app.AppCompatActivity import com.numero.sojodia.SojoDiaApplication import com.numero.sojodia.di.ApplicationComponent diff --git a/app/src/main/kotlin/com/numero/sojodia/extension/FragmentExtension.kt b/app/src/main/kotlin/com/numero/sojodia/extension/FragmentExtension.kt index 11673c88..968f3f86 100644 --- a/app/src/main/kotlin/com/numero/sojodia/extension/FragmentExtension.kt +++ b/app/src/main/kotlin/com/numero/sojodia/extension/FragmentExtension.kt @@ -1,8 +1,8 @@ package com.numero.sojodia.extension -import android.support.v4.app.Fragment +import androidx.fragment.app.Fragment import com.numero.sojodia.SojoDiaApplication import com.numero.sojodia.di.ApplicationComponent -val Fragment.component: ApplicationComponent? +val androidx.fragment.app.Fragment.component: ApplicationComponent? get() = (activity?.application as? SojoDiaApplication)?.component \ No newline at end of file diff --git a/app/src/main/kotlin/com/numero/sojodia/extension/TimeExtension.kt b/app/src/main/kotlin/com/numero/sojodia/extension/TimeExtension.kt index 0aaae5cb..d90b0f78 100644 --- a/app/src/main/kotlin/com/numero/sojodia/extension/TimeExtension.kt +++ b/app/src/main/kotlin/com/numero/sojodia/extension/TimeExtension.kt @@ -1,6 +1,6 @@ package com.numero.sojodia.extension -import android.support.annotation.VisibleForTesting +import androidx.annotation.VisibleForTesting import com.numero.sojodia.model.Time /** diff --git a/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt b/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt index 604f0aae..4ed8690e 100644 --- a/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt +++ b/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt @@ -2,7 +2,7 @@ package com.numero.sojodia.fragment import android.content.Context import android.os.Bundle -import android.support.v4.app.Fragment +import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -24,7 +24,7 @@ import kotlinx.android.synthetic.main.bus_schedule_fragment.* import java.util.* import javax.inject.Inject -class BusScheduleFragment : Fragment(), BusScheduleContract.View { +class BusScheduleFragment : androidx.fragment.app.Fragment(), BusScheduleContract.View { @Inject lateinit var busDataRepository: BusDataRepository diff --git a/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt b/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt index 66b7bbde..5bb6753b 100644 --- a/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt +++ b/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt @@ -2,10 +2,10 @@ package com.numero.sojodia.fragment import android.app.Dialog import android.os.Bundle -import android.support.v4.app.DialogFragment -import android.support.v7.app.AlertDialog -import android.support.v7.widget.LinearLayoutManager -import android.support.v7.widget.Toolbar +import androidx.fragment.app.DialogFragment +import androidx.appcompat.app.AlertDialog +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.appcompat.widget.Toolbar import android.view.LayoutInflater import androidx.core.os.bundleOf @@ -21,7 +21,7 @@ import com.numero.sojodia.view.adapter.TimeTableRowAdapter import kotlinx.android.synthetic.main.dialog_time_table.view.* import javax.inject.Inject -class TimeTableDialogFragment : DialogFragment(), TimeTableContract.View { +class TimeTableDialogFragment : androidx.fragment.app.DialogFragment(), TimeTableContract.View { private var toolbar: Toolbar? = null private val adapter: TimeTableRowAdapter = TimeTableRowAdapter() @@ -50,7 +50,7 @@ class TimeTableDialogFragment : DialogFragment(), TimeTableContract.View { } view.timeTableRecyclerView.apply { setHasFixedSize(true) - layoutManager = LinearLayoutManager(context) + layoutManager = androidx.recyclerview.widget.LinearLayoutManager(context) adapter = this@TimeTableDialogFragment.adapter } return AlertDialog.Builder(view.context) diff --git a/app/src/main/kotlin/com/numero/sojodia/manager/NotificationManager.kt b/app/src/main/kotlin/com/numero/sojodia/manager/NotificationManager.kt index b4f6b865..ce56d3f0 100644 --- a/app/src/main/kotlin/com/numero/sojodia/manager/NotificationManager.kt +++ b/app/src/main/kotlin/com/numero/sojodia/manager/NotificationManager.kt @@ -5,9 +5,9 @@ import android.app.NotificationChannel import android.content.Context import android.content.ContextWrapper import android.os.Build -import android.support.annotation.RequiresApi -import android.support.v4.app.NotificationCompat -import android.support.v4.app.NotificationManagerCompat +import androidx.annotation.RequiresApi +import androidx.core.app.NotificationCompat +import androidx.core.app.NotificationManagerCompat import com.numero.sojodia.R diff --git a/app/src/main/kotlin/com/numero/sojodia/util/BroadCastUtil.kt b/app/src/main/kotlin/com/numero/sojodia/util/BroadCastUtil.kt index 5e571a31..9d841fee 100644 --- a/app/src/main/kotlin/com/numero/sojodia/util/BroadCastUtil.kt +++ b/app/src/main/kotlin/com/numero/sojodia/util/BroadCastUtil.kt @@ -2,7 +2,7 @@ package com.numero.sojodia.util import android.content.Context import android.content.Intent -import android.support.v4.content.LocalBroadcastManager +import androidx.localbroadcastmanager.content.LocalBroadcastManager object BroadCastUtil { @@ -10,7 +10,7 @@ object BroadCastUtil { fun sendBroadCast(context: Context?, action: String) { context ?: return - LocalBroadcastManager.getInstance(context).sendBroadcast(Intent().also { + androidx.localbroadcastmanager.content.LocalBroadcastManager.getInstance(context).sendBroadcast(Intent().also { it.action = action }) } diff --git a/app/src/main/kotlin/com/numero/sojodia/view/CountDownClockTextView.kt b/app/src/main/kotlin/com/numero/sojodia/view/CountDownClockTextView.kt index 0fc35f10..6805af4c 100644 --- a/app/src/main/kotlin/com/numero/sojodia/view/CountDownClockTextView.kt +++ b/app/src/main/kotlin/com/numero/sojodia/view/CountDownClockTextView.kt @@ -1,7 +1,7 @@ package com.numero.sojodia.view import android.content.Context -import android.support.v7.widget.AppCompatTextView +import androidx.appcompat.widget.AppCompatTextView import android.util.AttributeSet import androidx.core.content.withStyledAttributes diff --git a/app/src/main/kotlin/com/numero/sojodia/view/NotSwipeViewPager.kt b/app/src/main/kotlin/com/numero/sojodia/view/NotSwipeViewPager.kt index 5fc9360c..177b8eb4 100644 --- a/app/src/main/kotlin/com/numero/sojodia/view/NotSwipeViewPager.kt +++ b/app/src/main/kotlin/com/numero/sojodia/view/NotSwipeViewPager.kt @@ -2,11 +2,11 @@ package com.numero.sojodia.view import android.annotation.SuppressLint import android.content.Context -import android.support.v4.view.ViewPager +import androidx.viewpager.widget.ViewPager import android.util.AttributeSet import android.view.MotionEvent -class NotSwipeViewPager @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : ViewPager(context, attrs) { +class NotSwipeViewPager @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : androidx.viewpager.widget.ViewPager(context, attrs) { @SuppressLint("ClickableViewAccessibility") override fun onTouchEvent(event: MotionEvent): Boolean { diff --git a/app/src/main/kotlin/com/numero/sojodia/view/TimeTableRowHolder.kt b/app/src/main/kotlin/com/numero/sojodia/view/TimeTableRowHolder.kt index 5c7d09a4..c4d8d63e 100644 --- a/app/src/main/kotlin/com/numero/sojodia/view/TimeTableRowHolder.kt +++ b/app/src/main/kotlin/com/numero/sojodia/view/TimeTableRowHolder.kt @@ -1,16 +1,15 @@ package com.numero.sojodia.view -import android.support.v4.content.ContextCompat -import android.support.v7.widget.RecyclerView import android.view.View - +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.RecyclerView import com.numero.sojodia.R import com.numero.sojodia.model.TimeTableRow import kotlinx.android.extensions.LayoutContainer import kotlinx.android.synthetic.main.holder_time_table_row.* import java.util.* -class TimeTableRowHolder(override val containerView: View?) : RecyclerView.ViewHolder(containerView), LayoutContainer { +class TimeTableRowHolder(override val containerView: View) : RecyclerView.ViewHolder(containerView), LayoutContainer { var timeTableRow: TimeTableRow? = null set(value) { diff --git a/app/src/main/kotlin/com/numero/sojodia/view/adapter/BusScheduleFragmentPagerAdapter.kt b/app/src/main/kotlin/com/numero/sojodia/view/adapter/BusScheduleFragmentPagerAdapter.kt index bb9cb4cf..3a0d200e 100644 --- a/app/src/main/kotlin/com/numero/sojodia/view/adapter/BusScheduleFragmentPagerAdapter.kt +++ b/app/src/main/kotlin/com/numero/sojodia/view/adapter/BusScheduleFragmentPagerAdapter.kt @@ -1,16 +1,16 @@ package com.numero.sojodia.view.adapter import android.content.Context -import android.support.v4.app.Fragment -import android.support.v4.app.FragmentManager -import android.support.v4.app.FragmentPagerAdapter +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter import com.numero.sojodia.fragment.BusScheduleFragment import com.numero.sojodia.model.Reciprocate -class BusScheduleFragmentPagerAdapter(private val context: Context, fragmentManager: FragmentManager) : FragmentPagerAdapter(fragmentManager) { +class BusScheduleFragmentPagerAdapter(private val context: Context, fragmentManager: androidx.fragment.app.FragmentManager) : androidx.fragment.app.FragmentPagerAdapter(fragmentManager) { - override fun getItem(position: Int): Fragment { + override fun getItem(position: Int): androidx.fragment.app.Fragment { return BusScheduleFragment.newInstance(Reciprocate.getReciprocate(position)) } diff --git a/app/src/main/kotlin/com/numero/sojodia/view/adapter/BusTimePagerAdapter.kt b/app/src/main/kotlin/com/numero/sojodia/view/adapter/BusTimePagerAdapter.kt index 3fdfded4..3e679ef1 100644 --- a/app/src/main/kotlin/com/numero/sojodia/view/adapter/BusTimePagerAdapter.kt +++ b/app/src/main/kotlin/com/numero/sojodia/view/adapter/BusTimePagerAdapter.kt @@ -1,6 +1,6 @@ package com.numero.sojodia.view.adapter -import android.support.v4.view.PagerAdapter +import androidx.viewpager.widget.PagerAdapter import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -10,7 +10,7 @@ import com.numero.sojodia.model.BusTime import kotlinx.android.synthetic.main.pager_bus_time.view.* import java.util.* -class BusTimePagerAdapter : PagerAdapter() { +class BusTimePagerAdapter : androidx.viewpager.widget.PagerAdapter() { private var busTimeList: List? = null @@ -77,6 +77,6 @@ class BusTimePagerAdapter : PagerAdapter() { } override fun getItemPosition(any: Any): Int { - return PagerAdapter.POSITION_NONE + return androidx.viewpager.widget.PagerAdapter.POSITION_NONE } } diff --git a/app/src/main/kotlin/com/numero/sojodia/view/adapter/TimeTableRowAdapter.kt b/app/src/main/kotlin/com/numero/sojodia/view/adapter/TimeTableRowAdapter.kt index a52e6527..e14ca5a8 100644 --- a/app/src/main/kotlin/com/numero/sojodia/view/adapter/TimeTableRowAdapter.kt +++ b/app/src/main/kotlin/com/numero/sojodia/view/adapter/TimeTableRowAdapter.kt @@ -1,6 +1,6 @@ package com.numero.sojodia.view.adapter -import android.support.v7.widget.RecyclerView +import androidx.recyclerview.widget.RecyclerView import android.view.LayoutInflater import android.view.ViewGroup import com.numero.sojodia.R @@ -8,7 +8,7 @@ import com.numero.sojodia.model.TimeTableRow import com.numero.sojodia.view.TimeTableRowHolder import java.util.* -class TimeTableRowAdapter : RecyclerView.Adapter() { +class TimeTableRowAdapter : androidx.recyclerview.widget.RecyclerView.Adapter() { var tableRowList: MutableList? = null set(value) { diff --git a/app/src/main/res/layout-land/bus_schedule_fragment.xml b/app/src/main/res/layout-land/bus_schedule_fragment.xml index 508b2d5e..6d21a5de 100644 --- a/app/src/main/res/layout-land/bus_schedule_fragment.xml +++ b/app/src/main/res/layout-land/bus_schedule_fragment.xml @@ -9,7 +9,7 @@ app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context=".activity.MainActivity"> - - + - - + diff --git a/app/src/main/res/layout/activity_licenses.xml b/app/src/main/res/layout/activity_licenses.xml index 5149076b..257e717e 100644 --- a/app/src/main/res/layout/activity_licenses.xml +++ b/app/src/main/res/layout/activity_licenses.xml @@ -1,5 +1,5 @@ - - - - + - \ 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 1c8c11a2..a09110e6 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,5 @@ - - - - - + - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 8178d32d..8f75a329 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -1,5 +1,5 @@ - - - - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/bus_schedule_fragment.xml b/app/src/main/res/layout/bus_schedule_fragment.xml index 80e307f5..39825f6c 100644 --- a/app/src/main/res/layout/bus_schedule_fragment.xml +++ b/app/src/main/res/layout/bus_schedule_fragment.xml @@ -6,7 +6,7 @@ android:orientation="vertical" app:layout_behavior="@string/appbar_scrolling_view_behavior"> - - + - - + diff --git a/app/src/main/res/layout/dialog_time_table.xml b/app/src/main/res/layout/dialog_time_table.xml index 981c0a72..63920828 100644 --- a/app/src/main/res/layout/dialog_time_table.xml +++ b/app/src/main/res/layout/dialog_time_table.xml @@ -6,7 +6,7 @@ android:layout_height="wrap_content" android:background="@color/time_table_dialog_background"> - - Date: Thu, 10 May 2018 11:38:33 +0900 Subject: [PATCH 03/52] =?UTF-8?q?preference=E3=82=92Compat=E3=81=AB?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 1 + .../sojodia/activity/SettingsActivity.kt | 4 ++-- .../sojodia/fragment/SettingsFragment.kt | 23 ++++++++++--------- app/src/main/res/values/styles.xml | 1 + 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6d6a57f0..0a1da86c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,6 +67,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.0.0-alpha1' implementation 'androidx.recyclerview:recyclerview:1.0.0-alpha1' implementation 'androidx.cardview:cardview:1.0.0-alpha1' + implementation 'androidx.legacy:legacy-preference-v14:1.0.0-alpha1' implementation "com.squareup.okhttp3:okhttp:$okhttp_version" implementation "com.squareup.okhttp3:logging-interceptor:$okhttp_version" diff --git a/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt b/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt index 731a9b27..a8bc9ab8 100644 --- a/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt +++ b/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt @@ -28,9 +28,9 @@ class SettingsActivity : AppCompatActivity() { supportActionBar?.setDisplayHomeAsUpEnabled(true) - val fragment: SettingsFragment = fragmentManager.findFragmentById(R.id.container) as? SettingsFragment + val fragment: SettingsFragment = supportFragmentManager.findFragmentById(R.id.container) as? SettingsFragment ?: SettingsFragment.newInstance().also { - fragmentManager.beginTransaction().replace(R.id.container, it).commit() + supportFragmentManager.beginTransaction().replace(R.id.container, it).commit() } SettingsPresenter(fragment, configRepository) } diff --git a/app/src/main/kotlin/com/numero/sojodia/fragment/SettingsFragment.kt b/app/src/main/kotlin/com/numero/sojodia/fragment/SettingsFragment.kt index 4cc3b451..60ffba7b 100644 --- a/app/src/main/kotlin/com/numero/sojodia/fragment/SettingsFragment.kt +++ b/app/src/main/kotlin/com/numero/sojodia/fragment/SettingsFragment.kt @@ -1,31 +1,32 @@ package com.numero.sojodia.fragment import android.os.Bundle -import android.preference.PreferenceFragment -import android.preference.PreferenceScreen - +import androidx.preference.PreferenceFragmentCompat import com.numero.sojodia.BuildConfig import com.numero.sojodia.R import com.numero.sojodia.activity.LicensesActivity import com.numero.sojodia.contract.SettingsContract -class SettingsFragment : PreferenceFragment(), SettingsContract.View { +class SettingsFragment : PreferenceFragmentCompat(), SettingsContract.View { private lateinit var presenter: SettingsContract.Presenter - private val dataVersionScreen: PreferenceScreen by lazy { - findPreference("data_version") as PreferenceScreen +// private val dataVersionScreen: PreferenceScreen by lazy { +// findPreference("data_version") as PreferenceScreen +// } + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + setPreferencesFromResource(R.xml.settings, rootKey) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - addPreferencesFromResource(R.xml.settings) - val appVersionScreen = findPreference("app_version") as PreferenceScreen + val appVersionScreen = findPreference("app_version") appVersionScreen.summary = BuildConfig.VERSION_NAME - val licensesScreen = findPreference("licenses") as PreferenceScreen + val licensesScreen = findPreference("licenses") licensesScreen.setOnPreferenceClickListener { - startActivity(LicensesActivity.createIntent(activity)) + startActivity(LicensesActivity.createIntent(context!!)) false } } @@ -45,7 +46,7 @@ class SettingsFragment : PreferenceFragment(), SettingsContract.View { } override fun showBusDataVersion(version: String) { - dataVersionScreen.summary = version + findPreference("data_version").summary = version } companion object { diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index f9dc0bc3..6e101665 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -8,6 +8,7 @@ @color/text_primary @color/text_secondary false + @style/PreferenceThemeOverlay.v14.Material - - diff --git a/app/src/main/res/values-v23/styles.xml b/app/src/main/res/values-v23/styles.xml index 9ce58081..c9ed6d3f 100644 --- a/app/src/main/res/values-v23/styles.xml +++ b/app/src/main/res/values-v23/styles.xml @@ -3,8 +3,6 @@ \ No newline at end of file diff --git a/app/src/main/res/values-v27/styles.xml b/app/src/main/res/values-v27/styles.xml index bab5f56b..28df6200 100644 --- a/app/src/main/res/values-v27/styles.xml +++ b/app/src/main/res/values-v27/styles.xml @@ -3,8 +3,6 @@ - From a1fdc8e90e47f8891e9894d14b26efdc483d9500 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sun, 13 May 2018 17:07:18 +0900 Subject: [PATCH 17/52] =?UTF-8?q?=E6=AE=8B=E3=82=8A=E3=81=AE=E6=99=82?= =?UTF-8?q?=E9=96=93=E3=81=AE=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6=E3=83=88?= =?UTF-8?q?=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/layout-land/bus_schedule_fragment.xml | 68 +++++++++++-------- .../main/res/layout/bus_schedule_fragment.xml | 12 ++-- 2 files changed, 47 insertions(+), 33 deletions(-) diff --git a/app/src/main/res/layout-land/bus_schedule_fragment.xml b/app/src/main/res/layout-land/bus_schedule_fragment.xml index 4630b551..65014d3d 100644 --- a/app/src/main/res/layout-land/bus_schedule_fragment.xml +++ b/app/src/main/res/layout-land/bus_schedule_fragment.xml @@ -16,6 +16,7 @@ android:layout_margin="@dimen/card_margin" android:background="@color/surface" app:cardCornerRadius="16dp" + app:cardElevation="8dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/tndScheduleCardView" app:layout_constraintStart_toStartOf="parent" @@ -55,24 +56,27 @@ + android:layout_height="@dimen/bus_time_view_pager_height" + android:layout_marginBottom="8dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/tkNextImageButton" + app:layout_constraintStart_toEndOf="@+id/tkPreviewImageButton" + app:layout_constraintTop_toBottomOf="@+id/tkCountdownTextView" /> + app:layout_constraintStart_toEndOf="@+id/tkBusTimeViewPager" + app:layout_constraintTop_toTopOf="@+id/tkBusTimeViewPager" /> + app:layout_constraintTop_toTopOf="@+id/tkBusTimeViewPager" /> + android:layout_height="@dimen/bus_time_view_pager_height" + android:layout_marginBottom="8dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/tndNextImageButton" + app:layout_constraintStart_toEndOf="@+id/tndPreviewImageButton" + app:layout_constraintTop_toBottomOf="@+id/tndCountdownTextView" /> + app:layout_constraintStart_toEndOf="@+id/tndBusTimeViewPager" + app:layout_constraintTop_toTopOf="@+id/tndBusTimeViewPager" /> + app:layout_constraintTop_toTopOf="@+id/tndBusTimeViewPager" /> + app:layout_constraintTop_toBottomOf="@+id/tndCountdownTextView" /> Date: Sun, 13 May 2018 17:19:08 +0900 Subject: [PATCH 18/52] =?UTF-8?q?=E3=83=9C=E3=82=BF=E3=83=B3=E3=81=AEpaddi?= =?UTF-8?q?ng=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/layout-land/bus_schedule_fragment.xml | 12 ++++++++---- app/src/main/res/layout/bus_schedule_fragment.xml | 12 ++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/layout-land/bus_schedule_fragment.xml b/app/src/main/res/layout-land/bus_schedule_fragment.xml index 65014d3d..82aecad0 100644 --- a/app/src/main/res/layout-land/bus_schedule_fragment.xml +++ b/app/src/main/res/layout-land/bus_schedule_fragment.xml @@ -83,8 +83,9 @@ android:id="@+id/tkNextImageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginEnd="4dp" android:background="?attr/selectableItemBackgroundBorderless" - android:padding="8dp" + android:padding="12dp" android:src="@drawable/ic_arrow_right" app:layout_constraintBottom_toBottomOf="@+id/tkBusTimeViewPager" app:layout_constraintEnd_toEndOf="parent" @@ -95,8 +96,9 @@ android:id="@+id/tkPreviewImageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginEnd="4dp" android:background="?attr/selectableItemBackgroundBorderless" - android:padding="8dp" + android:padding="12dp" android:src="@drawable/ic_arrow_left" app:layout_constraintBottom_toBottomOf="@+id/tkBusTimeViewPager" app:layout_constraintEnd_toStartOf="@id/tkBusTimeViewPager" @@ -202,8 +204,9 @@ android:id="@+id/tndNextImageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginEnd="4dp" android:background="?attr/selectableItemBackgroundBorderless" - android:padding="@dimen/card_arrow_button_margin" + android:padding="12dp" android:src="@drawable/ic_arrow_right" app:layout_constraintBottom_toBottomOf="@+id/tndBusTimeViewPager" app:layout_constraintEnd_toEndOf="parent" @@ -214,8 +217,9 @@ android:id="@+id/tndPreviewImageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginEnd="4dp" android:background="?attr/selectableItemBackgroundBorderless" - android:padding="@dimen/card_arrow_button_margin" + android:padding="12dp" android:src="@drawable/ic_arrow_left" app:layout_constraintBottom_toBottomOf="@+id/tndBusTimeViewPager" app:layout_constraintEnd_toStartOf="@id/tndBusTimeViewPager" diff --git a/app/src/main/res/layout/bus_schedule_fragment.xml b/app/src/main/res/layout/bus_schedule_fragment.xml index ba4b6133..e6eebd2b 100644 --- a/app/src/main/res/layout/bus_schedule_fragment.xml +++ b/app/src/main/res/layout/bus_schedule_fragment.xml @@ -82,8 +82,9 @@ android:id="@+id/tkNextImageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginEnd="4dp" android:background="?attr/selectableItemBackgroundBorderless" - android:padding="8dp" + android:padding="12dp" android:src="@drawable/ic_arrow_right" app:layout_constraintBottom_toBottomOf="@+id/tkBusTimeViewPager" app:layout_constraintEnd_toEndOf="parent" @@ -94,8 +95,9 @@ android:id="@+id/tkPreviewImageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginStart="4dp" android:background="?attr/selectableItemBackgroundBorderless" - android:padding="8dp" + android:padding="12dp" android:src="@drawable/ic_arrow_left" app:layout_constraintBottom_toBottomOf="@+id/tkBusTimeViewPager" app:layout_constraintEnd_toStartOf="@id/tkBusTimeViewPager" @@ -204,8 +206,9 @@ android:id="@+id/tndNextImageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginEnd="4dp" android:background="?attr/selectableItemBackgroundBorderless" - android:padding="@dimen/card_arrow_button_margin" + android:padding="12dp" android:src="@drawable/ic_arrow_right" app:layout_constraintBottom_toBottomOf="@+id/tndBusTimeViewPager" app:layout_constraintEnd_toEndOf="parent" @@ -216,8 +219,9 @@ android:id="@+id/tndPreviewImageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginStart="4dp" android:background="?attr/selectableItemBackgroundBorderless" - android:padding="@dimen/card_arrow_button_margin" + android:padding="12dp" android:src="@drawable/ic_arrow_left" app:layout_constraintBottom_toBottomOf="@+id/tndBusTimeViewPager" app:layout_constraintEnd_toStartOf="@id/tndBusTimeViewPager" From 981f393926e7191a95c64157179ba8ac262b5f5b Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sun, 13 May 2018 20:32:17 +0900 Subject: [PATCH 19/52] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/pager_bus_time.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/res/layout/pager_bus_time.xml b/app/src/main/res/layout/pager_bus_time.xml index d3f64020..53bcb7bd 100644 --- a/app/src/main/res/layout/pager_bus_time.xml +++ b/app/src/main/res/layout/pager_bus_time.xml @@ -5,7 +5,6 @@ android:layout_width="match_parent" android:layout_height="@dimen/bus_time_view_pager_height"> - Date: Sun, 13 May 2018 20:36:35 +0900 Subject: [PATCH 20/52] =?UTF-8?q?README=E3=81=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 421526ff..32440290 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # SojoDia -![Android Studio](https://img.shields.io/badge/Android%20Studio-3.1.2-green.svg) +![Android Studio](https://img.shields.io/badge/Android%20Studio-3.2%20Canary14-green.svg) ![Kotlin](https://img.shields.io/badge/kotlin-1.2.41-yellow.svg) ## About @@ -19,5 +19,4 @@ API Level 19 ( Android 4.4 ) |[Dagger](https://github.com/google/dagger)|2.15| |[Kotshi](https://github.com/ansman/kotshi)|1.0.2| |[Retrofit](https://github.com/square/retrofit)|2.3.0| -|[Android-ktx](https://github.com/android/android-ktx)|0.3| |[Android License Tools Plugin](https://github.com/cookpad/license-tools-plugin)|1.2.0| From 7585c0bdf3be5cf99ca2257a13474ec689a1fda8 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sun, 13 May 2018 20:39:23 +0900 Subject: [PATCH 21/52] =?UTF-8?q?gitattributes=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..3a5fc741 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +/app/src/main/assets/licenses.html linguist-vendored \ No newline at end of file From 9c5161ca63e2d82e35b3e65217df47def02dd49c Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Mon, 14 May 2018 11:39:27 +0900 Subject: [PATCH 22/52] =?UTF-8?q?Card=E3=81=AE=E6=9E=A0=E3=82=92=E5=89=8A?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout-land/bus_schedule_fragment.xml | 8 ++------ app/src/main/res/layout/bus_schedule_fragment.xml | 8 ++------ app/src/main/res/values/colors.xml | 1 - 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/app/src/main/res/layout-land/bus_schedule_fragment.xml b/app/src/main/res/layout-land/bus_schedule_fragment.xml index 82aecad0..1cc7bfab 100644 --- a/app/src/main/res/layout-land/bus_schedule_fragment.xml +++ b/app/src/main/res/layout-land/bus_schedule_fragment.xml @@ -20,9 +20,7 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/tndScheduleCardView" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:strokeColor="@color/card_stroke" - app:strokeWidth="1dp"> + app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintTop_toBottomOf="@+id/tkScheduleCardView"> @color/secondary - #1F000000 #f44336 #03a9f4 @color/onPrimary From cb4145c08f82f28f59b3cdffee0dd795bb8d993a Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Mon, 14 May 2018 11:49:03 +0900 Subject: [PATCH 23/52] =?UTF-8?q?=E3=82=A2=E3=82=A4=E3=82=B3=E3=83=B3?= =?UTF-8?q?=E3=81=AE=E8=89=B2=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/drawable/ic_arrow_left.xml | 2 +- app/src/main/res/drawable/ic_arrow_right.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/drawable/ic_arrow_left.xml b/app/src/main/res/drawable/ic_arrow_left.xml index 2c944819..27ff8200 100644 --- a/app/src/main/res/drawable/ic_arrow_left.xml +++ b/app/src/main/res/drawable/ic_arrow_left.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_arrow_right.xml b/app/src/main/res/drawable/ic_arrow_right.xml index 606f6baa..f1a46f42 100644 --- a/app/src/main/res/drawable/ic_arrow_right.xml +++ b/app/src/main/res/drawable/ic_arrow_right.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> From 41cdbbb05524df7dd3bb270139dc65f7b23c63fd Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Mon, 14 May 2018 12:24:35 +0900 Subject: [PATCH 24/52] =?UTF-8?q?=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E3=82=92=E7=94=BB=E9=9D=A2=E3=81=94=E3=81=A8=E3=81=AB?= =?UTF-8?q?=E5=88=86=E5=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 5 +- .../layout-h470dp/bus_schedule_fragment.xml | 250 ++++++++++++++++++ .../bus_schedule_fragment.xml | 3 - .../main/res/layout/bus_schedule_fragment.xml | 25 +- 4 files changed, 263 insertions(+), 20 deletions(-) create mode 100644 app/src/main/res/layout-h470dp/bus_schedule_fragment.xml rename app/src/main/res/{layout-land => layout-w960dp}/bus_schedule_fragment.xml (98%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0e3bb74f..8196d06a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ @@ -11,8 +12,8 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:largeHeap="true" - android:resizeableActivity="false" - android:theme="@style/AppTheme"> + android:theme="@style/AppTheme" + tools:ignore="GoogleAppIndexingWarning"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout-land/bus_schedule_fragment.xml b/app/src/main/res/layout-w960dp/bus_schedule_fragment.xml similarity index 98% rename from app/src/main/res/layout-land/bus_schedule_fragment.xml rename to app/src/main/res/layout-w960dp/bus_schedule_fragment.xml index 1cc7bfab..b1bcb9b2 100644 --- a/app/src/main/res/layout-land/bus_schedule_fragment.xml +++ b/app/src/main/res/layout-w960dp/bus_schedule_fragment.xml @@ -4,9 +4,6 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:baselineAligned="false" - android:orientation="horizontal" - app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context=".activity.MainActivity"> + tools:context=".activity.MainActivity"> @@ -93,7 +91,7 @@ android:id="@+id/tkPreviewImageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginStart="4dp" + android:layout_marginEnd="4dp" android:background="?attr/selectableItemBackgroundBorderless" android:padding="12dp" android:src="@drawable/ic_arrow_left" @@ -131,17 +129,14 @@ android:id="@+id/tndScheduleCardView" android:layout_width="0dp" android:layout_height="0dp" - android:layout_marginLeft="@dimen/card_margin" - android:layout_marginTop="16dp" - android:layout_marginRight="@dimen/card_margin" - android:layout_marginBottom="@dimen/card_margin" + android:layout_margin="@dimen/card_margin" android:background="@color/surface" app:cardCornerRadius="16dp" app:cardElevation="8dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/tkScheduleCardView"> + app:layout_constraintStart_toEndOf="@+id/tkScheduleCardView" + app:layout_constraintTop_toTopOf="parent"> Date: Mon, 14 May 2018 15:08:09 +0900 Subject: [PATCH 25/52] =?UTF-8?q?=E5=88=86=E5=89=B2=E7=94=BB=E9=9D=A2?= =?UTF-8?q?=E3=81=AE=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6=E3=83=88=E8=AA=BF?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sojodia/fragment/BusScheduleFragment.kt | 24 ++-- .../main/res/layout/bus_schedule_fragment.xml | 133 +++++++----------- app/src/main/res/values-h470dp/dimens.xml | 9 ++ app/src/main/res/values/dimens.xml | 10 +- 4 files changed, 80 insertions(+), 96 deletions(-) create mode 100644 app/src/main/res/values-h470dp/dimens.xml diff --git a/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt b/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt index 19970994..2929cfd2 100644 --- a/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt +++ b/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt @@ -111,16 +111,16 @@ class BusScheduleFragment : androidx.fragment.app.Fragment(), BusScheduleContrac } private fun initNextPreviewButton() { - tkNextImageButton.setOnClickListener { + tkNextImageButton?.setOnClickListener { presenter.nextTkBus() } - tkPreviewImageButton.setOnClickListener { + tkPreviewImageButton?.setOnClickListener { presenter.previewTkBus() } - tndNextImageButton.setOnClickListener { + tndNextImageButton?.setOnClickListener { presenter.nextTndBus() } - tndPreviewImageButton.setOnClickListener { + tndPreviewImageButton?.setOnClickListener { presenter.previewTndBus() } } @@ -168,11 +168,11 @@ class BusScheduleFragment : androidx.fragment.app.Fragment(), BusScheduleContrac } override fun showTkNextButton() { - tkNextImageButton.visibility = View.VISIBLE + tkNextImageButton?.visibility = View.VISIBLE } override fun showTkPreviewButton() { - tkPreviewImageButton.visibility = View.VISIBLE + tkPreviewImageButton?.visibility = View.VISIBLE } override fun showTkNoBusLayout() { @@ -180,11 +180,11 @@ class BusScheduleFragment : androidx.fragment.app.Fragment(), BusScheduleContrac } override fun showTndNextButton() { - tndNextImageButton.visibility = View.VISIBLE + tndNextImageButton?.visibility = View.VISIBLE } override fun showTndPreviewButton() { - tndPreviewImageButton.visibility = View.VISIBLE + tndPreviewImageButton?.visibility = View.VISIBLE } override fun showTndNoBusLayout() { @@ -192,11 +192,11 @@ class BusScheduleFragment : androidx.fragment.app.Fragment(), BusScheduleContrac } override fun hideTkNextButton() { - tkNextImageButton.visibility = View.INVISIBLE + tkNextImageButton?.visibility = View.INVISIBLE } override fun hideTkPreviewButton() { - tkPreviewImageButton.visibility = View.INVISIBLE + tkPreviewImageButton?.visibility = View.INVISIBLE } override fun hideTkNoBusLayout() { @@ -204,11 +204,11 @@ class BusScheduleFragment : androidx.fragment.app.Fragment(), BusScheduleContrac } override fun hideTndNextButton() { - tndNextImageButton.visibility = View.INVISIBLE + tndNextImageButton?.visibility = View.INVISIBLE } override fun hideTndPreviewButton() { - tndPreviewImageButton.visibility = View.INVISIBLE + tndPreviewImageButton?.visibility = View.INVISIBLE } override fun hideTndNoBusLayout() { diff --git a/app/src/main/res/layout/bus_schedule_fragment.xml b/app/src/main/res/layout/bus_schedule_fragment.xml index b1bcb9b2..4f581d5f 100644 --- a/app/src/main/res/layout/bus_schedule_fragment.xml +++ b/app/src/main/res/layout/bus_schedule_fragment.xml @@ -25,25 +25,31 @@ + app:layout_constraintTop_toTopOf="@+id/tkTimeTableButton" /> @@ -52,10 +58,12 @@ android:id="@+id/tkBusTimeViewPager" android:layout_width="0dp" android:layout_height="@dimen/bus_time_view_pager_height" - android:layout_marginBottom="8dp" + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" + android:layout_marginBottom="4dp" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toStartOf="@+id/tkNextImageButton" - app:layout_constraintStart_toEndOf="@+id/tkPreviewImageButton" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tkCountdownTextView" /> - - - - + app:layout_constraintTop_toTopOf="@+id/tndTimeTableButton" /> @@ -171,10 +164,12 @@ android:id="@+id/tndBusTimeViewPager" android:layout_width="0dp" android:layout_height="@dimen/bus_time_view_pager_height" - android:layout_marginBottom="8dp" + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" + android:layout_marginBottom="4dp" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toStartOf="@+id/tndNextImageButton" - app:layout_constraintStart_toEndOf="@+id/tndPreviewImageButton" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tndCountdownTextView" /> - - - - + + 64dp + + 28sp + 16sp + 12sp + 16sp + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index caebe19e..c870b769 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -8,14 +8,14 @@ 16dp 8dp - 64dp + 48dp 22sp - 28sp - 16sp + 18sp + 12sp 16sp - 12sp - 16sp + 8sp + 12sp 56sp 22sp From b232f1e14c99332e2dfe3e3cf2ce9a6a7812259e Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Mon, 14 May 2018 16:59:32 +0900 Subject: [PATCH 26/52] =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=82=BB=E3=83=B3?= =?UTF-8?q?=E3=82=B9=E3=81=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- app/licenses.yml | 151 ++++++-- app/src/main/assets/licenses.html | 552 ++++++++++++++++++++++++++++-- 3 files changed, 648 insertions(+), 57 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index be03e2b9..2b5b50a7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -68,7 +68,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.0.0-alpha1' implementation 'androidx.recyclerview:recyclerview:1.0.0-alpha1' - implementation 'androidx.legacy:legacy-preference-v14:1.0.0-alpha1' + implementation 'androidx.preference:preference:1.0.0-alpha1' implementation "com.squareup.okhttp3:okhttp:$okhttp_version" implementation "com.squareup.okhttp3:logging-interceptor:$okhttp_version" diff --git a/app/licenses.yml b/app/licenses.yml index f4bff876..f56f8da5 100644 --- a/app/licenses.yml +++ b/app/licenses.yml @@ -1,8 +1,127 @@ -# SupportLibrary -- artifact: com.android.support:+:+ - name: Android Support Libraries +# AndroidX +- artifact: androidx.core:core:+ + name: Android Support Library compat copyrightHolder: The Android Open Source Project - license: apache2 + license: The Apache Software License, Version 2.0 + licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt + url: http://developer.android.com/tools/extras/support-library.html +- artifact: androidx.drawerlayout:drawerlayout:+ + name: Android Support Library Drawer Layout + skip: true +- artifact: androidx.documentfile:documentfile:+ + name: Android Support Library Document File + skip: true +- artifact: androidx.interpolator:interpolator:+ + name: Android Support Library Interpolators + skip: true +- artifact: androidx.vectordrawable:vectordrawable:+ + name: Android Support VectorDrawable + skip: true +- artifact: androidx.legacy:legacy-support-core-ui:+ + name: Android Support Library core UI + skip: true +- artifact: androidx.arch.core:core-runtime:+ + name: Android Arch-Runtime + skip: true +- artifact: androidx.lifecycle:lifecycle-common:+ + name: Android Lifecycle-Common + skip: true +- artifact: androidx.viewpager:viewpager:+ + name: Android Support Library View Pager + skip: true +- artifact: androidx.transition:transition:+ + name: Android Transition Support Library + skip: true +- artifact: androidx.print:print:+ + name: Android Support Library Print + skip: true +- artifact: androidx.arch.core:core-common:+ + name: Android Arch-Common + skip: true +- artifact: androidx.loader:loader:+ + name: Android Support Library loader + skip: true +- artifact: androidx.lifecycle:lifecycle-runtime:+ + name: Android Lifecycle Runtime + skip: true +- artifact: androidx.annotation:annotation:+ + name: Android Support Library Annotations + skip: true +- artifact: androidx.swiperefreshlayout:swiperefreshlayout:+ + name: Android Support Library Custom View + skip: true +- artifact: androidx.slidingpanelayout:slidingpanelayout:+ + name: Android Support Library Sliding Pane Layout + skip: true +- artifact: androidx.cardview:cardview:+ + name: Android Support CardView v7 + skip: true +- artifact: androidx.legacy:legacy-support-core-utils:+ + name: Android Support Library core utils + skip: true +- artifact: androidx.lifecycle:lifecycle-livedata-core:+ + name: Android Lifecycle LiveData Core + skip: true +- artifact: androidx.preference:preference:+ + name: Android Support Preference v7 + skip: true +- artifact: androidx.fragment:fragment:+ + name: Android Support Library fragment + skip: true +- artifact: androidx.cursoradapter:cursoradapter:+ + name: Android Support Library Cursor Adapter + skip: true +- artifact: androidx.asynclayoutinflater:asynclayoutinflater:+ + name: Android Support Library Async Layout Inflater + skip: true +- artifact: androidx.vectordrawable:vectordrawable-animated:+ + name: Android Support AnimatedVectorDrawable + skip: true +- artifact: androidx.customview:customview:+ + name: Android Support Library Custom View + skip: true +- artifact: androidx.lifecycle:lifecycle-viewmodel:+ + name: Android Lifecycle ViewModel + skip: true +- artifact: androidx.recyclerview:recyclerview:+ + name: Android Support RecyclerView v7 + skip: true +- artifact: androidx.collection:collection:+ + name: Android Support Library collections + skip: true +- artifact: androidx.appcompat:appcompat:+ + name: Android AppCompat Library v7 + skip: true +- artifact: androidx.coordinatorlayout:coordinatorlayout:+ + name: Android Support Library Coordinator Layout + skip: true +- artifact: androidx.localbroadcastmanager:localbroadcastmanager:+ + name: Android Support Library Local Broadcast Manager + skip: true + +- artifact: androidx.core:core-ktx:+ + name: Android KTX Core + copyrightHolder: The Android Open Source Project + license: The Apache Software License, Version 2.0 + licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt + url: https://github.com/android/android-ktx + +- artifact: androidx.constraintlayout:constraintlayout:+ + name: Android ConstraintLayout + copyrightHolder: The Android Open Source Project + license: The Apache Software License, Version 2.0 + licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt + url: http://tools.android.com +- artifact: androidx.constraintlayout:constraintlayout-solver:+ + name: Android ConstraintLayout Solver + skip: true + +- artifact: com.google.android.material:material:+ + name: Material Components for Android + copyrightHolder: The Android Open Source Project + license: The Apache Software License, Version 2.0 + licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt + url: http://developer.android.com/tools/extras/support-library.html # Kotlin - artifact: org.jetbrains.kotlin:kotlin-stdlib:+ @@ -18,20 +137,6 @@ - artifact: org.jetbrains.kotlin:kotlin-stdlib-jre7:+ skip: true -# arch -- artifact: android.arch.core:common:+ - skip: true -- artifact: android.arch.lifecycle:common:+ - skip: true -- artifact: android.arch.lifecycle:runtime:+ - skip: true -- artifact: android.arch.lifecycle:viewmodel:+ - skip: true -- artifact: android.arch.core:runtime:+ - skip: true -- artifact: android.arch.lifecycle:livedata-core:+ - skip: true - # Okhttp - artifact: com.squareup.okhttp3:okhttp:+ name: OkHttp @@ -96,12 +201,4 @@ - artifact: com.squareup.moshi:moshi:+ name: Moshi copyrightHolder: Square, Inc. - license: Apache 2.0 - -# Android-ktx -- artifact: androidx.core:core-ktx:+ - name: Android KTX Core - copyrightHolder: The Android Open Source Project - license: The Apache Software License, Version 2.0 - licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt - url: https://github.com/android/android-ktx \ No newline at end of file + license: Apache 2.0 \ No newline at end of file diff --git a/app/src/main/assets/licenses.html b/app/src/main/assets/licenses.html index b806c550..e52766f5 100644 --- a/app/src/main/assets/licenses.html +++ b/app/src/main/assets/licenses.html @@ -77,7 +77,7 @@
-

Android Support Libraries

+

Android Support Library compat

Copyright © The Android Open Source Project. All rights reserved.

http://developer.android.com/tools/extras/support-library.html

@@ -324,9 +324,503 @@

APPENDIX: How to apply the Apache License to your work.

-

org.jetbrains.kotlin:kotlin-stdlib

-

Copyright © JetBrains s.r.o. All rights reserved.

-

https://kotlinlang.org/

+

Android KTX Core

+

Copyright © The Android Open Source Project. All rights reserved.

+

https://github.com/android/android-ktx

+ +
+

+ Apache License +
+ Version 2.0, January 2004 +
+ http://www.apache.org/licenses/ +

+

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

1. Definitions.

+

+ "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. +

+

+ "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. +

+

+ "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. +

+

+ "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. +

+

+ "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. +

+

+ "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. +

+

+ "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). +

+

+ "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. +

+

+ "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." +

+

+ "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. +

+
+

2. Grant of Copyright License.

+

+ Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. +

+
+
+

3. Grant of Patent License.

+

+ Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. +

+
+
+

4. Redistribution.

+

+ You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: +

+
+
    +
  • + You must give any other recipients of the Work or + Derivative Works a copy of this License; and +
  • +
  • + You must cause any modified files to carry prominent notices + stating that You changed the files; and +
  • +
  • + You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of | + the Derivative Works; and +
  • +
  • + If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. +
  • +
+

+ You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. +

+
+

5. Submission of Contributions.

+

+ Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. +

+
+
+

6. Trademarks.

+

+ This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. +

+
+
+

7. Disclaimer of Warranty.

+

+ Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. +

+
+
+

8. Limitation of Liability.

+

+ In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. +

+
+
+

9. Accepting Warranty or Additional Liability.

+

+ While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. +

+
+

END OF TERMS AND CONDITIONS

+

APPENDIX: How to apply the Apache License to your work.

+

+ To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. +

+
Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+
+
+
+ +

Android ConstraintLayout

+

Copyright © The Android Open Source Project. All rights reserved.

+

http://tools.android.com

+ +
+

+ Apache License +
+ Version 2.0, January 2004 +
+ http://www.apache.org/licenses/ +

+

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

1. Definitions.

+

+ "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. +

+

+ "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. +

+

+ "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. +

+

+ "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. +

+

+ "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. +

+

+ "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. +

+

+ "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). +

+

+ "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. +

+

+ "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." +

+

+ "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. +

+
+

2. Grant of Copyright License.

+

+ Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. +

+
+
+

3. Grant of Patent License.

+

+ Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. +

+
+
+

4. Redistribution.

+

+ You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: +

+
+
    +
  • + You must give any other recipients of the Work or + Derivative Works a copy of this License; and +
  • +
  • + You must cause any modified files to carry prominent notices + stating that You changed the files; and +
  • +
  • + You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of | + the Derivative Works; and +
  • +
  • + If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. +
  • +
+

+ You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. +

+
+

5. Submission of Contributions.

+

+ Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. +

+
+
+

6. Trademarks.

+

+ This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. +

+
+
+

7. Disclaimer of Warranty.

+

+ Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. +

+
+
+

8. Limitation of Liability.

+

+ In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. +

+
+
+

9. Accepting Warranty or Additional Liability.

+

+ While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. +

+
+

END OF TERMS AND CONDITIONS

+

APPENDIX: How to apply the Apache License to your work.

+

+ To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. +

+
Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+
+
+
+ +

Material Components for Android

+

Copyright © The Android Open Source Project. All rights reserved.

+

http://developer.android.com/tools/extras/support-library.html

@@ -571,9 +1065,9 @@

APPENDIX: How to apply the Apache License to your work.

-

OkHttp

-

Copyright © Square, Inc. All rights reserved.

- +

org.jetbrains.kotlin:kotlin-stdlib

+

Copyright © JetBrains s.r.o. All rights reserved.

+

https://kotlinlang.org/

@@ -818,7 +1312,7 @@

APPENDIX: How to apply the Apache License to your work.

-

Okio

+

OkHttp

Copyright © Square, Inc. All rights reserved.

@@ -1065,9 +1559,9 @@

APPENDIX: How to apply the Apache License to your work.

-

RxAndroid

-

Copyright © The RxAndroid authors. All rights reserved.

-

https://github.com/ReactiveX/RxAndroid

+

Okio

+

Copyright © Square, Inc. All rights reserved.

+

@@ -1312,9 +1806,9 @@

APPENDIX: How to apply the Apache License to your work.

-

rxjava

-

Copyright © RxJava Contributors. All rights reserved.

-

https://github.com/ReactiveX/RxJava

+

RxAndroid

+

Copyright © The RxAndroid authors. All rights reserved.

+

https://github.com/ReactiveX/RxAndroid

@@ -1559,9 +2053,9 @@

APPENDIX: How to apply the Apache License to your work.

-

Dagger

-

Copyright © The Dagger Authors. All rights reserved.

-

https://github.com/google/dagger

+

rxjava

+

Copyright © RxJava Contributors. All rights reserved.

+

https://github.com/ReactiveX/RxJava

@@ -1806,9 +2300,9 @@

APPENDIX: How to apply the Apache License to your work.

-

Retrofit

-

Copyright © Square, Inc. All rights reserved.

- +

Dagger

+

Copyright © The Dagger Authors. All rights reserved.

+

https://github.com/google/dagger

@@ -2053,9 +2547,9 @@

APPENDIX: How to apply the Apache License to your work.

-

Kotshi

-

Copyright © Nicklas Ansman Giertz. All rights reserved.

-

https://github.com/ansman/kotshi

+

Retrofit

+

Copyright © Square, Inc. All rights reserved.

+

@@ -2300,9 +2794,9 @@

APPENDIX: How to apply the Apache License to your work.

-

Moshi

-

Copyright © Square, Inc. All rights reserved.

- +

Kotshi

+

Copyright © Nicklas Ansman Giertz. All rights reserved.

+

https://github.com/ansman/kotshi

@@ -2547,9 +3041,9 @@

APPENDIX: How to apply the Apache License to your work.

-

Android KTX Core

-

Copyright © The Android Open Source Project. All rights reserved.

-

https://github.com/android/android-ktx

+

Moshi

+

Copyright © Square, Inc. All rights reserved.

+

From e33af14af8f6d9c3f05151a40e222aa27c35cdfd Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Mon, 14 May 2018 17:08:09 +0900 Subject: [PATCH 27/52] =?UTF-8?q?=E3=82=B9=E3=82=AF=E3=83=AD=E3=83=BC?= =?UTF-8?q?=E3=83=AB=E3=83=90=E3=83=BC=E3=82=92=E6=B6=88=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/activity_licenses.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/layout/activity_licenses.xml b/app/src/main/res/layout/activity_licenses.xml index 6160a552..1712efac 100644 --- a/app/src/main/res/layout/activity_licenses.xml +++ b/app/src/main/res/layout/activity_licenses.xml @@ -24,6 +24,7 @@ android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent" + android:scrollbars="none" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> \ No newline at end of file From 4c931e383dce476666f77f6e950fae96808a2282 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Mon, 14 May 2018 17:18:05 +0900 Subject: [PATCH 28/52] =?UTF-8?q?=E3=83=9E=E3=83=BC=E3=82=B8=E3=83=B3?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/values-h470dp/dimens.xml | 1 + app/src/main/res/values/dimens.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-h470dp/dimens.xml b/app/src/main/res/values-h470dp/dimens.xml index 554b37f8..75c49928 100644 --- a/app/src/main/res/values-h470dp/dimens.xml +++ b/app/src/main/res/values-h470dp/dimens.xml @@ -1,4 +1,5 @@ + 16dp 64dp diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index c870b769..d992dbe7 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,6 +1,6 @@ - 16dp + 8dp 12dp 16dp 16dp From 59f7ebf20222bd14f248cae20dcd2464345f181d Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Mon, 14 May 2018 20:36:32 +0900 Subject: [PATCH 29/52] =?UTF-8?q?=E3=83=9C=E3=82=BF=E3=83=B3=E3=81=AE?= =?UTF-8?q?=E3=82=B5=E3=82=A4=E3=82=BA=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/bus_schedule_fragment.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/layout/bus_schedule_fragment.xml b/app/src/main/res/layout/bus_schedule_fragment.xml index 4f581d5f..c14cd660 100644 --- a/app/src/main/res/layout/bus_schedule_fragment.xml +++ b/app/src/main/res/layout/bus_schedule_fragment.xml @@ -46,10 +46,10 @@ @@ -152,10 +152,10 @@ From a40ab5bf7a6beba0f9b9eed111aac83b104f0030 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Tue, 15 May 2018 16:42:22 +0900 Subject: [PATCH 30/52] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AA=E3=83=90?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 -- 1 file changed, 2 deletions(-) diff --git a/build.gradle b/build.gradle index f253fa38..749439da 100644 --- a/build.gradle +++ b/build.gradle @@ -2,8 +2,6 @@ buildscript { ext { kotlin_version = '1.2.41' - ktx_version = '0.3' - support_library_version = '27.1.1' okhttp_version = '3.9.0' kotshi_version = '1.0.2' retrofit_version = '2.3.0' From 45aa5cfb005b16e9c9450664ab80f7d8c8b6f866 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Thu, 17 May 2018 14:16:40 +0900 Subject: [PATCH 31/52] =?UTF-8?q?=E6=99=82=E5=88=BB=E8=A1=A8=E3=81=AE?= =?UTF-8?q?=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6=E3=83=88=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/adapter/TimeTableRowAdapter.kt | 2 +- app/src/main/res/layout/dialog_time_table.xml | 164 ++++++++---------- .../main/res/layout/holder_time_table_row.xml | 48 ++--- app/src/main/res/values/colors.xml | 10 +- app/src/main/res/values/dimens.xml | 4 +- 5 files changed, 100 insertions(+), 128 deletions(-) diff --git a/app/src/main/kotlin/com/numero/sojodia/view/adapter/TimeTableRowAdapter.kt b/app/src/main/kotlin/com/numero/sojodia/view/adapter/TimeTableRowAdapter.kt index e14ca5a8..9baa54fb 100644 --- a/app/src/main/kotlin/com/numero/sojodia/view/adapter/TimeTableRowAdapter.kt +++ b/app/src/main/kotlin/com/numero/sojodia/view/adapter/TimeTableRowAdapter.kt @@ -8,7 +8,7 @@ import com.numero.sojodia.model.TimeTableRow import com.numero.sojodia.view.TimeTableRowHolder import java.util.* -class TimeTableRowAdapter : androidx.recyclerview.widget.RecyclerView.Adapter() { +class TimeTableRowAdapter : RecyclerView.Adapter() { var tableRowList: MutableList? = null set(value) { diff --git a/app/src/main/res/layout/dialog_time_table.xml b/app/src/main/res/layout/dialog_time_table.xml index dfa16666..08da7b3d 100644 --- a/app/src/main/res/layout/dialog_time_table.xml +++ b/app/src/main/res/layout/dialog_time_table.xml @@ -10,7 +10,6 @@ android:id="@+id/toolbar" android:layout_width="0dp" android:layout_height="?attr/actionBarSize" - app:layout_constraintBottom_toTopOf="@+id/headerLayout" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -18,99 +17,88 @@ app:subtitleTextColor="@color/time_table_dialog_toolbar_text" app:titleTextColor="@color/time_table_dialog_toolbar_text" /> - - + + + + + + + app:layout_constraintStart_toEndOf="@+id/headerSaturdayTextView" + app:layout_constraintTop_toTopOf="@+id/headerSaturdayTextView" /> - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - #FFFFFF #FFFFFF - #1F000000 + #1E000000 @color/secondary @@ -26,12 +26,12 @@ #FFFFFF #8BC34A - #212121 - #212121 + #99000000 + #99000000 #2196F3 #E91E63 - #757575 - #1F000000 + #DE000000 + #1E000000 #FFFF7F \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index d992dbe7..2b085ef9 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -22,8 +22,8 @@ 36dp 1dp - 2dp + 4dp 14sp - 16sp + 14sp From a295a0f7be9214557a39f802cc0f5de3e9b94f6d Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Thu, 17 May 2018 15:09:17 +0900 Subject: [PATCH 32/52] =?UTF-8?q?=E7=84=A1=E9=99=90=E3=81=AB=E6=99=82?= =?UTF-8?q?=E5=88=BB=E3=81=8C=E5=A2=97=E3=81=88=E3=82=8B=E3=81=AE=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../numero/sojodia/presenter/TimeTablePresenter.kt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/app/src/main/kotlin/com/numero/sojodia/presenter/TimeTablePresenter.kt b/app/src/main/kotlin/com/numero/sojodia/presenter/TimeTablePresenter.kt index c17e382e..e3fcfce6 100644 --- a/app/src/main/kotlin/com/numero/sojodia/presenter/TimeTablePresenter.kt +++ b/app/src/main/kotlin/com/numero/sojodia/presenter/TimeTablePresenter.kt @@ -16,19 +16,18 @@ class TimeTablePresenter(private val view: TimeTableContract.View, // バスは6時から23時しか動いていない (6..23).mapTo(timeTableRowList) { TimeTableRow(it) } - } - - override fun subscribe() { - view.showCurrentRoute(route) - view.showCurrentReciprocate(reciprocate) - + val list = if (route == Route.TK) { setupTkBusTimeList() } else { setupTndBusTimeList() } mapTimeTableRow(list) + } + override fun subscribe() { + view.showCurrentRoute(route) + view.showCurrentReciprocate(reciprocate) view.showTimeTableRowList(timeTableRowList) } From 3e462086b9d2e727e882cb0f5e786bf2f6ad427c Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Fri, 18 May 2018 11:33:34 +0900 Subject: [PATCH 33/52] =?UTF-8?q?AndroidStudio=E3=81=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 32440290..c3e157ee 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # SojoDia -![Android Studio](https://img.shields.io/badge/Android%20Studio-3.2%20Canary14-green.svg) +![Android Studio](https://img.shields.io/badge/Android%20Studio-3.2%20Canary15-green.svg) ![Kotlin](https://img.shields.io/badge/kotlin-1.2.41-yellow.svg) ## About diff --git a/build.gradle b/build.gradle index 749439da..af00d768 100644 --- a/build.gradle +++ b/build.gradle @@ -16,7 +16,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.2.0-alpha14' + classpath 'com.android.tools.build:gradle:3.2.0-alpha15' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" From 281c47556c76f02f42fdbbc0e20bc8b23c6e2005 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Fri, 18 May 2018 16:31:56 +0900 Subject: [PATCH 34/52] =?UTF-8?q?=E3=82=A2=E3=83=97=E3=83=AA=E3=82=A2?= =?UTF-8?q?=E3=82=A4=E3=82=B3=E3=83=B3=E3=81=AE=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/ic_launcher-web.png | Bin 0 -> 36163 bytes .../res/drawable/ic_launcher_foreground.xml | 27 ++++++++++++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 ++++ .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 ++++ app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 2602 -> 3798 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 3798 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 1670 -> 2412 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2412 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 3446 -> 5394 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 5394 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 4797 -> 8383 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 8383 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 6458 -> 12054 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 12054 bytes .../res/values/ic_launcher_background.xml | 4 +++ 15 files changed, 41 insertions(+) create mode 100644 app/src/main/ic_launcher-web.png create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/values/ic_launcher_background.xml diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png new file mode 100644 index 0000000000000000000000000000000000000000..6efd76c1951621a435af1f7f9ee216755175d57e GIT binary patch literal 36163 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 F2>_}TL1h2{ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..6bdaaf2f --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,27 @@ + + + + + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..7353dbd1 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..7353dbd1 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index 757c2a0784b1d2f9bd7d66a6c0dfcea120d7b828..54d802a18fecbfdc0b859915c51b01e9965ef6dc 100644 GIT binary patch literal 3798 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 KMNUMnLSTYThj8cs diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..0fc955b1f517548a469bc5f83a41396bdaa436a2 GIT binary patch literal 2412 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

CO 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

CO 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 VHX3ZpQ8@qr002ovPDHLkV1iCp@tyzx literal 4797 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 XQGF5X=uDG<00000NkvXXu0mjf=uSK4 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..20c905723e090a45717f78cc53edf045be0c82c7 GIT binary patch literal 8383 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 VHX3ZpQ8@qr002ovPDHLkV1iCp@tyzx literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 3edeb5fd73ecc29b2efff7233d4cfa79b6297b1f..f866dcdc6c1bf4b44b7349bf606fbeb1280a3076 100644 GIT binary patch literal 12054 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 fT5rqt#cSb*plB0iFW>5eB|EsI3 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 Up9D$#O8@`>07*qoM6N<$f|RFgdjJ3c diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..f866dcdc6c1bf4b44b7349bf606fbeb1280a3076 GIT binary patch literal 12054 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 fT5rqt#cSb*p + + #FFFFFF + \ No newline at end of file From 6e637466aa4ffaf493670c55c56aa9fa20d95692 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sat, 19 May 2018 10:56:39 +0900 Subject: [PATCH 35/52] =?UTF-8?q?Dagger=E3=82=92=E6=B6=88=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 6 --- app/proguard-rules.pro | 4 -- .../kotlin/com/numero/sojodia/IApplication.kt | 10 +++++ .../com/numero/sojodia/SojoDiaApplication.kt | 40 +++++++++++++---- .../numero/sojodia/activity/MainActivity.kt | 8 ++-- .../sojodia/activity/SettingsActivity.kt | 12 ++--- .../kotlin/com/numero/sojodia/di/ApiModule.kt | 44 ------------------- .../numero/sojodia/di/ApplicationComponent.kt | 29 ------------ .../numero/sojodia/di/ApplicationModule.kt | 14 ------ .../com/numero/sojodia/di/RepositoryModule.kt | 21 --------- .../extension/AppCompatActivityExtension.kt | 7 ++- .../sojodia/extension/FragmentExtension.kt | 7 ++- .../sojodia/fragment/BusScheduleFragment.kt | 13 +++--- .../fragment/TimeTableDialogFragment.kt | 8 ++-- .../sojodia/service/UpdateBusDataService.kt | 26 ++++++----- build.gradle | 1 - 16 files changed, 77 insertions(+), 173 deletions(-) create mode 100644 app/src/main/kotlin/com/numero/sojodia/IApplication.kt delete mode 100644 app/src/main/kotlin/com/numero/sojodia/di/ApiModule.kt delete mode 100644 app/src/main/kotlin/com/numero/sojodia/di/ApplicationComponent.kt delete mode 100644 app/src/main/kotlin/com/numero/sojodia/di/ApplicationModule.kt delete mode 100644 app/src/main/kotlin/com/numero/sojodia/di/RepositoryModule.kt diff --git a/app/build.gradle b/app/build.gradle index 2b5b50a7..0622341e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -82,10 +82,4 @@ dependencies { implementation "com.squareup.retrofit2:retrofit:$retrofit_version" implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit_version" implementation "com.squareup.retrofit2:converter-moshi:$retrofit_version" - - implementation "com.google.dagger:dagger:$dagger_version" - implementation "com.google.dagger:dagger-android:$dagger_version" - implementation "com.google.dagger:dagger-android-support:$dagger_version" - kapt "com.google.dagger:dagger-compiler:$dagger_version" - kapt "com.google.dagger:dagger-android-processor:$dagger_version" } diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 00029c51..06741cef 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -23,8 +23,4 @@ public ; } -# Dagger --keep class com.google.errorprone.annotations.** { *; } --dontwarn com.google.errorprone.annotations.** - -keep class com.numero.sojodia.model.** { *; } \ No newline at end of file diff --git a/app/src/main/kotlin/com/numero/sojodia/IApplication.kt b/app/src/main/kotlin/com/numero/sojodia/IApplication.kt new file mode 100644 index 00000000..99ed0d3f --- /dev/null +++ b/app/src/main/kotlin/com/numero/sojodia/IApplication.kt @@ -0,0 +1,10 @@ +package com.numero.sojodia + +import com.numero.sojodia.repository.BusDataRepository +import com.numero.sojodia.repository.ConfigRepository + +interface IApplication { + val configRepository: ConfigRepository + + val busDataRepository: BusDataRepository +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/numero/sojodia/SojoDiaApplication.kt b/app/src/main/kotlin/com/numero/sojodia/SojoDiaApplication.kt index 581665b0..9fc91b7c 100644 --- a/app/src/main/kotlin/com/numero/sojodia/SojoDiaApplication.kt +++ b/app/src/main/kotlin/com/numero/sojodia/SojoDiaApplication.kt @@ -1,19 +1,41 @@ package com.numero.sojodia import android.app.Application -import com.numero.sojodia.di.* +import com.numero.sojodia.api.ApplicationJsonAdapterFactory +import com.numero.sojodia.api.BusDataApi +import com.numero.sojodia.repository.BusDataRepository +import com.numero.sojodia.repository.ConfigRepository +import com.squareup.moshi.Moshi +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor +import retrofit2.Retrofit +import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory +import retrofit2.converter.moshi.MoshiConverterFactory -class SojoDiaApplication : Application() { +class SojoDiaApplication : Application(), IApplication { - lateinit var component: ApplicationComponent + override val configRepository: ConfigRepository by lazy { ConfigRepository(this) } - override fun onCreate() { - super.onCreate() + override val busDataRepository: BusDataRepository by lazy { + val busDataApi = retrofit.create(BusDataApi::class.java) + BusDataRepository(this, busDataApi) + } + + private val retrofit: Retrofit = createRetrofit() - component = DaggerApplicationComponent.builder() - .applicationModule(ApplicationModule(this)) - .repositoryModule(RepositoryModule()) - .apiModule(ApiModule()) + private fun createRetrofit(): Retrofit { + val okHttpClient = OkHttpClient.Builder().apply { + if (BuildConfig.DEBUG) { + addInterceptor(HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)) + } + }.build() + return Retrofit.Builder() + .baseUrl(BuildConfig.BUS_DATA_URL) + .client(okHttpClient) + .addConverterFactory(MoshiConverterFactory.create(Moshi.Builder() + .add(ApplicationJsonAdapterFactory.INSTANCE) + .build())) + .addCallAdapterFactory(RxJava2CallAdapterFactory.createAsync()) .build() } } diff --git a/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt b/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt index ff10521c..c44f9e50 100644 --- a/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt +++ b/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt @@ -10,7 +10,7 @@ import android.view.MenuItem import androidx.appcompat.app.AppCompatActivity import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.numero.sojodia.R -import com.numero.sojodia.extension.component +import com.numero.sojodia.extension.app import com.numero.sojodia.extension.getTodayString import com.numero.sojodia.extension.showDialog import com.numero.sojodia.fragment.BusScheduleFragment @@ -23,7 +23,6 @@ import com.numero.sojodia.util.BroadCastUtil import com.numero.sojodia.view.adapter.BusScheduleFragmentPagerAdapter import kotlinx.android.synthetic.main.activity_main.* import java.util.* -import javax.inject.Inject class MainActivity : AppCompatActivity(), BusScheduleFragment.BusScheduleFragmentListener { @@ -33,14 +32,13 @@ class MainActivity : AppCompatActivity(), BusScheduleFragment.BusScheduleFragmen } } - @Inject - lateinit var busDataRepository: BusDataRepository + private val busDataRepository: BusDataRepository + get() = app.busDataRepository override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setSupportActionBar(toolbar) - component?.inject(this) initViews() diff --git a/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt b/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt index a8bc9ab8..2a580ddc 100644 --- a/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt +++ b/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt @@ -3,28 +3,24 @@ package com.numero.sojodia.activity import android.content.Context import android.content.Intent import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import android.view.MenuItem - +import androidx.appcompat.app.AppCompatActivity import com.numero.sojodia.R -import com.numero.sojodia.extension.component +import com.numero.sojodia.extension.app import com.numero.sojodia.fragment.SettingsFragment import com.numero.sojodia.presenter.SettingsPresenter import com.numero.sojodia.repository.ConfigRepository import kotlinx.android.synthetic.main.activity_settings.* -import javax.inject.Inject - class SettingsActivity : AppCompatActivity() { - @Inject - lateinit var configRepository: ConfigRepository + private val configRepository: ConfigRepository + get() = app.configRepository override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_settings) setSupportActionBar(toolbar) - component?.inject(this) supportActionBar?.setDisplayHomeAsUpEnabled(true) diff --git a/app/src/main/kotlin/com/numero/sojodia/di/ApiModule.kt b/app/src/main/kotlin/com/numero/sojodia/di/ApiModule.kt deleted file mode 100644 index c54422af..00000000 --- a/app/src/main/kotlin/com/numero/sojodia/di/ApiModule.kt +++ /dev/null @@ -1,44 +0,0 @@ -package com.numero.sojodia.di - -import com.numero.sojodia.BuildConfig -import com.numero.sojodia.api.ApplicationJsonAdapterFactory -import com.numero.sojodia.api.BusDataApi -import com.squareup.moshi.Moshi -import dagger.Module -import dagger.Provides -import okhttp3.OkHttpClient -import okhttp3.logging.HttpLoggingInterceptor -import retrofit2.Retrofit -import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory -import retrofit2.converter.moshi.MoshiConverterFactory -import javax.inject.Singleton - -@Module -class ApiModule { - - @Provides - @Singleton - fun provideOkHttpClient(): OkHttpClient = OkHttpClient.Builder().apply { - if (BuildConfig.DEBUG) { - addInterceptor(HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)) - } - }.build() - - @Provides - @Singleton - fun provideRetrofit(okHttpClient: OkHttpClient): Retrofit { - return Retrofit.Builder() - .baseUrl(BuildConfig.BUS_DATA_URL) - .client(okHttpClient) - .addConverterFactory(MoshiConverterFactory.create(Moshi.Builder() - .add(ApplicationJsonAdapterFactory.INSTANCE) - .build())) - .addCallAdapterFactory(RxJava2CallAdapterFactory.createAsync()) - .build() - } - - @Provides - @Singleton - fun provideBusDataApi(retrofit: Retrofit): BusDataApi = retrofit.create(BusDataApi::class.java) - -} diff --git a/app/src/main/kotlin/com/numero/sojodia/di/ApplicationComponent.kt b/app/src/main/kotlin/com/numero/sojodia/di/ApplicationComponent.kt deleted file mode 100644 index 12c22dbd..00000000 --- a/app/src/main/kotlin/com/numero/sojodia/di/ApplicationComponent.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.numero.sojodia.di - -import com.numero.sojodia.activity.MainActivity -import com.numero.sojodia.activity.SettingsActivity -import com.numero.sojodia.fragment.BusScheduleFragment -import com.numero.sojodia.fragment.TimeTableDialogFragment -import com.numero.sojodia.service.UpdateBusDataService -import dagger.Component -import javax.inject.Singleton - -@Singleton -@Component(modules = [ - (ApplicationModule::class), - (ApiModule::class), - (RepositoryModule::class) -]) -interface ApplicationComponent { - - fun inject(mainActivity: MainActivity) - - fun inject(busScheduleFragment: BusScheduleFragment) - - fun inject(timeTableDialogFragment: TimeTableDialogFragment) - - fun inject(settingsActivity: SettingsActivity) - - fun inject(service: UpdateBusDataService) - -} diff --git a/app/src/main/kotlin/com/numero/sojodia/di/ApplicationModule.kt b/app/src/main/kotlin/com/numero/sojodia/di/ApplicationModule.kt deleted file mode 100644 index eeb73681..00000000 --- a/app/src/main/kotlin/com/numero/sojodia/di/ApplicationModule.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.numero.sojodia.di - -import android.app.Application -import android.content.Context - -import dagger.Module -import dagger.Provides - -@Module -class ApplicationModule(private val application: Application) { - - @Provides - fun provideApplicationContext(): Context = application.applicationContext -} diff --git a/app/src/main/kotlin/com/numero/sojodia/di/RepositoryModule.kt b/app/src/main/kotlin/com/numero/sojodia/di/RepositoryModule.kt deleted file mode 100644 index 1d5b4947..00000000 --- a/app/src/main/kotlin/com/numero/sojodia/di/RepositoryModule.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.numero.sojodia.di - -import android.content.Context -import com.numero.sojodia.api.BusDataApi -import com.numero.sojodia.repository.BusDataRepository -import com.numero.sojodia.repository.ConfigRepository -import dagger.Module -import dagger.Provides -import javax.inject.Singleton - -@Module -class RepositoryModule { - - @Provides - @Singleton - fun provideBusDataRepository(context: Context, busDataApi: BusDataApi): BusDataRepository = BusDataRepository(context, busDataApi) - - @Provides - @Singleton - fun provideConfigRepository(context: Context): ConfigRepository = ConfigRepository(context) -} diff --git a/app/src/main/kotlin/com/numero/sojodia/extension/AppCompatActivityExtension.kt b/app/src/main/kotlin/com/numero/sojodia/extension/AppCompatActivityExtension.kt index 116e6978..ef1aeb69 100644 --- a/app/src/main/kotlin/com/numero/sojodia/extension/AppCompatActivityExtension.kt +++ b/app/src/main/kotlin/com/numero/sojodia/extension/AppCompatActivityExtension.kt @@ -4,11 +4,10 @@ import android.content.DialogInterface import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity -import com.numero.sojodia.SojoDiaApplication -import com.numero.sojodia.di.ApplicationComponent +import com.numero.sojodia.IApplication -val AppCompatActivity.component: ApplicationComponent? - get() = (application as? SojoDiaApplication)?.component +val AppCompatActivity.app: IApplication + get() = application as IApplication fun AppCompatActivity.showDialog(@StringRes message: Int, @StringRes positiveButton: Int, listener: (DialogInterface, Int) -> Unit) { AlertDialog.Builder(this).apply { diff --git a/app/src/main/kotlin/com/numero/sojodia/extension/FragmentExtension.kt b/app/src/main/kotlin/com/numero/sojodia/extension/FragmentExtension.kt index 968f3f86..81ec72ab 100644 --- a/app/src/main/kotlin/com/numero/sojodia/extension/FragmentExtension.kt +++ b/app/src/main/kotlin/com/numero/sojodia/extension/FragmentExtension.kt @@ -1,8 +1,7 @@ package com.numero.sojodia.extension import androidx.fragment.app.Fragment -import com.numero.sojodia.SojoDiaApplication -import com.numero.sojodia.di.ApplicationComponent +import com.numero.sojodia.IApplication -val androidx.fragment.app.Fragment.component: ApplicationComponent? - get() = (activity?.application as? SojoDiaApplication)?.component \ No newline at end of file +val Fragment.app: IApplication + get() = activity?.application as IApplication \ No newline at end of file diff --git a/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt b/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt index 2929cfd2..4a63d9aa 100644 --- a/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt +++ b/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt @@ -2,14 +2,14 @@ package com.numero.sojodia.fragment import android.content.Context import android.os.Bundle -import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.core.os.bundleOf +import androidx.fragment.app.Fragment import com.numero.sojodia.R import com.numero.sojodia.contract.BusScheduleContract -import com.numero.sojodia.extension.component +import com.numero.sojodia.extension.app import com.numero.sojodia.extension.createCountTime import com.numero.sojodia.extension.getTodayStringOnlyFigure import com.numero.sojodia.model.BusTime @@ -22,12 +22,12 @@ import com.numero.sojodia.view.CountDownClockTextView import com.numero.sojodia.view.adapter.BusTimePagerAdapter import kotlinx.android.synthetic.main.bus_schedule_fragment.* import java.util.* -import javax.inject.Inject -class BusScheduleFragment : androidx.fragment.app.Fragment(), BusScheduleContract.View { +class BusScheduleFragment : Fragment(), BusScheduleContract.View { + - @Inject - lateinit var busDataRepository: BusDataRepository + private val busDataRepository: BusDataRepository + get() = app.busDataRepository private lateinit var presenter: BusScheduleContract.Presenter @@ -45,7 +45,6 @@ class BusScheduleFragment : androidx.fragment.app.Fragment(), BusScheduleContrac } override fun onCreate(savedInstanceState: Bundle?) { - component?.inject(this) super.onCreate(savedInstanceState) retainInstance = true diff --git a/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt b/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt index f0ec5583..bfbb63dd 100644 --- a/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt +++ b/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt @@ -11,7 +11,7 @@ import androidx.fragment.app.DialogFragment import androidx.recyclerview.widget.LinearLayoutManager import com.numero.sojodia.R import com.numero.sojodia.contract.TimeTableContract -import com.numero.sojodia.extension.component +import com.numero.sojodia.extension.app import com.numero.sojodia.model.Reciprocate import com.numero.sojodia.model.Route import com.numero.sojodia.model.TimeTableRow @@ -19,7 +19,6 @@ import com.numero.sojodia.presenter.TimeTablePresenter import com.numero.sojodia.repository.BusDataRepository import com.numero.sojodia.view.adapter.TimeTableRowAdapter import kotlinx.android.synthetic.main.dialog_time_table.view.* -import javax.inject.Inject class TimeTableDialogFragment : DialogFragment(), TimeTableContract.View { @@ -28,12 +27,11 @@ class TimeTableDialogFragment : DialogFragment(), TimeTableContract.View { private lateinit var presenter: TimeTableContract.Presenter - @Inject - lateinit var busDataRepository: BusDataRepository + private val busDataRepository: BusDataRepository + get() = app.busDataRepository override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - component?.inject(this) val arguments = arguments ?: return val route = arguments.getSerializable(ARG_ROUTE) as Route diff --git a/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt b/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt index b50bae8f..5218b976 100644 --- a/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt +++ b/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt @@ -3,29 +3,26 @@ package com.numero.sojodia.service import android.app.IntentService import android.content.Intent import android.os.IBinder -import com.numero.sojodia.SojoDiaApplication -import com.numero.sojodia.di.ApplicationComponent +import com.numero.sojodia.IApplication import com.numero.sojodia.manager.NotificationManager import com.numero.sojodia.repository.BusDataRepository import com.numero.sojodia.repository.ConfigRepository import com.numero.sojodia.util.BroadCastUtil -import javax.inject.Inject +import io.reactivex.disposables.Disposable class UpdateBusDataService : IntentService(UpdateBusDataService::class.java.simpleName) { private lateinit var notificationManager: NotificationManager - @Inject - lateinit var busDataRepository: BusDataRepository - @Inject - lateinit var configRepository: ConfigRepository + private val busDataRepository: BusDataRepository + get() = (application as IApplication).busDataRepository + private val configRepository: ConfigRepository + get() = (application as IApplication).configRepository - private val component: ApplicationComponent - get() = (application as SojoDiaApplication).component + private var disposable: Disposable? = null override fun onCreate() { super.onCreate() - component.inject(this) notificationManager = NotificationManager(this) } @@ -36,6 +33,11 @@ class UpdateBusDataService : IntentService(UpdateBusDataService::class.java.simp override fun onDestroy() { super.onDestroy() + disposable?.apply { + if (isDisposed.not()) { + dispose() + } + } notificationManager.cancelNotification() } @@ -53,7 +55,7 @@ class UpdateBusDataService : IntentService(UpdateBusDataService::class.java.simp } private fun checkUpdate() { - busDataRepository.loadBusDataConfig() + disposable = busDataRepository.loadBusDataConfig() .subscribe({ configRepository.apply { masterVersionCode = it.version @@ -69,7 +71,7 @@ class UpdateBusDataService : IntentService(UpdateBusDataService::class.java.simp private fun executeUpdate() { notificationManager.showNotification() - busDataRepository.loadAndSaveBusData().subscribe({ + disposable = busDataRepository.loadAndSaveBusData().subscribe({ }, { it.printStackTrace() stopSelf() diff --git a/build.gradle b/build.gradle index af00d768..7c7c8e12 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,6 @@ buildscript { okhttp_version = '3.9.0' kotshi_version = '1.0.2' retrofit_version = '2.3.0' - dagger_version = '2.15' rxjava_version = '2.1.7' rx_android_version = '2.0.2' } From 1765a8a7d34575d6b4fa397d483aacc3a1495399 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sat, 19 May 2018 11:15:14 +0900 Subject: [PATCH 36/52] =?UTF-8?q?CustomGetter=E3=82=92=E3=81=AA=E3=81=8F?= =?UTF-8?q?=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/kotlin/com/numero/sojodia/activity/MainActivity.kt | 3 +-- .../kotlin/com/numero/sojodia/activity/SettingsActivity.kt | 3 +-- .../com/numero/sojodia/fragment/BusScheduleFragment.kt | 3 +-- .../com/numero/sojodia/fragment/TimeTableDialogFragment.kt | 3 +-- .../com/numero/sojodia/service/UpdateBusDataService.kt | 6 ++---- 5 files changed, 6 insertions(+), 12 deletions(-) diff --git a/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt b/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt index c44f9e50..cb6df4cc 100644 --- a/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt +++ b/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt @@ -32,8 +32,7 @@ class MainActivity : AppCompatActivity(), BusScheduleFragment.BusScheduleFragmen } } - private val busDataRepository: BusDataRepository - get() = app.busDataRepository + private val busDataRepository: BusDataRepository = app.busDataRepository override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt b/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt index 2a580ddc..aadd4430 100644 --- a/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt +++ b/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt @@ -14,8 +14,7 @@ import kotlinx.android.synthetic.main.activity_settings.* class SettingsActivity : AppCompatActivity() { - private val configRepository: ConfigRepository - get() = app.configRepository + private val configRepository: ConfigRepository = app.configRepository override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt b/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt index 4a63d9aa..338a7270 100644 --- a/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt +++ b/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt @@ -26,8 +26,7 @@ import java.util.* class BusScheduleFragment : Fragment(), BusScheduleContract.View { - private val busDataRepository: BusDataRepository - get() = app.busDataRepository + private val busDataRepository: BusDataRepository = app.busDataRepository private lateinit var presenter: BusScheduleContract.Presenter diff --git a/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt b/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt index bfbb63dd..0b1c847c 100644 --- a/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt +++ b/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt @@ -27,8 +27,7 @@ class TimeTableDialogFragment : DialogFragment(), TimeTableContract.View { private lateinit var presenter: TimeTableContract.Presenter - private val busDataRepository: BusDataRepository - get() = app.busDataRepository + private val busDataRepository: BusDataRepository = app.busDataRepository override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt b/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt index 5218b976..185e2ad3 100644 --- a/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt +++ b/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt @@ -14,10 +14,8 @@ class UpdateBusDataService : IntentService(UpdateBusDataService::class.java.simp private lateinit var notificationManager: NotificationManager - private val busDataRepository: BusDataRepository - get() = (application as IApplication).busDataRepository - private val configRepository: ConfigRepository - get() = (application as IApplication).configRepository + private val busDataRepository: BusDataRepository = (application as IApplication).busDataRepository + private val configRepository: ConfigRepository = (application as IApplication).configRepository private var disposable: Disposable? = null From f08a13ae6fa2fb5142707b7ae7975de04d927d75 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sat, 19 May 2018 11:21:08 +0900 Subject: [PATCH 37/52] =?UTF-8?q?=E3=81=AC=E3=82=8B=E3=81=BD=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/kotlin/com/numero/sojodia/activity/MainActivity.kt | 3 ++- .../kotlin/com/numero/sojodia/activity/SettingsActivity.kt | 3 ++- .../com/numero/sojodia/fragment/BusScheduleFragment.kt | 3 ++- .../com/numero/sojodia/fragment/TimeTableDialogFragment.kt | 3 ++- .../com/numero/sojodia/service/UpdateBusDataService.kt | 6 ++++-- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt b/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt index cb6df4cc..c44f9e50 100644 --- a/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt +++ b/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt @@ -32,7 +32,8 @@ class MainActivity : AppCompatActivity(), BusScheduleFragment.BusScheduleFragmen } } - private val busDataRepository: BusDataRepository = app.busDataRepository + private val busDataRepository: BusDataRepository + get() = app.busDataRepository override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt b/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt index aadd4430..2a580ddc 100644 --- a/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt +++ b/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt @@ -14,7 +14,8 @@ import kotlinx.android.synthetic.main.activity_settings.* class SettingsActivity : AppCompatActivity() { - private val configRepository: ConfigRepository = app.configRepository + private val configRepository: ConfigRepository + get() = app.configRepository override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt b/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt index 338a7270..4a63d9aa 100644 --- a/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt +++ b/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt @@ -26,7 +26,8 @@ import java.util.* class BusScheduleFragment : Fragment(), BusScheduleContract.View { - private val busDataRepository: BusDataRepository = app.busDataRepository + private val busDataRepository: BusDataRepository + get() = app.busDataRepository private lateinit var presenter: BusScheduleContract.Presenter diff --git a/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt b/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt index 0b1c847c..bfbb63dd 100644 --- a/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt +++ b/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt @@ -27,7 +27,8 @@ class TimeTableDialogFragment : DialogFragment(), TimeTableContract.View { private lateinit var presenter: TimeTableContract.Presenter - private val busDataRepository: BusDataRepository = app.busDataRepository + private val busDataRepository: BusDataRepository + get() = app.busDataRepository override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt b/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt index 185e2ad3..5218b976 100644 --- a/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt +++ b/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt @@ -14,8 +14,10 @@ class UpdateBusDataService : IntentService(UpdateBusDataService::class.java.simp private lateinit var notificationManager: NotificationManager - private val busDataRepository: BusDataRepository = (application as IApplication).busDataRepository - private val configRepository: ConfigRepository = (application as IApplication).configRepository + private val busDataRepository: BusDataRepository + get() = (application as IApplication).busDataRepository + private val configRepository: ConfigRepository + get() = (application as IApplication).configRepository private var disposable: Disposable? = null From bd68fb96de092f35172c1e09d11d64fd45f89940 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sat, 19 May 2018 12:31:36 +0900 Subject: [PATCH 38/52] =?UTF-8?q?lateinit=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/com/numero/sojodia/IApplication.kt | 8 ++++---- .../com/numero/sojodia/SojoDiaApplication.kt | 17 ++++++++++++----- .../com/numero/sojodia/activity/MainActivity.kt | 4 ++-- .../numero/sojodia/activity/SettingsActivity.kt | 4 ++-- .../sojodia/fragment/BusScheduleFragment.kt | 4 ++-- .../sojodia/fragment/TimeTableDialogFragment.kt | 4 ++-- .../sojodia/service/UpdateBusDataService.kt | 8 ++++---- 7 files changed, 28 insertions(+), 21 deletions(-) diff --git a/app/src/main/kotlin/com/numero/sojodia/IApplication.kt b/app/src/main/kotlin/com/numero/sojodia/IApplication.kt index 99ed0d3f..6010263d 100644 --- a/app/src/main/kotlin/com/numero/sojodia/IApplication.kt +++ b/app/src/main/kotlin/com/numero/sojodia/IApplication.kt @@ -1,10 +1,10 @@ package com.numero.sojodia -import com.numero.sojodia.repository.BusDataRepository -import com.numero.sojodia.repository.ConfigRepository +import com.numero.sojodia.repository.IBusDataRepository +import com.numero.sojodia.repository.IConfigRepository interface IApplication { - val configRepository: ConfigRepository + var configRepository: IConfigRepository - val busDataRepository: BusDataRepository + var busDataRepository: IBusDataRepository } \ No newline at end of file diff --git a/app/src/main/kotlin/com/numero/sojodia/SojoDiaApplication.kt b/app/src/main/kotlin/com/numero/sojodia/SojoDiaApplication.kt index 9fc91b7c..2f5bc1eb 100644 --- a/app/src/main/kotlin/com/numero/sojodia/SojoDiaApplication.kt +++ b/app/src/main/kotlin/com/numero/sojodia/SojoDiaApplication.kt @@ -5,6 +5,8 @@ import com.numero.sojodia.api.ApplicationJsonAdapterFactory import com.numero.sojodia.api.BusDataApi import com.numero.sojodia.repository.BusDataRepository import com.numero.sojodia.repository.ConfigRepository +import com.numero.sojodia.repository.IBusDataRepository +import com.numero.sojodia.repository.IConfigRepository import com.squareup.moshi.Moshi import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor @@ -14,15 +16,20 @@ import retrofit2.converter.moshi.MoshiConverterFactory class SojoDiaApplication : Application(), IApplication { - override val configRepository: ConfigRepository by lazy { ConfigRepository(this) } + override lateinit var configRepository: IConfigRepository - override val busDataRepository: BusDataRepository by lazy { - val busDataApi = retrofit.create(BusDataApi::class.java) - BusDataRepository(this, busDataApi) - } + override lateinit var busDataRepository: IBusDataRepository private val retrofit: Retrofit = createRetrofit() + override fun onCreate() { + super.onCreate() + configRepository = ConfigRepository(this) + + val busDataApi = retrofit.create(BusDataApi::class.java) + busDataRepository = BusDataRepository(this, busDataApi) + } + private fun createRetrofit(): Retrofit { val okHttpClient = OkHttpClient.Builder().apply { if (BuildConfig.DEBUG) { diff --git a/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt b/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt index c44f9e50..f98dd979 100644 --- a/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt +++ b/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt @@ -17,7 +17,7 @@ import com.numero.sojodia.fragment.BusScheduleFragment import com.numero.sojodia.fragment.TimeTableDialogFragment import com.numero.sojodia.model.Reciprocate import com.numero.sojodia.model.Route -import com.numero.sojodia.repository.BusDataRepository +import com.numero.sojodia.repository.IBusDataRepository import com.numero.sojodia.service.UpdateBusDataService import com.numero.sojodia.util.BroadCastUtil import com.numero.sojodia.view.adapter.BusScheduleFragmentPagerAdapter @@ -32,7 +32,7 @@ class MainActivity : AppCompatActivity(), BusScheduleFragment.BusScheduleFragmen } } - private val busDataRepository: BusDataRepository + private val busDataRepository: IBusDataRepository get() = app.busDataRepository override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt b/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt index 2a580ddc..30b5d030 100644 --- a/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt +++ b/app/src/main/kotlin/com/numero/sojodia/activity/SettingsActivity.kt @@ -9,12 +9,12 @@ import com.numero.sojodia.R import com.numero.sojodia.extension.app import com.numero.sojodia.fragment.SettingsFragment import com.numero.sojodia.presenter.SettingsPresenter -import com.numero.sojodia.repository.ConfigRepository +import com.numero.sojodia.repository.IConfigRepository import kotlinx.android.synthetic.main.activity_settings.* class SettingsActivity : AppCompatActivity() { - private val configRepository: ConfigRepository + private val configRepository: IConfigRepository get() = app.configRepository override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt b/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt index 4a63d9aa..5948a818 100644 --- a/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt +++ b/app/src/main/kotlin/com/numero/sojodia/fragment/BusScheduleFragment.kt @@ -17,7 +17,7 @@ import com.numero.sojodia.model.Reciprocate import com.numero.sojodia.model.Route import com.numero.sojodia.model.Week import com.numero.sojodia.presenter.BusSchedulePresenter -import com.numero.sojodia.repository.BusDataRepository +import com.numero.sojodia.repository.IBusDataRepository import com.numero.sojodia.view.CountDownClockTextView import com.numero.sojodia.view.adapter.BusTimePagerAdapter import kotlinx.android.synthetic.main.bus_schedule_fragment.* @@ -26,7 +26,7 @@ import java.util.* class BusScheduleFragment : Fragment(), BusScheduleContract.View { - private val busDataRepository: BusDataRepository + private val busDataRepository: IBusDataRepository get() = app.busDataRepository private lateinit var presenter: BusScheduleContract.Presenter diff --git a/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt b/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt index bfbb63dd..eb00bf0c 100644 --- a/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt +++ b/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt @@ -16,7 +16,7 @@ import com.numero.sojodia.model.Reciprocate import com.numero.sojodia.model.Route import com.numero.sojodia.model.TimeTableRow import com.numero.sojodia.presenter.TimeTablePresenter -import com.numero.sojodia.repository.BusDataRepository +import com.numero.sojodia.repository.IBusDataRepository import com.numero.sojodia.view.adapter.TimeTableRowAdapter import kotlinx.android.synthetic.main.dialog_time_table.view.* @@ -27,7 +27,7 @@ class TimeTableDialogFragment : DialogFragment(), TimeTableContract.View { private lateinit var presenter: TimeTableContract.Presenter - private val busDataRepository: BusDataRepository + private val busDataRepository: IBusDataRepository get() = app.busDataRepository override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt b/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt index 5218b976..2ce7f4dd 100644 --- a/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt +++ b/app/src/main/kotlin/com/numero/sojodia/service/UpdateBusDataService.kt @@ -5,8 +5,8 @@ import android.content.Intent import android.os.IBinder import com.numero.sojodia.IApplication import com.numero.sojodia.manager.NotificationManager -import com.numero.sojodia.repository.BusDataRepository -import com.numero.sojodia.repository.ConfigRepository +import com.numero.sojodia.repository.IBusDataRepository +import com.numero.sojodia.repository.IConfigRepository import com.numero.sojodia.util.BroadCastUtil import io.reactivex.disposables.Disposable @@ -14,9 +14,9 @@ class UpdateBusDataService : IntentService(UpdateBusDataService::class.java.simp private lateinit var notificationManager: NotificationManager - private val busDataRepository: BusDataRepository + private val busDataRepository: IBusDataRepository get() = (application as IApplication).busDataRepository - private val configRepository: ConfigRepository + private val configRepository: IConfigRepository get() = (application as IApplication).configRepository private var disposable: Disposable? = null From a5535616d09b5eaa2f04b9da28192efa22d1000e Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sat, 19 May 2018 14:24:55 +0900 Subject: [PATCH 39/52] =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=82=BB=E3=83=B3?= =?UTF-8?q?=E3=82=B9=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/licenses.yml | 14 -- app/src/main/assets/licenses.html | 247 ------------------------------ 2 files changed, 261 deletions(-) diff --git a/app/licenses.yml b/app/licenses.yml index f56f8da5..f2cbe003 100644 --- a/app/licenses.yml +++ b/app/licenses.yml @@ -165,20 +165,6 @@ - artifact: org.reactivestreams:reactive-streams:+ skip: true -# Dagger -- artifact: com.google.dagger:dagger:+ - name: Dagger - copyrightHolder: The Dagger Authors - license: Apache 2.0 - licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt - url: https://github.com/google/dagger -- artifact: com.google.dagger:dagger-android:+ - skip: true -- artifact: com.google.dagger:dagger-android-support:+ - skip: true -- artifact: javax.inject:javax.inject:+ - skip: true - # Retrofit - artifact: com.squareup.retrofit2:retrofit:+ name: Retrofit diff --git a/app/src/main/assets/licenses.html b/app/src/main/assets/licenses.html index e52766f5..bdcffd60 100644 --- a/app/src/main/assets/licenses.html +++ b/app/src/main/assets/licenses.html @@ -2298,253 +2298,6 @@

APPENDIX: How to apply the Apache License to your work.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

-
- -

Dagger

-

Copyright © The Dagger Authors. All rights reserved.

-

https://github.com/google/dagger

- -
-

- Apache License -
- Version 2.0, January 2004 -
- http://www.apache.org/licenses/ -

-

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

-

1. Definitions.

-

- "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. -

-

- "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. -

-

- "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. -

-

- "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. -

-

- "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. -

-

- "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. -

-

- "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). -

-

- "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. -

-

- "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." -

-

- "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. -

-
-

2. Grant of Copyright License.

-

- Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. -

-
-
-

3. Grant of Patent License.

-

- Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. -

-
-
-

4. Redistribution.

-

- You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: -

-
-
    -
  • - You must give any other recipients of the Work or - Derivative Works a copy of this License; and -
  • -
  • - You must cause any modified files to carry prominent notices - stating that You changed the files; and -
  • -
  • - You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of | - the Derivative Works; and -
  • -
  • - If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. -
  • -
-

- You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. -

-
-

5. Submission of Contributions.

-

- Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. -

-
-
-

6. Trademarks.

-

- This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. -

-
-
-

7. Disclaimer of Warranty.

-

- Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. -

-
-
-

8. Limitation of Liability.

-

- In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. -

-
-
-

9. Accepting Warranty or Additional Liability.

-

- While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. -

-
-

END OF TERMS AND CONDITIONS

-

APPENDIX: How to apply the Apache License to your work.

-

- To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. -

-
Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-
-

Retrofit

From bf3254c37902fd327d0a2b1efef293172ecf0687 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sat, 19 May 2018 14:28:38 +0900 Subject: [PATCH 40/52] =?UTF-8?q?README=E3=81=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index c3e157ee..d1e1ef4a 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,6 @@ API Level 19 ( Android 4.4 ) |[RxJava](https://github.com/ReactiveX/RxJava)|2.1.7| |[RxAndroid](https://github.com/ReactiveX/RxAndroid)|2.0.2| |[OkHttp](https://github.com/square/okhttp)|3.9.0| -|[Dagger](https://github.com/google/dagger)|2.15| |[Kotshi](https://github.com/ansman/kotshi)|1.0.2| |[Retrofit](https://github.com/square/retrofit)|2.3.0| |[Android License Tools Plugin](https://github.com/cookpad/license-tools-plugin)|1.2.0| From 9f630af461f91c06fc3707e7f176267cd5afd305 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sat, 19 May 2018 14:56:19 +0900 Subject: [PATCH 41/52] =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9?= =?UTF-8?q?=E3=83=AA=E3=81=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- build.gradle | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d1e1ef4a..297cb6cc 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,6 @@ API Level 19 ( Android 4.4 ) |[RxJava](https://github.com/ReactiveX/RxJava)|2.1.7| |[RxAndroid](https://github.com/ReactiveX/RxAndroid)|2.0.2| |[OkHttp](https://github.com/square/okhttp)|3.9.0| -|[Kotshi](https://github.com/ansman/kotshi)|1.0.2| -|[Retrofit](https://github.com/square/retrofit)|2.3.0| +|[Kotshi](https://github.com/ansman/kotshi)|1.0.4| +|[Retrofit](https://github.com/square/retrofit)|2.4.0| |[Android License Tools Plugin](https://github.com/cookpad/license-tools-plugin)|1.2.0| diff --git a/build.gradle b/build.gradle index 7c7c8e12..f3f2ac5c 100644 --- a/build.gradle +++ b/build.gradle @@ -3,8 +3,8 @@ buildscript { ext { kotlin_version = '1.2.41' okhttp_version = '3.9.0' - kotshi_version = '1.0.2' - retrofit_version = '2.3.0' + kotshi_version = '1.0.4' + retrofit_version = '2.4.0' rxjava_version = '2.1.7' rx_android_version = '2.0.2' } From defca81c4f51bce68ca1616ce2447bbf2175bc6f Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sat, 19 May 2018 19:50:21 +0900 Subject: [PATCH 42/52] =?UTF-8?q?=E3=82=A2=E3=82=AF=E3=82=BB=E3=82=B9?= =?UTF-8?q?=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/kotlin/com/numero/sojodia/IApplication.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/numero/sojodia/IApplication.kt b/app/src/main/kotlin/com/numero/sojodia/IApplication.kt index 6010263d..eb60c526 100644 --- a/app/src/main/kotlin/com/numero/sojodia/IApplication.kt +++ b/app/src/main/kotlin/com/numero/sojodia/IApplication.kt @@ -4,7 +4,7 @@ import com.numero.sojodia.repository.IBusDataRepository import com.numero.sojodia.repository.IConfigRepository interface IApplication { - var configRepository: IConfigRepository + val configRepository: IConfigRepository - var busDataRepository: IBusDataRepository + val busDataRepository: IBusDataRepository } \ No newline at end of file From a2a73b3d098d9700283881759d7351a2c3b3dfa6 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Mon, 21 May 2018 13:50:49 +0900 Subject: [PATCH 43/52] =?UTF-8?q?=E8=89=B2=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/values/colors.xml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 63461ec1..310fb3d6 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -7,11 +7,10 @@ #FFFFFF #B00020 - #000000 - - #000000 - #000000 - #000000 + #DE000000 + #99000000 + #DE000000 + #DE000000 #FFFFFF #FFFFFF @@ -26,11 +25,11 @@ #FFFFFF #8BC34A - #99000000 - #99000000 + @color/onSecondary + @color/onSecondary #2196F3 #E91E63 - #DE000000 + @color/onPrimary #1E000000 #FFFF7F From 15f6d50b82c8f7c2580e7be03961fcc0df5d2e7d Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Fri, 8 Jun 2018 17:18:06 +0900 Subject: [PATCH 44/52] =?UTF-8?q?SDK=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=80=81=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9=E3=83=AA?= =?UTF-8?q?=E3=81=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- app/build.gradle | 14 +++++++------- build.gradle | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 297cb6cc..fe1c79c1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # SojoDia -![Android Studio](https://img.shields.io/badge/Android%20Studio-3.2%20Canary15-green.svg) +![Android Studio](https://img.shields.io/badge/Android%20Studio-3.2%20Canary17-green.svg) ![Kotlin](https://img.shields.io/badge/kotlin-1.2.41-yellow.svg) ## About diff --git a/app/build.gradle b/app/build.gradle index 0622341e..09e9ad8c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,7 +18,7 @@ def appVersionCode = versionMajor * 10000 + versionMinor * 1000 + versionPatch * def appVersionName = "${versionMajor}.${versionMinor}.${versionPatch}" android { - compileSdkVersion 'android-P' + compileSdkVersion 28 defaultConfig { applicationId "com.numero.sojodia" minSdkVersion 19 @@ -61,14 +61,14 @@ dependencies { androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha1' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation "androidx.core:core-ktx:1.0.0-alpha1" + implementation "androidx.core:core-ktx:1.0.0-alpha3" - implementation 'com.google.android.material:material:1.0.0-alpha1' - implementation 'androidx.constraintlayout:constraintlayout:1.1.0' + implementation 'com.google.android.material:material:1.0.0-alpha3' + implementation 'androidx.constraintlayout:constraintlayout:1.1.1' - implementation 'androidx.appcompat:appcompat:1.0.0-alpha1' - implementation 'androidx.recyclerview:recyclerview:1.0.0-alpha1' - implementation 'androidx.preference:preference:1.0.0-alpha1' + implementation 'androidx.appcompat:appcompat:1.0.0-alpha3' + implementation 'androidx.recyclerview:recyclerview:1.0.0-alpha3' + implementation 'androidx.preference:preference:1.0.0-alpha3' implementation "com.squareup.okhttp3:okhttp:$okhttp_version" implementation "com.squareup.okhttp3:logging-interceptor:$okhttp_version" diff --git a/build.gradle b/build.gradle index f3f2ac5c..2abd1672 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.2.0-alpha15' + classpath 'com.android.tools.build:gradle:3.2.0-alpha17' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" From 74dbf1f052434fe5ceff884d0e3c6083d4fa6b60 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Fri, 8 Jun 2018 17:22:20 +0900 Subject: [PATCH 45/52] =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=83=83=E3=82=B7?= =?UTF-8?q?=E3=83=A5=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/layout-h470dp/bus_schedule_fragment.xml | 12 ++++++------ .../main/res/layout-w960dp/bus_schedule_fragment.xml | 12 ++++++------ app/src/main/res/layout/bus_schedule_fragment.xml | 12 ++++++------ app/src/main/res/layout/dialog_time_table.xml | 4 ++-- app/src/main/res/layout/holder_time_table_row.xml | 4 ++-- app/src/main/res/layout/pager_bus_time.xml | 4 ++-- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/app/src/main/res/layout-h470dp/bus_schedule_fragment.xml b/app/src/main/res/layout-h470dp/bus_schedule_fragment.xml index 04cc2c52..0e86d69b 100644 --- a/app/src/main/res/layout-h470dp/bus_schedule_fragment.xml +++ b/app/src/main/res/layout-h470dp/bus_schedule_fragment.xml @@ -1,5 +1,5 @@ - @@ -19,7 +19,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> - @@ -121,7 +121,7 @@ - + @@ -141,7 +141,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tkScheduleCardView"> - @@ -243,8 +243,8 @@ - + - + diff --git a/app/src/main/res/layout-w960dp/bus_schedule_fragment.xml b/app/src/main/res/layout-w960dp/bus_schedule_fragment.xml index b1bcb9b2..e6d93b50 100644 --- a/app/src/main/res/layout-w960dp/bus_schedule_fragment.xml +++ b/app/src/main/res/layout-w960dp/bus_schedule_fragment.xml @@ -1,5 +1,5 @@ - - @@ -121,7 +121,7 @@ - + @@ -138,7 +138,7 @@ app:layout_constraintStart_toEndOf="@+id/tkScheduleCardView" app:layout_constraintTop_toTopOf="parent"> - @@ -240,8 +240,8 @@ - + - + diff --git a/app/src/main/res/layout/bus_schedule_fragment.xml b/app/src/main/res/layout/bus_schedule_fragment.xml index c14cd660..1cdd3356 100644 --- a/app/src/main/res/layout/bus_schedule_fragment.xml +++ b/app/src/main/res/layout/bus_schedule_fragment.xml @@ -1,5 +1,5 @@ - - @@ -109,7 +109,7 @@ - + @@ -126,7 +126,7 @@ app:layout_constraintStart_toEndOf="@+id/tkScheduleCardView" app:layout_constraintTop_toTopOf="parent"> - @@ -215,8 +215,8 @@ - + - + diff --git a/app/src/main/res/layout/dialog_time_table.xml b/app/src/main/res/layout/dialog_time_table.xml index 08da7b3d..15875e6e 100644 --- a/app/src/main/res/layout/dialog_time_table.xml +++ b/app/src/main/res/layout/dialog_time_table.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/holder_time_table_row.xml b/app/src/main/res/layout/holder_time_table_row.xml index 52ca636c..2139dae0 100644 --- a/app/src/main/res/layout/holder_time_table_row.xml +++ b/app/src/main/res/layout/holder_time_table_row.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/pager_bus_time.xml b/app/src/main/res/layout/pager_bus_time.xml index 53bcb7bd..264538c5 100644 --- a/app/src/main/res/layout/pager_bus_time.xml +++ b/app/src/main/res/layout/pager_bus_time.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file From ec94f31c51cb94dd785f4c19091c73f2f0599d37 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Thu, 28 Jun 2018 21:18:52 +0900 Subject: [PATCH 46/52] =?UTF-8?q?AndroidStudio=E3=81=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- build.gradle | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fe1c79c1..09a002b0 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # SojoDia -![Android Studio](https://img.shields.io/badge/Android%20Studio-3.2%20Canary17-green.svg) -![Kotlin](https://img.shields.io/badge/kotlin-1.2.41-yellow.svg) +![Android Studio](https://img.shields.io/badge/Android%20Studio-3.2%20beta1-green.svg) +![Kotlin](https://img.shields.io/badge/kotlin-1.2.50-yellow.svg) ## About 関西大学高槻キャンパス用のバス時刻表アプリ diff --git a/build.gradle b/build.gradle index 2abd1672..3ff173ad 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ buildscript { ext { - kotlin_version = '1.2.41' + kotlin_version = '1.2.50' okhttp_version = '3.9.0' kotshi_version = '1.0.4' retrofit_version = '2.4.0' @@ -15,7 +15,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.2.0-alpha17' + classpath 'com.android.tools.build:gradle:3.2.0-beta01' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" From 19ce93976c21f0456554ada7bae127a2be01e44f Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sat, 30 Jun 2018 13:07:28 +0900 Subject: [PATCH 47/52] =?UTF-8?q?AndroidStudio=E3=81=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 09a002b0..8db68a63 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # SojoDia -![Android Studio](https://img.shields.io/badge/Android%20Studio-3.2%20beta1-green.svg) +![Android Studio](https://img.shields.io/badge/Android%20Studio-3.2%20beta2-green.svg) ![Kotlin](https://img.shields.io/badge/kotlin-1.2.50-yellow.svg) ## About diff --git a/build.gradle b/build.gradle index 3ff173ad..26a8f073 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.2.0-beta01' + classpath 'com.android.tools.build:gradle:3.2.0-beta02' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" From 720da923a654c3568a6c9a23cd6f60dd8e2b089a Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sat, 30 Jun 2018 13:18:48 +0900 Subject: [PATCH 48/52] =?UTF-8?q?RoundIcon=E3=81=AE=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + .../main/res/mipmap-hdpi/ic_launcher_round.png | Bin 3798 -> 0 bytes .../main/res/mipmap-mdpi/ic_launcher_round.png | Bin 2412 -> 0 bytes .../main/res/mipmap-xhdpi/ic_launcher_round.png | Bin 5394 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 8383 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 12054 -> 0 bytes 6 files changed, 1 insertion(+) delete mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8196d06a..2e7c7360 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,6 +12,7 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:largeHeap="true" + android:roundIcon="@mipmap/ic_launcher" android:theme="@style/AppTheme" tools:ignore="GoogleAppIndexingWarning"> diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index 54d802a18fecbfdc0b859915c51b01e9965ef6dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3798 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

CO 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 VHX3ZpQ8@qr002ovPDHLkV1iCp@tyzx diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index f866dcdc6c1bf4b44b7349bf606fbeb1280a3076..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12054 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 fT5rqt#cSb*p Date: Sat, 30 Jun 2018 15:29:59 +0900 Subject: [PATCH 49/52] =?UTF-8?q?=E6=99=82=E5=88=BB=E8=A1=A8=E3=81=AE?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=82=92BottomSheet=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../numero/sojodia/activity/MainActivity.kt | 4 +- .../fragment/RoundedBottomSheetFragment.kt | 17 +++++++++ ... => TimeTableBottomSheetDialogFragment.kt} | 37 ++++++++----------- .../res/drawable/bg_bottom_sheet_dialog.xml | 9 +++++ app/src/main/res/layout/dialog_time_table.xml | 1 - app/src/main/res/values-v21/styles.xml | 8 ++++ app/src/main/res/values-v27/styles.xml | 7 ++++ app/src/main/res/values/dimens.xml | 2 + app/src/main/res/values/styles.xml | 13 ++++++- 9 files changed, 72 insertions(+), 26 deletions(-) create mode 100644 app/src/main/kotlin/com/numero/sojodia/fragment/RoundedBottomSheetFragment.kt rename app/src/main/kotlin/com/numero/sojodia/fragment/{TimeTableDialogFragment.kt => TimeTableBottomSheetDialogFragment.kt} (73%) create mode 100644 app/src/main/res/drawable/bg_bottom_sheet_dialog.xml create mode 100644 app/src/main/res/values-v21/styles.xml diff --git a/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt b/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt index f98dd979..9a9c5b68 100644 --- a/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt +++ b/app/src/main/kotlin/com/numero/sojodia/activity/MainActivity.kt @@ -14,7 +14,7 @@ import com.numero.sojodia.extension.app import com.numero.sojodia.extension.getTodayString import com.numero.sojodia.extension.showDialog import com.numero.sojodia.fragment.BusScheduleFragment -import com.numero.sojodia.fragment.TimeTableDialogFragment +import com.numero.sojodia.fragment.TimeTableBottomSheetDialogFragment import com.numero.sojodia.model.Reciprocate import com.numero.sojodia.model.Route import com.numero.sojodia.repository.IBusDataRepository @@ -79,7 +79,7 @@ class MainActivity : AppCompatActivity(), BusScheduleFragment.BusScheduleFragmen } override fun showTimeTableDialog(route: Route, reciprocate: Reciprocate) { - TimeTableDialogFragment.newInstance(route, reciprocate).show(supportFragmentManager, "") + TimeTableBottomSheetDialogFragment.newInstance(route, reciprocate).show(supportFragmentManager) } private fun initViews() { diff --git a/app/src/main/kotlin/com/numero/sojodia/fragment/RoundedBottomSheetFragment.kt b/app/src/main/kotlin/com/numero/sojodia/fragment/RoundedBottomSheetFragment.kt new file mode 100644 index 00000000..447d84b5 --- /dev/null +++ b/app/src/main/kotlin/com/numero/sojodia/fragment/RoundedBottomSheetFragment.kt @@ -0,0 +1,17 @@ +package com.numero.sojodia.fragment + +import android.app.Dialog +import android.os.Bundle +import com.google.android.material.bottomsheet.BottomSheetDialog +import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import com.numero.sojodia.R + +open class RoundedBottomSheetFragment : BottomSheetDialogFragment() { + + override fun getTheme(): Int = R.style.BottomSheetDialogTheme_Rounded + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + setStyle(BottomSheetDialogFragment.STYLE_NORMAL, theme) + return super.onCreateDialog(savedInstanceState) + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt b/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableBottomSheetDialogFragment.kt similarity index 73% rename from app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt rename to app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableBottomSheetDialogFragment.kt index eb00bf0c..bba680d5 100644 --- a/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableDialogFragment.kt +++ b/app/src/main/kotlin/com/numero/sojodia/fragment/TimeTableBottomSheetDialogFragment.kt @@ -2,12 +2,10 @@ package com.numero.sojodia.fragment import android.app.Dialog import android.os.Bundle -import android.view.LayoutInflater -import android.view.WindowManager -import androidx.appcompat.app.AlertDialog +import android.view.View import androidx.appcompat.widget.Toolbar import androidx.core.os.bundleOf -import androidx.fragment.app.DialogFragment +import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.LinearLayoutManager import com.numero.sojodia.R import com.numero.sojodia.contract.TimeTableContract @@ -20,7 +18,7 @@ import com.numero.sojodia.repository.IBusDataRepository import com.numero.sojodia.view.adapter.TimeTableRowAdapter import kotlinx.android.synthetic.main.dialog_time_table.view.* -class TimeTableDialogFragment : DialogFragment(), TimeTableContract.View { +class TimeTableBottomSheetDialogFragment : RoundedBottomSheetFragment(), TimeTableContract.View { private var toolbar: Toolbar? = null private val adapter: TimeTableRowAdapter = TimeTableRowAdapter() @@ -39,26 +37,15 @@ class TimeTableDialogFragment : DialogFragment(), TimeTableContract.View { TimeTablePresenter(this, busDataRepository, route, reciprocate) } - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - val view = LayoutInflater.from(context).inflate(R.layout.dialog_time_table, null) - toolbar = view.toolbar.apply { - setNavigationOnClickListener { - dismiss() - } - } + override fun setupDialog(dialog: Dialog?, style: Int) { + val view = View.inflate(context, R.layout.dialog_time_table, null) + toolbar = view.toolbar view.timeTableRecyclerView.apply { setHasFixedSize(true) layoutManager = LinearLayoutManager(context) - adapter = this@TimeTableDialogFragment.adapter + adapter = this@TimeTableBottomSheetDialogFragment.adapter } - return AlertDialog.Builder(view.context) - .setView(view) - .create() - } - - override fun onStart() { - super.onStart() - dialog?.window?.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT) + dialog?.setContentView(view) } override fun onResume() { @@ -87,12 +74,18 @@ class TimeTableDialogFragment : DialogFragment(), TimeTableContract.View { toolbar?.setSubtitle(reciprocate.titleStringRes) } + fun show(fragmentManager: FragmentManager?) { + show(fragmentManager, TAG) + } + companion object { private const val ARG_ROUTE = "ARG_ROUTE" private const val ARG_RECIPROCATE = "ARG_RECIPROCATE" - fun newInstance(route: Route, reciprocate: Reciprocate): TimeTableDialogFragment = TimeTableDialogFragment().apply { + private const val TAG = "TimeTableBottomSheetDialogFragment" + + fun newInstance(route: Route, reciprocate: Reciprocate): TimeTableBottomSheetDialogFragment = TimeTableBottomSheetDialogFragment().apply { arguments = bundleOf(ARG_ROUTE to route, ARG_RECIPROCATE to reciprocate) } } diff --git a/app/src/main/res/drawable/bg_bottom_sheet_dialog.xml b/app/src/main/res/drawable/bg_bottom_sheet_dialog.xml new file mode 100644 index 00000000..e56758e2 --- /dev/null +++ b/app/src/main/res/drawable/bg_bottom_sheet_dialog.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_time_table.xml b/app/src/main/res/layout/dialog_time_table.xml index 15875e6e..e4c46213 100644 --- a/app/src/main/res/layout/dialog_time_table.xml +++ b/app/src/main/res/layout/dialog_time_table.xml @@ -13,7 +13,6 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:navigationIcon="@drawable/ic_clear" app:subtitleTextColor="@color/time_table_dialog_toolbar_text" app:titleTextColor="@color/time_table_dialog_toolbar_text" /> diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml new file mode 100644 index 00000000..5ccf084c --- /dev/null +++ b/app/src/main/res/values-v21/styles.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-v27/styles.xml b/app/src/main/res/values-v27/styles.xml index 28df6200..f28aae0b 100644 --- a/app/src/main/res/values-v27/styles.xml +++ b/app/src/main/res/values-v27/styles.xml @@ -1,5 +1,6 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 2b085ef9..d2e04a23 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,4 +1,6 @@ + 16dp + 8dp 12dp diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 9f0fbf09..4b9978e9 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -10,7 +10,7 @@ false @style/PreferenceThemeOverlay.v14.Material @color/background - 16dp + @dimen/app_corner_round + + + From 8550986740d7188d46afcae5bb2bc9095296714c Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sat, 30 Jun 2018 15:32:50 +0900 Subject: [PATCH 50/52] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AB=E3=81=AA?= =?UTF-8?q?=E3=81=A3=E3=81=9F=E3=82=82=E3=81=AE=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sojodia/fragment/RoundedBottomSheetFragment.kt | 1 - app/src/main/res/drawable/ic_clear.xml | 9 --------- 2 files changed, 10 deletions(-) delete mode 100644 app/src/main/res/drawable/ic_clear.xml diff --git a/app/src/main/kotlin/com/numero/sojodia/fragment/RoundedBottomSheetFragment.kt b/app/src/main/kotlin/com/numero/sojodia/fragment/RoundedBottomSheetFragment.kt index 447d84b5..e0db5e82 100644 --- a/app/src/main/kotlin/com/numero/sojodia/fragment/RoundedBottomSheetFragment.kt +++ b/app/src/main/kotlin/com/numero/sojodia/fragment/RoundedBottomSheetFragment.kt @@ -2,7 +2,6 @@ package com.numero.sojodia.fragment import android.app.Dialog import android.os.Bundle -import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.numero.sojodia.R diff --git a/app/src/main/res/drawable/ic_clear.xml b/app/src/main/res/drawable/ic_clear.xml deleted file mode 100644 index 94255f6d..00000000 --- a/app/src/main/res/drawable/ic_clear.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - From 33af3f26b04e4f1d2e6f1b1d370343a8ccd7b258 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sat, 30 Jun 2018 16:32:36 +0900 Subject: [PATCH 51/52] =?UTF-8?q?=E6=99=82=E5=88=BB=E8=A1=A8=E3=81=AE?= =?UTF-8?q?=E3=83=87=E3=82=B6=E3=82=A4=E3=83=B3=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/dialog_time_table.xml | 40 +++++++++---------- .../main/res/layout/holder_time_table_row.xml | 23 ++++++++--- app/src/main/res/values/dimens.xml | 5 ++- 3 files changed, 39 insertions(+), 29 deletions(-) diff --git a/app/src/main/res/layout/dialog_time_table.xml b/app/src/main/res/layout/dialog_time_table.xml index e4c46213..5403a75d 100644 --- a/app/src/main/res/layout/dialog_time_table.xml +++ b/app/src/main/res/layout/dialog_time_table.xml @@ -20,9 +20,10 @@ android:id="@+id/headerHourTextView" android:layout_width="@dimen/time_table_dialog_hour_text_width" android:layout_height="wrap_content" - android:gravity="center" - android:paddingTop="@dimen/time_table_dialog_text_margin" - android:paddingBottom="@dimen/time_table_dialog_text_margin" + android:layout_marginStart="16dp" + android:gravity="center_vertical" + android:paddingTop="@dimen/time_table_dialog_vertical_text_margin" + android:paddingBottom="@dimen/time_table_dialog_vertical_text_margin" android:text="@string/hour" android:textColor="@color/time_table_dialog_hour_text" android:textSize="@dimen/time_table_dialog_header_text" @@ -46,8 +47,8 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center" - android:paddingTop="@dimen/time_table_dialog_text_margin" - android:paddingBottom="@dimen/time_table_dialog_text_margin" + android:paddingTop="@dimen/time_table_dialog_vertical_text_margin" + android:paddingBottom="@dimen/time_table_dialog_vertical_text_margin" android:text="@string/weekday" android:textColor="@color/time_table_dialog_weekday_text" android:textSize="@dimen/time_table_dialog_header_text" @@ -62,8 +63,8 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center" - android:paddingTop="@dimen/time_table_dialog_text_margin" - android:paddingBottom="@dimen/time_table_dialog_text_margin" + android:paddingTop="@dimen/time_table_dialog_vertical_text_margin" + android:paddingBottom="@dimen/time_table_dialog_vertical_text_margin" android:text="@string/saturday" android:textColor="@color/time_table_dialog_saturday_text" android:textSize="@dimen/time_table_dialog_header_text" @@ -77,9 +78,10 @@ android:id="@+id/headerSundayTextView" android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_marginEnd="16dp" android:gravity="center" - android:paddingTop="@dimen/time_table_dialog_text_margin" - android:paddingBottom="@dimen/time_table_dialog_text_margin" + android:paddingTop="@dimen/time_table_dialog_vertical_text_margin" + android:paddingBottom="@dimen/time_table_dialog_vertical_text_margin" android:text="@string/sunday" android:textColor="@color/time_table_dialog_sunday_text" android:textSize="@dimen/time_table_dialog_header_text" @@ -94,10 +96,10 @@ android:layout_width="0dp" android:layout_height="@dimen/time_table_dialog_row_divider" android:background="@color/time_table_dialog_row_divider" + app:layout_constraintBottom_toTopOf="@+id/timeTableRecyclerView" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/headerHourTextView" - app:layout_constraintBottom_toTopOf="@+id/timeTableRecyclerView"/> + app:layout_constraintTop_toBottomOf="@+id/headerHourTextView" /> + app:layout_constraintBottom_toBottomOf="@+id/toolbar" + app:layout_constraintEnd_toEndOf="parent" /> \ No newline at end of file diff --git a/app/src/main/res/layout/holder_time_table_row.xml b/app/src/main/res/layout/holder_time_table_row.xml index 2139dae0..7d22a573 100644 --- a/app/src/main/res/layout/holder_time_table_row.xml +++ b/app/src/main/res/layout/holder_time_table_row.xml @@ -10,10 +10,11 @@ android:id="@+id/hourTextView" android:layout_width="@dimen/time_table_dialog_hour_text_width" android:layout_height="wrap_content" + android:layout_marginStart="16dp" android:fontFamily="sans-serif-light" - android:gravity="center" - android:paddingTop="@dimen/time_table_dialog_text_margin" - android:paddingBottom="@dimen/time_table_dialog_text_margin" + android:gravity="center_vertical" + android:paddingTop="@dimen/time_table_dialog_vertical_text_margin" + android:paddingBottom="@dimen/time_table_dialog_vertical_text_margin" android:textColor="@color/time_table_dialog_hour_text" android:textSize="@dimen/time_table_dialog_row_text" android:textStyle="bold" @@ -37,7 +38,10 @@ android:layout_height="wrap_content" android:fontFamily="sans-serif-light" android:gravity="top" - android:padding="@dimen/time_table_dialog_text_margin" + android:paddingStart="@dimen/time_table_dialog_horizontal_text_margin" + android:paddingTop="@dimen/time_table_dialog_vertical_text_margin" + android:paddingEnd="@dimen/time_table_dialog_horizontal_text_margin" + android:paddingBottom="@dimen/time_table_dialog_vertical_text_margin" android:textColor="@color/time_table_dialog_time_text" android:textSize="@dimen/time_table_dialog_row_text" app:layout_constraintBottom_toBottomOf="parent" @@ -53,7 +57,10 @@ android:layout_height="wrap_content" android:fontFamily="sans-serif-light" android:gravity="top" - android:padding="@dimen/time_table_dialog_text_margin" + android:paddingStart="@dimen/time_table_dialog_horizontal_text_margin" + android:paddingTop="@dimen/time_table_dialog_vertical_text_margin" + android:paddingEnd="@dimen/time_table_dialog_horizontal_text_margin" + android:paddingBottom="@dimen/time_table_dialog_vertical_text_margin" android:textColor="@color/time_table_dialog_time_text" android:textSize="@dimen/time_table_dialog_row_text" app:layout_constraintBottom_toBottomOf="parent" @@ -67,9 +74,13 @@ android:id="@+id/sundayTextView" android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_marginEnd="16dp" android:fontFamily="sans-serif-light" android:gravity="top" - android:padding="@dimen/time_table_dialog_text_margin" + android:paddingStart="@dimen/time_table_dialog_horizontal_text_margin" + android:paddingTop="@dimen/time_table_dialog_vertical_text_margin" + android:paddingEnd="@dimen/time_table_dialog_horizontal_text_margin" + android:paddingBottom="@dimen/time_table_dialog_vertical_text_margin" android:textColor="@color/time_table_dialog_time_text" android:textSize="@dimen/time_table_dialog_row_text" app:layout_constraintBottom_toBottomOf="parent" diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index d2e04a23..6652348d 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -24,8 +24,9 @@ 36dp 1dp - 4dp + 4dp + 8dp 14sp - 14sp + 16sp From aac558d6fdc31e669538d3406514e2f0ceb60da8 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Sat, 30 Jun 2018 19:48:22 +0900 Subject: [PATCH 52/52] =?UTF-8?q?8.0=E3=83=AA=E3=83=AA=E3=83=BC=E3=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 09e9ad8c..421a7e49 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ apply plugin: 'com.cookpad.android.licensetools' def versionMajor = 8 def versionMinor = 0 def versionPatch = 0 -def versionBuild = 0 +def versionBuild = 4 def targetDevice = 0 def appVersionCode = versionMajor * 10000 + versionMinor * 1000 + versionPatch * 100 + versionBuild * 10 + targetDevice