This commit is contained in:
Epic Studios 2024-01-26 05:05:38 +02:00
parent e724a517a8
commit a6d138dfb8
47 changed files with 1169 additions and 954 deletions

View file

@ -1,24 +1,56 @@
package com.vectras.vm;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.*;
import android.content.pm.*;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.MediaScannerConnection;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.*;
import android.util.Log;
import android.view.*;
import android.webkit.URLUtil;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.firebase.auth.FirebaseAuth;
import com.vectras.qemu.MainSettingsManager;
import com.vectras.qemu.utils.RamInfo;
import com.vectras.vm.Fragment.HomeFragment;
import com.vectras.vm.MainRoms.AdapterMainRoms;
import com.vectras.vm.MainRoms.DataMainRoms;
import com.vectras.vm.ui.login.LoginActivity;
import com.vectras.vm.utils.FileUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
public class SplashActivity extends AppCompatActivity implements Runnable {
public AlertDialog ad;
public static SplashActivity activity;
private FirebaseAuth mAuth;
private final String TAG = "SplashActivity";
@Override
protected void onCreate(Bundle bundle) {
@ -32,7 +64,19 @@ public class SplashActivity extends AppCompatActivity implements Runnable {
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_splash);
new Handler().postDelayed(this, 3000);
SharedPreferences prefs = getSharedPreferences(CREDENTIAL_SHARED_PREF, Context.MODE_PRIVATE);
boolean isAccessed = prefs.getBoolean("isFirstLaunch", false);
if (isAccessed && !checkConnection(activity)) {
new Handler().postDelayed(this, 3000);
} else {
try {
new DownloadFileAsync().execute(AppConfig.romsJson(activity));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
File sharedDir = new File(AppConfig.sharedFolder);
if (!sharedDir.exists()) {
sharedDir.mkdirs();
@ -41,6 +85,14 @@ public class SplashActivity extends AppCompatActivity implements Runnable {
if (!mainDir.exists()) {
mainDir.mkdirs();
}
File iconsDir = new File(AppConfig.maindirpath + "/icons/");
if (!iconsDir.exists()) {
iconsDir.mkdirs();
}
File cvbiDir = new File(AppConfig.maindirpath + "/cvbi/");
if (!cvbiDir.exists()) {
cvbiDir.mkdirs();
}
// Initialize Firebase Auth
mAuth = FirebaseAuth.getInstance();
RamInfo.activity = activity;
@ -65,4 +117,99 @@ public class SplashActivity extends AppCompatActivity implements Runnable {
}
finish();
}
/**
* CHECK WHETHER INTERNET CONNECTION IS AVAILABLE OR NOT
*/
public boolean checkConnection(Context context) {
final ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connMgr != null) {
NetworkInfo activeNetworkInfo = connMgr.getActiveNetworkInfo();
if (activeNetworkInfo != null) { // connected to the internet
// connected to the mobile provider's data plan
if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
// connected to wifi
return true;
} else
return activeNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE;
}
}
return false;
}
public static final int DIALOG_DOWNLOAD_PROGRESS = 0;
private ProgressDialog mProgressDialog;
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_DOWNLOAD_PROGRESS:
mProgressDialog = new ProgressDialog(this, R.style.MainDialogTheme);
mProgressDialog.setMessage("loading app data..");
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
return mProgressDialog;
default:
return null;
}
}
class DownloadFileAsync extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
showDialog(DIALOG_DOWNLOAD_PROGRESS);
}
@Override
protected String doInBackground(String... aurl) {
int count;
try {
URL url = new URL(aurl[0]);
URLConnection conexion = url.openConnection();
conexion.connect();
int lenghtOfFile = conexion.getContentLength();
Log.d(TAG, "Lenght of file: " + lenghtOfFile);
String fileName = URLUtil.guessFileName(url.getFile(),null,null);
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(AppConfig.maindirpath+fileName);
byte data[] = new byte[1024];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
publishProgress("" + (int) ((total * 100) / lenghtOfFile));
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (Exception e) {
}
return null;
}
protected void onProgressUpdate(String... progress) {
Log.d(TAG, progress[0]);
mProgressDialog.setProgress(Integer.parseInt(progress[0]));
}
@Override
protected void onPostExecute(String unused) {
dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
new Handler().postDelayed(activity, 3000);
}
}
}