turbo-native-initializer 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/LICENSE.txt +21 -0
- data/README.md +53 -0
- data/Rakefile +2 -0
- data/exe/turbo-native-initializer +3 -0
- data/lib/turbo-native-initializer.rb +1 -0
- data/lib/turbo_native_initializer/generator.rb +79 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/.gitignore +1 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/build.gradle.kts.tt +44 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/proguard-rules.pro +21 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/debug/AndroidManifest.xml.tt +4 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/AndroidManifest.xml.tt +29 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/assets/json/configuration.json +11 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/base/NavDestination.kt.tt +69 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebFragment.kt.tt +37 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebHomeFragment.kt.tt +15 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebModalFragment.kt.tt +17 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/main/MainActivity.kt.tt +18 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/main/MainSessionNavHostFragment.kt.tt +37 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/util/Constants.kt.tt +8 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/anim/nav_slide_enter.xml +10 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/anim/nav_slide_exit.xml +7 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/anim/nav_slide_pop_enter.xml +15 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/anim/nav_slide_pop_exit.xml +15 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/anim/overshoot_interpolator.xml +4 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/drawable/ic_close.xml +5 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/drawable/ic_launcher_foreground.xml +17 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/layout/activity_main.xml.tt +17 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/layout/fragment_web_home.xml +36 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/layout/toolbar_progress.xml +13 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/menu/web.xml +14 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +5 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/values/colors.xml +5 -0
- data/lib/turbo_native_initializer/templates/android_stack/app/src/main/res/values/themes.xml.tt +5 -0
- data/lib/turbo_native_initializer/templates/android_stack/build.gradle.kts +5 -0
- data/lib/turbo_native_initializer/templates/android_stack/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/lib/turbo_native_initializer/templates/android_stack/gradle/wrapper/gradle-wrapper.properties +6 -0
- data/lib/turbo_native_initializer/templates/android_stack/gradle.properties +23 -0
- data/lib/turbo_native_initializer/templates/android_stack/gradlew +185 -0
- data/lib/turbo_native_initializer/templates/android_stack/gradlew.bat +89 -0
- data/lib/turbo_native_initializer/templates/android_stack/local.properties +10 -0
- data/lib/turbo_native_initializer/templates/android_stack/settings.gradle.kts.tt +17 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/.gitignore +1 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/build.gradle.kts.tt +44 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/proguard-rules.pro +21 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/debug/AndroidManifest.xml.tt +4 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/AndroidManifest.xml.tt +29 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/assets/json/configuration.json +11 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/base/NavDestination.kt.tt +69 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebFragment.kt.tt +29 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebHomeFragment.kt.tt +15 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebModalFragment.kt.tt +17 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/main/MainActivity.kt.tt +47 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/main/TabOneSessionNavHostFragment.kt.tt +37 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/main/TabTwoSessionNavHostFragment.kt.tt +37 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/util/Constants.kt.tt +8 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/anim/nav_slide_enter.xml +10 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/anim/nav_slide_exit.xml +7 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/anim/nav_slide_pop_enter.xml +15 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/anim/nav_slide_pop_exit.xml +15 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/anim/overshoot_interpolator.xml +4 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/drawable/ic_close.xml +5 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/drawable/ic_home.xml +5 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/drawable/ic_launcher_foreground.xml +17 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/drawable/ic_settings.xml +5 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/layout/activity_main.xml.tt +34 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/layout/fragment_web_home.xml +36 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/layout/toolbar_progress.xml +13 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/menu/bottom_navigation_menu.xml +12 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/menu/web.xml +14 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +5 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/values/colors.xml +5 -0
- data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/values/themes.xml.tt +5 -0
- data/lib/turbo_native_initializer/templates/android_tabs/build.gradle.kts +5 -0
- data/lib/turbo_native_initializer/templates/android_tabs/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/lib/turbo_native_initializer/templates/android_tabs/gradle/wrapper/gradle-wrapper.properties +6 -0
- data/lib/turbo_native_initializer/templates/android_tabs/gradle.properties +23 -0
- data/lib/turbo_native_initializer/templates/android_tabs/gradlew +185 -0
- data/lib/turbo_native_initializer/templates/android_tabs/gradlew.bat +89 -0
- data/lib/turbo_native_initializer/templates/android_tabs/local.properties +10 -0
- data/lib/turbo_native_initializer/templates/android_tabs/settings.gradle.kts.tt +17 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Configuration/Info.plist +29 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Configuration/path-configuration.json +10 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Controllers/ErrorPresenter.swift +74 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Controllers/TurboNavigationController.swift +123 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Controllers/ViewController.swift +20 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Delegates/AppDelegate.swift +8 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Delegates/SceneDelegate.swift.tt +139 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json +14 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Assets.xcassets/AppIcon.appiconset/turbo.png +0 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Assets.xcassets/Contents.json +6 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Assets.xcassets/SplashIcon.imageset/Contents.json +21 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Assets.xcassets/SplashIcon.imageset/turbo.png +0 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Base.lproj/LaunchScreen.storyboard +39 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Base.lproj/Main.storyboard.tt +32 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/TurboNativeProject.swift.tt +10 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject.xcodeproj/project.pbxproj.tt +436 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +14 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Configuration/Info.plist +29 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Configuration/path-configuration.json +10 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Controllers/ErrorPresenter.swift +74 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Controllers/TurboNavigationController.swift +123 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Controllers/ViewController.swift +20 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Delegates/AppDelegate.swift +8 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Delegates/SceneDelegate.swift.tt +156 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json +14 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Assets.xcassets/AppIcon.appiconset/turbo.png +0 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Assets.xcassets/Contents.json +6 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Assets.xcassets/SplashIcon.imageset/Contents.json +21 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Assets.xcassets/SplashIcon.imageset/turbo.png +0 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Base.lproj/LaunchScreen.storyboard +39 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Base.lproj/Main.storyboard +69 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/TurboNativeProject.swift.tt +10 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject.xcodeproj/project.pbxproj.tt +436 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +14 -0
- data/lib/turbo_native_initializer/version.rb +3 -0
- data/lib/turbo_native_initializer.rb +5 -0
- metadata +199 -0
@@ -0,0 +1,69 @@
|
|
1
|
+
package <%= package_name %>.base
|
2
|
+
|
3
|
+
import android.net.Uri
|
4
|
+
import android.view.MenuItem
|
5
|
+
import androidx.browser.customtabs.CustomTabColorSchemeParams
|
6
|
+
import androidx.browser.customtabs.CustomTabsIntent
|
7
|
+
import androidx.browser.customtabs.CustomTabsIntent.SHARE_STATE_ON
|
8
|
+
import androidx.navigation.NavOptions
|
9
|
+
import androidx.navigation.navOptions
|
10
|
+
import dev.hotwire.turbo.config.TurboPathConfigurationProperties
|
11
|
+
import dev.hotwire.turbo.config.context
|
12
|
+
import <%= package_name %>.R
|
13
|
+
import <%= package_name %>.util.BASE_URL
|
14
|
+
import dev.hotwire.turbo.nav.TurboNavDestination
|
15
|
+
import dev.hotwire.turbo.nav.TurboNavPresentationContext.MODAL
|
16
|
+
|
17
|
+
interface NavDestination : TurboNavDestination {
|
18
|
+
val menuProgress: MenuItem?
|
19
|
+
get() = toolbarForNavigation()?.menu?.findItem(R.id.menu_progress)
|
20
|
+
|
21
|
+
override fun shouldNavigateTo(newLocation: String): Boolean {
|
22
|
+
return when (isNavigable(newLocation)) {
|
23
|
+
true -> true
|
24
|
+
else -> { launchCustomTab(newLocation); false }
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
override fun getNavigationOptions(
|
29
|
+
newLocation: String,
|
30
|
+
newPathProperties: TurboPathConfigurationProperties
|
31
|
+
): NavOptions {
|
32
|
+
return when (newPathProperties.context) {
|
33
|
+
MODAL -> slideAnimation()
|
34
|
+
else -> super.getNavigationOptions(newLocation, newPathProperties)
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
private fun isNavigable(location: String): Boolean {
|
39
|
+
return location.startsWith(BASE_URL)
|
40
|
+
}
|
41
|
+
|
42
|
+
private fun launchCustomTab(location: String) {
|
43
|
+
val context = fragment.context ?: return
|
44
|
+
val color = context.getColor(R.color.white)
|
45
|
+
val colorParams = CustomTabColorSchemeParams.Builder()
|
46
|
+
.setToolbarColor(color)
|
47
|
+
.setNavigationBarColor(color)
|
48
|
+
.build()
|
49
|
+
|
50
|
+
CustomTabsIntent.Builder()
|
51
|
+
.setShowTitle(true)
|
52
|
+
.setShareState(SHARE_STATE_ON)
|
53
|
+
.setUrlBarHidingEnabled(false)
|
54
|
+
.setDefaultColorSchemeParams(colorParams)
|
55
|
+
.build()
|
56
|
+
.launchUrl(context, Uri.parse(location))
|
57
|
+
}
|
58
|
+
|
59
|
+
private fun slideAnimation(): NavOptions {
|
60
|
+
return navOptions {
|
61
|
+
anim {
|
62
|
+
enter = R.anim.nav_slide_enter
|
63
|
+
exit = R.anim.nav_slide_exit
|
64
|
+
popEnter = R.anim.nav_slide_pop_enter
|
65
|
+
popExit = R.anim.nav_slide_pop_exit
|
66
|
+
}
|
67
|
+
}
|
68
|
+
}
|
69
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
package <%= package_name %>.features.web
|
2
|
+
|
3
|
+
import android.os.Bundle
|
4
|
+
import android.view.View
|
5
|
+
import <%= package_name %>.R
|
6
|
+
import <%= package_name %>.base.NavDestination
|
7
|
+
import dev.hotwire.turbo.fragments.TurboWebFragment
|
8
|
+
import dev.hotwire.turbo.nav.TurboNavGraphDestination
|
9
|
+
import dev.hotwire.turbo.visit.TurboVisitAction.REPLACE
|
10
|
+
import dev.hotwire.turbo.visit.TurboVisitOptions
|
11
|
+
|
12
|
+
@TurboNavGraphDestination(uri = "turbo://fragment/web")
|
13
|
+
open class WebFragment : TurboWebFragment(), NavDestination {
|
14
|
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
15
|
+
super.onViewCreated(view, savedInstanceState); setupMenu()
|
16
|
+
}
|
17
|
+
|
18
|
+
override fun onFormSubmissionStarted(location: String) {
|
19
|
+
menuProgress?.isVisible = true
|
20
|
+
}
|
21
|
+
|
22
|
+
override fun onFormSubmissionFinished(location: String) {
|
23
|
+
menuProgress?.isVisible = false
|
24
|
+
}
|
25
|
+
|
26
|
+
private fun setupMenu() {
|
27
|
+
toolbarForNavigation()?.inflateMenu(R.menu.web)
|
28
|
+
}
|
29
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
package <%= package_name %>.features.web
|
2
|
+
|
3
|
+
import android.os.Bundle
|
4
|
+
import android.view.LayoutInflater
|
5
|
+
import android.view.View
|
6
|
+
import android.view.ViewGroup
|
7
|
+
import <%= package_name %>.R
|
8
|
+
import dev.hotwire.turbo.nav.TurboNavGraphDestination
|
9
|
+
|
10
|
+
@TurboNavGraphDestination(uri = "turbo://fragment/web/home")
|
11
|
+
class WebHomeFragment : WebFragment() {
|
12
|
+
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
13
|
+
return inflater.inflate(R.layout.fragment_web_home, container, false)
|
14
|
+
}
|
15
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
package <%= package_name %>.features.web
|
2
|
+
|
3
|
+
import android.os.Bundle
|
4
|
+
import android.view.View
|
5
|
+
import dev.hotwire.turbo.nav.TurboNavGraphDestination
|
6
|
+
import <%= package_name %>.R
|
7
|
+
|
8
|
+
@TurboNavGraphDestination(uri = "turbo://fragment/web/modal")
|
9
|
+
class WebModalFragment : WebFragment() {
|
10
|
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
11
|
+
super.onViewCreated(view, savedInstanceState); initToolbar()
|
12
|
+
}
|
13
|
+
|
14
|
+
private fun initToolbar() {
|
15
|
+
toolbarForNavigation()?.navigationIcon = context?.getDrawable(R.drawable.ic_close)
|
16
|
+
}
|
17
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
package <%= package_name %>.main
|
2
|
+
|
3
|
+
import android.os.Bundle
|
4
|
+
import android.widget.ViewFlipper
|
5
|
+
import androidx.appcompat.app.AppCompatActivity
|
6
|
+
import com.google.android.material.bottomnavigation.BottomNavigationView
|
7
|
+
import dev.hotwire.turbo.activities.TurboActivity
|
8
|
+
import dev.hotwire.turbo.delegates.TurboActivityDelegate
|
9
|
+
import <%= package_name %>.R
|
10
|
+
|
11
|
+
class MainActivity : AppCompatActivity(), TurboActivity {
|
12
|
+
override lateinit var delegate: TurboActivityDelegate
|
13
|
+
|
14
|
+
override fun onCreate(savedInstanceState: Bundle?) {
|
15
|
+
super.onCreate(savedInstanceState)
|
16
|
+
setContentView(R.layout.activity_main)
|
17
|
+
|
18
|
+
delegate = TurboActivityDelegate(this, R.id.tab_one_nav_host)
|
19
|
+
delegate.registerNavHostFragment(R.id.tab_one_nav_host)
|
20
|
+
delegate.registerNavHostFragment(R.id.tab_two_nav_host)
|
21
|
+
|
22
|
+
setupBottomNavigationView()
|
23
|
+
}
|
24
|
+
|
25
|
+
private fun setupBottomNavigationView() {
|
26
|
+
val viewFliper = findViewById<ViewFlipper>(R.id.view_flipper)
|
27
|
+
val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottom_navigation_view)
|
28
|
+
|
29
|
+
bottomNavigationView.setOnItemSelectedListener {
|
30
|
+
when (it.itemId) {
|
31
|
+
R.id.tab_item_one -> {
|
32
|
+
viewFliper.displayedChild = 0
|
33
|
+
delegate.currentNavHostFragmentId = R.id.tab_one_nav_host
|
34
|
+
true
|
35
|
+
}
|
36
|
+
R.id.tab_item_two -> {
|
37
|
+
viewFliper.displayedChild = 1
|
38
|
+
delegate.currentNavHostFragmentId = R.id.tab_two_nav_host
|
39
|
+
true
|
40
|
+
}
|
41
|
+
else -> {
|
42
|
+
throw RuntimeException("Invalid tab")
|
43
|
+
}
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}
|
47
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
package <%= package_name %>.main
|
2
|
+
|
3
|
+
import android.webkit.WebView
|
4
|
+
import androidx.appcompat.app.AppCompatActivity
|
5
|
+
import androidx.fragment.app.Fragment
|
6
|
+
import dev.hotwire.turbo.config.TurboPathConfiguration
|
7
|
+
import <%= package_name %>.features.web.WebFragment
|
8
|
+
import <%= package_name %>.features.web.WebHomeFragment
|
9
|
+
import <%= package_name %>.features.web.WebModalFragment
|
10
|
+
import <%= package_name %>.util.CURRENT_URL_1
|
11
|
+
import dev.hotwire.turbo.session.TurboSessionNavHostFragment
|
12
|
+
import kotlin.reflect.KClass
|
13
|
+
|
14
|
+
@Suppress("unused")
|
15
|
+
class TabOneSessionNavHostFragment : TurboSessionNavHostFragment() {
|
16
|
+
override val sessionName = "main"
|
17
|
+
|
18
|
+
override val startLocation = CURRENT_URL_1
|
19
|
+
|
20
|
+
override val registeredActivities: List<KClass<out AppCompatActivity>>
|
21
|
+
get() = listOf()
|
22
|
+
|
23
|
+
override val registeredFragments: List<KClass<out Fragment>>
|
24
|
+
get() = listOf(WebFragment::class, WebHomeFragment::class, WebModalFragment::class)
|
25
|
+
|
26
|
+
override val pathConfigurationLocation: TurboPathConfiguration.Location
|
27
|
+
get() = TurboPathConfiguration.Location(assetFilePath = "json/configuration.json")
|
28
|
+
|
29
|
+
override fun onSessionCreated() {
|
30
|
+
super.onSessionCreated()
|
31
|
+
session.webView.settings.userAgentString = customUserAgent(session.webView)
|
32
|
+
}
|
33
|
+
|
34
|
+
private fun customUserAgent(webView: WebView): String {
|
35
|
+
return "Turbo Native Android ${webView.settings.userAgentString}"
|
36
|
+
}
|
37
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
package <%= package_name %>.main
|
2
|
+
|
3
|
+
import android.webkit.WebView
|
4
|
+
import androidx.appcompat.app.AppCompatActivity
|
5
|
+
import androidx.fragment.app.Fragment
|
6
|
+
import dev.hotwire.turbo.config.TurboPathConfiguration
|
7
|
+
import <%= package_name %>.features.web.WebFragment
|
8
|
+
import <%= package_name %>.features.web.WebHomeFragment
|
9
|
+
import <%= package_name %>.features.web.WebModalFragment
|
10
|
+
import <%= package_name %>.util.CURRENT_URL_2
|
11
|
+
import dev.hotwire.turbo.session.TurboSessionNavHostFragment
|
12
|
+
import kotlin.reflect.KClass
|
13
|
+
|
14
|
+
@Suppress("unused")
|
15
|
+
class TabTwoSessionNavHostFragment : TurboSessionNavHostFragment() {
|
16
|
+
override val sessionName = "main"
|
17
|
+
|
18
|
+
override val startLocation = CURRENT_URL_2
|
19
|
+
|
20
|
+
override val registeredActivities: List<KClass<out AppCompatActivity>>
|
21
|
+
get() = listOf()
|
22
|
+
|
23
|
+
override val registeredFragments: List<KClass<out Fragment>>
|
24
|
+
get() = listOf(WebFragment::class, WebHomeFragment::class, WebModalFragment::class)
|
25
|
+
|
26
|
+
override val pathConfigurationLocation: TurboPathConfiguration.Location
|
27
|
+
get() = TurboPathConfiguration.Location(assetFilePath = "json/configuration.json")
|
28
|
+
|
29
|
+
override fun onSessionCreated() {
|
30
|
+
super.onSessionCreated()
|
31
|
+
session.webView.settings.userAgentString = customUserAgent(session.webView)
|
32
|
+
}
|
33
|
+
|
34
|
+
private fun customUserAgent(webView: WebView): String {
|
35
|
+
return "Turbo Native Android ${webView.settings.userAgentString}"
|
36
|
+
}
|
37
|
+
}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
package <%= package_name %>.util
|
2
|
+
|
3
|
+
private const val DEVELOPMENT_URL = "http://10.0.2.2:3000"
|
4
|
+
private const val PRODUCTION_URL = "https://turbo-native-demo.glitch.me"
|
5
|
+
|
6
|
+
const val BASE_URL = PRODUCTION_URL
|
7
|
+
const val CURRENT_URL_1 = "$BASE_URL/"
|
8
|
+
const val CURRENT_URL_2 = "$BASE_URL/"
|
data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/anim/nav_slide_enter.xml
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
3
|
+
android:shareInterpolator="false">
|
4
|
+
|
5
|
+
<translate
|
6
|
+
android:interpolator="@anim/overshoot_interpolator"
|
7
|
+
android:fromYDelta="40%p"
|
8
|
+
android:toYDelta="0%p"
|
9
|
+
android:duration="300"/>
|
10
|
+
</set>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
3
|
+
android:shareInterpolator="false">
|
4
|
+
|
5
|
+
<alpha
|
6
|
+
android:fromAlpha="0.0"
|
7
|
+
android:toAlpha="1.0"
|
8
|
+
android:duration="300"/>
|
9
|
+
|
10
|
+
<translate
|
11
|
+
android:interpolator="@anim/overshoot_interpolator"
|
12
|
+
android:fromYDelta="-10%p"
|
13
|
+
android:toYDelta="0%p"
|
14
|
+
android:duration="300"/>
|
15
|
+
</set>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
3
|
+
android:shareInterpolator="false">
|
4
|
+
|
5
|
+
<alpha
|
6
|
+
android:fromAlpha="1.0"
|
7
|
+
android:toAlpha="0.0"
|
8
|
+
android:duration="300"/>
|
9
|
+
|
10
|
+
<translate
|
11
|
+
android:interpolator="@android:interpolator/decelerate_cubic"
|
12
|
+
android:fromYDelta="0%p"
|
13
|
+
android:toYDelta="100%p"
|
14
|
+
android:duration="300"/>
|
15
|
+
</set>
|
data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/drawable/ic_close.xml
ADDED
@@ -0,0 +1,5 @@
|
|
1
|
+
<vector android:height="24dp" android:tint="#000000"
|
2
|
+
android:viewportHeight="24" android:viewportWidth="24"
|
3
|
+
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
4
|
+
<path android:fillColor="@android:color/white" android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
|
5
|
+
</vector>
|
data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/drawable/ic_home.xml
ADDED
@@ -0,0 +1,5 @@
|
|
1
|
+
<vector android:height="24dp" android:tint="#000000"
|
2
|
+
android:viewportHeight="24" android:viewportWidth="24"
|
3
|
+
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
4
|
+
<path android:fillColor="@android:color/white" android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z"/>
|
5
|
+
</vector>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
2
|
+
android:width="108dp"
|
3
|
+
android:height="108dp"
|
4
|
+
android:viewportWidth="108"
|
5
|
+
android:viewportHeight="108">
|
6
|
+
<group android:scaleX="0.21352941"
|
7
|
+
android:scaleY="0.21352941"
|
8
|
+
android:translateX="17.7"
|
9
|
+
android:translateY="17.7">
|
10
|
+
<path
|
11
|
+
android:pathData="M197.2,163.5c-1.7,-7.3 -6.3,-13.5 -12.6,-17.4c-4.4,-2.7 -9.4,-4.1 -14.6,-4c-0.7,0 -1.5,0 -2.2,0.1c-1.5,0.1 -2.9,0.4 -4.3,0.7c-5.8,1.3 -11.1,4.5 -14.9,9.1c-0.9,1 -1.8,2.2 -2.5,3.4c-2.7,4.4 -4.1,9.4 -4.1,14.6c0,0.7 0,1.5 0.1,2.2c0.1,1.5 0.3,3 0.7,4.4c1.4,5.8 4.6,11 9.1,14.8c1.1,0.9 2.3,1.8 3.5,2.5c4.4,2.7 9.4,4.1 14.6,4.1c0.7,0 1.5,0 2.2,-0.1c1.5,-0.1 3,-0.3 4.4,-0.7c12.6,-3.1 21.4,-14.3 21.4,-27.2c0,-0.7 0,-1.5 -0.1,-2.2C197.8,166.3 197.5,164.9 197.2,163.5z"
|
12
|
+
android:fillColor="#FFFFFF"/>
|
13
|
+
<path
|
14
|
+
android:pathData="M285.8,170c0,-64 -51.9,-115.8 -115.8,-115.8H0v51.6h73.6c-12.7,19 -19.4,41.3 -19.4,64.2c0,64 51.9,115.8 115.8,115.8h170v-51.6h-73.6C279,215.2 285.8,192.9 285.8,170zM254,172.9c-13.1,-4.7 -23.6,-7.2 -32.3,-8c0.1,1.7 0.2,3.4 0.2,5.1c0,2.7 -0.2,5.3 -0.6,7.9c9.9,8.2 19.1,19 27.8,32.8c3.7,5.8 1.9,13.5 -3.9,17.2s-13.5,1.9 -17.2,-3.9c-4.9,-8 -10.7,-15.3 -17.2,-22c-3.1,3.9 -6.7,7.4 -10.7,10.3c0.2,7.4 -0.4,14.7 -1.8,21.9c-1.9,9.7 -4.5,19.2 -8,28.5c-2.4,6.5 -9.5,9.9 -16,7.5c-1.7,-0.6 -3.2,-1.6 -4.5,-2.9c-3.4,-3.4 -4.6,-8.5 -2.9,-13.1c1.1,-3.1 2,-5.9 2.9,-8.7c1.3,-4.1 2.3,-7.8 3.1,-11.3c0.9,-4.1 1.6,-8.2 2,-12.4c-1.7,0.1 -3.4,0.2 -5.1,0.2c-2.6,0 -5.3,-0.2 -7.9,-0.6c-7.6,9.2 -18.2,18.6 -32.7,27.8c-5.8,3.7 -13.5,1.9 -17.2,-3.9s-1.9,-13.5 3.9,-17.2c8,-4.9 15.3,-10.7 22,-17.2c-3.9,-3 -7.3,-6.7 -10.2,-10.7c-1,0.1 -1.9,0.1 -2.9,0.1c-12.7,0 -28.2,-2.8 -47.5,-9.8c-6.5,-2.4 -9.8,-9.5 -7.5,-16c2.4,-6.5 9.6,-9.8 15.7,-7.6c13.1,4.7 23.6,7.2 32.3,8c-0.1,-1.7 -0.2,-3.4 -0.2,-5.1c0,-2.6 0.2,-5.3 0.6,-7.9c-9.2,-7.6 -18.6,-18.2 -27.8,-32.7c-3.7,-5.9 -1.9,-13.6 3.9,-17.3c5.9,-3.7 13.6,-1.9 17.3,3.9c4.9,8 10.7,15.3 17.2,22c3.1,-3.9 6.7,-7.4 10.7,-10.3c-0.2,-7.4 0.4,-14.7 1.8,-21.9c1.9,-9.7 4.5,-19.2 8,-28.5c2.4,-6.5 9.5,-9.8 16,-7.5c1.7,0.6 3.2,1.6 4.5,2.9c3.4,3.4 4.6,8.5 2.9,13.1c-1.1,3.1 -2,5.9 -2.9,8.7c-1.3,4.1 -2.3,7.8 -3.1,11.3c-0.9,4.1 -1.6,8.2 -2,12.4c1.7,-0.1 3.4,-0.2 5.1,-0.2c2.7,0 5.3,0.2 7.9,0.6c8.2,-9.9 19,-19.1 32.8,-27.8c5.8,-3.7 13.5,-1.9 17.2,3.9c3.7,5.9 1.9,13.6 -3.9,17.3c-8,4.9 -15.3,10.7 -22,17.2c4,3 7.4,6.7 10.3,10.7c13.3,-0.5 29.5,2.1 50.4,9.7c6.4,2.4 9.6,9.4 7.4,15.8C267.6,171.7 260.5,175.2 254,172.9z"
|
15
|
+
android:fillColor="#FFFFFF"/>
|
16
|
+
</group>
|
17
|
+
</vector>
|
data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/res/drawable/ic_settings.xml
ADDED
@@ -0,0 +1,5 @@
|
|
1
|
+
<vector android:height="24dp" android:tint="#000000"
|
2
|
+
android:viewportHeight="24" android:viewportWidth="24"
|
3
|
+
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
4
|
+
<path android:fillColor="@android:color/white" android:pathData="M19.14,12.94c0.04,-0.3 0.06,-0.61 0.06,-0.94c0,-0.32 -0.02,-0.64 -0.07,-0.94l2.03,-1.58c0.18,-0.14 0.23,-0.41 0.12,-0.61l-1.92,-3.32c-0.12,-0.22 -0.37,-0.29 -0.59,-0.22l-2.39,0.96c-0.5,-0.38 -1.03,-0.7 -1.62,-0.94L14.4,2.81c-0.04,-0.24 -0.24,-0.41 -0.48,-0.41h-3.84c-0.24,0 -0.43,0.17 -0.47,0.41L9.25,5.35C8.66,5.59 8.12,5.92 7.63,6.29L5.24,5.33c-0.22,-0.08 -0.47,0 -0.59,0.22L2.74,8.87C2.62,9.08 2.66,9.34 2.86,9.48l2.03,1.58C4.84,11.36 4.8,11.69 4.8,12s0.02,0.64 0.07,0.94l-2.03,1.58c-0.18,0.14 -0.23,0.41 -0.12,0.61l1.92,3.32c0.12,0.22 0.37,0.29 0.59,0.22l2.39,-0.96c0.5,0.38 1.03,0.7 1.62,0.94l0.36,2.54c0.05,0.24 0.24,0.41 0.48,0.41h3.84c0.24,0 0.44,-0.17 0.47,-0.41l0.36,-2.54c0.59,-0.24 1.13,-0.56 1.62,-0.94l2.39,0.96c0.22,0.08 0.47,0 0.59,-0.22l1.92,-3.32c0.12,-0.22 0.07,-0.47 -0.12,-0.61L19.14,12.94zM12,15.6c-1.98,0 -3.6,-1.62 -3.6,-3.6s1.62,-3.6 3.6,-3.6s3.6,1.62 3.6,3.6S13.98,15.6 12,15.6z"/>
|
5
|
+
</vector>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
3
|
+
xmlns:app="http://schemas.android.com/apk/res-auto"
|
4
|
+
xmlns:tools="http://schemas.android.com/tools"
|
5
|
+
android:layout_width="match_parent"
|
6
|
+
android:layout_height="match_parent"
|
7
|
+
tools:context=".main.MainActivity">
|
8
|
+
|
9
|
+
<ViewFlipper
|
10
|
+
android:id="@+id/view_flipper"
|
11
|
+
android:layout_width="match_parent"
|
12
|
+
android:layout_height="0dp"
|
13
|
+
app:layout_constraintBottom_toTopOf="@+id/bottom_navigation_view"
|
14
|
+
app:layout_constraintTop_toTopOf="parent">
|
15
|
+
<androidx.fragment.app.FragmentContainerView
|
16
|
+
android:id="@+id/tab_one_nav_host"
|
17
|
+
android:name="<%= package_name %>.main.TabOneSessionNavHostFragment"
|
18
|
+
android:layout_width="match_parent"
|
19
|
+
android:layout_height="match_parent" />
|
20
|
+
<androidx.fragment.app.FragmentContainerView
|
21
|
+
android:id="@+id/tab_two_nav_host"
|
22
|
+
android:name="<%= package_name %>.main.TabTwoSessionNavHostFragment"
|
23
|
+
android:layout_width="match_parent"
|
24
|
+
android:layout_height="match_parent" />
|
25
|
+
</ViewFlipper>
|
26
|
+
|
27
|
+
<com.google.android.material.bottomnavigation.BottomNavigationView
|
28
|
+
android:id="@+id/bottom_navigation_view"
|
29
|
+
android:layout_width="match_parent"
|
30
|
+
android:layout_height="wrap_content"
|
31
|
+
app:layout_constraintBottom_toBottomOf="parent"
|
32
|
+
app:menu="@menu/bottom_navigation_menu" />
|
33
|
+
|
34
|
+
</androidx.constraintlayout.widget.ConstraintLayout>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<androidx.constraintlayout.widget.ConstraintLayout
|
3
|
+
xmlns:android="http://schemas.android.com/apk/res/android"
|
4
|
+
xmlns:app="http://schemas.android.com/apk/res-auto"
|
5
|
+
android:layout_width="match_parent"
|
6
|
+
android:layout_height="match_parent">
|
7
|
+
|
8
|
+
<com.google.android.material.appbar.AppBarLayout
|
9
|
+
android:id="@+id/app_bar"
|
10
|
+
android:layout_width="match_parent"
|
11
|
+
android:layout_height="56dp"
|
12
|
+
app:layout_constraintEnd_toEndOf="parent"
|
13
|
+
app:layout_constraintStart_toStartOf="parent"
|
14
|
+
app:layout_constraintTop_toTopOf="parent">
|
15
|
+
|
16
|
+
<FrameLayout
|
17
|
+
android:layout_width="match_parent"
|
18
|
+
android:layout_height="match_parent">
|
19
|
+
|
20
|
+
<com.google.android.material.appbar.MaterialToolbar
|
21
|
+
android:id="@+id/toolbar"
|
22
|
+
android:layout_width="match_parent"
|
23
|
+
android:layout_height="wrap_content" />
|
24
|
+
|
25
|
+
</FrameLayout>
|
26
|
+
|
27
|
+
</com.google.android.material.appbar.AppBarLayout>
|
28
|
+
|
29
|
+
<include
|
30
|
+
layout="@layout/turbo_view"
|
31
|
+
android:layout_width="match_parent"
|
32
|
+
android:layout_height="0dp"
|
33
|
+
app:layout_constraintBottom_toBottomOf="parent"
|
34
|
+
app:layout_constraintTop_toBottomOf="@+id/app_bar" />
|
35
|
+
|
36
|
+
</androidx.constraintlayout.widget.ConstraintLayout>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
3
|
+
android:layout_width="wrap_content"
|
4
|
+
android:layout_height="match_parent">
|
5
|
+
|
6
|
+
<ProgressBar
|
7
|
+
android:layout_width="40dp"
|
8
|
+
android:layout_height="24dp"
|
9
|
+
android:layout_gravity="center"
|
10
|
+
android:layout_marginEnd="12dp"
|
11
|
+
android:indeterminateTint="?colorSecondary" />
|
12
|
+
|
13
|
+
</FrameLayout>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
2
|
+
<item
|
3
|
+
android:id="@+id/tab_item_one"
|
4
|
+
android:enabled="true"
|
5
|
+
android:icon="@drawable/ic_home"
|
6
|
+
android:title="Home"/>
|
7
|
+
<item
|
8
|
+
android:id="@+id/tab_item_two"
|
9
|
+
android:enabled="true"
|
10
|
+
android:icon="@drawable/ic_settings"
|
11
|
+
android:title="Settings"/>
|
12
|
+
</menu>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
3
|
+
xmlns:app="http://schemas.android.com/apk/res-auto"
|
4
|
+
xmlns:tools="http://schemas.android.com/tools">
|
5
|
+
|
6
|
+
<item
|
7
|
+
android:id="@+id/menu_progress"
|
8
|
+
android:title="Loading..."
|
9
|
+
android:visible="false"
|
10
|
+
app:actionLayout="@layout/toolbar_progress"
|
11
|
+
app:showAsAction="always"
|
12
|
+
tools:ignore="AlwaysShowAction" />
|
13
|
+
|
14
|
+
</menu>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Project-wide Gradle settings.
|
2
|
+
# IDE (e.g. Android Studio) users:
|
3
|
+
# Gradle settings configured through the IDE *will override*
|
4
|
+
# any settings specified in this file.
|
5
|
+
# For more details on how to configure your build environment visit
|
6
|
+
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
7
|
+
# Specifies the JVM arguments used for the daemon process.
|
8
|
+
# The setting is particularly useful for tweaking memory settings.
|
9
|
+
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
|
10
|
+
# When configured, Gradle will run in incubating parallel mode.
|
11
|
+
# This option should only be used with decoupled projects. More details, visit
|
12
|
+
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
13
|
+
# org.gradle.parallel=true
|
14
|
+
# AndroidX package structure to make it clearer which packages are bundled with the
|
15
|
+
# Android operating system, and which are packaged with your app's APK
|
16
|
+
# https://developer.android.com/topic/libraries/support-library/androidx-rn
|
17
|
+
android.useAndroidX=true
|
18
|
+
# Kotlin code style for this project: "official" or "obsolete":
|
19
|
+
kotlin.code.style=official
|
20
|
+
# Enables namespacing of each library's R class so that its R class includes only the
|
21
|
+
# resources declared in the library itself and none from the library's dependencies,
|
22
|
+
# thereby reducing the size of the R class for that library
|
23
|
+
android.nonTransitiveRClass=true
|