diff --git a/.idea/other.xml b/.idea/other.xml
index 4604c44..49481ad 100644
--- a/.idea/other.xml
+++ b/.idea/other.xml
@@ -25,6 +25,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -69,6 +80,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -91,6 +124,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -102,6 +146,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -146,6 +201,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -190,6 +256,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -236,15 +313,15 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b4af94d..9c3a5c9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,17 @@
android:enabled="true"
android:exported="false"
android:foregroundServiceType="location" />
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/lilstiffy/mockgps/service/MockLocationService.kt b/app/src/main/java/com/lilstiffy/mockgps/service/MockLocationService.kt
index 6221314..9b30412 100644
--- a/app/src/main/java/com/lilstiffy/mockgps/service/MockLocationService.kt
+++ b/app/src/main/java/com/lilstiffy/mockgps/service/MockLocationService.kt
@@ -30,7 +30,12 @@ class MockLocationService : Service() {
var isMocking = false
private set
- lateinit var latLng: LatLng
+ var latLng: LatLng = LatLng(0.0, 0.0)
+ get() = StorageManager.getLatestLocation()
+ set(value) {
+ StorageManager.addLocationToHistory(value)
+ field = value
+ }
private val locationManager by lazy {
getSystemService(Context.LOCATION_SERVICE) as LocationManager
diff --git a/app/src/main/java/com/lilstiffy/mockgps/service/MockerTileService.kt b/app/src/main/java/com/lilstiffy/mockgps/service/MockerTileService.kt
new file mode 100644
index 0000000..db198d9
--- /dev/null
+++ b/app/src/main/java/com/lilstiffy/mockgps/service/MockerTileService.kt
@@ -0,0 +1,32 @@
+package com.lilstiffy.mockgps.service
+
+import android.service.quicksettings.Tile
+import android.service.quicksettings.TileService
+import com.lilstiffy.mockgps.storage.StorageManager
+
+/**
+ * Tile service for mocking location
+ */
+class MockerTileService : TileService() {
+
+ override fun onCreate() {
+ super.onCreate()
+ StorageManager.initialise(this)
+ }
+
+ override fun onClick() {
+ super.onClick()
+ MockLocationService.instance?.let { service ->
+ service.toggleMocking().also {
+ if (service.isMocking) {
+ qsTile.state = Tile.STATE_ACTIVE
+ qsTile.updateTile()
+ } else {
+ qsTile.state = Tile.STATE_INACTIVE
+ qsTile.updateTile()
+ }
+
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_gps_crosshair.xml b/app/src/main/res/drawable/ic_gps_crosshair.xml
new file mode 100644
index 0000000..f9e668c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_gps_crosshair.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index dd34d3a..283d7cb 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,3 +1,4 @@
MockGps
+ Mock latest
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index 5873551..3ef1646 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,5 +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("com.android.application") version "8.5.0" apply false
id("org.jetbrains.kotlin.android") version "1.8.10" apply false
}
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 60af28d..4244c7b 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Tue Nov 21 10:19:27 CET 2023
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists