From 44e587fd0fd599f67d67c4ccabcfc2c99a835ad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=BCrten?= <sebastian@mobanisto.de> Date: Sat, 26 Jun 2021 08:32:53 +0200 Subject: [PATCH] Add dagger, a simple component and view model --- mailbox/build.gradle | 4 +++- mailbox/src/main/AndroidManifest.xml | 1 + .../org/briarproject/mailbox/ApplicationComponent.kt | 10 ++++++++++ .../org/briarproject/mailbox/MailboxApplication.kt | 9 +++++++++ .../org/briarproject/mailbox/MailboxViewModel.kt | 9 +++++++++ .../java/org/briarproject/mailbox/MainActivity.kt | 12 ++++++++++++ mailbox/src/main/res/layout/activity_main.xml | 1 + 7 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 mailbox/src/main/java/org/briarproject/mailbox/ApplicationComponent.kt create mode 100644 mailbox/src/main/java/org/briarproject/mailbox/MailboxApplication.kt create mode 100644 mailbox/src/main/java/org/briarproject/mailbox/MailboxViewModel.kt diff --git a/mailbox/build.gradle b/mailbox/build.gradle index b6dfa93a..9806eb65 100644 --- a/mailbox/build.gradle +++ b/mailbox/build.gradle @@ -1,6 +1,7 @@ plugins { id 'com.android.application' id 'kotlin-android' + id 'kotlin-kapt' } android { @@ -33,8 +34,9 @@ android { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation 'com.google.dagger:dagger:2.37' + kapt 'com.google.dagger:dagger-compiler:2.37' implementation 'androidx.appcompat:appcompat:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.+' diff --git a/mailbox/src/main/AndroidManifest.xml b/mailbox/src/main/AndroidManifest.xml index b60125e9..50353209 100644 --- a/mailbox/src/main/AndroidManifest.xml +++ b/mailbox/src/main/AndroidManifest.xml @@ -3,6 +3,7 @@ package="org.briarproject.mailbox"> <application + android:name=".MailboxApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" diff --git a/mailbox/src/main/java/org/briarproject/mailbox/ApplicationComponent.kt b/mailbox/src/main/java/org/briarproject/mailbox/ApplicationComponent.kt new file mode 100644 index 00000000..18af8862 --- /dev/null +++ b/mailbox/src/main/java/org/briarproject/mailbox/ApplicationComponent.kt @@ -0,0 +1,10 @@ +package org.briarproject.mailbox + +import dagger.Component + +@Component +interface ApplicationComponent { + + fun inject(activity: MainActivity) + +} \ No newline at end of file diff --git a/mailbox/src/main/java/org/briarproject/mailbox/MailboxApplication.kt b/mailbox/src/main/java/org/briarproject/mailbox/MailboxApplication.kt new file mode 100644 index 00000000..fdd09a27 --- /dev/null +++ b/mailbox/src/main/java/org/briarproject/mailbox/MailboxApplication.kt @@ -0,0 +1,9 @@ +package org.briarproject.mailbox + +import android.app.Application + +class MailboxApplication : Application() { + + val appComponent = DaggerApplicationComponent.create() + +} \ No newline at end of file diff --git a/mailbox/src/main/java/org/briarproject/mailbox/MailboxViewModel.kt b/mailbox/src/main/java/org/briarproject/mailbox/MailboxViewModel.kt new file mode 100644 index 00000000..be4b4faf --- /dev/null +++ b/mailbox/src/main/java/org/briarproject/mailbox/MailboxViewModel.kt @@ -0,0 +1,9 @@ +package org.briarproject.mailbox + +import javax.inject.Inject + +class MailboxViewModel @Inject constructor() { + + val text = "Hello Mailbox"; + +} \ No newline at end of file diff --git a/mailbox/src/main/java/org/briarproject/mailbox/MainActivity.kt b/mailbox/src/main/java/org/briarproject/mailbox/MainActivity.kt index 631e5e91..04d715a3 100644 --- a/mailbox/src/main/java/org/briarproject/mailbox/MainActivity.kt +++ b/mailbox/src/main/java/org/briarproject/mailbox/MainActivity.kt @@ -2,10 +2,22 @@ package org.briarproject.mailbox import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.widget.TextView +import javax.inject.Inject class MainActivity : AppCompatActivity() { + + lateinit var applicationComponent: ApplicationComponent + + @Inject + lateinit var mailboxViewModel: MailboxViewModel + override fun onCreate(savedInstanceState: Bundle?) { + (applicationContext as MailboxApplication).appComponent.inject(this) super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) + + val textView = findViewById<TextView>(R.id.text) + textView.setText(mailboxViewModel.text) } } \ No newline at end of file diff --git a/mailbox/src/main/res/layout/activity_main.xml b/mailbox/src/main/res/layout/activity_main.xml index 4fc24441..18428a36 100644 --- a/mailbox/src/main/res/layout/activity_main.xml +++ b/mailbox/src/main/res/layout/activity_main.xml @@ -7,6 +7,7 @@ tools:context=".MainActivity"> <TextView + android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" -- GitLab