This commit is contained in:
An Bui 2025-05-04 15:31:53 +07:00
parent 24380b7e69
commit c251c4880b
40 changed files with 1270 additions and 1185 deletions

View file

@ -21,6 +21,7 @@ import com.google.android.gms.ads.initialization.OnInitializationCompleteListene
import com.google.android.gms.ads.interstitial.InterstitialAd;
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback;
import com.vectras.vm.adapters.GithubUserAdapter;
import com.vectras.vm.utils.SimpleAnimations;
import com.vectras.vm.utils.UIUtils;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
@ -55,9 +56,9 @@ public class AboutActivity extends AppCompatActivity implements View.OnClickList
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
UIController.edgeToEdge(this);
UIUtils.edgeToEdge(this);
setContentView(R.layout.activity_about);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
@ -85,7 +86,6 @@ public class AboutActivity extends AppCompatActivity implements View.OnClickList
//AdView mAdView = findViewById(R.id.adView);
//AdRequest adRequest = new AdRequest.Builder().build();
//mAdView.loadAd(adRequest);
VectrasApp.prepareDataForAppConfig(this);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@ -160,12 +160,12 @@ public class AboutActivity extends AppCompatActivity implements View.OnClickList
}
});
UIController.simpleAnimationScale(findViewById(R.id.card_yagiz), 250);
UIController.simpleTranslationUpToDown(findViewById(R.id.card_yagiz), 250);
UIController.simpleAnimationScale(findViewById(R.id.card_social), 500);
UIController.simpleTranslationUpToDown(findViewById(R.id.card_social), 500);
UIController.simpleAnimationScale(findViewById(R.id.developers), 750);
UIController.simpleTranslationUpToDown(findViewById(R.id.developers), 750);
SimpleAnimations.scale(findViewById(R.id.card_yagiz), 250);
SimpleAnimations.translationUpToDown(findViewById(R.id.card_yagiz), 250);
SimpleAnimations.scale(findViewById(R.id.card_social), 500);
SimpleAnimations.translationUpToDown(findViewById(R.id.card_social), 500);
SimpleAnimations.scale(findViewById(R.id.developers), 750);
SimpleAnimations.translationUpToDown(findViewById(R.id.developers), 750);
}
@Override

View file

