From 8aaccb372d9f2a6be7cf13e03f5a66752e20d678 Mon Sep 17 00:00:00 2001 From: Alexander Salas Bastidas Date: Mon, 30 Nov 2020 06:53:45 +0100 Subject: [PATCH] feat: initial commit --- .gitignore | 59 +++++++ Gemfile | 12 ++ Gemfile.lock | 161 ++++++++++++++++++ README.md | 38 +++++ app/.gitignore | 1 + app/appcenter-post-build.sh | 3 + app/appcenter-post-clone.sh | 3 + app/appcenter-pre-build.sh | 3 + app/build.gradle | 57 +++++++ app/proguard-rules.pro | 25 +++ .../android/ExampleInstrumentedTest.java | 40 +++++ app/src/main/AndroidManifest.xml | 23 +++ app/src/main/ic_launcher-web.png | Bin 0 -> 16246 bytes .../sampleapp/android/AnalyticsActivity.kt | 59 +++++++ .../sampleapp/android/BuildActivity.kt | 15 ++ .../sampleapp/android/CrashesActivity.kt | 35 ++++ .../sampleapp/android/DistributeActivity.kt | 15 ++ .../sampleapp/android/MainActivity.kt | 77 +++++++++ .../sampleapp/android/PushActivity.kt | 15 ++ .../sampleapp/android/TestActivity.kt | 15 ++ .../sampleapp/android/WelcomeActivity.kt | 15 ++ app/src/main/res/drawable/analytics.png | Bin 0 -> 51137 bytes app/src/main/res/drawable/build.png | Bin 0 -> 54138 bytes app/src/main/res/drawable/crashes.png | Bin 0 -> 53109 bytes app/src/main/res/drawable/distribute.png | Bin 0 -> 47663 bytes app/src/main/res/drawable/mclogo.png | Bin 0 -> 11562 bytes app/src/main/res/drawable/push.png | Bin 0 -> 30957 bytes app/src/main/res/drawable/test.png | Bin 0 -> 49538 bytes app/src/main/res/layout/activity_root.xml | 29 ++++ app/src/main/res/layout/analytics_root.xml | 64 +++++++ app/src/main/res/layout/build_root.xml | 39 +++++ app/src/main/res/layout/crashes_root.xml | 51 ++++++ app/src/main/res/layout/distribute_root.xml | 37 ++++ app/src/main/res/layout/push_root.xml | 37 ++++ app/src/main/res/layout/test_root.xml | 39 +++++ app/src/main/res/layout/welcome_root.xml | 39 +++++ app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1590 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4208 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1157 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2555 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2126 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 6114 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 3305 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10056 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 4460 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 14696 bytes app/src/main/res/values-w820dp/dimens.xml | 6 + app/src/main/res/values/colors.xml | 23 +++ app/src/main/res/values/dimens.xml | 7 + app/src/main/res/values/strings.xml | 15 ++ app/src/main/res/values/styles.xml | 20 +++ .../sampleapp/android/ExampleUnitTest.java | 17 ++ azure-pipelines.yml | 62 +++++++ build.gradle | 27 +++ fastlane/Appfile | 4 + fastlane/Fastfile | 32 ++++ fastlane/Pluginfile | 5 + gradle.properties | 19 +++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 160 +++++++++++++++++ gradlew.bat | 90 ++++++++++ settings.gradle | 1 + 63 files changed, 1500 insertions(+) create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 README.md create mode 100644 app/.gitignore create mode 100644 app/appcenter-post-build.sh create mode 100644 app/appcenter-post-clone.sh create mode 100644 app/appcenter-pre-build.sh create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/ms/appcenter/sampleapp/android/ExampleInstrumentedTest.java create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/ic_launcher-web.png create mode 100644 app/src/main/java/ms/appcenter/sampleapp/android/AnalyticsActivity.kt create mode 100644 app/src/main/java/ms/appcenter/sampleapp/android/BuildActivity.kt create mode 100644 app/src/main/java/ms/appcenter/sampleapp/android/CrashesActivity.kt create mode 100644 app/src/main/java/ms/appcenter/sampleapp/android/DistributeActivity.kt create mode 100644 app/src/main/java/ms/appcenter/sampleapp/android/MainActivity.kt create mode 100644 app/src/main/java/ms/appcenter/sampleapp/android/PushActivity.kt create mode 100644 app/src/main/java/ms/appcenter/sampleapp/android/TestActivity.kt create mode 100644 app/src/main/java/ms/appcenter/sampleapp/android/WelcomeActivity.kt create mode 100644 app/src/main/res/drawable/analytics.png create mode 100644 app/src/main/res/drawable/build.png create mode 100644 app/src/main/res/drawable/crashes.png create mode 100644 app/src/main/res/drawable/distribute.png create mode 100644 app/src/main/res/drawable/mclogo.png create mode 100644 app/src/main/res/drawable/push.png create mode 100644 app/src/main/res/drawable/test.png create mode 100644 app/src/main/res/layout/activity_root.xml create mode 100644 app/src/main/res/layout/analytics_root.xml create mode 100644 app/src/main/res/layout/build_root.xml create mode 100644 app/src/main/res/layout/crashes_root.xml create mode 100644 app/src/main/res/layout/distribute_root.xml create mode 100644 app/src/main/res/layout/push_root.xml create mode 100644 app/src/main/res/layout/test_root.xml create mode 100644 app/src/main/res/layout/welcome_root.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.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.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.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.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/values-w820dp/dimens.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/test/java/ms/appcenter/sampleapp/android/ExampleUnitTest.java create mode 100644 azure-pipelines.yml create mode 100644 build.gradle create mode 100644 fastlane/Appfile create mode 100644 fastlane/Fastfile create mode 100644 fastlane/Pluginfile create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0cf6eeb --- /dev/null +++ b/.gitignore @@ -0,0 +1,59 @@ +lt application files +*.apk +*.ap_ + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ + +# Gradle files +.gradle/ +build/ +/*/build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# Intellij +*.iml +.idea/ + +# Keystore files +*.jks + +# Mac files +.DS_Store + +# Google credentials files +google-services.json*.iml + +fastlane/.env + +app/release/ + +fastlane/README.md + +fastlane/report.xml + +.project + +.settings/ diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..b32fe16 --- /dev/null +++ b/Gemfile @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } + +# gem "rails" + +gem "fastlane", "~> 2.137" + +plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') +eval_gemfile(plugins_path) if File.exist?(plugins_path) diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..eeb2c6a --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,161 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.2) + addressable (2.7.0) + public_suffix (>= 2.0.2, < 5.0) + atomos (0.1.3) + babosa (1.0.3) + claide (1.0.3) + colored (1.2) + colored2 (3.1.2) + commander-fastlane (4.4.6) + highline (~> 1.7.2) + declarative (0.0.10) + declarative-option (0.1.0) + digest-crc (0.4.1) + domain_name (0.5.20190701) + unf (>= 0.0.5, < 1.0.0) + dotenv (2.7.5) + emoji_regex (1.0.1) + excon (0.71.0) + faraday (0.17.1) + multipart-post (>= 1.2, < 3) + faraday-cookie_jar (0.0.6) + faraday (>= 0.7.4) + http-cookie (~> 1.0.0) + faraday_middleware (0.13.1) + faraday (>= 0.7.4, < 1.0) + fastimage (2.1.7) + fastlane (2.137.0) + CFPropertyList (>= 2.3, < 4.0.0) + addressable (>= 2.3, < 3.0.0) + babosa (>= 1.0.2, < 2.0.0) + bundler (>= 1.12.0, < 3.0.0) + colored + commander-fastlane (>= 4.4.6, < 5.0.0) + dotenv (>= 2.1.1, < 3.0.0) + emoji_regex (>= 0.1, < 2.0) + excon (>= 0.45.0, < 1.0.0) + faraday (~> 0.17) + faraday-cookie_jar (~> 0.0.6) + faraday_middleware (~> 0.13.1) + fastimage (>= 2.1.0, < 3.0.0) + gh_inspector (>= 1.1.2, < 2.0.0) + google-api-client (>= 0.21.2, < 0.24.0) + google-cloud-storage (>= 1.15.0, < 2.0.0) + highline (>= 1.7.2, < 2.0.0) + json (< 3.0.0) + jwt (~> 2.1.0) + mini_magick (>= 4.9.4, < 5.0.0) + multi_xml (~> 0.5) + multipart-post (~> 2.0.0) + plist (>= 3.1.0, < 4.0.0) + public_suffix (~> 2.0.0) + rubyzip (>= 1.3.0, < 2.0.0) + security (= 0.1.3) + simctl (~> 1.6.3) + slack-notifier (>= 2.0.0, < 3.0.0) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (>= 1.4.5, < 2.0.0) + tty-screen (>= 0.6.3, < 1.0.0) + tty-spinner (>= 0.8.0, < 1.0.0) + word_wrap (~> 1.0.0) + xcodeproj (>= 1.8.1, < 2.0.0) + xcpretty (~> 0.3.0) + xcpretty-travis-formatter (>= 0.0.3) + fastlane-plugin-appcenter (1.7.1) + gh_inspector (1.1.3) + google-api-client (0.23.9) + addressable (~> 2.5, >= 2.5.1) + googleauth (>= 0.5, < 0.7.0) + httpclient (>= 2.8.1, < 3.0) + mime-types (~> 3.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.0) + signet (~> 0.9) + google-cloud-core (1.4.1) + google-cloud-env (~> 1.0) + google-cloud-env (1.3.0) + faraday (~> 0.11) + google-cloud-storage (1.16.0) + digest-crc (~> 0.4) + google-api-client (~> 0.23) + google-cloud-core (~> 1.2) + googleauth (>= 0.6.2, < 0.10.0) + googleauth (0.6.7) + faraday (~> 0.12) + jwt (>= 1.4, < 3.0) + memoist (~> 0.16) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (~> 0.7) + highline (1.7.10) + http-cookie (1.0.3) + domain_name (~> 0.5) + httpclient (2.8.3) + json (2.3.0) + jwt (2.1.0) + memoist (0.16.2) + mime-types (3.3) + mime-types-data (~> 3.2015) + mime-types-data (3.2019.1009) + mini_magick (4.9.5) + multi_json (1.14.1) + multi_xml (0.6.0) + multipart-post (2.0.0) + nanaimo (0.2.6) + naturally (2.2.0) + os (1.0.1) + plist (3.5.0) + public_suffix (2.0.5) + representable (3.0.4) + declarative (< 0.1.0) + declarative-option (< 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rouge (2.0.7) + rubyzip (1.3.0) + security (0.1.3) + signet (0.12.0) + addressable (~> 2.3) + faraday (~> 0.9) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simctl (1.6.6) + CFPropertyList + naturally + slack-notifier (2.3.2) + terminal-notifier (2.0.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + tty-cursor (0.7.0) + tty-screen (0.7.0) + tty-spinner (0.9.2) + tty-cursor (~> 0.7) + uber (0.1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.6) + unicode-display_width (1.6.0) + word_wrap (1.0.0) + xcodeproj (1.13.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.2.6) + xcpretty (0.3.0) + rouge (~> 2.0.7) + xcpretty-travis-formatter (1.0.0) + xcpretty (~> 0.2, >= 0.0.7) + +PLATFORMS + ruby + +DEPENDENCIES + fastlane (~> 2.137) + fastlane-plugin-appcenter + +BUNDLED WITH + 2.0.2 diff --git a/README.md b/README.md new file mode 100644 index 0000000..06779c6 --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +# Visual Studio App Center Sample App for Android + +The Android application in this repository and its corresponding tutorials will help you quickly and easily onboard to Visual Studio App Center. + +## About this repository + +The App Center SDK modules are already integrated within the application. Simply follow the tutorials to learn how to use each service. + +### Build status (master branch) + +| Build Service | Status | +| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| App Center | [![Build status](https://build.appcenter.ms/v0.1/apps/60df650c-1860-46ad-a0af-fdc190596377/branches/master/badge)](https://appcenter.ms) | +| Azure Pipelines | [![Build Status](https://dev.azure.com/msmobilecenter/Mobile-Center/_apis/build/status/sampleapp/microsoft.appcenter-sampleapp-android?branchName=master)](https://dev.azure.com/msmobilecenter/Mobile-Center/_build/latest?definitionId=3725&branchName=master) | + +## Tutorials + +First navigate to the **Getting Started** tutorial linked below. After following that tutorial, you can choose which App Center service to explore. + +## Contents + +| Tutorial | Description | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------ | +| [Getting Started](https://docs.microsoft.com/en-us/appcenter/quickstarts/android/getting-started) | Set up the app | +| [Build](https://docs.microsoft.com/en-us/appcenter/quickstarts/android/build) | Build the app | +| [Test](https://docs.microsoft.com/en-us/appcenter/quickstarts/android/test) | Run automated UI tests on real devices | +| [Distribute](https://docs.microsoft.com/en-us/appcenter/quickstarts/android/distribute) | Distribute application to a group of users | +| [Crashes](https://docs.microsoft.com/en-us/appcenter/quickstarts/android/crashes) | Monitor application crashes | +| [Analytics](https://docs.microsoft.com/en-us/appcenter/quickstarts/android/analytics) | View user analytics | +| [Push](https://docs.microsoft.com/en-us/appcenter/quickstarts/android/push) | Send push notifications to your app users | + +### Added functionality + +Using Gradle you can pass environment variables into your Build Configuration and use them as variables within your application. + +For more information on how to do so, visit our docs here: [Build time environment variables using Gradle](https://docs.microsoft.com/en-us/appcenter/build/custom/variables/#buildgradle-for-android) + +And if you want to try it out, you can fork this repository and add your App Secret by adding the APPCENTER_APP_SECRET environment variable in hte App Center Build configuration. diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/appcenter-post-build.sh b/app/appcenter-post-build.sh new file mode 100644 index 0000000..5112da1 --- /dev/null +++ b/app/appcenter-post-build.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +echo "This is an App Center Post-Build script. For more information on how to use App Center build scripts vist: https://docs.microsoft.com/en-us/appcenter/build/custom/scripts" diff --git a/app/appcenter-post-clone.sh b/app/appcenter-post-clone.sh new file mode 100644 index 0000000..a547ed0 --- /dev/null +++ b/app/appcenter-post-clone.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +echo "This is an App Center Post-Clone script. For more information on how to use App Center build scripts vist: https://docs.microsoft.com/en-us/appcenter/build/custom/scripts" diff --git a/app/appcenter-pre-build.sh b/app/appcenter-pre-build.sh new file mode 100644 index 0000000..2f4cfcb --- /dev/null +++ b/app/appcenter-pre-build.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +echo "This is an App Center Pre-Build script. For more information on how to use App Center build scripts vist: https://docs.microsoft.com/en-us/appcenter/build/custom/scripts" diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..377b723 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,57 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' + +android { + compileSdkVersion 30 + buildToolsVersion "29.0.2" + defaultConfig { + applicationId "ms.appcenter.sampleapp.android" + minSdkVersion 21 + targetSdkVersion 30 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + // Obtain the value of APPCENTER_APP_SECRET environment variable from Build time. + buildConfigField("String", "APPCENTER_APP_SECRET", "\"\"") + if (System.getenv("APPCENTER_APP_SECRET") != null) { + buildConfigField("String", "APPCENTER_APP_SECRET", "\"${System.getenv("APPCENTER_APP_SECRET")}\"") + } + } + buildTypes { + release { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + } +} + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'com.google.android.material:material:1.2.1' + + def appCenterSdkVersion = '4.0.0' + implementation "com.microsoft.appcenter:appcenter-analytics:${appCenterSdkVersion}" + implementation "com.microsoft.appcenter:appcenter-crashes:${appCenterSdkVersion}" + implementation "com.microsoft.appcenter:appcenter-distribute:${appCenterSdkVersion}" + + // Unit Testing + testImplementation 'androidx.test.ext:junit:1.1.2' + + // Espresso UI Testing + androidTestImplementation 'androidx.test.ext:junit:1.1.2' + androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + + androidTestImplementation('com.microsoft.appcenter:espresso-test-extension:1.4') + implementation "androidx.core:core-ktx:1.3.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} +repositories { + mavenCentral() +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..6f9f74b --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,25 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /Users/tina/Library/Android/sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/app/src/androidTest/java/ms/appcenter/sampleapp/android/ExampleInstrumentedTest.java b/app/src/androidTest/java/ms/appcenter/sampleapp/android/ExampleInstrumentedTest.java new file mode 100644 index 0000000..8e879f4 --- /dev/null +++ b/app/src/androidTest/java/ms/appcenter/sampleapp/android/ExampleInstrumentedTest.java @@ -0,0 +1,40 @@ +package ms.appcenter.sampleapp.android; + +import android.content.Context; + +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.platform.app.InstrumentationRegistry; + +import org.junit.Rule; +import org.junit.After; +import com.microsoft.appcenter.espresso.Factory; +import com.microsoft.appcenter.espresso.ReportHelper; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.assertEquals; + +/** + * Instrumentation test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Rule + public ReportHelper reportHelper = Factory.getReportHelper(); + + @After + public void TearDown() { + reportHelper.label("Stopping App"); + } + + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + + assertEquals("ms.appcenter.sampleapp.android", appContext.getPackageName()); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..ba1d86c --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png new file mode 100644 index 0000000000000000000000000000000000000000..f687dc82a2cc1b50a12535223120dd1f3c7fb609 GIT binary patch literal 16246 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

!3~fUBuyWQQEL|Grfim!KVX#7$ol6 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.id.customEventButton) + eventButton.setOnClickListener { + val eventDialog: DialogFragment = EventDialog() + eventDialog.show(fragmentManager!!, "eventDialog") + } + val colorButton = rootView.findViewById