Skip to content

Commit

Permalink
smoke weed every day
Browse files Browse the repository at this point in the history
  • Loading branch information
mercuriete committed Dec 4, 2018
1 parent 3be35ff commit 4e65ec6
Show file tree
Hide file tree
Showing 16 changed files with 192 additions and 71 deletions.
2 changes: 1 addition & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ dependencies {
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

def daggerVersion = 2.18
def daggerVersion = 2.19
implementation "com.google.dagger:dagger:$daggerVersion"
implementation "com.google.dagger:dagger-android:$daggerVersion"
implementation "com.google.dagger:dagger-android-support:$daggerVersion"
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
android:theme="@style/AppTheme"
android:name="org.mercuriete.musiciantools.MusicianToolsApp">
<activity
android:name=".bpmcalculator.BPMCalculatorActivity"
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
Expand All @@ -22,4 +22,4 @@
</activity>
</application>

</manifest>
</manifest>
28 changes: 28 additions & 0 deletions app/src/main/java/org/mercuriete/musiciantools/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package org.mercuriete.musiciantools

import android.os.Bundle
import dagger.android.support.DaggerAppCompatActivity
import org.mercuriete.musiciantools.bpmcalculator.BPMCalculatorFragment
import org.mercuriete.musiciantools.di.ActivityScoped
import org.mercuriete.musiciantools.util.replaceFragmentInActivity
import javax.inject.Inject

class MainActivity : DaggerAppCompatActivity() {

@Inject
lateinit var injectedFragment: BPMCalculatorFragment

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContentView(R.layout.main_activity)


val bpmCalculatorFragment = supportFragmentManager.findFragmentById(R.id.content)
as BPMCalculatorFragment? ?: injectedFragment.also {
replaceFragmentInActivity(it, R.id.content)
}

}

}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package org.mercuriete.musiciantools.bpmcalculator

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import dagger.android.support.DaggerFragment
import kotlinx.android.synthetic.main.bpm_calculator_fragment.*
import org.mercuriete.musiciantools.R
import javax.inject.Inject


class BPMCalculatorFragment @Inject constructor() : DaggerFragment(), BPMCalculatorContract.View {

@Inject
lateinit var presenter: BPMCalculatorContract.Presenter

override fun showBPM(bpm: String) {
bpmText.text = bpm
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.bpm_calculator_fragment, container, false)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
button.setOnClickListener {
presenter.addBeat()
}
}

override fun onResume() {
super.onResume()
presenter.takeView(this)
}

override fun onDestroy() {
super.onDestroy()
presenter.dropView() //prevent leaking activity in
// case presenter is orchestrating a long running task
}

}
Original file line number Diff line number Diff line change
@@ -1,21 +1,31 @@
package org.mercuriete.musiciantools.bpmcalculator

import dagger.Provides
import dagger.Module
import dagger.Provides
import dagger.android.ContributesAndroidInjector
import org.mercuriete.musiciantools.di.ActivityScoped
import org.mercuriete.musiciantools.di.FragmentScoped
import javax.inject.Singleton