@ -19,7 +19,8 @@ import java.util.Objects;
public class AppConfig {
// App Config
public static String vectrasVersion = "2.9.4";
public static String vectrasVersion = "2.9.5";
public static int vectrasVersionCode = 21;
public static String vectrasWebsite = "https://vectras.vercel.app/";
public static String vectrasWebsiteRaw = "https://raw.githubusercontent.com/xoureldeen/Vectras-VM-Android/refs/heads/master/web/";
public static String bootstrapfileslink = vectrasWebsite + "/data/setupfiles.json";
@ -58,7 +59,7 @@ public class AppConfig {
}
// App config
public static String datadirpath(Activity activity) {
public static String datadirpath(Context activity) {
File f = new File(activity.getExternalFilesDir("data") + "/Vectras");
return activity.getExternalFilesDir("data") + "/Vectras";
//return FileUtils.getExternalFilesDirectory(activity).getPath();
@ -81,4 +82,6 @@ public class AppConfig {
public static boolean needreinstallsystem = false;
public static String temporaryLastedTerminalOutput = "";
}

View file

@ -15,6 +15,10 @@ import androidx.core.app.ActivityCompat;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.vectras.vm.utils.FileUtils;
import com.vectras.vm.utils.JSONUtils;
import com.vectras.vm.utils.PermissionUtils;
import com.vectras.vm.utils.UIUtils;
import java.io.File;
import java.util.HashMap;
@ -29,11 +33,10 @@ public class CqcmActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
VectrasApp.prepareDataForAppConfig(this);
if(!VectrasApp.checkpermissionsgranted(this,false)) {
UIController.edgeToEdge(this);
if(!PermissionUtils.storagepermission(this,false)) {
UIUtils.edgeToEdge(this);
setContentView(R.layout.activity_cqcm);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
buttonallow = findViewById(R.id.buttonallow);
buttonallow.setOnClickListener(new View.OnClickListener() {
@Override
@ -55,7 +58,7 @@ public class CqcmActivity extends AppCompatActivity {
public void onResume() {
super.onResume();
Log.i("CqcmActivity", "Checking access to storage...");
if(VectrasApp.checkpermissionsgranted(this,false)) {
if(PermissionUtils.storagepermission(this,false)) {
if (getIntent().hasExtra("command")) {
runCommand(getIntent().getStringExtra("command"));
} else {
@ -75,18 +78,18 @@ public class CqcmActivity extends AppCompatActivity {
String imgExtra = "";
String vmID = VMManager.idGenerator();
if (!VectrasApp.isFileExists(AppConfig.romsdatajson)) {
VectrasApp.writeToFile(AppConfig.maindirpath, "roms-data.json", "[]");
if (!FileUtils.isFileExists(AppConfig.romsdatajson)) {
FileUtils.writeToFile(AppConfig.maindirpath, "roms-data.json", "[]");
}
if (VectrasApp.checkJSONIsNormal(AppConfig.romsdatajson)) {
if (JSONUtils.isValidFromFile(AppConfig.romsdatajson)) {
if (getIntent().hasExtra("content")) {
if (Objects.requireNonNull(getIntent().getStringExtra("content")).endsWith("}]")) {
_map = Objects.requireNonNull(getIntent().getStringExtra("content")).substring((int) 0, (int)(Objects.requireNonNull(getIntent().getStringExtra("content")).length() - 1));
} else {
_map = Objects.requireNonNull(getIntent().getStringExtra("content"));
}
if (VectrasApp.checkJSONMapIsNormalFromString(_map)) {
if (JSONUtils.isMapValidFromString(_map)) {
mapForCreateNewVM = new Gson().fromJson(_map, new TypeToken<HashMap<String, Object>>(){}.getType());
if (mapForCreateNewVM.containsKey("imgName")) {
imgName = Objects.requireNonNull(mapForCreateNewVM.get("imgName")).toString();
@ -132,7 +135,6 @@ public class CqcmActivity extends AppCompatActivity {
}
private void runCommand(String _command) {
VectrasApp.prepareDataForAppConfig(CqcmActivity.this);
AppConfig.pendingCommand = _command;
if(!MainActivity.isActivate) {

View file

@ -2,8 +2,6 @@ package com.vectras.vm;
import static android.content.Intent.ACTION_OPEN_DOCUMENT;
import static com.vectras.vm.VectrasApp.isFileExists;
import android.Manifest;
import android.app.Dialog;
import android.content.Context;
@ -55,6 +53,7 @@ import com.vectras.qemu.MainSettingsManager;
import com.vectras.vm.Fragment.CreateImageDialogFragment;
import com.vectras.vm.MainRoms.DataMainRoms;
import com.vectras.vm.logger.VectrasStatus;
import com.vectras.vm.utils.DeviceUtils;
import com.vectras.vm.utils.FileUtils;
import com.vectras.vm.utils.UIUtils;
@ -87,6 +86,7 @@ import java.util.zip.ZipInputStream;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.vectras.vterm.Terminal;
import com.vectras.vm.utils.PermissionUtils;
public class CustomRomActivity extends AppCompatActivity {
@ -157,11 +157,11 @@ public class CustomRomActivity extends AppCompatActivity {
// startActivityForResult(intent, 0);
//if (mainlayout.getVisibility() == View.VISIBLE) {
if (Objects.requireNonNull(title.getText()).toString().isEmpty()) {
VectrasApp.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.need_set_name),true, false, activity);
UIUtils.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.need_set_name),true, false, activity);
} else if ((!Objects.requireNonNull(drive.getText()).toString().isEmpty()) || (!Objects.requireNonNull(cdrom.getText()).toString().isEmpty())) {
checkJsonFile();
} else {
if (VectrasApp.isHaveADisk(Objects.requireNonNull(qemu.getText()).toString())) {
if (VMManager.isHaveADisk(Objects.requireNonNull(qemu.getText()).toString())) {
checkJsonFile();
} else {
if (qemu.getText().toString().isEmpty()) {
@ -204,9 +204,9 @@ public class CustomRomActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
UIController.edgeToEdge(this);
UIUtils.edgeToEdge(this);
setContentView(R.layout.activity_custom_rom);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
activity = this;
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
@ -335,7 +335,7 @@ public class CustomRomActivity extends AppCompatActivity {
});
ad.setButton(Dialog.BUTTON_POSITIVE, getString(R.string.remove), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
VectrasApp.deleteDirectory(drive.getText().toString());
FileUtils.deleteDirectory(drive.getText().toString());
drive.setText("");
driveLayout.setEndIconDrawable(R.drawable.round_add_24);
ad.dismiss();
@ -392,11 +392,11 @@ public class CustomRomActivity extends AppCompatActivity {
@Override
public void onClick(View v) {
if (Objects.requireNonNull(title.getText()).toString().isEmpty()) {
VectrasApp.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.need_set_name),true, false, activity);
UIUtils.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.need_set_name),true, false, activity);
} else if ((!Objects.requireNonNull(drive.getText()).toString().isEmpty()) || (!Objects.requireNonNull(cdrom.getText()).toString().isEmpty())) {
checkJsonFile();
} else {
if (VectrasApp.isHaveADisk(Objects.requireNonNull(qemu.getText()).toString())) {
if (VMManager.isHaveADisk(Objects.requireNonNull(qemu.getText()).toString())) {
checkJsonFile();
} else {
if (qemu.getText().toString().isEmpty()) {
@ -465,7 +465,7 @@ public class CustomRomActivity extends AppCompatActivity {
if (!thumbnailPath.isEmpty())
return;
VectrasApp.setIconWithName(ivIcon, title.getText().toString());
VMManager.setIconWithName(ivIcon, title.getText().toString());
}
@Override
@ -529,7 +529,7 @@ public class CustomRomActivity extends AppCompatActivity {
public void onClick(DialogInterface dialog, int which) {
thumbnailPath = "";
ivAddThubnail.setImageResource(R.drawable.round_add_24);
VectrasApp.setIconWithName(ivIcon, Objects.requireNonNull(title.getText()).toString());
VMManager.setIconWithName(ivIcon, Objects.requireNonNull(title.getText()).toString());
ad.dismiss();
}
});
@ -542,7 +542,7 @@ public class CustomRomActivity extends AppCompatActivity {
lineardisclaimer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
VectrasApp.oneDialogNew(getString(R.string.dont_miss_out), getString(R.string.disclaimer_when_using_rom), getString(R.string.i_agree), false, false, CustomRomActivity.this);
UIUtils.oneDialogWithCustomButtonPositive(getString(R.string.dont_miss_out), getString(R.string.disclaimer_when_using_rom), getString(R.string.i_agree), false, false, CustomRomActivity.this);
}
});
@ -650,7 +650,6 @@ public class CustomRomActivity extends AppCompatActivity {
}
}
VectrasApp.prepareDataForAppConfig(activity);
}
@Override
@ -892,7 +891,7 @@ public class CustomRomActivity extends AppCompatActivity {
}
} else {
VectrasApp.writeToFile(AppConfig.maindirpath, "roms-data.json", "[]");
FileUtils.writeToFile(AppConfig.maindirpath, "roms-data.json", "[]");
startCreateNewVM();
}
}
@ -919,7 +918,7 @@ public class CustomRomActivity extends AppCompatActivity {
}
private void checkpermissions() {
boolean result = VectrasApp.checkpermissionsgranted(activity, true);
boolean result = PermissionUtils.storagepermission(activity, true);
}
private void startCreateVM() {
@ -1029,18 +1028,18 @@ public class CustomRomActivity extends AppCompatActivity {
//activity.startActivity(new Intent(activity, SplashActivity.class));
}
if (!previousName.isEmpty() && !title.getText().toString().equals(previousName)) {
if (VectrasApp.isFileExists(AppConfig.vmFolder + previousName + "/vmID.txt")) {
VectrasApp.copyAFile(AppConfig.vmFolder + previousName + "/vmID.txt", AppConfig.vmFolder + vmID + "/vmID.txt");
if (FileUtils.isFileExists(AppConfig.vmFolder + previousName + "/vmID.txt")) {
FileUtils.copyAFile(AppConfig.vmFolder + previousName + "/vmID.txt", AppConfig.vmFolder + vmID + "/vmID.txt");
} else {
VectrasApp.writeToFile(AppConfig.vmFolder + title.getText().toString(), "/vmID.txt", VMManager.idGenerator());
VectrasApp.copyAFile(AppConfig.vmFolder + vmID + "/vmID.txt", AppConfig.vmFolder + previousName + "/vmID.txt");
FileUtils.writeToFile(AppConfig.vmFolder + title.getText().toString(), "/vmID.txt", VMManager.idGenerator());
FileUtils.copyAFile(AppConfig.vmFolder + vmID + "/vmID.txt", AppConfig.vmFolder + previousName + "/vmID.txt");
}
} else {
VectrasApp.writeToFile(AppConfig.vmFolder + title.getText().toString(), "/vmID.txt", VMManager.idGenerator());
FileUtils.writeToFile(AppConfig.vmFolder + title.getText().toString(), "/vmID.txt", VMManager.idGenerator());
}
if ((!secondVMdirectory.isEmpty()) && VectrasApp.isFileExists(AppConfig.vmFolder + vmID + "/vmID.txt")) {
if ((!secondVMdirectory.isEmpty()) && FileUtils.isFileExists(AppConfig.vmFolder + vmID + "/vmID.txt")) {
if (!(AppConfig.vmFolder + title.getText().toString()).equals(secondVMdirectory)) {
VectrasApp.copyAFile(AppConfig.vmFolder + vmID + "/vmID.txt", secondVMdirectory + "/vmID.txt");
FileUtils.copyAFile(AppConfig.vmFolder + vmID + "/vmID.txt", secondVMdirectory + "/vmID.txt");
}
}
}
@ -1112,11 +1111,11 @@ public class CustomRomActivity extends AppCompatActivity {
ImageView ivIcon = findViewById(R.id.ivIcon);
if (_filepath.endsWith(".cvbi") || _filepath.endsWith(".cvbi.zip")) {
//Error code: CR_CVBI1
if (!VectrasApp.isFileExists(_filepath)) {
if (!FileUtils.isFileExists(_filepath)) {
if (getIntent().hasExtra("addromnow")) {
VectrasApp.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.error_CR_CVBI1), false, true, this);
UIUtils.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.error_CR_CVBI1), false, true, this);
} else {
VectrasApp.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.error_CR_CVBI1), true, false, this);
UIUtils.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.error_CR_CVBI1), true, false, this);
}
return;
}
@ -1140,7 +1139,10 @@ public class CustomRomActivity extends AppCompatActivity {
try {
ZipEntry ze;
int count;
byte[] buffer = new byte[8192];
byte[] buffer = new byte[128 * 1024];
if (DeviceUtils.totalMemoryCapacity(getApplicationContext()) < 4L * 1024 * 1024 * 1024) {
buffer = new byte[64 * 1024];
}
while ((ze = zis.getNextEntry()) != null) {
File file = new File(targetDirectory, ze.getName());
File dir = ze.isDirectory() ? file : file.getParentFile();
@ -1171,135 +1173,7 @@ public class CustomRomActivity extends AppCompatActivity {
Runnable runnable = new Runnable() {
@Override
public void run() {
whenProcessing(false);
custom.setVisibility(View.VISIBLE);
ivIcon.setEnabled(true);
try {
if (!VectrasApp.isFileExists(AppConfig.vmFolder + vmID + "/rom-data.json")) {
String _getDiskFile = VMManager.quickScanDiskFileInFolder(AppConfig.vmFolder + vmID);
if (!_getDiskFile.isEmpty()) {
//Error code: CR_CVBI2
if (getIntent().hasExtra("addromnow") && !addromnowdone) {
addromnowdone = true;
title.setText(getIntent().getStringExtra("romname"));
if (Objects.requireNonNull(getIntent().getStringExtra("romextra")).isEmpty()) {
setDefault();
drive.setText(_getDiskFile);
} else {
if (Objects.requireNonNull(getIntent().getStringExtra("romextra")).contains(Objects.requireNonNull(getIntent().getStringExtra("finalromfilename")))) {
qemu.setText(Objects.requireNonNull(getIntent().getStringExtra("romextra")).replaceAll(getIntent().getStringExtra("finalromfilename"), "\"" + _getDiskFile + "\""));
} else {
drive.setText(_getDiskFile);
qemu.setText(Objects.requireNonNull(getIntent().getStringExtra("romextra")).replaceAll("OhnoIjustrealizeditsmidnightandIstillhavetodothis", AppConfig.vmFolder + vmID + "/"));
}
}
if (!Objects.requireNonNull(getIntent().getStringExtra("romicon")).isEmpty()) {
File imgFile = new File(Objects.requireNonNull(getIntent().getStringExtra("romicon")));
if (imgFile.exists()) {
thumbnailPath = getIntent().getStringExtra("romicon");
thumbnailProcessing();
}
}
} else {
if (Objects.requireNonNull(title.getText()).toString().isEmpty() || title.getText().toString().equals("New VM")) {
title.setText(_filename.replace(".cvbi", ""));
}
if (Objects.requireNonNull(qemu.getText()).toString().isEmpty()) {
setDefault();
}
drive.setText(_getDiskFile);
VMManager.setArch("X86_64", CustomRomActivity.this);
}
VectrasApp.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.error_CR_CVBI2), true, false, CustomRomActivity.this);
} else {
//Error code: CR_CVBI3
if (getIntent().hasExtra("addromnow")) {
VectrasApp.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.error_CR_CVBI3), false, true, CustomRomActivity.this);
} else {
VectrasApp.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.error_CR_CVBI3), true, false, CustomRomActivity.this);
}
}
} else {
JSONObject jObj = new JSONObject(FileUtils.readFromFile(CustomRomActivity.this, new File(AppConfig.vmFolder + vmID + "/rom-data.json")));
if (jObj.has("vmID")) {
if (!jObj.isNull("vmID")) {
if (!jObj.getString("vmID").isEmpty()) {
VectrasApp.moveAFile(AppConfig.vmFolder + vmID, AppConfig.vmFolder + jObj.getString("vmID"));
vmID = jObj.getString("vmID");
}
}
}
if (jObj.has("title") && !jObj.isNull("title")) {
title.setText(jObj.getString("title"));
}
if (jObj.has("drive") && !jObj.isNull("drive")) {
if (!jObj.getString("drive").isEmpty()) {
drive.setText(AppConfig.vmFolder + vmID + "/" + jObj.getString("drive"));
}
}
if (jObj.has("qemu") && !jObj.isNull("qemu")) {
if (!jObj.getString("qemu").isEmpty()) {
qemu.setText(jObj.getString("qemu").replaceAll("OhnoIjustrealizeditsmidnightandIstillhavetodothis", AppConfig.vmFolder + vmID + "/"));
}
}
if (jObj.has("icon") && !jObj.isNull("icon")) {
ivAddThubnail.setImageResource(R.drawable.round_edit_24);
thumbnailPath = AppConfig.vmFolder + vmID + "/" + jObj.getString("icon");
thumbnailProcessing();
} else {
ivAddThubnail.setImageResource(R.drawable.round_add_24);
VectrasApp.setIconWithName(ivIcon, Objects.requireNonNull(title.getText()).toString());
}
if (jObj.has("cdrom") && !jObj.isNull("cdrom")) {
if (!jObj.getString("cdrom").isEmpty()) {
cdrom.setText(AppConfig.vmFolder + vmID + "/" + jObj.getString("cdrom"));
cdromLayout.setEndIconMode(TextInputLayout.END_ICON_CUSTOM);
cdromLayout.setEndIconDrawable(R.drawable.close_24px);
setOnClick();
} else {
cdromLayout.setEndIconMode(TextInputLayout.END_ICON_NONE);
}
} else {
cdromLayout.setEndIconMode(TextInputLayout.END_ICON_NONE);
}
if (jObj.has("arch") && !jObj.isNull("arch")) {
VMManager.setArch(jObj.getString("arch"), CustomRomActivity.this);
} else {
VMManager.setArch("x86_64", CustomRomActivity.this);
}
VectrasApp.moveAFile(AppConfig.vmFolder + _filename.replace(".cvbi", ""), AppConfig.vmFolder + vmID);
if (!jObj.has("drive") && !jObj.has("cdrom") && !jObj.has("qemu")) {
VectrasApp.oneDialog(getResources().getString(R.string.problem_has_been_detected), getResources().getString(R.string.this_rom_is_missing_too_much_information), true, false, CustomRomActivity.this);
}
if (!jObj.has("versioncode")) {
VectrasApp.oneDialog(getResources().getString(R.string.problem_has_been_detected), getResources().getString(R.string.this_rom_may_not_be_compatible), true, false, CustomRomActivity.this);
}
if (jObj.has("author") && !jObj.isNull("author") && jObj.has("desc") && !jObj.isNull("desc")) {
if (jObj.getString("desc").contains("<") && jObj.getString("desc").contains(">")) {
UIUtils.UIAlert(activity, getResources().getString(R.string.from) + ": " + jObj.getString("author"), jObj.getString("desc"));
} else {
VectrasApp.oneDialog(getResources().getString(R.string.from) + ": " + jObj.getString("author"), jObj.getString("desc"), true, false, CustomRomActivity.this);
}
}
}
TextView arch = findViewById(R.id.textArch);
arch.setText(MainSettingsManager.getArch(CustomRomActivity.this));
} catch (JSONException e) {
throw new RuntimeException(e);
}
afterExtractCVBIFile(_filename);
}
};
activity.runOnUiThread(runnable);
@ -1318,9 +1192,9 @@ public class CustomRomActivity extends AppCompatActivity {
t.start();
} else {
if (getIntent().hasExtra("addromnow")) {
VectrasApp.oneDialog(getResources().getString(R.string.problem_has_been_detected), getResources().getString(R.string.format_not_supported_please_select_file_with_format_cvbi), false, true, this);
UIUtils.oneDialog(getResources().getString(R.string.problem_has_been_detected), getResources().getString(R.string.format_not_supported_please_select_file_with_format_cvbi), false, true, this);
} else {
VectrasApp.oneDialog(getResources().getString(R.string.problem_has_been_detected), getResources().getString(R.string.format_not_supported_please_select_file_with_format_cvbi), true, false, this);
UIUtils.oneDialog(getResources().getString(R.string.problem_has_been_detected), getResources().getString(R.string.format_not_supported_please_select_file_with_format_cvbi), true, false, this);
}
}
@ -1459,14 +1333,14 @@ public class CustomRomActivity extends AppCompatActivity {
public void onBackPressed() {
super.onBackPressed();
if (!created && !modify) {
VectrasApp.deleteDirectory(AppConfig.vmFolder + vmID);
FileUtils.deleteDirectory(AppConfig.vmFolder + vmID);
}
modify = false;
}
public void onDestroy() {
if (!created && !modify) {
VectrasApp.deleteDirectory(AppConfig.vmFolder + vmID);
FileUtils.deleteDirectory(AppConfig.vmFolder + vmID);
}
modify = false;
super.onDestroy();
@ -1494,7 +1368,7 @@ public class CustomRomActivity extends AppCompatActivity {
ivIcon.setImageBitmap(myBitmap);
} else {
ivAddThubnail.setImageResource(R.drawable.round_add_24);
VectrasApp.setIconWithName(ivIcon, current.itemName);
VMManager.setIconWithName(ivIcon, current.itemName);
}
} else {
ivAddThubnail.setImageResource(R.drawable.round_add_24);
@ -1513,9 +1387,9 @@ public class CustomRomActivity extends AppCompatActivity {
if (!romDir.exists()) {
if (!romDir.mkdirs()) {
if (getIntent().hasExtra("addromnow")) {
VectrasApp.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.unable_to_create_the_directory_to_create_the_vm), false, true, this);
UIUtils.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.unable_to_create_the_directory_to_create_the_vm), false, true, this);
} else {
VectrasApp.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.unable_to_create_the_directory_to_create_the_vm), true, false, this);
UIUtils.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.unable_to_create_the_directory_to_create_the_vm), true, false, this);
}
return false;
} else {
@ -1525,4 +1399,137 @@ public class CustomRomActivity extends AppCompatActivity {
return true;
}
}
private void afterExtractCVBIFile(String _filename) {
LinearLayout custom = findViewById(R.id.custom);
whenProcessing(false);
custom.setVisibility(View.VISIBLE);
ivIcon.setEnabled(true);
try {
if (!FileUtils.isFileExists(AppConfig.vmFolder + vmID + "/rom-data.json")) {
String _getDiskFile = VMManager.quickScanDiskFileInFolder(AppConfig.vmFolder + vmID);
if (!_getDiskFile.isEmpty()) {
//Error code: CR_CVBI2
if (getIntent().hasExtra("addromnow") && !addromnowdone) {
addromnowdone = true;
title.setText(getIntent().getStringExtra("romname"));
if (Objects.requireNonNull(getIntent().getStringExtra("romextra")).isEmpty()) {
setDefault();
drive.setText(_getDiskFile);
} else {
if (Objects.requireNonNull(getIntent().getStringExtra("romextra")).contains(Objects.requireNonNull(getIntent().getStringExtra("finalromfilename")))) {
qemu.setText(Objects.requireNonNull(getIntent().getStringExtra("romextra")).replaceAll(getIntent().getStringExtra("finalromfilename"), "\"" + _getDiskFile + "\""));
} else {
drive.setText(_getDiskFile);
qemu.setText(Objects.requireNonNull(getIntent().getStringExtra("romextra")).replaceAll("OhnoIjustrealizeditsmidnightandIstillhavetodothis", AppConfig.vmFolder + vmID + "/"));
}
}
if (!Objects.requireNonNull(getIntent().getStringExtra("romicon")).isEmpty()) {
File imgFile = new File(Objects.requireNonNull(getIntent().getStringExtra("romicon")));
if (imgFile.exists()) {
thumbnailPath = getIntent().getStringExtra("romicon");
thumbnailProcessing();
}
}
} else {
if (Objects.requireNonNull(title.getText()).toString().isEmpty() || title.getText().toString().equals("New VM")) {
title.setText(_filename.replace(".cvbi", ""));
}
if (Objects.requireNonNull(qemu.getText()).toString().isEmpty()) {
setDefault();
}
drive.setText(_getDiskFile);
VMManager.setArch("X86_64", CustomRomActivity.this);
}
UIUtils.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.error_CR_CVBI2), true, false, CustomRomActivity.this);
} else {
//Error code: CR_CVBI3
if (getIntent().hasExtra("addromnow")) {
UIUtils.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.error_CR_CVBI3), false, true, CustomRomActivity.this);
} else {
UIUtils.oneDialog(getResources().getString(R.string.oops), getResources().getString(R.string.error_CR_CVBI3), true, false, CustomRomActivity.this);
}
}
} else {
JSONObject jObj = new JSONObject(FileUtils.readFromFile(CustomRomActivity.this, new File(AppConfig.vmFolder + vmID + "/rom-data.json")));
if (jObj.has("vmID")) {
if (!jObj.isNull("vmID")) {
if (!jObj.getString("vmID").isEmpty()) {
FileUtils.moveAFile(AppConfig.vmFolder + vmID, AppConfig.vmFolder + jObj.getString("vmID"));
vmID = jObj.getString("vmID");
}
}
}
if (jObj.has("title") && !jObj.isNull("title")) {
title.setText(jObj.getString("title"));
}
if (jObj.has("drive") && !jObj.isNull("drive")) {
if (!jObj.getString("drive").isEmpty()) {
drive.setText(AppConfig.vmFolder + vmID + "/" + jObj.getString("drive"));
}
}
if (jObj.has("qemu") && !jObj.isNull("qemu")) {
if (!jObj.getString("qemu").isEmpty()) {
qemu.setText(jObj.getString("qemu").replaceAll("OhnoIjustrealizeditsmidnightandIstillhavetodothis", AppConfig.vmFolder + vmID + "/"));
}
}
if (jObj.has("icon") && !jObj.isNull("icon")) {
ivAddThubnail.setImageResource(R.drawable.round_edit_24);
thumbnailPath = AppConfig.vmFolder + vmID + "/" + jObj.getString("icon");
thumbnailProcessing();
} else {
ivAddThubnail.setImageResource(R.drawable.round_add_24);
VMManager.setIconWithName(ivIcon, Objects.requireNonNull(title.getText()).toString());
}
if (jObj.has("cdrom") && !jObj.isNull("cdrom")) {
if (!jObj.getString("cdrom").isEmpty()) {
cdrom.setText(AppConfig.vmFolder + vmID + "/" + jObj.getString("cdrom"));
cdromLayout.setEndIconMode(TextInputLayout.END_ICON_CUSTOM);
cdromLayout.setEndIconDrawable(R.drawable.close_24px);
setOnClick();
} else {
cdromLayout.setEndIconMode(TextInputLayout.END_ICON_NONE);
}
} else {
cdromLayout.setEndIconMode(TextInputLayout.END_ICON_NONE);
}
if (jObj.has("arch") && !jObj.isNull("arch")) {
VMManager.setArch(jObj.getString("arch"), CustomRomActivity.this);
} else {
VMManager.setArch("x86_64", CustomRomActivity.this);
}
FileUtils.moveAFile(AppConfig.vmFolder + _filename.replace(".cvbi", ""), AppConfig.vmFolder + vmID);
if (!jObj.has("drive") && !jObj.has("cdrom") && !jObj.has("qemu")) {
UIUtils.oneDialog(getResources().getString(R.string.problem_has_been_detected), getResources().getString(R.string.this_rom_is_missing_too_much_information), true, false, CustomRomActivity.this);
}
if (!jObj.has("versioncode")) {
UIUtils.oneDialog(getResources().getString(R.string.problem_has_been_detected), getResources().getString(R.string.this_rom_may_not_be_compatible), true, false, CustomRomActivity.this);
}
if (jObj.has("author") && !jObj.isNull("author") && jObj.has("desc") && !jObj.isNull("desc")) {
if (jObj.getString("desc").contains("<") && jObj.getString("desc").contains(">")) {
UIUtils.UIAlert(activity, getResources().getString(R.string.from) + ": " + jObj.getString("author"), jObj.getString("desc"));
} else {
UIUtils.oneDialog(getResources().getString(R.string.from) + ": " + jObj.getString("author"), jObj.getString("desc"), true, false, CustomRomActivity.this);
}
}
}
TextView arch = findViewById(R.id.textArch);
arch.setText(MainSettingsManager.getArch(CustomRomActivity.this));
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
}

View file

@ -97,9 +97,9 @@ public class DataExplorerActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
activity = this;
UIController.edgeToEdge(this);
UIUtils.edgeToEdge(this);
setContentView(R.layout.activity_data_explorer);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
loadingPb = findViewById(R.id.loadingPb);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

View file

@ -7,6 +7,8 @@ import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import com.vectras.vm.utils.UIUtils;
public class EditActivity extends AppCompatActivity {
private Button buttondone;
@ -16,9 +18,9 @@ public class EditActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
UIController.edgeToEdge(this);
UIUtils.edgeToEdge(this);
setContentView(R.layout.activity_edit);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
buttondone = findViewById(R.id.materialbutton1);
editcontent = findViewById(R.id.edittext1);
if (getIntent().hasExtra("content")) {

View file

@ -1,7 +1,5 @@
package com.vectras.vm;
import static com.vectras.vm.VectrasApp.getAppInfo;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.SharedPreferences;
@ -24,6 +22,7 @@ import androidx.core.view.WindowInsetsCompat;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.vectras.vm.utils.FileUtils;
import com.vectras.vm.utils.PackageUtils;
import com.vectras.vm.utils.UIUtils;
import org.checkerframework.checker.guieffect.qual.UI;
@ -58,9 +57,9 @@ public class ExportRomActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
UIController.edgeToEdge(this);
UIUtils.edgeToEdge(this);
setContentView(R.layout.activity_export_rom);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
linearone = findViewById(R.id.linearall);
linearload = findViewById(R.id.linearload);
@ -143,7 +142,7 @@ public class ExportRomActivity extends AppCompatActivity {
listmapForGetData.clear();
mapForGetData.clear();
listmapForGetData = new Gson().fromJson(VectrasApp.readFile(AppConfig.romsdatajson), new TypeToken<ArrayList<HashMap<String, Object>>>(){}.getType());
listmapForGetData = new Gson().fromJson(FileUtils.readAFile(AppConfig.romsdatajson), new TypeToken<ArrayList<HashMap<String, Object>>>(){}.getType());
getRomPath = AppConfig.vmFolder + Objects.requireNonNull(listmapForGetData.get(pendingPosition).get("vmID")).toString() + "/";
@ -205,10 +204,9 @@ public class ExportRomActivity extends AppCompatActivity {
mapForGetData.put("desc", editdesc.getText().toString());
}
PackageInfo pinfo = getAppInfo(getApplicationContext());
mapForGetData.put("versioncode", pinfo.versionCode);
mapForGetData.put("versioncode", PackageUtils.getThisVersionCode(getApplicationContext()));
VectrasApp.writeToFile(new File(String.valueOf(getApplicationContext().getExternalFilesDir("data"))).getPath(), "rom-data.json", new Gson().toJson(mapForGetData));
FileUtils.writeToFile(new File(String.valueOf(getApplicationContext().getExternalFilesDir("data"))).getPath(), "rom-data.json", new Gson().toJson(mapForGetData));
Thread t = new Thread() {
@Override

View file

@ -7,6 +7,7 @@ import androidx.appcompat.app.AppCompatActivity;
import com.bumptech.glide.Glide;
import com.vectras.vm.R;
import com.vectras.vm.utils.UIUtils;
public class ImagePrvActivity extends AppCompatActivity {
public static String linkIv;
@ -15,9 +16,9 @@ public class ImagePrvActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
UIController.edgeToEdge(this);
UIUtils.edgeToEdge(this);
setContentView(R.layout.iv_prv);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
ivPrv = findViewById(R.id.ivPrv);
Glide.with(this).load(linkIv).into(ivPrv);
}

View file

@ -6,9 +6,9 @@ import static android.os.Build.VERSION.SDK_INT;
import com.termux.app.TermuxService;
import static com.vectras.vm.VectrasApp.getApp;
import static com.vectras.vm.VectrasApp.getAppInfo;
import static com.vectras.vm.utils.LibraryChecker.isPackageInstalled2;
import static com.vectras.vm.utils.UIUtils.UIAlert;
import com.vectras.vm.utils.PermissionUtils;
import android.androidVNC.androidVNC;
import android.app.ActivityManager;
@ -23,6 +23,7 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
@ -86,6 +87,7 @@ import com.vectras.vm.logger.VectrasStatus;
import com.vectras.vm.utils.AppUpdater;
import com.vectras.vm.utils.FileUtils;
import com.vectras.vm.utils.LibraryChecker;
import com.vectras.vm.utils.PackageUtils;
import com.vectras.vm.utils.UIUtils;
import com.vectras.vterm.Terminal;
@ -150,7 +152,6 @@ public class MainActivity extends AppCompatActivity {
RamInfo.activity = this;
setContentView(R.layout.activity_main);
isActivate = true;
VectrasApp.prepareDataForAppConfig(activity);
setupFolders();
NotificationManager notificationManager = (NotificationManager) activity.getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
@ -745,9 +746,8 @@ public class MainActivity extends AppCompatActivity {
try {
if (!result.contains("Error on getting data")) {
final JSONObject obj = new JSONObject(result);
PackageInfo pinfo = getAppInfo(getApplicationContext());
int versionCode = pinfo.versionCode;
String versionName = pinfo.versionName;
int versionCode = PackageUtils.getThisVersionCode(getApplicationContext());
String versionName = PackageUtils.getThisVersionName(getApplicationContext());
String versionNameonUpdate;
if (obj.getString("versionNameBetas").equals(versionName) && !MainSettingsManager.getcheckforupdatesfromthebetachannel(activity) && !MainSettingsManager.getDontShowAgainJoinBetaUpdateChannelDialog(activity)) {
@ -886,7 +886,8 @@ public class MainActivity extends AppCompatActivity {
mRVMainRoms = (RecyclerView) activity.findViewById(R.id.mRVMainRoms);
mMainAdapter = new AdapterMainRoms(MainActivity.activity, data);
mRVMainRoms.setAdapter(mMainAdapter);
mRVMainRoms.setLayoutManager(new GridLayoutManager(MainActivity.activity, 2));
int spanCount = activity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 3 : 2;
mRVMainRoms.setLayoutManager(new GridLayoutManager(MainActivity.activity, spanCount));
} catch (JSONException e) {
}
}
@ -917,14 +918,14 @@ public class MainActivity extends AppCompatActivity {
alertDialog.setMessage(getResources().getString(R.string.all_running_vms_will_be_forcibly_shut_down));
alertDialog.setCancelable(true);
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, getResources().getString(R.string.kill_all), (dialog, which) -> {
VectrasApp.killallqemuprocesses(getApplicationContext());
VMManager.killallqemuprocesses(getApplicationContext());
});
alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getResources().getString(R.string.cancel), (dialog, which) -> {
});
alertDialog.show();
} else if (id == R.id.backtothedisplay) {
if (VectrasApp.isQemuRunning()) {
if (VMManager.isQemuRunning()) {
if (MainSettingsManager.getVmUi(activity).equals("VNC"))
activity.startActivity(new Intent(activity, MainVNCActivity.class));
else if (MainSettingsManager.getVmUi(activity).equals("X11"))
@ -991,11 +992,11 @@ public class MainActivity extends AppCompatActivity {
romDir.mkdirs();
if (!VMManager.isthiscommandsafe(env, activity.getApplicationContext())) {
VectrasApp.oneDialog(activity.getResources().getString(R.string.problem_has_been_detected), activity.getResources().getString(R.string.harmful_command_was_detected) + " " + activity.getResources().getString(R.string.reason) + ": " + VMManager.latestUnsafeCommandReason, true, false, activity);
UIUtils.oneDialog(activity.getResources().getString(R.string.problem_has_been_detected), activity.getResources().getString(R.string.harmful_command_was_detected) + " " + activity.getResources().getString(R.string.reason) + ": " + VMManager.latestUnsafeCommandReason, true, false, activity);
return;
}
if (VectrasApp.isThisVMRunning(itemExtra, itemPath)) {
if (VMManager.isThisVMRunning(itemExtra, itemPath)) {
Toast.makeText(activity, "This VM is already running.", Toast.LENGTH_LONG).show();
if (MainSettingsManager.getVmUi(activity).equals("VNC"))
activity.startActivity(new Intent(activity, MainVNCActivity.class));
@ -1199,11 +1200,11 @@ public class MainActivity extends AppCompatActivity {
if (!AppConfig.pendingCommand.isEmpty()) {
if (!VMManager.isthiscommandsafe(AppConfig.pendingCommand, getApplicationContext())) {
AppConfig.pendingCommand = "";
VectrasApp.oneDialog(activity.getResources().getString(R.string.problem_has_been_detected), activity.getResources().getString(R.string.harmful_command_was_detected) + " " + activity.getResources().getString(R.string.reason) + ": " + VMManager.latestUnsafeCommandReason, true, false, activity);
UIUtils.oneDialog(activity.getResources().getString(R.string.problem_has_been_detected), activity.getResources().getString(R.string.harmful_command_was_detected) + " " + activity.getResources().getString(R.string.reason) + ": " + VMManager.latestUnsafeCommandReason, true, false, activity);
} else {
if (AppConfig.pendingCommand.startsWith("qemu-img")) {
if (!VMManager.isthiscommandsafeimg(AppConfig.pendingCommand, getApplicationContext())) {
VectrasApp.oneDialog(activity.getResources().getString(R.string.problem_has_been_detected), activity.getResources().getString(R.string.size_too_large_try_qcow2_format), true, false, activity);
UIUtils.oneDialog(activity.getResources().getString(R.string.problem_has_been_detected), activity.getResources().getString(R.string.size_too_large_try_qcow2_format), true, false, activity);
} else {
Terminal _vterm = new Terminal(MainActivity.this);
_vterm.executeShellCommand2(AppConfig.pendingCommand, false, MainActivity.activity);
@ -1443,13 +1444,13 @@ public class MainActivity extends AppCompatActivity {
}
private void errorjsondialog() {
if (VectrasApp.isFileExists(AppConfig.romsdatajson)) {
if (FileUtils.isFileExists(AppConfig.romsdatajson)) {
if (VMManager.isRomsDataJsonNormal(true, MainActivity.this)) {
loadDataVbi();
mdatasize();
}
} else {
VectrasApp.writeToFile(AppConfig.maindirpath, "roms-data.json", "[]");
FileUtils.writeToFile(AppConfig.maindirpath, "roms-data.json", "[]");
loadDataVbi();
mdatasize();
}
@ -1500,7 +1501,7 @@ public class MainActivity extends AppCompatActivity {
}
private void checkpermissions() {
if (VectrasApp.checkpermissionsgranted(activity, true)) {
if (PermissionUtils.storagepermission(activity, true)) {
errorjsondialog();
}
}
@ -1518,7 +1519,7 @@ public class MainActivity extends AppCompatActivity {
alertDialog.setMessage(getResources().getString(R.string.all_running_vms_will_be_forcibly_shut_down));
alertDialog.setCancelable(true);
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, getResources().getString(R.string.kill_all), (dialog, which) -> {
VectrasApp.killallqemuprocesses(getApplicationContext());
VMManager.killallqemuprocesses(getApplicationContext());
});
alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getResources().getString(R.string.cancel), (dialog, which) -> {

View file

@ -104,7 +104,7 @@ public class AdapterMainRoms extends RecyclerView.Adapter<RecyclerView.ViewHolde
myHolder.textName.setText(current.itemName);
myHolder.textArch.setText(current.itemArch);
if (current.itemIcon.isEmpty()){
VectrasApp.setIconWithName(myHolder.ivIcon, current.itemName);
VMManager.setIconWithName(myHolder.ivIcon, current.itemName);
} else {
Bitmap bmImg = BitmapFactory.decodeFile(current.itemIcon);
myHolder.ivIcon.setImageBitmap(bmImg);

View file

@ -69,7 +69,7 @@ public class MainService extends Service {
//TODO: Not Work
//Terminal.killQemuProcess();
VectrasApp.killallqemuprocesses(MainActivity.activity);
VMManager.killallqemuprocesses(MainActivity.activity);
}
}
@ -86,7 +86,7 @@ public class MainService extends Service {
//TODO: Not Work
//Terminal.killQemuProcess();
VectrasApp.killallqemuprocesses(MainActivity.activity);
VMManager.killallqemuprocesses(MainActivity.activity);
return START_NOT_STICKY;
}

View file

@ -37,6 +37,11 @@ import androidx.core.view.WindowInsetsCompat;
import com.termux.app.TermuxService;
import com.vectras.qemu.MainSettingsManager;
import com.vectras.vm.utils.CommandUtils;
import com.vectras.vm.utils.FileUtils;
import com.vectras.vm.utils.ListUtils;
import com.vectras.vm.utils.PackageUtils;
import com.vectras.vm.utils.UIUtils;
import java.io.BufferedReader;
import java.io.File;
@ -59,7 +64,7 @@ public class Minitools extends AppCompatActivity {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_minitools);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
@ -76,7 +81,7 @@ public class Minitools extends AppCompatActivity {
spinnerselectmirror = findViewById(R.id.spinnerselectmirror);
setupsoundfortermux.setOnClickListener(v -> {
if (VectrasApp.isAppInstalled("com.termux", getApplicationContext())) {
if (PackageUtils.isInstalled("com.termux", getApplicationContext())) {
AlertDialog alertDialog = new AlertDialog.Builder(Minitools.this, R.style.MainDialogTheme).create();
alertDialog.setTitle(getResources().getString(R.string.setup_sound));
alertDialog.setMessage(getResources().getString(R.string.setup_sound_guide_content));
@ -149,7 +154,7 @@ public class Minitools extends AppCompatActivity {
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, getResources().getString(R.string.continuetext), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
VMManager.restoreVMs();
VectrasApp.oneDialog(getResources().getString(R.string.done), getResources().getString(R.string.restored) + " " + String.valueOf(VMManager.restoredVMs) + ".", true, false, Minitools.this);
UIUtils.oneDialog(getResources().getString(R.string.done), getResources().getString(R.string.restored) + " " + String.valueOf(VMManager.restoredVMs) + ".", true, false, Minitools.this);
restore.setVisibility(GONE);
}
});
@ -167,13 +172,13 @@ public class Minitools extends AppCompatActivity {
alertDialog.setMessage(getResources().getString(R.string.delete_all_vm_content));
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, getResources().getString(R.string.delete_all), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
VectrasApp.killallqemuprocesses(getApplicationContext());
VectrasApp.deleteDirectory(AppConfig.vmFolder);
VectrasApp.deleteDirectory(AppConfig.recyclebin);
VectrasApp.deleteDirectory(AppConfig.romsdatajson);
VMManager.killallqemuprocesses(getApplicationContext());
FileUtils.deleteDirectory(AppConfig.vmFolder);
FileUtils.deleteDirectory(AppConfig.recyclebin);
FileUtils.deleteDirectory(AppConfig.romsdatajson);
File vDir = new File(AppConfig.maindirpath);
vDir.mkdirs();
VectrasApp.writeToFile(AppConfig.maindirpath, "roms-data.json", "[]");
FileUtils.writeToFile(AppConfig.maindirpath, "roms-data.json", "[]");
cleanup.setVisibility(GONE);
restore.setVisibility(GONE);
deleteallvm.setVisibility(GONE);
@ -194,11 +199,11 @@ public class Minitools extends AppCompatActivity {
alertDialog.setMessage(getResources().getString(R.string.delete_all_content));
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, getResources().getString(R.string.delete_all), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
VectrasApp.killallqemuprocesses(getApplicationContext());
VectrasApp.deleteDirectory(AppConfig.maindirpath);
VMManager.killallqemuprocesses(getApplicationContext());
FileUtils.deleteDirectory(AppConfig.maindirpath);
File vDir = new File(AppConfig.maindirpath);
vDir.mkdirs();
VectrasApp.writeToFile(AppConfig.maindirpath, "roms-data.json", "[]");
FileUtils.writeToFile(AppConfig.maindirpath, "roms-data.json", "[]");
cleanup.setVisibility(GONE);
restore.setVisibility(GONE);
deleteallvm.setVisibility(GONE);
@ -222,10 +227,10 @@ public class Minitools extends AppCompatActivity {
public void onClick(DialogInterface dialog, int which) {
MainActivity.isActivate = false;
AppConfig.needreinstallsystem = true;
VectrasApp.killallqemuprocesses(Minitools.this);
VectrasApp.deleteDirectory(getFilesDir().getAbsolutePath() + "/data");
VectrasApp.deleteDirectory(getFilesDir().getAbsolutePath() + "/distro");
VectrasApp.deleteDirectory(getFilesDir().getAbsolutePath() + "/usr");
VMManager.killallqemuprocesses(Minitools.this);
FileUtils.deleteDirectory(getFilesDir().getAbsolutePath() + "/data");
FileUtils.deleteDirectory(getFilesDir().getAbsolutePath() + "/distro");
FileUtils.deleteDirectory(getFilesDir().getAbsolutePath() + "/usr");
Intent intent = new Intent();
intent.setClass(Minitools.this, SetupQemuActivity.class);
startActivity(intent);
@ -245,7 +250,7 @@ public class Minitools extends AppCompatActivity {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selectedMirrorCommand = listmapForSelectMirrors.get(position).get("mirror");
MainSettingsManager.setSelectedMirror(Minitools.this, position);
VectrasApp.runACommand(selectedMirrorCommand + "&& exit", Minitools.this);
CommandUtils.run(selectedMirrorCommand + "&& exit", false, Minitools.this);
}
@Override
@ -271,7 +276,7 @@ public class Minitools extends AppCompatActivity {
}
private void setupSpiner() {
VectrasApp.setupMirrorListForListmap(listmapForSelectMirrors);
ListUtils.setupMirrorListForListmap(listmapForSelectMirrors);
spinnerselectmirror.setAdapter(new SpinnerSelectMirrorAdapter(listmapForSelectMirrors));
spinnerselectmirror.setSelection(MainSettingsManager.getSelectedMirror(Minitools.this));
@ -320,9 +325,9 @@ public class Minitools extends AppCompatActivity {
String apkLoaderAssetPath = "bootstrap/loader.apk";
String apkLoaderextractedFilePath = TermuxService.PREFIX_PATH + "/libexec/termux-x11/loader.apk";
VectrasApp.deleteDirectory(apkLoaderextractedFilePath);
FileUtils.deleteDirectory(apkLoaderextractedFilePath);
if (copyAssetToFile(apkLoaderAssetPath, apkLoaderextractedFilePath)) {
VectrasApp.copyAFile(TermuxService.PREFIX_PATH + "/libexec/termux-x11/loader.apk", AppConfig.maindirpath);
FileUtils.copyAFile(TermuxService.PREFIX_PATH + "/libexec/termux-x11/loader.apk", AppConfig.maindirpath);
}
}

View file

@ -17,14 +17,17 @@ import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.Objects;
import com.vectras.vm.utils.UIUtils;
import com.vectras.vm.utils.PermissionUtils;
public class ReceiveRomFileActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (VectrasApp.checkpermissionsgranted(this, false)) {
UIController.edgeToEdge(this);
if (PermissionUtils.storagepermission(this, false)) {
UIUtils.edgeToEdge(this);
setContentView(R.layout.activity_cqcm);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
Button buttonallow;
buttonallow = findViewById(R.id.buttonallow);
buttonallow.setOnClickListener(v -> {
@ -43,7 +46,7 @@ public class ReceiveRomFileActivity extends AppCompatActivity {
@Override
public void onResume() {
super.onResume();
if (VectrasApp.checkpermissionsgranted(this, false)) {
if (PermissionUtils.storagepermission(this, false)) {
String filesDir = getFilesDir().getAbsolutePath();
if ((new File(filesDir, "/distro/usr/local/bin/qemu-system-x86_64").exists()) || (new File(filesDir, "/distro/usr/bin/qemu-system-x86_64").exists())) {
Intent intent = getIntent();

View file

@ -25,6 +25,7 @@ import androidx.core.view.WindowInsetsCompat;
import com.bumptech.glide.Glide;
import com.vectras.qemu.MainSettingsManager;
import com.vectras.vm.utils.FileUtils;
import com.vectras.vm.utils.UIUtils;
import java.io.File;
import java.util.Objects;
@ -38,7 +39,7 @@ public class RomInfo extends AppCompatActivity {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_rom_info);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
ImageView ivIcon;
TextView textName;
@ -135,7 +136,7 @@ public class RomInfo extends AppCompatActivity {
}
startActivity(intent);
} else {
VectrasApp.oneDialog(getString(R.string.problem_has_been_detected), getString(R.string.please_select) + " " + getIntent().getStringExtra("filename"), true, false, this);
UIUtils.oneDialog(getString(R.string.problem_has_been_detected), getString(R.string.please_select) + " " + getIntent().getStringExtra("filename"), true, false, this);
}
}

View file

@ -196,7 +196,6 @@ public class RomsManagerActivity extends AppCompatActivity {
activity = this;
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
VectrasApp.prepareDataForAppConfig(activity);
sAvailable = getResources().getString(R.string.available);
sUnavailable = getResources().getString(R.string.unavailable);
sInstalled = getResources().getString(R.string.installed);
@ -204,9 +203,9 @@ public class RomsManagerActivity extends AppCompatActivity {
boolean isAccessed = prefs.getBoolean("isFirstLaunch", false);
//if (!isAccessed && !checkConnection(activity))
//UIUtils.UIAlert(activity, "for first time you need internet connection to load app data!", "No internet connection!");
UIController.edgeToEdge(this);
UIUtils.edgeToEdge(this);
setContentView(R.layout.activity_roms_manager);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
linearload = findViewById(R.id.linearload);
linearnothinghere = findViewById(R.id.linearnothinghere);
buttontryagain = findViewById(R.id.buttontryagain);

View file

@ -14,6 +14,7 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import com.vectras.qemu.MainSettingsManager;
import com.vectras.vm.utils.UIUtils;
public class SetArchActivity extends AppCompatActivity implements View.OnClickListener {
@ -23,9 +24,9 @@ public class SetArchActivity extends AppCompatActivity implements View.OnClickLi
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mHandler = new Handler();
UIController.edgeToEdge(this);
UIUtils.edgeToEdge(this);
setContentView(R.layout.activity_set_arch);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
activity = this;
Button archi386 = findViewById(R.id.archi386);
Button archx86_64 = findViewById(R.id.archx86_64);

View file

@ -47,6 +47,10 @@ import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.vectras.qemu.MainSettingsManager;
import com.vectras.vm.utils.FileUtils;
import com.vectras.vm.utils.JSONUtils;
import com.vectras.vm.utils.ListUtils;
import com.vectras.vm.utils.UIUtils;
import com.vectras.vm.utils.PermissionUtils;
import com.vectras.vterm.view.ZoomableTextView;
import java.io.BufferedReader;
@ -108,9 +112,9 @@ public class SetupQemuActivity extends AppCompatActivity implements View.OnClick
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
UIController.edgeToEdge(this);
UIUtils.edgeToEdge(this);
setContentView(R.layout.activity_setup_qemu);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
activity = this;
linearload = findViewById(R.id.linearload);
@ -150,7 +154,6 @@ public class SetupQemuActivity extends AppCompatActivity implements View.OnClick
setupSpiner();
tarPath = getExternalFilesDir("data") + "/data.tar.gz";
VectrasApp.prepareDataForAppConfig(activity);
spinnerselectmirror.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
@ -172,7 +175,7 @@ public class SetupQemuActivity extends AppCompatActivity implements View.OnClick
public void onResponse(String tag, String response, HashMap<String, Object> responseHeaders) {
linearload.setVisibility(View.GONE);
contentJSON = response;
if (VectrasApp.checkJSONMapIsNormalFromString(contentJSON)) {
if (JSONUtils.isMapValidFromString(contentJSON)) {
mmap.clear();
mmap= new Gson().fromJson(contentJSON, new TypeToken<HashMap<String, Object>>(){}.getType());
if(mmap.containsKey("arm64") && mmap.containsKey("x86_64")) {
@ -274,7 +277,7 @@ public class SetupQemuActivity extends AppCompatActivity implements View.OnClick
if (process != null) {
process.destroy();
}
//VectrasApp.deleteDirectory(apkLoaderextractedFilePath);
//FileUtils.deleteDirectory(apkLoaderextractedFilePath);
//if (!copyAssetToFile(apkLoaderAssetPath, apkLoaderextractedFilePath)) {
//errorMessage = "Failed to copy loader.apk file.";
//}
@ -739,7 +742,7 @@ public class SetupQemuActivity extends AppCompatActivity implements View.OnClick
private void checkabi() {
if (!AppConfig.getSetupFiles().contains("arm64-v8a")) {
if (!AppConfig.getSetupFiles().contains("x86_64")) {
VectrasApp.oneDialog(getResources().getString(R.string.warning), getResources().getString(R.string.cpu_not_support_64), true, false, activity);
UIUtils.oneDialog(getResources().getString(R.string.warning), getResources().getString(R.string.cpu_not_support_64), true, false, activity);
}
}
@ -777,7 +780,7 @@ public class SetupQemuActivity extends AppCompatActivity implements View.OnClick
}
private void checkpermissions() {
if (VectrasApp.checkpermissionsgranted(activity, true)) {
if (PermissionUtils.storagepermission(activity, true)) {
if (!settingup) {
settingup = true;
checkabi();
@ -884,7 +887,7 @@ public class SetupQemuActivity extends AppCompatActivity implements View.OnClick
}
private void setupSpiner() {
VectrasApp.setupMirrorListForListmap(listmapForSelectMirrors);
ListUtils.setupMirrorListForListmap(listmapForSelectMirrors);
spinnerselectmirror.setAdapter(new SpinnerSelectMirrorAdapter(listmapForSelectMirrors));
spinnerselectmirror.setSelection(MainSettingsManager.getSelectedMirror(activity));

View file

@ -39,6 +39,7 @@ import androidx.preference.PreferenceManager;
import com.vectras.qemu.MainSettingsManager;
import com.vectras.vm.utils.FileUtils;
import com.vectras.vm.utils.UIUtils;
import java.io.BufferedInputStream;
import java.io.File;
@ -59,15 +60,14 @@ public class SplashActivity extends AppCompatActivity implements Runnable {
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
activity = this;
UIController.edgeToEdge(this);
UIUtils.edgeToEdge(this);
setContentView(R.layout.activity_splash);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
//TextView textversionname;
//textversionname = findViewById(R.id.versionname);
//PackageInfo pinfo = MainActivity.activity.getAppInfo(getApplicationContext());
//textversionname.setText(pinfo.versionName);
VectrasApp.prepareDataForAppConfig(activity);
setupFolders();
SharedPreferences prefs = getSharedPreferences(CREDENTIAL_SHARED_PREF, Context.MODE_PRIVATE);

View file

@ -67,9 +67,9 @@ public class StoreActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
UIController.edgeToEdge(this);
UIUtils.edgeToEdge(this);
setContentView(R.layout.activity_store);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
loadingPb = findViewById(R.id.loadingPb);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
@ -78,7 +78,6 @@ public class StoreActivity extends AppCompatActivity {
toolbar.setTitle(getString(R.string.app_name));
activity = this;
VectrasApp.prepareDataForAppConfig(activity);
//AdView mAdView = findViewById(R.id.adView);
//AdRequest adRequest = new AdRequest.Builder().build();
//mAdView.loadAd(adRequest);

View file

@ -68,9 +68,9 @@ public class StoreItemActivity extends AppCompatActivity {
protected void onCreate(Bundle bundle) {
activity = this;
super.onCreate(bundle);
UIController.edgeToEdge(this);
UIUtils.edgeToEdge(this);
setContentView(R.layout.activity_store_item);
UIController.setOnApplyWindowInsetsListener(findViewById(R.id.main));
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
@ -207,7 +207,6 @@ public class StoreItemActivity extends AppCompatActivity {
startActivity(new Intent(activity, ImagePrvActivity.class));
}
});
VectrasApp.prepareDataForAppConfig(activity);
}
public static final int DIALOG_DOWNLOAD_PROGRESS = 0;

View file

@ -1,7 +1,6 @@
package com.vectras.vm;
import static com.vectras.vm.VectrasApp.isFileExists;
import static com.vectras.vm.VectrasApp.readFile;
import static com.vectras.vm.utils.FileUtils.isFileExists;
import android.app.Activity;
import android.app.Dialog;
@ -10,6 +9,7 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import android.widget.ImageView;
import androidx.appcompat.app.AlertDialog;
import androidx.recyclerview.widget.GridLayoutManager;
@ -19,7 +19,10 @@ import com.google.gson.reflect.TypeToken;
import com.vectras.qemu.Config;
import com.vectras.qemu.MainSettingsManager;
import com.vectras.vm.MainRoms.AdapterMainRoms;
import com.vectras.vm.utils.FileUtils;
import com.vectras.vm.utils.JSONUtils;
import com.vectras.vm.utils.UIUtils;
import com.vectras.vterm.Terminal;
import java.io.BufferedWriter;
import java.io.File;
@ -59,20 +62,20 @@ public class VMManager {
mapForCreateNewVM.put("qmpPort", port);
listmapForCreateNewVM.clear();
listmapForCreateNewVM = new Gson().fromJson(VectrasApp.readFile(AppConfig.romsdatajson), new TypeToken<ArrayList<HashMap<String, Object>>>(){}.getType());
listmapForCreateNewVM = new Gson().fromJson(FileUtils.readAFile(AppConfig.romsdatajson), new TypeToken<ArrayList<HashMap<String, Object>>>(){}.getType());
listmapForCreateNewVM.add(0,mapForCreateNewVM);
finalJson = new Gson().toJson(listmapForCreateNewVM);
VectrasApp.writeToFile(AppConfig.maindirpath, "roms-data.json", finalJson);
FileUtils.writeToFile(AppConfig.maindirpath, "roms-data.json", finalJson);
finalJson = new Gson().toJson(mapForCreateNewVM);
VectrasApp.writeToFile(AppConfig.maindirpath + "/roms/" + Objects.requireNonNull(mapForCreateNewVM.get("vmID")).toString(), "rom-data.json", finalJson.replace("\\u003d", "="));
VectrasApp.writeToFile(AppConfig.maindirpath + "/roms/" + Objects.requireNonNull(mapForCreateNewVM.get("vmID")).toString(), "vmID.txt", Objects.requireNonNull(mapForCreateNewVM.get("vmID")).toString());
FileUtils.writeToFile(AppConfig.maindirpath + "/roms/" + Objects.requireNonNull(mapForCreateNewVM.get("vmID")).toString(), "rom-data.json", finalJson.replace("\\u003d", "="));
FileUtils.writeToFile(AppConfig.maindirpath + "/roms/" + Objects.requireNonNull(mapForCreateNewVM.get("vmID")).toString(), "vmID.txt", Objects.requireNonNull(mapForCreateNewVM.get("vmID")).toString());
}
public static void editVM(String name, String thumbnail, String drive, String arch, String cdrom, String params, int position) {
listmapForCreateNewVM.clear();
listmapForCreateNewVM = new Gson().fromJson(VectrasApp.readFile(AppConfig.romsdatajson), new TypeToken<ArrayList<HashMap<String, Object>>>(){}.getType());
listmapForCreateNewVM = new Gson().fromJson(FileUtils.readAFile(AppConfig.romsdatajson), new TypeToken<ArrayList<HashMap<String, Object>>>(){}.getType());
mapForCreateNewVM.clear();
mapForCreateNewVM.put("imgName", name);
@ -95,10 +98,10 @@ public class VMManager {
listmapForCreateNewVM.set(position,mapForCreateNewVM);
finalJson = new Gson().toJson(listmapForCreateNewVM);
VectrasApp.writeToFile(AppConfig.maindirpath, "roms-data.json", finalJson);
FileUtils.writeToFile(AppConfig.maindirpath, "roms-data.json", finalJson);
finalJson = new Gson().toJson(mapForCreateNewVM);
VectrasApp.writeToFile(AppConfig.maindirpath + "/roms/" + Objects.requireNonNull(mapForCreateNewVM.get("vmID")).toString(), "rom-data.json", finalJson.replace("\\u003d", "="));
VectrasApp.writeToFile(AppConfig.maindirpath + "/roms/" + Objects.requireNonNull(mapForCreateNewVM.get("vmID")).toString(), "vmID.txt", Objects.requireNonNull(mapForCreateNewVM.get("vmID")).toString());
FileUtils.writeToFile(AppConfig.maindirpath + "/roms/" + Objects.requireNonNull(mapForCreateNewVM.get("vmID")).toString(), "rom-data.json", finalJson.replace("\\u003d", "="));
FileUtils.writeToFile(AppConfig.maindirpath + "/roms/" + Objects.requireNonNull(mapForCreateNewVM.get("vmID")).toString(), "vmID.txt", Objects.requireNonNull(mapForCreateNewVM.get("vmID")).toString());
}
public static void deleteVMDialog(String _vmName, int _position, Activity _activity) {
@ -108,7 +111,7 @@ public class VMManager {
ad.setButton(Dialog.BUTTON_NEGATIVE, _activity.getString(R.string.remove) + " " + _vmName, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
pendingPosition = _position;
pendingJsonContent = VectrasApp.readFile(AppConfig.maindirpath + "roms-data.json");
pendingJsonContent = FileUtils.readAFile(AppConfig.maindirpath + "roms-data.json");
AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.activity, R.style.MainDialogTheme).create();
alertDialog.setTitle(_activity.getString(R.string.keep_files_question_mark));
@ -124,8 +127,8 @@ public class VMManager {
isKeptSomeFiles = false;
deleteVM();
if (isKeptSomeFiles && VectrasApp.readFile(AppConfig.maindirpath + "roms-data.json").contains("{")) {
VectrasApp.oneDialog(_activity.getString(R.string.keep), _activity.getString(R.string.kept_some_files), true, false, _activity);
if (isKeptSomeFiles && FileUtils.readAFile(AppConfig.maindirpath + "roms-data.json").contains("{")) {
UIUtils.oneDialog(_activity.getString(R.string.keep), _activity.getString(R.string.kept_some_files), true, false, _activity);
}
}
});
@ -146,7 +149,7 @@ public class VMManager {
UIUtils.toastLong(_activity, e.toString());
}
UIUtils.toastLong(_activity, _vmName + _activity.getString(R.string.are_removed_successfully));
if (!VectrasApp.readFile(AppConfig.maindirpath + "roms-data.json").contains("{")) {
if (!FileUtils.readAFile(AppConfig.maindirpath + "roms-data.json").contains("{")) {
MainActivity.mdatasize2();
}
}
@ -199,7 +202,7 @@ public class VMManager {
addAdb = "j";
} else if (randomAbc == 10) {
addAdb = "k";
} else if (randomAbc == 11) {
} else {
addAdb = "l";
}
return addAdb + String.valueOf((long)(random.nextInt(65535)));
@ -212,11 +215,11 @@ public class VMManager {
int _max = 65535;
_result = _random.nextInt(_max - _min + 1) + _min;
if (VectrasApp.isFileExists(AppConfig.romsdatajson)) {
if (readFile(AppConfig.romsdatajson).contains("\"qmpPort\":" + _result)) {
if (FileUtils.isFileExists(AppConfig.romsdatajson)) {
if (FileUtils.readAFile(AppConfig.romsdatajson).contains("\"qmpPort\":" + _result)) {
_result = _random.nextInt(_max - _min + 1) + _min;
}
if (readFile(AppConfig.romsdatajson).contains("\"qmpPort\":" + _result)) {
if (FileUtils.readAFile(AppConfig.romsdatajson).contains("\"qmpPort\":" + _result)) {
_result = _random.nextInt(_max - _min + 1) + _min;
}
}
@ -229,7 +232,7 @@ public class VMManager {
listmapForRemoveVM = new Gson().fromJson(pendingJsonContent, new TypeToken<ArrayList<HashMap<String, Object>>>(){}.getType());
if (listmapForRemoveVM.get(pendingPosition).containsKey("vmID")) {
pendingVMID = Objects.requireNonNull(listmapForRemoveVM.get(pendingPosition).get("vmID")).toString();
VectrasApp.deleteDirectory(Config.getCacheDir()+ "/" + pendingVMID);
FileUtils.deleteDirectory(Config.getCacheDir()+ "/" + pendingVMID);
Log.i("VMManager", "deleteVM: ID obtained: " + pendingVMID);
} else {
Log.e("VMManager", "deleteVM: Cannot get ID.");
@ -241,16 +244,16 @@ public class VMManager {
int _startRepeat = 0;
String _currentVMIDToScan = "";
ArrayList<String> _filelist = new ArrayList<>();
VectrasApp.listDir(AppConfig.vmFolder, _filelist);
FileUtils.getAListOfAllFilesAndFoldersInADirectory(AppConfig.vmFolder, _filelist);
if (!_filelist.isEmpty()) {
for (int _repeat = 0; _repeat < (int)(_filelist.size()); _repeat++) {
if (_startRepeat < _filelist.size()) {
if (isFileExists(_filelist.get((int)(_startRepeat)) + "/vmID.txt")) {
_currentVMIDToScan = VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/vmID.txt").replace("\n", "");
_currentVMIDToScan = FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/vmID.txt").replace("\n", "");
if (!_currentVMIDToScan.isEmpty()) {
if (_currentVMIDToScan.equals(pendingVMID)) {
if (!finalJson.contains(_filelist.get((int)(_startRepeat)))) {
VectrasApp.deleteDirectory(_filelist.get((int)(_startRepeat)));
FileUtils.deleteDirectory(_filelist.get((int)(_startRepeat)));
} else {
isKeptSomeFiles = true;
hideVMID(pendingVMID);
@ -270,15 +273,15 @@ public class VMManager {
int _startRepeat = 0;
String _currentVMIDToScan = "";
ArrayList<String> _filelist = new ArrayList<>();
VectrasApp.listDir(AppConfig.vmFolder, _filelist);
FileUtils.getAListOfAllFilesAndFoldersInADirectory(AppConfig.vmFolder, _filelist);
if (!_filelist.isEmpty()) {
for (int _repeat = 0; _repeat < (int)(_filelist.size()); _repeat++) {
if (_startRepeat < _filelist.size()) {
if (isFileExists(_filelist.get((int)(_startRepeat)) + "/vmID.txt")) {
_currentVMIDToScan = VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/vmID.txt").replace("\n", "");
_currentVMIDToScan = FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/vmID.txt").replace("\n", "");
if (!_currentVMIDToScan.isEmpty()) {
if (_currentVMIDToScan.equals(_vmID)) {
VectrasApp.moveAFile(_filelist.get((int)(_startRepeat)) + "/vmID.txt", _filelist.get((int)(_startRepeat)) + "/vmID.old.txt");
FileUtils.moveAFile(_filelist.get((int)(_startRepeat)) + "/vmID.txt", _filelist.get((int)(_startRepeat)) + "/vmID.old.txt");
}
}
}
@ -301,15 +304,15 @@ public class VMManager {
int _startRepeat = 0;
String _currentVMIDToScan = "";
ArrayList<String> _filelist = new ArrayList<>();
VectrasApp.listDir(AppConfig.vmFolder, _filelist);
FileUtils.getAListOfAllFilesAndFoldersInADirectory(AppConfig.vmFolder, _filelist);
if (!_filelist.isEmpty()) {
for (int _repeat = 0; _repeat < (int)(_filelist.size()); _repeat++) {
if (_startRepeat < _filelist.size()) {
if (isFileExists(_filelist.get((int)(_startRepeat)) + "/vmID.txt")) {
_currentVMIDToScan = VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/vmID.txt").replace("\n", "");
_currentVMIDToScan = FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/vmID.txt").replace("\n", "");
if (!_currentVMIDToScan.isEmpty()) {
if (_currentVMIDToScan.equals(pendingVMID)) {
VectrasApp.moveAFile(_filelist.get((int)(_startRepeat)) + "/vmID.txt", _filelist.get((int)(_startRepeat)) + "/vmID.old.txt");
FileUtils.moveAFile(_filelist.get((int)(_startRepeat)) + "/vmID.txt", _filelist.get((int)(_startRepeat)) + "/vmID.old.txt");
}
}
}
@ -321,17 +324,17 @@ public class VMManager {
}
public static void cleanUp() {
finalJson = VectrasApp.readFile(AppConfig.romsdatajson);
finalJson = FileUtils.readAFile(AppConfig.romsdatajson);
if (!finalJson.isEmpty()) {
int _startRepeat = 0;
ArrayList<String> _filelist = new ArrayList<>();
VectrasApp.listDir(AppConfig.vmFolder, _filelist);
FileUtils.getAListOfAllFilesAndFoldersInADirectory(AppConfig.vmFolder, _filelist);
if (!_filelist.isEmpty()) {
for (int _repeat = 0; _repeat < (int)(_filelist.size()); _repeat++) {
if (_startRepeat < _filelist.size()) {
if (!isFileExists(_filelist.get((int)(_startRepeat)) + "/vmID.txt")) {
if (!finalJson.contains(_filelist.get((int) (_startRepeat)))) {
VectrasApp.deleteDirectory(_filelist.get((int) (_startRepeat)));
FileUtils.deleteDirectory(_filelist.get((int) (_startRepeat)));
}
}
}
@ -347,44 +350,44 @@ public class VMManager {
String _result ="";
restoredVMs = 0;
ArrayList<String> _filelist = new ArrayList<>();
VectrasApp.listDir(AppConfig.vmFolder, _filelist);
FileUtils.getAListOfAllFilesAndFoldersInADirectory(AppConfig.vmFolder, _filelist);
if (!_filelist.isEmpty()) {
for (int _repeat = 0; _repeat < (int)(_filelist.size()); _repeat++) {
if (_startRepeat < _filelist.size()) {
if (!isFileExists(_filelist.get((int)(_startRepeat)) + "/vmID.txt")) {
if (isFileExists(_filelist.get((int)(_startRepeat)) + "/rom-data.json")) {
if (VectrasApp.checkJSONMapIsNormalFromString(VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json"))) {
if (JSONUtils.isMapValidFromString(FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json"))) {
if (_resulttemp.contains("}")) {
_resulttemp += "," + VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
_resulttemp += "," + FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
} else {
_resulttemp = VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
_resulttemp = FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
}
if (VectrasApp.checkJSONIsNormalFromString(VectrasApp.readFile(AppConfig.maindirpath + "/roms-data.json").replaceAll("]", _resulttemp + "]"))) {
if (JSONUtils.isValidFromString(FileUtils.readAFile(AppConfig.maindirpath + "/roms-data.json").replaceAll("]", _resulttemp + "]"))) {
if (_result.contains("}")) {
_result += "," + VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
_result += "," + FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
} else {
_result = VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
_result = FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
}
if (isFileExists(_filelist.get((int)(_startRepeat)) + "/vmID.old.txt")) {
enableVMID(VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/vmID.old.txt"));
enableVMID(FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/vmID.old.txt"));
} else {
VectrasApp.writeToFile(_filelist.get((int)(_startRepeat)), "/vmID.txt", VMManager.idGenerator());
FileUtils.writeToFile(_filelist.get((int)(_startRepeat)), "/vmID.txt", VMManager.idGenerator());
}
restoredVMs++;
} else if (VectrasApp.checkJSONIsNormalFromString(VectrasApp.readFile(AppConfig.maindirpath + "/roms-data.json").replaceAll("]", "," + _resulttemp + "]"))) {
} else if (JSONUtils.isValidFromString(FileUtils.readAFile(AppConfig.maindirpath + "/roms-data.json").replaceAll("]", "," + _resulttemp + "]"))) {
if (_result.contains("}")) {
_result += "," + VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
_result += "," + FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
} else {
_result = "," + VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
_result = "," + FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
}
if (isFileExists(_filelist.get((int)(_startRepeat)) + "/vmID.old.txt")) {
enableVMID(VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/vmID.old.txt"));
enableVMID(FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/vmID.old.txt"));
} else {
VectrasApp.writeToFile(_filelist.get((int)(_startRepeat)), "/vmID.txt", VMManager.idGenerator());
FileUtils.writeToFile(_filelist.get((int)(_startRepeat)), "/vmID.txt", VMManager.idGenerator());
}
restoredVMs++;
} else {
Log.i("CqcmActivity", VectrasApp.readFile(AppConfig.maindirpath + "/roms-data.json").replaceAll("]", _resulttemp + "]"));
Log.i("CqcmActivity", FileUtils.readAFile(AppConfig.maindirpath + "/roms-data.json").replaceAll("]", _resulttemp + "]"));
}
}
}
@ -393,13 +396,13 @@ public class VMManager {
_startRepeat++;
if (_startRepeat == _filelist.size()) {
if (!_result.isEmpty()) {
if (VectrasApp.checkJSONIsNormalFromString("[" + _result + "]")) {
if (JSONUtils.isValidFromString("[" + _result + "]")) {
if (isFileExists(AppConfig.romsdatajson)) {
if (VectrasApp.checkJSONIsNormal(AppConfig.romsdatajson)) {
String _JSONcontent = VectrasApp.readFile(AppConfig.romsdatajson);
if (JSONUtils.isValidFromFile(AppConfig.romsdatajson)) {
String _JSONcontent = FileUtils.readAFile(AppConfig.romsdatajson);
String _JSONcontentnew = _JSONcontent.replaceAll("]", _result + "]");
if (VectrasApp.checkJSONIsNormalFromString(_JSONcontentnew)) {
VectrasApp.writeToFile(AppConfig.maindirpath, "roms-data.json", _JSONcontentnew);
if (JSONUtils.isValidFromString(_JSONcontentnew)) {
FileUtils.writeToFile(AppConfig.maindirpath, "roms-data.json", _JSONcontentnew);
} else {
restoredVMs = 0;
}
@ -407,7 +410,7 @@ public class VMManager {
restoredVMs = 0;
}
} else {
VectrasApp.writeToFile(AppConfig.maindirpath, "roms-data.json", "[" + _result + "]");
FileUtils.writeToFile(AppConfig.maindirpath, "roms-data.json", "[" + _result + "]");
}
} else {
restoredVMs = 0;
@ -428,34 +431,34 @@ public class VMManager {
String _result ="";
restoredVMs = 0;
ArrayList<String> _filelist = new ArrayList<>();
VectrasApp.listDir(AppConfig.vmFolder, _filelist);
FileUtils.getAListOfAllFilesAndFoldersInADirectory(AppConfig.vmFolder, _filelist);
if (!_filelist.isEmpty()) {
for (int _repeat = 0; _repeat < (int)(_filelist.size()); _repeat++) {
if (_startRepeat < _filelist.size()) {
if (isFileExists(_filelist.get((int)(_startRepeat)) + "/vmID.txt")) {
if (isFileExists(_filelist.get((int)(_startRepeat)) + "/rom-data.json")) {
if (VectrasApp.checkJSONMapIsNormalFromString(VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json"))) {
if (JSONUtils.isMapValidFromString(FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json"))) {
if (_resulttemp.contains("}")) {
_resulttemp += "," + VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
_resulttemp += "," + FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
} else {
_resulttemp = VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
_resulttemp = FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
}
if (VectrasApp.checkJSONIsNormalFromString(VectrasApp.readFile(AppConfig.maindirpath + "/roms-data.json").replaceAll("]", _resulttemp + "]"))) {
if (JSONUtils.isValidFromString(FileUtils.readAFile(AppConfig.maindirpath + "/roms-data.json").replaceAll("]", _resulttemp + "]"))) {
if (_result.contains("}")) {
_result += "," + VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
_result += "," + FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
} else {
_result = VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
_result = FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
}
restoredVMs++;
} else if (VectrasApp.checkJSONIsNormalFromString(VectrasApp.readFile(AppConfig.maindirpath + "/roms-data.json").replaceAll("]", "," + _resulttemp + "]"))) {
} else if (JSONUtils.isValidFromString(FileUtils.readAFile(AppConfig.maindirpath + "/roms-data.json").replaceAll("]", "," + _resulttemp + "]"))) {
if (_result.contains("}")) {
_result += "," + VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
_result += "," + FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
} else {
_result = "," + VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
_result = "," + FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/rom-data.json");
}
restoredVMs++;
} else {
Log.i("CqcmActivity", VectrasApp.readFile(AppConfig.maindirpath + "/roms-data.json").replaceAll("]", _resulttemp + "]"));
Log.i("CqcmActivity", FileUtils.readAFile(AppConfig.maindirpath + "/roms-data.json").replaceAll("]", _resulttemp + "]"));
}
}
}
@ -464,13 +467,13 @@ public class VMManager {
_startRepeat++;
if (_startRepeat == _filelist.size()) {
if (!_result.isEmpty()) {
if (VectrasApp.checkJSONIsNormalFromString("[" + _result + "]")) {
if (JSONUtils.isValidFromString("[" + _result + "]")) {
if (isFileExists(AppConfig.romsdatajson)) {
if (VectrasApp.checkJSONIsNormal(AppConfig.romsdatajson)) {
String _JSONcontent = VectrasApp.readFile(AppConfig.romsdatajson);
if (JSONUtils.isValidFromFile(AppConfig.romsdatajson)) {
String _JSONcontent = FileUtils.readAFile(AppConfig.romsdatajson);
String _JSONcontentnew = _JSONcontent.replaceAll("]", _result + "]");
if (VectrasApp.checkJSONIsNormalFromString(_JSONcontentnew)) {
VectrasApp.writeToFile(AppConfig.maindirpath, "roms-data.json", _JSONcontentnew);
if (JSONUtils.isValidFromString(_JSONcontentnew)) {
FileUtils.writeToFile(AppConfig.maindirpath, "roms-data.json", _JSONcontentnew);
} else {
restoredVMs = 0;
}
@ -478,7 +481,7 @@ public class VMManager {
restoredVMs = 0;
}
} else {
VectrasApp.writeToFile(AppConfig.maindirpath, "roms-data.json", "[" + _result + "]");
FileUtils.writeToFile(AppConfig.maindirpath, "roms-data.json", "[" + _result + "]");
}
} else {
restoredVMs = 0;
@ -498,13 +501,13 @@ public class VMManager {
return;
int _startRepeat = 0;
ArrayList<String> _filelist = new ArrayList<>();
VectrasApp.listDir(AppConfig.vmFolder, _filelist);
FileUtils.getAListOfAllFilesAndFoldersInADirectory(AppConfig.vmFolder, _filelist);
if (!_filelist.isEmpty()) {
for (int _repeat = 0; _repeat < (int)(_filelist.size()); _repeat++) {
if (_startRepeat < _filelist.size()) {
if (isFileExists(_filelist.get((int)(_startRepeat)) + "/vmID.old.txt")) {
if (VectrasApp.readFile(_filelist.get((int)(_startRepeat)) + "/vmID.old.txt").equals(_vmID)) {
VectrasApp.moveAFile(_filelist.get((int)(_startRepeat)) + "/vmID.old.txt", _filelist.get((int)(_startRepeat)) + "/vmID.txt");
if (FileUtils.readAFile(_filelist.get((int)(_startRepeat)) + "/vmID.old.txt").equals(_vmID)) {
FileUtils.moveAFile(_filelist.get((int)(_startRepeat)) + "/vmID.old.txt", _filelist.get((int)(_startRepeat)) + "/vmID.txt");
}
}
}
@ -520,16 +523,16 @@ public class VMManager {
return;
}
}
finalJson = VectrasApp.readFile(AppConfig.romsdatajson);
finalJson = FileUtils.readAFile(AppConfig.romsdatajson);
if (!finalJson.isEmpty()) {
int _startRepeat = 0;
ArrayList<String> _filelist = new ArrayList<>();
VectrasApp.listDir(AppConfig.vmFolder, _filelist);
FileUtils.getAListOfAllFilesAndFoldersInADirectory(AppConfig.vmFolder, _filelist);
if (!_filelist.isEmpty()) {
for (int _repeat = 0; _repeat < (int)(_filelist.size()); _repeat++) {
if (_startRepeat < _filelist.size()) {
if (!finalJson.contains(Uri.parse(_filelist.get((int) (_startRepeat))).getLastPathSegment())) {
VectrasApp.moveAFile(_filelist.get((int) (_startRepeat)), AppConfig.recyclebin + Uri.parse(_filelist.get((int) (_startRepeat))).getLastPathSegment());
if (!finalJson.contains(Objects.requireNonNull(Uri.parse(_filelist.get((int) (_startRepeat))).getLastPathSegment()))) {
FileUtils.moveAFile(_filelist.get((int) (_startRepeat)), AppConfig.recyclebin + Uri.parse(_filelist.get((int) (_startRepeat))).getLastPathSegment());
}
}
_startRepeat++;
@ -542,7 +545,7 @@ public class VMManager {
if (!_foderpath.isEmpty()) {
int _startRepeat = 0;
ArrayList<String> _filelist = new ArrayList<>();
VectrasApp.listDir(_foderpath, _filelist);
FileUtils.getAListOfAllFilesAndFoldersInADirectory(_foderpath, _filelist);
if (!_filelist.isEmpty()) {
for (int _repeat = 0; _repeat < (int)(_filelist.size()); _repeat++) {
if (_startRepeat < _filelist.size()) {
@ -561,9 +564,7 @@ public class VMManager {
if (_filepath.contains(".")) {
String _getFileName = Objects.requireNonNull(Uri.parse(_filepath).getLastPathSegment()).toLowerCase();
String _getFileFormat = _getFileName.substring((int)(_getFileName.lastIndexOf(".") + 1), (int)(_getFileName.length()));
if ("qcow2,img,vhd,vhdx,vdi,qcow,vmdk,vpc".contains(_getFileFormat)){
return true;
}
return "qcow2,img,vhd,vhdx,vdi,qcow,vmdk,vpc".contains(_getFileFormat);
}
return false;
}
@ -572,7 +573,7 @@ public class VMManager {
if (!_foderpath.isEmpty()) {
int _startRepeat = 0;
ArrayList<String> _filelist = new ArrayList<>();
VectrasApp.listDir(_foderpath, _filelist);
FileUtils.getAListOfAllFilesAndFoldersInADirectory(_foderpath, _filelist);
if (!_filelist.isEmpty()) {
for (int _repeat = 0; _repeat < (int)(_filelist.size()); _repeat++) {
if (_startRepeat < _filelist.size()) {
@ -591,9 +592,7 @@ public class VMManager {
if (_filepath.contains(".")) {
String _getFileName = Objects.requireNonNull(Uri.parse(_filepath).getLastPathSegment()).toLowerCase();
String _getFileFormat = _getFileName.substring((int)(_getFileName.lastIndexOf(".") + 1), (int)(_getFileName.length()));
if ("iso".contains(_getFileFormat)){
return true;
}
return "iso".contains(_getFileFormat);
}
return false;
}
@ -629,9 +628,9 @@ public class VMManager {
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, _activity.getResources().getString(R.string.continuetext), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
MainActivity.isActivate = false;
VectrasApp.deleteDirectory(_activity.getFilesDir().getAbsolutePath() + "/data");
VectrasApp.deleteDirectory(_activity.getFilesDir().getAbsolutePath() + "/distro");
VectrasApp.deleteDirectory(_activity.getFilesDir().getAbsolutePath() + "/usr");
FileUtils.deleteDirectory(_activity.getFilesDir().getAbsolutePath() + "/data");
FileUtils.deleteDirectory(_activity.getFilesDir().getAbsolutePath() + "/distro");
FileUtils.deleteDirectory(_activity.getFilesDir().getAbsolutePath() + "/usr");
Intent intent = new Intent();
intent.setClass(_activity, SplashActivity.class);
_activity.startActivity(intent);
@ -647,7 +646,7 @@ public class VMManager {
return true;
} else if (_result.contains(") exists") && _result.contains("drive with bus")) {
//Error code: DRIVE_INDEX_0_EXISTS
VectrasApp.oneDialog(_activity.getResources().getString(R.string.problem_has_been_detected), _activity.getResources().getString(R.string.error_DRIVE_INDEX_0_EXISTS), true, false, _activity);
UIUtils.oneDialog(_activity.getResources().getString(R.string.problem_has_been_detected), _activity.getResources().getString(R.string.error_DRIVE_INDEX_0_EXISTS), true, false, _activity);
return true;
} else if (_result.contains("gtk initialization failed") || _result.contains("x11 not available")) {
//Error code: X11_NOT_AVAILABLE
@ -658,7 +657,7 @@ public class VMManager {
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, _activity.getResources().getString(R.string.continuetext), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
MainSettingsManager.setVmUi(_activity, "VNC");
VectrasApp.oneDialog(_activity.getResources().getString(R.string.done), _activity.getResources().getString(R.string.switched_to_VNC), true, false, _activity);
UIUtils.oneDialog(_activity.getResources().getString(R.string.done), _activity.getResources().getString(R.string.switched_to_VNC), true, false, _activity);
}
});
alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, _activity.getResources().getString(R.string.cancel), new DialogInterface.OnClickListener() {
@ -670,7 +669,7 @@ public class VMManager {
return true;
} else if (_result.contains("No such file or directory1")) {
//Error code: NO_SUCH_FILE_OR_DIRECTORY
VectrasApp.oneDialog(_activity.getResources().getString(R.string.problem_has_been_detected), _activity.getResources().getString(R.string.error_NO_SUCH_FILE_OR_DIRECTORY), true, false, _activity);
UIUtils.oneDialog(_activity.getResources().getString(R.string.problem_has_been_detected), _activity.getResources().getString(R.string.error_NO_SUCH_FILE_OR_DIRECTORY), true, false, _activity);
_activity.stopService(new Intent(_activity, MainService.class));
return true;
} else {
@ -680,15 +679,15 @@ public class VMManager {
public static boolean isRomsDataJsonNormal(Boolean _needfix, Context _context) {
if (isFileExists(AppConfig.romsdatajson)) {
if (!VectrasApp.checkJSONIsNormal(AppConfig.romsdatajson)) {
if (!JSONUtils.isValidFromFile(AppConfig.romsdatajson)) {
if (_needfix) {
AlertDialog alertDialog = new AlertDialog.Builder(_context, R.style.MainDialogTheme).create();
alertDialog.setTitle(_context.getResources().getString(R.string.oops));
alertDialog.setMessage(_context.getResources().getString(R.string.need_fix_json_before_create));
alertDialog.setCancelable(true);
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, _context.getResources().getString(R.string.continuetext), (dialog, which) -> {
VectrasApp.moveAFile(AppConfig.maindirpath + "roms-data.json", AppConfig.maindirpath + "roms-data.old.json");
VectrasApp.writeToFile(AppConfig.maindirpath, "roms-data.json", "[]");
FileUtils.moveAFile(AppConfig.maindirpath + "roms-data.json", AppConfig.maindirpath + "roms-data.old.json");
FileUtils.writeToFile(AppConfig.maindirpath, "roms-data.json", "[]");
startFixRomsDataJson();
fixRomsDataJsonResult(_context);
});
@ -703,16 +702,16 @@ public class VMManager {
return true;
}
} else {
VectrasApp.writeToFile(AppConfig.maindirpath, "roms-data.json", "[]");
FileUtils.writeToFile(AppConfig.maindirpath, "roms-data.json", "[]");
return true;
}
}
public static void fixRomsDataJsonResult(Context _context) {
if (restoredVMs == 0) {
VectrasApp.oneDialogWithContext(_context.getString(R.string.done), _context.getString(R.string.roms_data_json_fixed_unsuccessfully),true, _context);
UIUtils.oneDialogWithContext(_context.getString(R.string.done), _context.getString(R.string.roms_data_json_fixed_unsuccessfully),true, _context);
} else {
VectrasApp.oneDialogWithContext(_context.getString(R.string.done), _context.getString(R.string.roms_data_json_fixed_successfully),true, _context);
UIUtils.oneDialogWithContext(_context.getString(R.string.done), _context.getString(R.string.roms_data_json_fixed_successfully),true, _context);
}
MainActivity.loadDataVbi();
MainActivity.mdatasize2();
@ -778,4 +777,77 @@ public class VMManager {
}
return true;
}
public static boolean isThisVMRunning(String intemExtra, String itemPath) {
Terminal vterm = new Terminal(MainActivity.activity);
vterm.executeShellCommand2("ps -e", false, MainActivity.activity);
if (AppConfig.temporaryLastedTerminalOutput.contains(intemExtra) && AppConfig.temporaryLastedTerminalOutput.contains(itemPath)) {
Log.d("VMManager.isThisVMRunning", "Yes");
return true;
} else {
Log.d("VMManager.isThisVMRunning", "No");
return false;
}
}
public static boolean isQemuRunning() {
Terminal vterm = new Terminal(MainActivity.activity);
vterm.executeShellCommand2("ps -e", false, MainActivity.activity);
if (AppConfig.temporaryLastedTerminalOutput.contains("qemu-system")) {
Log.d("VMManager.isQemuRunning", "Yes");
return true;
} else {
Log.d("VMManager.isQemuRunning", "No");
return false;
}
}
public static boolean isHaveADisk(String env) {
if (env.contains("-drive") || env.contains("-hda") || env.contains("-hdb") || env.contains("-cdrom") || env.contains("-fda") || env.contains("-fdb"))
return true;
return false;
}
public static void setIconWithName(ImageView imageview, String name) {
String itemName = name.toLowerCase();
if (itemName.contains("linux") || itemName.contains("ubuntu") || itemName.contains("debian") || itemName.contains("arch") || itemName.contains("kali")) {
imageview.setImageResource(R.drawable.linux);
} else if (itemName.contains("windows")) {
imageview.setImageResource(R.drawable.windows);
} else if (itemName.contains("macos") || itemName.contains("mac os")) {
imageview.setImageResource(R.drawable.macos);
} else if (itemName.contains("android")) {
imageview.setImageResource(R.drawable.android);
} else {
imageview.setImageResource(R.drawable.no_machine_image);
}
}
public static void killcurrentqemuprocess(Context context) {
Terminal vterm = new Terminal(context);
String env = "killall -9 ";
switch (MainSettingsManager.getArch(MainActivity.activity)) {
case "ARM64":
env += "qemu-system-aarch64";
break;
case "PPC":
env += "qemu-system-ppc";
break;
case "I386":
env += "qemu-system-i386";
break;
default:
env += "qemu-system-x86_64";
break;
}
vterm.executeShellCommand2(env, false, MainActivity.activity);
}
public static void killallqemuprocesses(Context context) {
Terminal vterm = new Terminal(context);
vterm.executeShellCommand2("killall -9 qemu-system-i386", false, MainActivity.activity);
vterm.executeShellCommand2("killall -9 qemu-system-x86_64", false, MainActivity.activity);
vterm.executeShellCommand2("killall -9 qemu-system-aarch64", false, MainActivity.activity);
vterm.executeShellCommand2("killall -9 qemu-system-ppc", false, MainActivity.activity);
}
}

View file

@ -39,8 +39,10 @@ import androidx.core.content.res.ResourcesCompat;
import com.google.android.material.color.DynamicColors;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.vectras.qemu.Config;
import com.vectras.qemu.MainSettingsManager;
import com.vectras.vm.utils.FileUtils;
import com.vectras.vm.utils.PackageUtils;
import com.vectras.vterm.Terminal;
import java.io.BufferedReader;
@ -79,11 +81,10 @@ public class VectrasApp extends Application {
private static Handler MAIN_HANDLER = new Handler(Looper.getMainLooper());
public static String TerminalOutput ="";
@Override
public void onCreate() {
super.onCreate();
setupAppConfig(getApplicationContext());
vectrasapp = this;
CrashHandler.getInstance().registerGlobal(this);
CrashHandler.getInstance().registerPart(this);
@ -429,783 +430,15 @@ public class VectrasApp extends Application {
}
}
public static boolean checkpermissionsgranted(Activity activity, boolean request) {
if (ContextCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
return true;
} else {
if (request) {
AlertDialog alertDialog = new AlertDialog.Builder(activity, R.style.MainDialogTheme).create();
alertDialog.setTitle(activity.getResources().getString(R.string.allow_permissions));
alertDialog.setMessage(activity.getResources().getString(R.string.you_need_to_grant_permission_to_access_the_storage_before_use));
alertDialog.setCancelable(false);
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, activity.getResources().getString(R.string.allow), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (activity.shouldShowRequestPermissionRationale(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:" + activity.getPackageName()));
activity.startActivity(intent);
Toast.makeText(activity, activity.getResources().getString(R.string.find_and_allow_access_to_storage_in_settings), Toast.LENGTH_LONG).show();
} else {
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1000);
}
alertDialog.dismiss();
}
});
alertDialog.show();
}
return false;
}
}
public static boolean checkJSONIsNormal(String _filepath) {
ArrayList<HashMap<String, Objects>> mmap = new ArrayList<>();
String contentjson = "";
if (VectrasApp.isFileExists(_filepath)) {
contentjson = readFile(_filepath);
try {
mmap.clear();
mmap = new Gson().fromJson(contentjson, new TypeToken<ArrayList<HashMap<String, Object>>>() {
}.getType());
return true;
} catch (Exception e) {
return false;
}
} else {
return false;
}
}
public static boolean checkJSONIsNormalFromString(String _content) {
ArrayList<HashMap<String, Objects>> mmap = new ArrayList<>();
try {
mmap.clear();
mmap = new Gson().fromJson(_content, new TypeToken<ArrayList<HashMap<String, Object>>>() {
}.getType());
return true;
} catch (Exception e) {
return false;
}
}
public static boolean checkJSONMapIsNormalFromString(String _content) {
HashMap<String, Object> mmap = new HashMap<>();
try {
mmap.clear();
mmap= new Gson().fromJson(_content, new TypeToken<HashMap<String, Object>>(){}.getType());
return true;
} catch (Exception e) {
return false;
}
}
public static boolean isFileExists(String filePath) {
File file = new File(filePath.replaceAll("\n", ""));
return file.exists();
}
public static String readFile(String filePath) {
StringBuilder content = new StringBuilder();
try (FileInputStream inputStream = new FileInputStream(filePath);
BufferedReader reader = new BufferedReader(new
InputStreamReader(inputStream))) {
String line;
while ((line = reader.readLine()) != null) {
content.append(line).append("\n");
}
} catch (IOException e) {
throw new RuntimeException(e);
}
return content.toString();
}
public static void writeToFile(String folderPath, String fileName, String content) {
File vDir = new File(folderPath);
if (!vDir.exists()) {
vDir.mkdirs();
}
File file = new File(folderPath, fileName);
FileOutputStream outputStream = null;
try {
outputStream = new FileOutputStream(file);
outputStream.write(content.getBytes());
outputStream.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static void deleteDirectory(String _pathToDelete) {
File _dir = new File(_pathToDelete);
if (_dir.isDirectory()) {
String[] children = _dir.list();
if (children == null) {
Log.e("ERROR", "Deletion failed. " + _dir);
return;
}
for (int i = 0; i < children.length; i++) {
File temp = new File(_dir, children[i]);
deleteDirectory(String.valueOf(temp));
}
}
boolean success = _dir.delete();
if (!success) {
Log.e("ERROR", "Deletion failed. " + _dir);
}
}
public static void copyAFile(String _sourceFile, String _destFile) {
File vDir = new File(_destFile.substring((int)0, (int)(_destFile.lastIndexOf("/"))));
if (!vDir.exists()) {
vDir.mkdirs();
}
try {
File source = new File(_sourceFile);
File dest = new File(_destFile);
if (!source.exists())
{
throw new IOException("Source file not found");
}
FileInputStream inStream = new FileInputStream(source);
FileOutputStream outStream = new FileOutputStream(dest);
byte[] buffer = new byte[1024];
int length;
while ((length = inStream.read(buffer))
> 0) {
outStream.write(buffer, 0, length);
}
inStream.close();
outStream.close();
} catch (IOException e) {
}
}
public static void moveAFile(String _from, String _to) {
File oldFile = new File(_from);
File newFile = new File(_to);
boolean success = oldFile.renameTo(newFile);
if (success) {
Log.d("File", "Done!");
} else {
Log.e("File", "Failed!");
}
}
public static void listDir(String path, ArrayList<String> list) {
File dir = new File(path);
if (!dir.exists() || dir.isFile()) return;
File[] listFiles = dir.listFiles();
if (listFiles == null || listFiles.length <= 0) return;
if (list == null) return;
list.clear();
for (File file : listFiles) {
list.add(file.getAbsolutePath());
}
}
public static void runACommand(String _command, Activity _activity) {
Terminal vterm = new Terminal(_activity);
vterm.executeShellCommand2(_command, false, _activity);
}
public static void killallqemuprocesses(Context context) {
Terminal vterm = new Terminal(context);
vterm.executeShellCommand2("killall -9 qemu-system-i386", false, MainActivity.activity);
vterm.executeShellCommand2("killall -9 qemu-system-x86_64", false, MainActivity.activity);
vterm.executeShellCommand2("killall -9 qemu-system-aarch64", false, MainActivity.activity);
vterm.executeShellCommand2("killall -9 qemu-system-ppc", false, MainActivity.activity);
}
public static void killcurrentqemuprocess(Context context) {
Terminal vterm = new Terminal(context);
String env = "killall -9 ";
switch (MainSettingsManager.getArch(MainActivity.activity)) {
case "ARM64":
env += "qemu-system-aarch64";
break;
case "PPC":
env += "qemu-system-ppc";
break;
case "I386":
env += "qemu-system-i386";
break;
default:
env += "qemu-system-x86_64";
break;
}
vterm.executeShellCommand2(env, false, MainActivity.activity);
}
public static boolean isAppInstalled(String packagename, Context context) {
PackageManager pm = context.getPackageManager();
try {
pm.getPackageInfo(packagename,PackageManager.GET_ACTIVITIES);
return true;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
public static void setIconWithName(ImageView imageview, String name) {
String itemName = name.toLowerCase();
if (itemName.contains("linux") || itemName.contains("ubuntu") || itemName.contains("debian") || itemName.contains("arch") || itemName.contains("kali")) {
imageview.setImageResource(R.drawable.linux);
} else if (itemName.contains("windows")) {
imageview.setImageResource(R.drawable.windows);
} else if (itemName.contains("macos") || itemName.contains("mac os")) {
imageview.setImageResource(R.drawable.macos);
} else if (itemName.contains("android")) {
imageview.setImageResource(R.drawable.android);
} else {
imageview.setImageResource(R.drawable.no_machine_image);
}
}
public static boolean isHaveADisk(String env) {
if (env.contains("-drive") || env.contains("-hda") || env.contains("-hdb") || env.contains("-cdrom") || env.contains("-fda") || env.contains("-fdb"))
return true;
return false;
}
public static boolean isQemuRunning() {
Terminal vterm = new Terminal(MainActivity.activity);
vterm.executeShellCommand2("ps -e", false, MainActivity.activity);
if (TerminalOutput.contains("qemu-system")) {
Log.d("VectrasApp.isQemuRunning", "Yes");
return true;
} else {
Log.d("VectrasApp.isQemuRunning", "No");
return false;
}
}
public static boolean isThisVMRunning(String intemExtra, String itemPath) {
Terminal vterm = new Terminal(MainActivity.activity);
vterm.executeShellCommand2("ps -e", false, MainActivity.activity);
if (TerminalOutput.contains(intemExtra) && TerminalOutput.contains(itemPath)) {
Log.d("VectrasApp.isThisVMRunning", "Yes");
return true;
} else {
Log.d("VectrasApp.isThisVMRunning", "No");
return false;
}
}
public static void oneDialog(String _title, String _message, boolean _cancel, boolean _finish, Activity _activity) {
AlertDialog alertDialog = new AlertDialog.Builder(_activity, R.style.MainDialogTheme).create();
alertDialog.setTitle(_title);
alertDialog.setMessage(_message);
if (!_cancel) {
alertDialog.setCancelable(false);
}
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (_finish) {
_activity.finish();
}
}
});
alertDialog.show();
}
public static void oneDialogNew(String _title, String _message, String _buttontext,boolean _cancel, boolean _finish, Activity _activity) {
AlertDialog alertDialog = new AlertDialog.Builder(_activity, R.style.MainDialogTheme).create();
alertDialog.setTitle(_title);
alertDialog.setMessage(_message);
if (!_cancel) {
alertDialog.setCancelable(false);
}
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, _buttontext, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (_finish) {
_activity.finish();
}
}
});
alertDialog.show();
}
public static void oneDialogWithContext(String _title, String _message, boolean _cancel, Context _context) {
AlertDialog alertDialog = new AlertDialog.Builder(_context, R.style.MainDialogTheme).create();
alertDialog.setTitle(_title);
alertDialog.setMessage(_message);
if (!_cancel) {
alertDialog.setCancelable(false);
}
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
alertDialog.show();
}
public static void prepareDataForAppConfig(Activity _activity) {
AppConfig.vectrasVersion = "2.9.4";
AppConfig.vectrasWebsite = "https://vectras.vercel.app/";
AppConfig.vectrasWebsiteRaw = "https://raw.githubusercontent.com/xoureldeen/Vectras-VM-Android/refs/heads/master/web/";
AppConfig.bootstrapfileslink = AppConfig.vectrasWebsiteRaw + "/data/setupfiles.json";
AppConfig.vectrasHelp = AppConfig.vectrasWebsite + "how.html";
AppConfig.community = AppConfig.vectrasWebsite + "community.html";
AppConfig.vectrasRaw = AppConfig.vectrasWebsiteRaw + "data/";
AppConfig.vectrasLicense = AppConfig.vectrasRaw + "LICENSE.md";
AppConfig.vectrasPrivacy = AppConfig.vectrasRaw + "PRIVACYANDPOLICY.md";
AppConfig.vectrasTerms = AppConfig.vectrasRaw + "TERMSOFSERVICE.md";
AppConfig.vectrasInfo = AppConfig.vectrasRaw + "info.md";
AppConfig.vectrasRepo = "https://github.com/xoureldeen/Vectras-VM-Android";
AppConfig.updateJson = AppConfig.vectrasRaw + "UpdateConfig.json";
AppConfig.blogJson = AppConfig.vectrasRaw + "news_list.json";
AppConfig.storeJson = AppConfig.vectrasWebsiteRaw + "store_list.json";
AppConfig.releaseUrl = AppConfig.vectrasWebsite;
AppConfig.basefiledir = AppConfig.datadirpath(_activity) + "/.qemu/";
AppConfig.maindirpath = FileUtils.getExternalFilesDirectory(_activity).getPath() + "/";
private static void setupAppConfig(Context _context) {
AppConfig.vectrasVersion = PackageUtils.getThisVersionName(_context);
AppConfig.vectrasVersionCode = PackageUtils.getThisVersionCode(_context);
AppConfig.basefiledir = AppConfig.datadirpath(_context) + "/.qemu/";
AppConfig.maindirpath = FileUtils.getExternalFilesDirectory(_context).getPath() + "/";
AppConfig.sharedFolder = AppConfig.maindirpath + "SharedFolder/";
AppConfig.downloadsFolder = AppConfig.maindirpath + "Downloads/";
AppConfig.romsdatajson = AppConfig.maindirpath + "roms-data.json";
AppConfig.vmFolder = AppConfig.maindirpath + "roms/";
AppConfig.recyclebin = AppConfig.maindirpath + "recyclebin/";
}
public static PackageInfo getAppInfo(Context context) {
try {
return context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
} catch (PackageManager.NameNotFoundException e) {
throw new RuntimeException(e);
}
}
public static void setupMirrorListForListmap(ArrayList<HashMap<String, String>> listmapForSelectMirrors) {
HashMap<String, String> mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "United States (Default)");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true, "dl-cdn.alpinelinux.org", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Australia");
mapForAddItems.put("mirror", createCommandForSelectedMirror(false,"mirror.aarnet.edu.au", "/pub/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Austria");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirror.alwyzon.net", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Bulgaria");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirrors.neterra.net", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Brazil");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirror.uepg.br", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Cambodia");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirror.sabay.com.kh", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Canada");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true, "mirror.csclub.uwaterloo.ca", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Chile");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"elmirror.cl", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "China");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true, "mirrors.tuna.tsinghua.edu.cn", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Czech Republic");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true, "mirror.fel.cvut.cz", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Denmark");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true, "mirrors.dotsrc.org", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Finland");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true, "mirror.5i.fi", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "France");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirrors.ircam.fr", "/pub/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Germany");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"ftp.halifax.rwth-aachen.de", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Hong Kong");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true, "mirror.xtom.com.hk", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Indonesia");
mapForAddItems.put("mirror", createCommandForSelectedMirror(false,"foobar.turbo.net.id", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Iran");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirror.bardia.tech", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Italy");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"alpinelinux.mirror.garr.it", ""));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Japan");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true, "repo.jing.rocks", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Kazakhstan");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirror.ps.kz", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Moldova");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirror.ihost.md", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Morocco");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true, "mirror.marwan.ma", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "New Caledonia");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirror.lagoon.nc", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "New Zealand");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirror.2degrees.nz", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Poland");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"ftp.icm.edu.pl", "/pub/Linux/distributions/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Portugal");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirror.leitecastro.com", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Romania");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirrors.hosterion.ro", "/alpinelinux"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Russia");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirror.hyperdedic.ru", "/alpinelinux"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Singapore");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirror.jingk.ai", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Slovenia");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirror.tux.si", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Spain");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirror.raiolanetworks.com", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Sweden");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true, "ftp.lysator.liu.se/pub", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Switzerland");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true, "pkg.adfinis.com", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Taiwan");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true, "mirror.twds.com.tw", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Thailand");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"mirror.kku.ac.th", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "The Netherlands");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"alpine.mirror.wearetriple.com", ""));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "United Kingdom");
mapForAddItems.put("mirror", createCommandForSelectedMirror(true,"uk.alpinelinux.org", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
}
public static String createCommandForSelectedMirror(boolean _https, String _url, String _beforemain) {
String command = "echo \"\" > /etc/apk/repositories && sed -i -e \"1ihttps://xssFjnj58Id/yttGkok69Je/edge/testing\" /etc/apk/repositories && sed -i -e \"1ihttps://xssFjnj58Id/yttGkok69Je/v3.19/community\" /etc/apk/repositories && sed -i -e \"1ihttps://xssFjnj58Id/yttGkok69Je/v3.19/main\" /etc/apk/repositories";
command = command.replaceAll("/yttGkok69Je", _beforemain);
if (!_https)
command = command.replaceAll("https://", "http://");
return command.replaceAll("xssFjnj58Id", _url);
}
public static void setupSendKeyListForListmap(ArrayList<HashMap<String, Object>> listmapForSendKey) {
HashMap<String, Object> mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Ctrl + Alt + Del");
mapForAddItems.put("keycode", 0);
mapForAddItems.put("useKeyEvent", false);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Esc");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_ESCAPE);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Windows");
mapForAddItems.put("keycode", 91);
mapForAddItems.put("useKeyEvent", false);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.grid_view_24px);
listmapForSendKey.add(mapForAddItems);
// mapForAddItems = new HashMap<>();
// mapForAddItems.put("keyname", "Menu");
// mapForAddItems.put("keycode", 93);
// mapForAddItems.put("useKeyEvent", false);
// mapForAddItems.put("useIcon", true);
// mapForAddItems.put("rIcon", R.drawable.menu_24px);
// listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Backspace");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_DEL);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.backspace_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Enter");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_ENTER);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.keyboard_return_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Tab");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_TAB);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.sync_alt_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Up");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_DPAD_UP);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.arrow_upward_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Down");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_DPAD_DOWN);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.arrow_downward_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Left");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_DPAD_LEFT);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.arrow_back_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Left");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_DPAD_RIGHT);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.arrow_forward_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Home");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_MOVE_HOME);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.vertical_align_top_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "End");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_MOVE_END);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.vertical_align_bottom_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "End");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_PAGE_UP);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.arrow_warm_up_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "End");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_PAGE_DOWN);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.arrow_cool_down_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "End");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_INSERT);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.insert_text_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F1");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F1);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F2");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F2);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F3");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F3);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F4");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F4);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F5");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F5);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F6");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F6);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F7");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F7);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F8");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F8);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F9");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F9);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F10");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F10);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F11");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F11);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F12");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F12);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
}
}

View file

@ -0,0 +1,20 @@
package com.vectras.vm.utils;
import android.app.Activity;
import com.vectras.vterm.Terminal;
public class CommandUtils {
public static String createForSelectedMirror(boolean _https, String _url, String _beforemain) {
String command = "echo \"\" > /etc/apk/repositories && sed -i -e \"1ihttps://xssFjnj58Id/yttGkok69Je/edge/testing\" /etc/apk/repositories && sed -i -e \"1ihttps://xssFjnj58Id/yttGkok69Je/v3.19/community\" /etc/apk/repositories && sed -i -e \"1ihttps://xssFjnj58Id/yttGkok69Je/v3.19/main\" /etc/apk/repositories";
command = command.replaceAll("/yttGkok69Je", _beforemain);
if (!_https)
command = command.replaceAll("https://", "http://");
return command.replaceAll("xssFjnj58Id", _url);
}
public static void run(String _command, boolean _isShowResult, Activity _activity) {
Terminal vterm = new Terminal(_activity);
vterm.executeShellCommand2(_command, _isShowResult, _activity);
}
}

View file

@ -0,0 +1,13 @@
package com.vectras.vm.utils;
import android.app.ActivityManager;
import android.content.Context;
public class DeviceUtils {
public static double totalMemoryCapacity(Context context) {
ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
activityManager.getMemoryInfo(memoryInfo);
return memoryInfo.totalMem;
}
}

View file

@ -599,15 +599,15 @@ public class FileUtils {
}
return contents;
}
public static boolean moveFile(String oldfilename, String newFolderPath, String newFilename) {
File folder = new File(newFolderPath);
if (!folder.exists())
folder.mkdirs();
File oldfile = new File(oldfilename);
File newFile = new File(newFolderPath, newFilename);
if (!newFile.exists())
try {
newFile.createNewFile();
@ -618,4 +618,119 @@ public class FileUtils {
return oldfile.renameTo(newFile);
}
public static boolean isFileExists(String filePath) {
File file = new File(filePath.replaceAll("\n", ""));
return file.exists();
}
public static void moveAFile(String _from, String _to) {
File oldFile = new File(_from);
File newFile = new File(_to);
boolean success = oldFile.renameTo(newFile);
if (success) {
Log.d("File", "Done!");
} else {
Log.e("File", "Failed!");
}
}
public static void copyAFile(String _sourceFile, String _destFile) {
File vDir = new File(_destFile.substring((int)0, (int)(_destFile.lastIndexOf("/"))));
if (!vDir.exists()) {
vDir.mkdirs();
}
try {
File source = new File(_sourceFile);
File dest = new File(_destFile);
if (!source.exists())
{
throw new IOException("Source file not found");
}
FileInputStream inStream = new FileInputStream(source);
FileOutputStream outStream = new FileOutputStream(dest);
byte[] buffer = new byte[1024];
int length;
while ((length = inStream.read(buffer))
> 0) {
outStream.write(buffer, 0, length);
}
inStream.close();
outStream.close();
} catch (IOException e) {
}
}
public static void deleteDirectory(String _pathToDelete) {
File _dir = new File(_pathToDelete);
if (_dir.isDirectory()) {
String[] children = _dir.list();
if (children == null) {
Log.e("ERROR", "Deletion failed. " + _dir);
return;
}
for (int i = 0; i < children.length; i++) {
File temp = new File(_dir, children[i]);
deleteDirectory(String.valueOf(temp));
}
}
boolean success = _dir.delete();
if (!success) {
Log.e("ERROR", "Deletion failed. " + _dir);
}
}
public static String readAFile(String filePath) {
StringBuilder content = new StringBuilder();
try (FileInputStream inputStream = new FileInputStream(filePath);
BufferedReader reader = new BufferedReader(new
InputStreamReader(inputStream))) {
String line;
while ((line = reader.readLine()) != null) {
content.append(line).append("\n");
}
} catch (IOException e) {
throw new RuntimeException(e);
}
return content.toString();
}
public static void writeToFile(String folderPath, String fileName, String content) {
File vDir = new File(folderPath);
if (!vDir.exists()) {
vDir.mkdirs();
}
File file = new File(folderPath, fileName);
FileOutputStream outputStream = null;
try {
outputStream = new FileOutputStream(file);
outputStream.write(content.getBytes());
outputStream.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static void getAListOfAllFilesAndFoldersInADirectory(String path, ArrayList<String> list) {
File dir = new File(path);
if (!dir.exists() || dir.isFile()) return;
File[] listFiles = dir.listFiles();
if (listFiles == null || listFiles.length <= 0) return;
if (list == null) return;
list.clear();
for (File file : listFiles) {
list.add(file.getAbsolutePath());
}
}
}

View file

@ -0,0 +1,51 @@
package com.vectras.vm.utils;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Objects;
public class JSONUtils {
public static boolean isValidFromString(String _content) {
ArrayList<HashMap<String, Objects>> mmap = new ArrayList<>();
try {
mmap.clear();
mmap = new Gson().fromJson(_content, new TypeToken<ArrayList<HashMap<String, Object>>>() {
}.getType());
return true;
} catch (Exception e) {
return false;
}
}
public static boolean isMapValidFromString(String _content) {
HashMap<String, Object> mmap = new HashMap<>();
try {
mmap.clear();
mmap= new Gson().fromJson(_content, new TypeToken<HashMap<String, Object>>(){}.getType());
return true;
} catch (Exception e) {
return false;
}
}
public static boolean isValidFromFile(String _filepath) {
ArrayList<HashMap<String, Objects>> mmap = new ArrayList<>();
String contentjson = "";
if (FileUtils.isFileExists(_filepath)) {
contentjson = FileUtils.readAFile(_filepath);
try {
mmap.clear();
mmap = new Gson().fromJson(contentjson, new TypeToken<ArrayList<HashMap<String, Object>>>() {
}.getType());
return true;
} catch (Exception e) {
return false;
}
} else {
return false;
}
}
}

View file

@ -0,0 +1,425 @@
package com.vectras.vm.utils;
import android.view.KeyEvent;
import com.vectras.vm.R;
import java.util.ArrayList;
import java.util.HashMap;
public class ListUtils {
public static void setupMirrorListForListmap(ArrayList<HashMap<String, String>> listmapForSelectMirrors) {
HashMap<String, String> mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "United States (Default)");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true, "dl-cdn.alpinelinux.org", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Australia");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(false,"mirror.aarnet.edu.au", "/pub/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Austria");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirror.alwyzon.net", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Bulgaria");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirrors.neterra.net", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Brazil");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirror.uepg.br", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Cambodia");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirror.sabay.com.kh", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Canada");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true, "mirror.csclub.uwaterloo.ca", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Chile");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"elmirror.cl", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "China");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true, "mirrors.tuna.tsinghua.edu.cn", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Czech Republic");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true, "mirror.fel.cvut.cz", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Denmark");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true, "mirrors.dotsrc.org", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Finland");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true, "mirror.5i.fi", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "France");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirrors.ircam.fr", "/pub/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Germany");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"ftp.halifax.rwth-aachen.de", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Hong Kong");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true, "mirror.xtom.com.hk", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Indonesia");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(false,"foobar.turbo.net.id", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Iran");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirror.bardia.tech", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Italy");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"alpinelinux.mirror.garr.it", ""));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Japan");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true, "repo.jing.rocks", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Kazakhstan");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirror.ps.kz", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Moldova");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirror.ihost.md", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Morocco");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true, "mirror.marwan.ma", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "New Caledonia");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirror.lagoon.nc", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "New Zealand");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirror.2degrees.nz", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Poland");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"ftp.icm.edu.pl", "/pub/Linux/distributions/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Portugal");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirror.leitecastro.com", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Romania");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirrors.hosterion.ro", "/alpinelinux"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Russia");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirror.hyperdedic.ru", "/alpinelinux"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Singapore");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirror.jingk.ai", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Slovenia");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirror.tux.si", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Spain");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirror.raiolanetworks.com", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Sweden");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true, "ftp.lysator.liu.se/pub", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Switzerland");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true, "pkg.adfinis.com", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Taiwan");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true, "mirror.twds.com.tw", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "Thailand");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"mirror.kku.ac.th", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "The Netherlands");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"alpine.mirror.wearetriple.com", ""));
listmapForSelectMirrors.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("location", "United Kingdom");
mapForAddItems.put("mirror", CommandUtils.createForSelectedMirror(true,"uk.alpinelinux.org", "/alpine"));
listmapForSelectMirrors.add(mapForAddItems);
}
public static void setupSendKeyListForListmap(ArrayList<HashMap<String, Object>> listmapForSendKey) {
HashMap<String, Object> mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Ctrl + Alt + Del");
mapForAddItems.put("keycode", 0);
mapForAddItems.put("useKeyEvent", false);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Esc");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_ESCAPE);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Windows");
mapForAddItems.put("keycode", 91);
mapForAddItems.put("useKeyEvent", false);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.grid_view_24px);
listmapForSendKey.add(mapForAddItems);
// mapForAddItems = new HashMap<>();
// mapForAddItems.put("keyname", "Menu");
// mapForAddItems.put("keycode", 93);
// mapForAddItems.put("useKeyEvent", false);
// mapForAddItems.put("useIcon", true);
// mapForAddItems.put("rIcon", R.drawable.menu_24px);
// listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Backspace");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_DEL);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.backspace_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Enter");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_ENTER);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.keyboard_return_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Tab");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_TAB);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.sync_alt_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Up");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_DPAD_UP);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.arrow_upward_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Down");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_DPAD_DOWN);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.arrow_downward_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Left");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_DPAD_LEFT);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.arrow_back_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Left");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_DPAD_RIGHT);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.arrow_forward_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "Home");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_MOVE_HOME);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.vertical_align_top_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "End");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_MOVE_END);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.vertical_align_bottom_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "End");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_PAGE_UP);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.arrow_warm_up_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "End");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_PAGE_DOWN);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.arrow_cool_down_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "End");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_INSERT);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", true);
mapForAddItems.put("rIcon", R.drawable.insert_text_24px);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F1");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F1);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F2");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F2);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F3");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F3);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F4");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F4);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F5");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F5);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F6");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F6);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F7");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F7);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F8");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F8);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F9");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F9);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F10");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F10);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F11");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F11);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
mapForAddItems = new HashMap<>();
mapForAddItems.put("keyname", "F12");
mapForAddItems.put("keycode", KeyEvent.KEYCODE_F12);
mapForAddItems.put("useKeyEvent", true);
mapForAddItems.put("useIcon", false);
mapForAddItems.put("rIcon", 0);
listmapForSendKey.add(mapForAddItems);
}
}

View file

@ -1,10 +1,10 @@
package com.vectras.vm;
package com.vectras.vm.utils;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
public class IOApplication {
public class NetworkUtils {
public static boolean isPortOpen(String host, int port, int timeout) {
Socket socket = new Socket();
try {

View file

@ -0,0 +1,39 @@
package com.vectras.vm.utils;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import com.vectras.vm.AppConfig;
public class PackageUtils {
public static boolean isInstalled(String packagename, Context context) {
PackageManager pm = context.getPackageManager();
try {
pm.getPackageInfo(packagename,PackageManager.GET_ACTIVITIES);
return true;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
public static int getThisVersionCode(Context context) {
try {
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
return packageInfo.versionCode;
} catch (Exception ignored){
}
return AppConfig.vectrasVersionCode;
}
public static String getThisVersionName(Context context) {
try {
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
return packageInfo.versionName;
} catch (Exception ignored){
}
return AppConfig.vectrasVersion;
}
}

View file

@ -0,0 +1,46 @@
package com.vectras.vm.utils;
import android.Manifest;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.provider.Settings;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.vectras.vm.R;
public class PermissionUtils {
public static boolean storagepermission(Activity activity, boolean request) {
if (ContextCompat.checkSelfPermission(activity, android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
return true;
} else {
if (request) {
AlertDialog alertDialog = new AlertDialog.Builder(activity, R.style.MainDialogTheme).create();
alertDialog.setTitle(activity.getResources().getString(R.string.allow_permissions));
alertDialog.setMessage(activity.getResources().getString(R.string.you_need_to_grant_permission_to_access_the_storage_before_use));
alertDialog.setCancelable(false);
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, activity.getResources().getString(R.string.allow), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (activity.shouldShowRequestPermissionRationale(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:" + activity.getPackageName()));
activity.startActivity(intent);
Toast.makeText(activity, activity.getResources().getString(R.string.find_and_allow_access_to_storage_in_settings), Toast.LENGTH_LONG).show();
} else {
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1000);
}
alertDialog.dismiss();
}
});
alertDialog.show();
}
return false;
}
}
}

View file

@ -1,30 +1,11 @@
package com.vectras.vm;
package com.vectras.vm.utils;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.view.View;
import android.view.animation.LinearInterpolator;
import androidx.activity.ComponentActivity;
import androidx.activity.EdgeToEdge;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
public class UIController {
public static void edgeToEdge(ComponentActivity _activity) {
EdgeToEdge.enable(_activity);
}
public static void setOnApplyWindowInsetsListener(View _view) {
ViewCompat.setOnApplyWindowInsetsListener(_view, (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.displayCutout() | WindowInsetsCompat.Type.ime());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
}
public static void simpleAnimationScale(View _view, int _duration) {
public class SimpleAnimations {
public static void scale(View _view, int _duration) {
ObjectAnimator ani1 = new ObjectAnimator();
ani1.setTarget(_view);
ani1.setPropertyName("scaleX");
@ -42,7 +23,7 @@ public class UIController {
ani2.start();
}
public static void simpleTranslationUpToDown(View _view, int _duration) {
public static void translationUpToDown(View _view, int _duration) {
ObjectAnimator ani1 = new ObjectAnimator();
ani1.setTarget(_view);
ani1.setPropertyName("translationY");

View file

@ -1,7 +1,14 @@
package com.vectras.vm.utils;
import android.app.Activity;
import androidx.activity.ComponentActivity;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AlertDialog;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
@ -367,5 +374,64 @@ public class UIUtils {
}
public static void oneDialog(String _title, String _message, boolean _cancel, boolean _finish, Activity _activity) {
AlertDialog alertDialog = new AlertDialog.Builder(_activity, R.style.MainDialogTheme).create();
alertDialog.setTitle(_title);
alertDialog.setMessage(_message);
if (!_cancel) {
alertDialog.setCancelable(false);
}
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (_finish) {
_activity.finish();
}
}
});
alertDialog.show();
}
public static void oneDialogWithCustomButtonPositive(String _title, String _message, String _buttontext,boolean _cancel, boolean _finish, Activity _activity) {
AlertDialog alertDialog = new AlertDialog.Builder(_activity, R.style.MainDialogTheme).create();
alertDialog.setTitle(_title);
alertDialog.setMessage(_message);
if (!_cancel) {
alertDialog.setCancelable(false);
}
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, _buttontext, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (_finish) {
_activity.finish();
}
}
});
alertDialog.show();
}
public static void oneDialogWithContext(String _title, String _message, boolean _cancel, Context _context) {
AlertDialog alertDialog = new AlertDialog.Builder(_context, R.style.MainDialogTheme).create();
alertDialog.setTitle(_title);
alertDialog.setMessage(_message);
if (!_cancel) {
alertDialog.setCancelable(false);
}
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
alertDialog.show();
}
public static void edgeToEdge(ComponentActivity _activity) {
EdgeToEdge.enable(_activity);
}
public static void setOnApplyWindowInsetsListener(View _view) {
ViewCompat.setOnApplyWindowInsetsListener(_view, (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.displayCutout() | WindowInsetsCompat.Type.ime());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
}
}

View file

@ -19,6 +19,7 @@ import com.vectras.qemu.MainSettingsManager;
import com.vectras.vm.Fragment.ControlersOptionsFragment;
import com.vectras.vm.Fragment.LoggerDialogFragment;
import com.vectras.vm.MainService;
import com.vectras.vm.VMManager;
import com.vectras.vm.VectrasApp;
import com.vectras.vm.widgets.JoystickView;
import com.vectras.qemu.MainSettingsManager;
@ -598,7 +599,7 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
// Stop the service
MainService.stopService();
//Terminal.killQemuProcess();
VectrasApp.killcurrentqemuprocess(getApplicationContext());
VMManager.killcurrentqemuprocess(getApplicationContext());
finish();
})
.setNegativeButton(getString(R.string.no), null)