+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 3bc5697..ef48540 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,11 +1,10 @@
-
-
+
@@ -18,12 +17,14 @@
+
+
-
+
@@ -35,11 +36,13 @@
+
+
-
+
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index 3957b22..0000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,43 +0,0 @@
-apply plugin: 'com.android.application'
-android.defaultConfig.vectorDrawables.useSupportLibrary = true
-
-android {
- compileSdkVersion 29
- buildToolsVersion "29.0.3"
-
- defaultConfig {
- applicationId "org.timecrafters.TimeCraftersConfigurationTool"
- minSdkVersion 16
- targetSdkVersion 29
- versionCode 1
- versionName "1.0"
-
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
-}
-
-dependencies {
- implementation fileTree(dir: "libs", include: ["*.jar"])
- implementation 'com.google.code.gson:gson:2.8.6'
- implementation 'net.sourceforge.streamsupport:streamsupport:1.7.4'
- implementation 'androidx.appcompat:appcompat:1.1.0'
- implementation 'com.google.android.material:material:1.0.0'
- implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
- implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0'
- implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
- implementation 'androidx.navigation:navigation-fragment:2.1.0'
- implementation 'androidx.navigation:navigation-ui:2.1.0'
- implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
-}
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
new file mode 100644
index 0000000..e6e1ab7
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,73 @@
+plugins {
+ id("com.android.application")
+ id("org.jetbrains.kotlin.android")
+}
+
+android {
+ namespace = "org.timecrafters.TimeCraftersConfigurationTool"
+ compileSdk = 34
+
+ defaultConfig {
+ applicationId = "org.timecrafters.timecraftersconfigurationtool"
+ minSdk = 24
+ targetSdk = 34
+ versionCode = 1
+ versionName = "1.0"
+
+ testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
+ vectorDrawables {
+ useSupportLibrary = true
+ }
+ }
+
+ buildTypes {
+ release {
+ isMinifyEnabled = false
+ proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
+ }
+ }
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
+ }
+ kotlinOptions {
+ jvmTarget = "1.8"
+ }
+ buildFeatures {
+ compose = true
+ }
+ composeOptions {
+ kotlinCompilerExtensionVersion = "1.4.3"
+ }
+ packaging {
+ resources {
+ excludes += "/META-INF/{AL2.0,LGPL2.1}"
+ }
+ }
+}
+
+dependencies {
+ implementation("com.google.code.gson:gson:2.10.1")
+ implementation("androidx.navigation:navigation-ui:2.7.5")
+ val appcompat_version = "1.6.1"
+
+ implementation("androidx.appcompat:appcompat:$appcompat_version")
+ // For loading and tinting drawables on older versions of the platform
+ implementation("androidx.appcompat:appcompat-resources:$appcompat_version")
+
+ implementation("androidx.core:core-ktx:1.12.0")
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2")
+ implementation("androidx.activity:activity-compose:1.8.1")
+ implementation(platform("androidx.compose:compose-bom:2023.03.00"))
+ implementation("androidx.compose.ui:ui")
+ implementation("androidx.compose.ui:ui-graphics")
+ implementation("androidx.compose.ui:ui-tooling-preview")
+ implementation("androidx.compose.material3:material3")
+ testImplementation("junit:junit:4.13.2")
+ androidTestImplementation("androidx.test.ext:junit:1.1.5")
+ androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
+ androidTestImplementation(platform("androidx.compose:compose-bom:2023.03.00"))
+ androidTestImplementation("androidx.compose.ui:ui-test-junit4")
+ debugImplementation("androidx.compose.ui:ui-tooling")
+ debugImplementation("androidx.compose.ui:ui-test-manifest")
+}
\ No newline at end of file
diff --git a/app/src/androidTest/java/org/timecrafters/TimeCraftersConfigurationTool/ExampleInstrumentedTest.java b/app/src/androidTest/java/org/timecrafters/TimeCraftersConfigurationTool/ExampleInstrumentedTest.java
deleted file mode 100644
index 7c61af7..0000000
--- a/app/src/androidTest/java/org/timecrafters/TimeCraftersConfigurationTool/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.timecrafters.TimeCraftersConfigurationTool;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
- assertEquals("org.timecrafters.TimeCraftersConfigurationTool", appContext.getPackageName());
- }
-}
\ No newline at end of file
diff --git a/app/src/androidTest/java/org/timecrafters/timecraftersconfigurationtool/ExampleInstrumentedTest.kt b/app/src/androidTest/java/org/timecrafters/timecraftersconfigurationtool/ExampleInstrumentedTest.kt
new file mode 100644
index 0000000..d846867
--- /dev/null
+++ b/app/src/androidTest/java/org/timecrafters/timecraftersconfigurationtool/ExampleInstrumentedTest.kt
@@ -0,0 +1,24 @@
+package org.timecrafters.timecraftersconfigurationtool
+
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.ext.junit.runners.AndroidJUnit4
+
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import org.junit.Assert.*
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+ @Test
+ fun useAppContext() {
+ // Context of the app under test.
+ val appContext = InstrumentationRegistry.getInstrumentation().targetContext
+ assertEquals("org.timecrafters.timecraftersconfigurationtool", appContext.packageName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index faf27a9..5a770d5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,12 +12,15 @@
+ android:theme="@style/AppTheme"
+ tools:targetApi="31">
-
\ No newline at end of file
diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png
deleted file mode 100644
index 599cc1e..0000000
Binary files a/app/src/main/ic_launcher-playstore.png and /dev/null differ
diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/LauncherActivity.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/LauncherActivity.java
index 9d59d71..fd95b9b 100644
--- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/LauncherActivity.java
+++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/LauncherActivity.java
@@ -4,7 +4,6 @@ import android.Manifest;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
-import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/MainActivity.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/MainActivity.java
index 7327f5a..f73eec9 100644
--- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/MainActivity.java
+++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/MainActivity.java
@@ -19,6 +19,7 @@ import androidx.navigation.ui.NavigationUI;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.bottomnavigation.LabelVisibilityMode;
+import com.google.android.material.navigation.NavigationBarView;
import org.timecrafters.TimeCraftersConfigurationTool.backend.Backend;
import org.timecrafters.TimeCraftersConfigurationTool.backend.TAC;
@@ -54,7 +55,7 @@ public class MainActivity extends AppCompatActivity {
Backend.instance().mainActivity = this;
if (Backend.instance().getSettings().mobileShowNavigationLabels) {
- navView.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED);
+ navView.setLabelVisibilityMode(NavigationBarView.LABEL_VISIBILITY_LABELED);
}
// Auto start TACNET server if allowed and device model contains AUTO_START_MODEL
diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/dialogs/VariableDialog.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/dialogs/VariableDialog.java
index 3477a59..0130db2 100644
--- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/dialogs/VariableDialog.java
+++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/dialogs/VariableDialog.java
@@ -249,33 +249,29 @@ public class VariableDialog extends TimeCraftersDialog {
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.boolean_type: {
- setVariableType("boolean");
- return true;
- }
- case R.id.double_type: {
- setVariableType("double");
- return true;
- }
- case R.id.float_type: {
- setVariableType("float");
- return true;
- }
- case R.id.integer_type: {
- setVariableType("integer");
- return true;
- }
- case R.id.long_type: {
- setVariableType("long");
- return true;
- }
- case R.id.string_type: {
- setVariableType("string");
- return true;
- }
+ final int itemID = item.getItemId();
+
+ if (itemID == R.id.boolean_type) {
+ setVariableType("boolean");
+ return true;
+ } else if (itemID == R.id.double_type) {
+ setVariableType("double");
+ return true;
+ } else if (itemID == R.id.float_type) {
+ setVariableType("float");
+ return true;
+ } else if (itemID == R.id.integer_type) {
+ setVariableType("integer");
+ return true;
+ } else if (itemID == R.id.long_type) {
+ setVariableType("long");
+ return true;
+ } else if (itemID == R.id.string_type) {
+ setVariableType("string");
+ return true;
+ } else {
+ return false;
}
- return false;
}
});
diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/ActionsFragment.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/ActionsFragment.java
index aa4a495..1d86141 100644
--- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/ActionsFragment.java
+++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/ActionsFragment.java
@@ -209,28 +209,27 @@ public class ActionsFragment extends TimeCraftersFragment {
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.clone: {
- CloneDialog dialog = new CloneDialog();
- Bundle bundle = new Bundle();
- bundle.putInt("group_index", getArguments().getInt("group_index"));
- bundle.putInt("action_index", action_index);
- dialog.setArguments(bundle);
- dialog.show(getFragmentManager(), "clone_dialog");
- return true;
- }
- case R.id.save_as_preset: {
- PresetDialog dialog = new PresetDialog();
- Bundle bundle = new Bundle();
- bundle.putInt("group_index", getArguments().getInt("group_index"));
- bundle.putInt("action_index", action_index);
- bundle.putBoolean("is_new_preset", true);
- dialog.setArguments(bundle);
- dialog.show(getFragmentManager(), "preset_dialog");
- return true;
- }
- default:
- return false;
+ final int itemID = item.getItemId();
+
+ if (itemID == R.id.clone) {
+ CloneDialog dialog = new CloneDialog();
+ Bundle bundle = new Bundle();
+ bundle.putInt("group_index", getArguments().getInt("group_index"));
+ bundle.putInt("action_index", action_index);
+ dialog.setArguments(bundle);
+ dialog.show(getFragmentManager(), "clone_dialog");
+ return true;
+ } else if (itemID == R.id.save_as_preset) {
+ PresetDialog dialog = new PresetDialog();
+ Bundle bundle = new Bundle();
+ bundle.putInt("group_index", getArguments().getInt("group_index"));
+ bundle.putInt("action_index", action_index);
+ bundle.putBoolean("is_new_preset", true);
+ dialog.setArguments(bundle);
+ dialog.show(getFragmentManager(), "preset_dialog");
+ return true;
+ } else {
+ return false;
}
}
});
@@ -246,21 +245,21 @@ public class ActionsFragment extends TimeCraftersFragment {
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.add_from_preset: {
- AddFromPresetDialog dialog = new AddFromPresetDialog();
- Bundle bundle = new Bundle();
- bundle.putBoolean("show_actions", true);
- if (groupIsPreset) {
- bundle.putBoolean("group_is_preset", true);
- }
- bundle.putInt("group_index", getArguments().getInt("group_index"));
- dialog.setArguments(bundle);
- dialog.show(getFragmentManager(), "add_from_preset_dialog");
- return true;
+ final int itemID = item.getItemId();
+
+ if (itemID == R.id.add_from_preset) {
+ AddFromPresetDialog dialog = new AddFromPresetDialog();
+ Bundle bundle = new Bundle();
+ bundle.putBoolean("show_actions", true);
+ if (groupIsPreset) {
+ bundle.putBoolean("group_is_preset", true);
}
- default:
- return false;
+ bundle.putInt("group_index", getArguments().getInt("group_index"));
+ dialog.setArguments(bundle);
+ dialog.show(getFragmentManager(), "add_from_preset_dialog");
+ return true;
+ } else {
+ return false;
}
}
});
diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/GroupsFragment.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/GroupsFragment.java
index bbf3253..3656b33 100644
--- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/GroupsFragment.java
+++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/GroupsFragment.java
@@ -187,26 +187,27 @@ public class GroupsFragment extends TimeCraftersFragment {
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.clone: {
- CloneDialog dialog = new CloneDialog();
- Bundle bundle = new Bundle();
- bundle.putInt("group_index", group_index);
- dialog.setArguments(bundle);
- dialog.show(getFragmentManager(), "clone_dialog");
- return true;
- }
- case R.id.save_as_preset: {
- PresetDialog dialog = new PresetDialog();
- Bundle bundle = new Bundle();
- bundle.putBoolean("is_new_preset", true);
- bundle.putInt("group_index", group_index);
- dialog.setArguments(bundle);
- dialog.show(getFragmentManager(), "preset_dialog");
- return true;
- }
- default:
- return false;
+ final int itemID = item.getItemId();
+
+ if (itemID == R.id.clone) {
+ CloneDialog dialog = new CloneDialog();
+ Bundle bundle = new Bundle();
+ bundle.putInt("group_index", group_index);
+ dialog.setArguments(bundle);
+ dialog.show(getFragmentManager(), "clone_dialog");
+
+ return true;
+ } else if (itemID == R.id.save_as_preset) {
+ PresetDialog dialog = new PresetDialog();
+ Bundle bundle = new Bundle();
+ bundle.putBoolean("is_new_preset", true);
+ bundle.putInt("group_index", group_index);
+ dialog.setArguments(bundle);
+ dialog.show(getFragmentManager(), "preset_dialog");
+
+ return true;
+ } else {
+ return false;
}
}
});
@@ -222,17 +223,17 @@ public class GroupsFragment extends TimeCraftersFragment {
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.add_from_preset: {
- AddFromPresetDialog dialog = new AddFromPresetDialog();
- Bundle bundle = new Bundle();
- bundle.putBoolean("show_actions", false);
- dialog.setArguments(bundle);
- dialog.show(getFragmentManager(), "add_from_preset_dialog");
- return true;
- }
- default:
- return false;
+ final int itemID = item.getItemId();
+
+ if (itemID == R.id.add_from_preset) {
+ AddFromPresetDialog dialog = new AddFromPresetDialog();
+ Bundle bundle = new Bundle();
+ bundle.putBoolean("show_actions", false);
+ dialog.setArguments(bundle);
+ dialog.show(getFragmentManager(), "add_from_preset_dialog");
+ return true;
+ } else {
+ return false;
}
}
});
diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index aa40ee1..24b7bd4 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 76677e9..0000000
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
deleted file mode 100644
index 7c1fbb6..0000000
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
deleted file mode 100644
index bd590ec..0000000
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
new file mode 100644
index 0000000..4eba1ed
--- /dev/null
+++ b/app/src/main/res/values/themes.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/backup_rules.xml b/app/src/main/res/xml/backup_rules.xml
new file mode 100644
index 0000000..fa0f996
--- /dev/null
+++ b/app/src/main/res/xml/backup_rules.xml
@@ -0,0 +1,13 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/data_extraction_rules.xml b/app/src/main/res/xml/data_extraction_rules.xml
new file mode 100644
index 0000000..9ee9997
--- /dev/null
+++ b/app/src/main/res/xml/data_extraction_rules.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/test/java/org/timecrafters/TimeCraftersConfigurationTool/ExampleUnitTest.java b/app/src/test/java/org/timecrafters/TimeCraftersConfigurationTool/ExampleUnitTest.java
deleted file mode 100644
index 0b03566..0000000
--- a/app/src/test/java/org/timecrafters/TimeCraftersConfigurationTool/ExampleUnitTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.timecrafters.TimeCraftersConfigurationTool;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * @see Testing documentation
- */
-public class ExampleUnitTest {
- @Test
- public void addition_isCorrect() {
- assertEquals(4, 2 + 2);
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/org/timecrafters/timecraftersconfigurationtool/ExampleUnitTest.kt b/app/src/test/java/org/timecrafters/timecraftersconfigurationtool/ExampleUnitTest.kt
new file mode 100644
index 0000000..e6b0bce
--- /dev/null
+++ b/app/src/test/java/org/timecrafters/timecraftersconfigurationtool/ExampleUnitTest.kt
@@ -0,0 +1,17 @@
+package org.timecrafters.timecraftersconfigurationtool
+
+import org.junit.Test
+
+import org.junit.Assert.*
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+class ExampleUnitTest {
+ @Test
+ fun addition_isCorrect() {
+ assertEquals(4, 2 + 2)
+ }
+}
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 53524a2..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,24 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-buildscript {
- repositories {
- google()
- jcenter()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:4.1.0'
-
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
-}
-
-allprojects {
- repositories {
- google()
- jcenter()
- }
-}
-
-task clean(type: Delete) {
- delete rootProject.buildDir
-}
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
new file mode 100644
index 0000000..5873551
--- /dev/null
+++ b/build.gradle.kts
@@ -0,0 +1,5 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+plugins {
+ id("com.android.application") version "8.1.4" apply false
+ id("org.jetbrains.kotlin.android") version "1.8.10" apply false
+}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index a9af56e..3c5031e 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,16 +1,23 @@
-## For more details on how to configure your build environment visit
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
-#
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
-# Default value: -Xmx1024m -XX:MaxPermSize=256m
-# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
-#
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
-#Sat Jun 13 16:23:44 CDT 2020
-android.enableJetifier=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app's APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
-org.gradle.jvmargs=-Xmx1024M -Dkotlin.daemon.jvm.options\="-Xmx1024M"
+# Kotlin code style for this project: "official" or "obsolete":
+kotlin.code.style=official
+# Enables namespacing of each library's R class so that its R class includes only the
+# resources declared in the library itself and none from the library's dependencies,
+# thereby reducing the size of the R class for that library
+android.nonTransitiveRClass=true
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index f6b961f..e708b1c 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 41cace8..df1a830 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Tue Nov 10 11:51:46 CST 2020
+#Thu Nov 16 17:26:00 CST 2023
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
diff --git a/gradlew b/gradlew
index cccdd3d..4f906e0 100755
--- a/gradlew
+++ b/gradlew
@@ -1,5 +1,21 @@
#!/usr/bin/env sh
+#
+# Copyright 2015 the original author or authors.
+#
+# 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
+#
+# https://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.
+#
+
##############################################################################
##
## Gradle start up script for UN*X
@@ -28,7 +44,7 @@ APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
@@ -66,6 +82,7 @@ esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
@@ -109,10 +126,11 @@ if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
@@ -138,19 +156,19 @@ if $cygwin ; then
else
eval `echo args$i`="\"$arg\""
fi
- i=$((i+1))
+ i=`expr $i + 1`
done
case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
@@ -159,14 +177,9 @@ save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
-APP_ARGS=$(save "$@")
+APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
- cd "$(dirname "$0")"
-fi
-
exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
index e95643d..ac1b06f 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -1,3 +1,19 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@@ -13,15 +29,18 @@ if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
+if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -35,7 +54,7 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-if exist "%JAVA_EXE%" goto init
+if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@@ -45,28 +64,14 @@ echo location of your Java installation.
goto fail
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index 8bea973..0000000
--- a/settings.gradle
+++ /dev/null
@@ -1,2 +0,0 @@
-include ':app'
-rootProject.name = "TimeCraftersConfigurationTool"
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
new file mode 100644
index 0000000..e162a41
--- /dev/null
+++ b/settings.gradle.kts
@@ -0,0 +1,17 @@
+pluginManagement {
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+}
+dependencyResolutionManagement {
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+rootProject.name = "TimeCrafters Configuration Tool"
+include(":app")