Skip to content

Commit

Permalink
Attempt an experimental view-based tab controller
Browse files Browse the repository at this point in the history
  • Loading branch information
io7m committed Apr 21, 2019
1 parent 4f0e658 commit a9e4b61
Show file tree
Hide file tree
Showing 42 changed files with 457 additions and 1,277 deletions.
110 changes: 37 additions & 73 deletions build.gradle
Expand Up @@ -60,6 +60,43 @@ ext {
} }
} }


def irradiaOPDS12Version = "0.0.4"
def irradiaMIMEVersion = "0.0.6"
def irradiaHTTPVersion = "0.0.1"
def irradiaServiceDirectoryVersion = "0.0.1"

ext.libraries = [
androidMaterial: "com.google.android.material:material:1.0.0",
androidSupportTestRules: "com.android.support.test:rules:1.0.2",
androidSupportTestRunner: "com.android.support.test:runner:1.0.2",
androidTestOrchestrator: "com.android.support.test:orchestrator:1.0.2",
androidXActivity: "androidx.activity:activity-ktx:1.0.0-alpha06",
androidXAppCompat: "androidx.appcompat:appcompat:1.1.0-alpha04",
androidXCore: "androidx.core:core-ktx:1.0.1",
googleGuava: "com.google.guava:guava:27.1-android",
irradiaHTTPAPI: "one.irradia.http:one.irradia.http.api:${irradiaHTTPVersion}",
irradiaHTTPVanilla: "one.irradia.http:one.irradia.http.vanilla:${irradiaHTTPVersion}",
irradiaMimeAPI: "one.irradia.mime:one.irradia.mime.api:${irradiaMIMEVersion}",
irradiaMimeVanilla: "one.irradia.mime:one.irradia.mime.vanilla:${irradiaMIMEVersion}",
irradiaOPDS12API: "one.irradia.opds1_2:one.irradia.opds1_2.api:${irradiaOPDS12Version}",
irradiaOPDS12Dublin: "one.irradia.opds1_2:one.irradia.opds1_2.dublin:${irradiaOPDS12Version}",
irradiaOPDS12NYPL: "one.irradia.opds1_2:one.irradia.opds1_2.nypl:${irradiaOPDS12Version}",
irradiaOPDS12ParserAPI: "one.irradia.opds1_2:one.irradia.opds1_2.parser.api:${irradiaOPDS12Version}",
irradiaOPDS12ParserVanilla: "one.irradia.opds1_2:one.irradia.opds1_2.vanilla:${irradiaOPDS12Version}",
irradiaServiceDirectoryAPI: "one.irradia.servicedirectory:one.irradia.servicedirectory.api:${irradiaServiceDirectoryVersion}",
irradiaServiceDirectoryVanilla: "one.irradia.servicedirectory:one.irradia.servicedirectory.vanilla:${irradiaServiceDirectoryVersion}",
jackson: "com.fasterxml.jackson.core:jackson-core:2.9.8",
jodaTime: "joda-time:joda-time:2.10.1",
junit: "junit:junit:4.12",
kotlinReflect: "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version",
kotlinStdlib: "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version",
logbackAndroid: "com.github.tony19:logback-android:2.0.0",
logbackClassic: "ch.qos.logback:logback-classic:1.3.0-alpha4",
okhttp: "com.squareup.okhttp3:okhttp:3.14.1",
rxjava: "io.reactivex.rxjava2:rxjava:2.2.8",
slf4j: "org.slf4j:slf4j-api:1.7.25"
]

apply plugin: "io.codearte.nexus-staging" apply plugin: "io.codearte.nexus-staging"
apply plugin: "com.vanniktech.android.junit.jacoco" apply plugin: "com.vanniktech.android.junit.jacoco"


Expand Down Expand Up @@ -123,16 +160,11 @@ Automatic-Module-Name: ${POM_AUTOMATIC_MODULE_NAME}
defaultConfig { defaultConfig {
minSdkVersion androidMinimumSDKVersion minSdkVersion androidMinimumSDKVersion
targetSdkVersion androidTargetSDKVersion targetSdkVersion androidTargetSDKVersion
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
} }
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
testOptions {
execution "ANDROID_TEST_ORCHESTRATOR"
animationsDisabled = true
}
} }
break break