@Module
class BPMCalculatorModule {
abstract class BPMCalculatorModule {

@Provides
fun bpmCalculatorServiceProvider(): BPMCalculatorService {
return BPMCalculatorServiceImpl()
}
@Module
companion object {
@JvmStatic
@Provides
fun bpmCalculatorServiceProvider(): BPMCalculatorService {
return BPMCalculatorServiceImpl()
}

@Singleton
@Provides
fun bpmCalculatorPresenterProvider(bpmCalculatorService: BPMCalculatorService): BPMCalculatorContract.Presenter {
return BPMCalculatorPresenter(bpmCalculatorService)
@JvmStatic
@Provides
fun bpmCalculatorPresenterProvider(bpmCalculatorService: BPMCalculatorService): BPMCalculatorContract.Presenter {
return BPMCalculatorPresenter(bpmCalculatorService)
}
}

@ContributesAndroidInjector
abstract fun bpmCalculatorFragment(): BPMCalculatorFragment
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
package org.mercuriete.musiciantools.bpmcalculator

import android.support.annotation.Nullable
import org.mercuriete.musiciantools.di.ActivityScoped
import javax.inject.Inject

class BPMCalculatorPresenter : BPMCalculatorContract.Presenter {
class BPMCalculatorPresenter @Inject constructor(private var bpmCalculatorService: BPMCalculatorService) : BPMCalculatorContract.Presenter {
@Nullable
private var bpmCalculatorView: BPMCalculatorContract.View? = null

private var bpmCalculatorService: BPMCalculatorService

@Inject
constructor(bpmCalculatorService: BPMCalculatorService) {
this.bpmCalculatorService = bpmCalculatorService
}

override fun addBeat() {
bpmCalculatorService.beat()
bpmCalculatorView?.showBPM(String.format("%.2f", bpmCalculatorService.getBPM()))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.mercuriete.musiciantools.bpmcalculator

import javax.inject.Singleton

class BPMCalculatorServiceImpl : BPMCalculatorService {

private val timestamps = mutableListOf<Long>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ package org.mercuriete.musiciantools.di

import dagger.Module
import dagger.android.ContributesAndroidInjector
import org.mercuriete.musiciantools.bpmcalculator.BPMCalculatorActivity
import org.mercuriete.musiciantools.MainActivity
import org.mercuriete.musiciantools.bpmcalculator.BPMCalculatorModule


/**
Expand All @@ -14,7 +15,9 @@ import org.mercuriete.musiciantools.bpmcalculator.BPMCalculatorActivity
*/
@Module
abstract class ActivityBindingModule {
@ActivityScoped
@ContributesAndroidInjector(modules = [ApplicationModule::class])
internal abstract fun menuActivity(): BPMCalculatorActivity
@ContributesAndroidInjector(modules =
[
BPMCalculatorModule::class
])
internal abstract fun mainActivity(): MainActivity
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package org.mercuriete.musiciantools.di
import java.lang.annotation.Documented
import java.lang.annotation.Retention
import java.lang.annotation.RetentionPolicy
import javax.inject.Qualifier
import javax.inject.Scope


Expand All @@ -12,7 +13,6 @@ import javax.inject.Scope
* scope to be used by all fragment components. Additionally, a component with a specific scope
* cannot have a sub component with the same scope.
*/
@Documented
@Scope
@Retention(RetentionPolicy.RUNTIME)
@kotlin.annotation.Retention(AnnotationRetention.RUNTIME)
annotation class ActivityScoped
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ import org.mercuriete.musiciantools.bpmcalculator.BPMCalculatorModule
[
AndroidSupportInjectionModule::class,
ApplicationModule::class,
ActivityBindingModule::class,
BPMCalculatorModule::class
ActivityBindingModule::class
])
interface AppComponent : AndroidInjector<MusicianToolsApp> {
@Component.Builder
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.mercuriete.musiciantools.di

import javax.inject.Scope

@Scope
@kotlin.annotation.Retention(AnnotationRetention.RUNTIME)
annotation class FragmentScoped
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* 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.
*/
package org.mercuriete.musiciantools.util


import android.support.annotation.IdRes
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.support.v4.app.FragmentTransaction
import android.support.v7.app.ActionBar
import android.support.v7.app.AppCompatActivity

/**
* The `fragment` is added to the container view with id `frameId`. The operation is
* performed by the `fragmentManager`.
*/
fun AppCompatActivity.replaceFragmentInActivity(fragment: Fragment, @IdRes frameId: Int) {
supportFragmentManager.transact {
replace(frameId, fragment)
}
}

/**
* The `fragment` is added to the container view with tag. The operation is
* performed by the `fragmentManager`.
*/
fun AppCompatActivity.addFragmentToActivity(fragment: Fragment, tag: String) {
supportFragmentManager.transact {
add(fragment, tag)
}
}

fun AppCompatActivity.setupActionBar(@IdRes toolbarId: Int, action: ActionBar.() -> Unit) {
setSupportActionBar(findViewById(toolbarId))
supportActionBar?.run {
action()
}
}

/**
* Runs a FragmentTransaction, then calls commit().
*/
private inline fun FragmentManager.transact(action: FragmentTransaction.() -> Unit) {
beginTransaction().apply {
action()
}.commit()
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/bpmCalculatorFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".bpmcalculator.BPMCalculatorActivity"
tools:showIn="@layout/activity_menu">
app:layout_behavior="@string/appbar_scrolling_view_behavior">

<TextView
android:id="@+id/bpmText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:textSize="32sp"
android:text="@string/hello"
android:textSize="32sp"
app:layout_constraintBottom_toTopOf="@+id/button"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
Expand All @@ -24,12 +22,12 @@
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:text="@string/tap_me"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />

</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".bpmcalculator.BPMCalculatorActivity">
tools:context=".MainActivity">

<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
Expand All @@ -20,6 +20,11 @@

</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_menu" />
<LinearLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" />


</android.support.design.widget.CoordinatorLayout>
</android.support.design.widget.CoordinatorLayout>
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
ext.kotlin_version = '1.2.71'
ext.kotlin_version = '1.3.10'
repositories {
google()
jcenter()
Expand Down

0 comments on commit 4e65ec6

Please sign in to comment.