diff --git a/mobile/app/build.gradle.kts b/mobile/app/build.gradle.kts index 291a796..c3ec446 100644 --- a/mobile/app/build.gradle.kts +++ b/mobile/app/build.gradle.kts @@ -9,7 +9,7 @@ android { defaultConfig { applicationId = "com.odweta.solen" - minSdk = 24 + minSdk = 28 targetSdk = 34 versionCode = 1 versionName = "1.0" @@ -48,6 +48,7 @@ dependencies { implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.4.0") implementation("com.squareup.okhttp3:okhttp:4.12.0") implementation("androidx.viewpager2:viewpager2:1.0.0") + implementation("com.github.bumptech.glide:glide:4.16.0") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") androidTestImplementation("androidx.test.ext:junit:1.1.5") testImplementation("junit:junit:4.13.2") diff --git a/mobile/app/src/main/AndroidManifest.xml b/mobile/app/src/main/AndroidManifest.xml index 76dbfea..e67eba3 100644 --- a/mobile/app/src/main/AndroidManifest.xml +++ b/mobile/app/src/main/AndroidManifest.xml @@ -26,6 +26,9 @@ + \ No newline at end of file diff --git a/mobile/app/src/main/ic_launcher-playstore.png b/mobile/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..ecaca23 Binary files /dev/null and b/mobile/app/src/main/ic_launcher-playstore.png differ diff --git a/mobile/app/src/main/java/com/odweta/solen/MainActivity.kt b/mobile/app/src/main/java/com/odweta/solen/MainActivity.kt index eb16fc9..2eee385 100644 --- a/mobile/app/src/main/java/com/odweta/solen/MainActivity.kt +++ b/mobile/app/src/main/java/com/odweta/solen/MainActivity.kt @@ -1,12 +1,24 @@ package com.odweta.solen +import android.annotation.SuppressLint +import android.graphics.ImageDecoder +import android.graphics.drawable.AnimatedImageDrawable import android.os.Build import android.os.Bundle import android.util.Log +import android.view.Menu +import android.view.MenuItem import android.view.View +import android.webkit.WebResourceError +import android.webkit.WebResourceRequest +import android.webkit.WebView +import android.webkit.WebViewClient +import android.widget.ImageView +import android.widget.Toolbar import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope +import com.bumptech.glide.Glide import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -50,17 +62,61 @@ class MainActivity : AppCompatActivity(), MainActivityListener { } } - @RequiresApi(Build.VERSION_CODES.O) + @SuppressLint("MissingInflatedId") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cal_week) + setContentView(R.layout.activity_splash_screen) + + setSupportActionBar(findViewById(R.id.toolbar)) lifecycleScope.launch { + // Assuming you have an ImageView with ID "animatedImageView" in your layout + val animatedImageView: ImageView = findViewById(R.id.loading_gif) + + // Load animated image from resources (e.g., a GIF file) + val drawable = ImageDecoder.decodeDrawable( + ImageDecoder.createSource(resources, R.drawable.loading) + ) + + // Set the drawable to your ImageView + if (drawable is AnimatedImageDrawable) { + animatedImageView.setImageDrawable(drawable) + drawable.start() // Start the animation + } + setupAPI() launch() } } + // Override onCreateOptionsMenu to handle menu item clicks + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.menu_main, menu) + return true + } + + // Override onOptionsItemSelected to handle menu item clicks + override fun onOptionsItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.item_refresh -> { + lifecycleScope.launch { + launch() + } + return true + } + R.id.item_sign_in -> { + // TODO: IMPLEMENT + return true + } + R.id.item_settings -> { + // TODO: IMPLEMENT + return true + } + } + + return super.onOptionsItemSelected(item) + } + @RequiresApi(Build.VERSION_CODES.O) override fun onLaunch(view: View) { launch() @@ -69,6 +125,8 @@ class MainActivity : AppCompatActivity(), MainActivityListener { @RequiresApi(Build.VERSION_CODES.O) private fun launch() { lifecycleScope.launch { + setContentView(R.layout.activity_loading_with_bar) + val week = parseJSON(getTimeTableJSON()) days = week for ((i, day) in week.withIndex()) { @@ -76,6 +134,8 @@ class MainActivity : AppCompatActivity(), MainActivityListener { dayMap[i] = day } + setContentView(R.layout.activity_main) + val mainFragment = CalWeekFragment() supportFragmentManager.beginTransaction() .replace(R.id.fragmentContainer, mainFragment) diff --git a/mobile/app/src/main/res/drawable/loading.gif b/mobile/app/src/main/res/drawable/loading.gif new file mode 100644 index 0000000..3cce103 Binary files /dev/null and b/mobile/app/src/main/res/drawable/loading.gif differ diff --git a/mobile/app/src/main/res/drawable/solen.webp b/mobile/app/src/main/res/drawable/solen.webp new file mode 100644 index 0000000..eb6cd57 Binary files /dev/null and b/mobile/app/src/main/res/drawable/solen.webp differ diff --git a/mobile/app/src/main/res/font/roboto.xml b/mobile/app/src/main/res/font/roboto.xml new file mode 100644 index 0000000..271d619 --- /dev/null +++ b/mobile/app/src/main/res/font/roboto.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/mobile/app/src/main/res/font/roboto_src.ttf b/mobile/app/src/main/res/font/roboto_src.ttf new file mode 100644 index 0000000..3313686 Binary files /dev/null and b/mobile/app/src/main/res/font/roboto_src.ttf differ diff --git a/mobile/app/src/main/res/layout/activity_cal_week.xml b/mobile/app/src/main/res/layout/activity_cal_week.xml index fb00d86..798d127 100644 --- a/mobile/app/src/main/res/layout/activity_cal_week.xml +++ b/mobile/app/src/main/res/layout/activity_cal_week.xml @@ -5,37 +5,14 @@ android:id="@+id/cal_week_root" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".MainActivity"> - -