Expand Down Expand Up @@ -256,73 +288,5 @@ Automatic-Module-Name: ${POM_AUTOMATIC_MODULE_NAME}
jcenter() jcenter()
google() google()
} }

configurations {
dependencyAndroidMaterial
dependencyAndroidSupportTestRules
dependencyAndroidSupportTestRunner
dependencyAndroidTestOrchestrator
dependencyAndroidXActivity
dependencyAndroidXAppCompat
dependencyAndroidXCore
dependencyGoogleGuava
dependencyIrradiaHTTPAPI
dependencyIrradiaHTTPImpl
dependencyIrradiaMimeAPI
dependencyIrradiaMimeImpl
dependencyIrradiaOPDS12API
dependencyIrradiaOPDS12Dublin
dependencyIrradiaOPDS12NYPL
dependencyIrradiaOPDS12ParserAPI
dependencyIrradiaOPDS12ParserImpl
dependencyIrradiaServiceDirectoryAPI
dependencyIrradiaServiceDirectoryImpl
dependencyJUnit
dependencyJackson
dependencyJodaTime
dependencyKotlinReflect
dependencyKotlinStdlib
dependencyLogback
dependencyOkHttp
dependencyRXJava
dependencySLF4J
}

dependencies {

def irradiaOPDS12Version = "0.0.4"
def irradiaMIMEVersion = "0.0.6"
def irradiaHTTPVersion = "0.0.1"
def irradiaServiceDirectoryVersion = "0.0.1"

dependencyAndroidMaterial "com.google.android.material:material:1.0.0"
dependencyAndroidSupportTestRules "com.android.support.test:rules:1.0.2"
dependencyAndroidSupportTestRunner "com.android.support.test:runner:1.0.2"
dependencyAndroidTestOrchestrator "com.android.support.test:orchestrator:1.0.2"
dependencyAndroidXActivity "androidx.activity:activity-ktx:1.0.0-alpha06"
dependencyAndroidXAppCompat "androidx.appcompat:appcompat:1.1.0-alpha04"
dependencyAndroidXCore "androidx.core:core-ktx:1.0.1"
dependencyGoogleGuava "com.google.guava:guava:27.1-android"
dependencyIrradiaHTTPAPI "one.irradia.http:one.irradia.http.api:${irradiaHTTPVersion}"
dependencyIrradiaHTTPImpl "one.irradia.http:one.irradia.http.vanilla:${irradiaHTTPVersion}"
dependencyIrradiaMimeAPI "one.irradia.mime:one.irradia.mime.api:${irradiaMIMEVersion}"
dependencyIrradiaMimeImpl "one.irradia.mime:one.irradia.mime.vanilla:${irradiaMIMEVersion}"
dependencyIrradiaOPDS12API "one.irradia.opds1_2:one.irradia.opds1_2.api:${irradiaOPDS12Version}"
dependencyIrradiaOPDS12Dublin "one.irradia.opds1_2:one.irradia.opds1_2.dublin:${irradiaOPDS12Version}"
dependencyIrradiaOPDS12NYPL "one.irradia.opds1_2:one.irradia.opds1_2.nypl:${irradiaOPDS12Version}"
dependencyIrradiaOPDS12ParserAPI "one.irradia.opds1_2:one.irradia.opds1_2.parser.api:${irradiaOPDS12Version}"
dependencyIrradiaOPDS12ParserImpl "one.irradia.opds1_2:one.irradia.opds1_2.vanilla:${irradiaOPDS12Version}"
dependencyIrradiaServiceDirectoryAPI "one.irradia.servicedirectory:one.irradia.servicedirectory.api:${irradiaServiceDirectoryVersion}"
dependencyIrradiaServiceDirectoryImpl "one.irradia.servicedirectory:one.irradia.servicedirectory.vanilla:${irradiaServiceDirectoryVersion}"
dependencyJUnit "junit:junit:4.12"
dependencyJackson "com.fasterxml.jackson.core:jackson-core:2.9.8"
dependencyJodaTime "joda-time:joda-time:2.10.1"
dependencyKotlinReflect "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
dependencyKotlinStdlib "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
dependencyLogback "ch.qos.logback:logback-classic:1.3.0-alpha4"
dependencyOkHttp "com.squareup.okhttp3:okhttp:3.14.1"
dependencyRXJava "io.reactivex.rxjava2:rxjava:2.2.8"
dependencySLF4J "org.slf4j:slf4j-api:1.8.0-beta4"
}
} }


14 changes: 6 additions & 8 deletions one.irradia.neutrino.feeds.api/build.gradle
Expand Up @@ -14,16 +14,14 @@
* IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */


configurations {
api.extendsFrom dependencyIrradiaHTTPAPI
api.extendsFrom dependencyGoogleGuava

implementation.extendsFrom dependencyKotlinStdlib
implementation.extendsFrom dependencySLF4J
}

dependencies { dependencies {
api project(":one.irradia.neutrino.feeds.model") api project(":one.irradia.neutrino.feeds.model")


implementation project(":one.irradia.neutrino.feeds.spi") implementation project(":one.irradia.neutrino.feeds.spi")

api libraries.irradiaHTTPAPI
api libraries.googleGuava

implementation libraries.kotlinStdlib
implementation libraries.slf4j
} }
6 changes: 1 addition & 5 deletions one.irradia.neutrino.feeds.model/build.gradle
Expand Up @@ -14,10 +14,6 @@
* IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */


configurations {
implementation.extendsFrom dependencyKotlinStdlib
}

dependencies { dependencies {

implementation libraries.kotlinStdlib
} }
20 changes: 8 additions & 12 deletions one.irradia.neutrino.feeds.opds12/build.gradle
Expand Up @@ -14,22 +14,18 @@
* IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */


configurations {
implementation.extendsFrom dependencyKotlinStdlib

implementation.extendsFrom dependencySLF4J

implementation.extendsFrom dependencyIrradiaOPDS12API
implementation.extendsFrom dependencyIrradiaOPDS12Dublin
implementation.extendsFrom dependencyIrradiaOPDS12NYPL
implementation.extendsFrom dependencyIrradiaOPDS12ParserAPI
implementation.extendsFrom dependencyIrradiaOPDS12ParserImpl
}

dependencies { dependencies {
api project(":one.irradia.neutrino.feeds.model") api project(":one.irradia.neutrino.feeds.model")


implementation project(":one.irradia.neutrino.feeds.spi") implementation project(":one.irradia.neutrino.feeds.spi")

implementation libraries.kotlinStdlib
implementation libraries.slf4j
implementation libraries.irradiaOPDS12API
implementation libraries.irradiaOPDS12Dublin
implementation libraries.irradiaOPDS12NYPL
implementation libraries.irradiaOPDS12ParserAPI
implementation libraries.irradiaOPDS12ParserVanilla
} }


def opds12ResourcesDir = file("$buildDir/generated-resources/") def opds12ResourcesDir = file("$buildDir/generated-resources/")
Expand Down
8 changes: 3 additions & 5 deletions one.irradia.neutrino.feeds.spi/build.gradle
Expand Up @@ -14,11 +14,9 @@
* IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */


configurations {
implementation.extendsFrom dependencyKotlinStdlib
implementation.extendsFrom dependencyIrradiaMimeAPI
}

dependencies { dependencies {
implementation project(":one.irradia.neutrino.feeds.model") implementation project(":one.irradia.neutrino.feeds.model")

implementation libraries.kotlinStdlib
implementation libraries.irradiaMimeAPI
} }
19 changes: 10 additions & 9 deletions one.irradia.neutrino.sandbox/build.gradle
Expand Up @@ -14,15 +14,16 @@
* IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */


configurations {
implementation.extendsFrom dependencyKotlinStdlib
implementation.extendsFrom dependencyRXJava
implementation.extendsFrom dependencyAndroidXAppCompat
implementation.extendsFrom dependencyAndroidXActivity
implementation.extendsFrom dependencyAndroidXCore
implementation.extendsFrom dependencyAndroidMaterial
}

dependencies { dependencies {
implementation project(":one.irradia.neutrino.services.api")
implementation project(":one.irradia.neutrino.views") implementation project(":one.irradia.neutrino.views")

implementation libraries.slf4j
implementation libraries.logbackAndroid
implementation libraries.kotlinStdlib
implementation libraries.rxjava
implementation libraries.androidXAppCompat
implementation libraries.androidXActivity
implementation libraries.androidXCore
implementation libraries.androidMaterial
} }
15 changes: 15 additions & 0 deletions one.irradia.neutrino.sandbox/src/main/assets/logback.xml
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="logcat" class="ch.qos.logback.classic.android.LogcatAppender">
<tagEncoder>
<pattern>%logger{12}</pattern>
</tagEncoder>
<encoder>
<pattern>[%-20thread] %msg</pattern>
</encoder>
</appender>

<root level="DEBUG">
<appender-ref ref="logcat" />
</root>
</configuration>
@@ -1,41 +1,76 @@
package one.irradia.neutrino.sandbox package one.irradia.neutrino.sandbox


import android.os.Bundle import android.os.Bundle
import android.view.MenuItem import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import io.reactivex.subjects.Subject import androidx.appcompat.widget.Toolbar
import one.irradia.neutrino.views.api.NeutrinoActivityHelper import one.irradia.neutrino.views.NTabController
import one.irradia.neutrino.views.api.NeutrinoEventType import one.irradia.neutrino.views.NTabControllerItem
import one.irradia.neutrino.views.api.NeutrinoListenerType import org.slf4j.LoggerFactory
import one.irradia.neutrino.views.api.NeutrinoMain
import one.irradia.neutrino.views.pages.NeutrinoPageType
import one.irradia.neutrino.views.tabs.NeutrinoTabType


class BasicReader : AppCompatActivity(), NeutrinoListenerType { class BasicReader : AppCompatActivity() {


override val neutrinoEventBus: Subject<NeutrinoEventType> private val logger = LoggerFactory.getLogger(BasicReader::class.java)
get() = this.neutrinoMain.eventBus


private lateinit var neutrinoMain: NeutrinoMain private lateinit var content: ViewGroup
private lateinit var toolbar: Toolbar


override fun onNeutrinoPageMenuUpdated(page: NeutrinoPageType) = override fun onCreate(savedInstanceState: Bundle?) {
NeutrinoActivityHelper.onNeutrinoPageMenuUpdated(this, page) super.onCreate(savedInstanceState)


override fun onNeutrinoTabUpdated(tab: NeutrinoTabType) = this.logger.debug("onCreate: {}", savedInstanceState)
NeutrinoActivityHelper.onNeutrinoTabUpdated(this, tab)


override fun onNeutrinoTabSelected(tab: NeutrinoTabType) = this.setContentView(R.layout.neutrino_activity)
NeutrinoActivityHelper.onNeutrinoTabSelected(this, tab)


override fun onBackPressed() { this.content =
NeutrinoActivityHelper.onNeutrinoBackPressed(this) this.findViewById(R.id.neutrinoContent)
} this.toolbar =
this.findViewById(R.id.neutrinoToolbar)


override fun onOptionsItemSelected(item: MenuItem): Boolean = this.toolbar.title = "Neutrino Toolbar"
NeutrinoActivityHelper.onNeutrinoOptionsItemSelected(this, item) this.toolbar.inflateMenu(R.menu.neutrino_page_feed_external_menu)


override fun onCreate(savedInstanceState: Bundle?) { val controller =
super.onCreate(savedInstanceState) NTabController(
this.neutrinoMain = NeutrinoActivityHelper.onNeutrinoCreate(this, savedInstanceState) controllers = listOf(
NTabControllerItem(
title = "Controller A",
icon = this.resources.getDrawable(R.drawable.neutrino_icon_books, this.theme),
controller = NControllerA()
),
NTabControllerItem(
title = "Controller B",
icon = this.resources.getDrawable(R.drawable.neutrino_icon_books, this.theme),
controller = NControllerB()
),

NTabControllerItem(
title = "Controller B",
icon = this.resources.getDrawable(R.drawable.neutrino_icon_books, this.theme),
controller = NTabController(
controllers = listOf(
NTabControllerItem(
title = "Controller A",
icon = this.resources.getDrawable(R.drawable.neutrino_icon_books, this.theme),
controller = NControllerA()
),
NTabControllerItem(
title = "Controller B",
icon = this.resources.getDrawable(R.drawable.neutrino_icon_books, this.theme),
controller = NControllerB()
)
))
),

NTabControllerItem(
title = "Controller C",
icon = this.resources.getDrawable(R.drawable.neutrino_icon_books, this.theme),
controller = NControllerC())))

val controllerView =
controller.onCreateView(this, this.layoutInflater, this.content)

this.content.addView(controllerView)
controller.onAttach()
} }
} }

0 comments on commit a9e4b61

Please sign in to comment.