mirror of
https://github.com/xoureldeen/Vectras-VM-Android.git
synced 2026-04-29 23:09:48 +00:00
Scone
This commit is contained in:
parent
24380b7e69
commit
c251c4880b
40 changed files with 1270 additions and 1185 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 = "";
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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")) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) -> {
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
20
app/src/main/java/com/vectras/vm/utils/CommandUtils.java
Normal file
20
app/src/main/java/com/vectras/vm/utils/CommandUtils.java
Normal 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);
|
||||
}
|
||||
}
|
||||
13
app/src/main/java/com/vectras/vm/utils/DeviceUtils.java
Normal file
13
app/src/main/java/com/vectras/vm/utils/DeviceUtils.java
Normal 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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
51
app/src/main/java/com/vectras/vm/utils/JSONUtils.java
Normal file
51
app/src/main/java/com/vectras/vm/utils/JSONUtils.java
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
425
app/src/main/java/com/vectras/vm/utils/ListUtils.java
Normal file
425
app/src/main/java/com/vectras/vm/utils/ListUtils.java
Normal 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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 {
|
||||
39
app/src/main/java/com/vectras/vm/utils/PackageUtils.java
Normal file
39
app/src/main/java/com/vectras/vm/utils/PackageUtils.java
Normal 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;
|
||||
}
|
||||
}
|
||||
46
app/src/main/java/com/vectras/vm/utils/PermissionUtils.java
Normal file
46
app/src/main/java/com/vectras/vm/utils/PermissionUtils.java
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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");
|
||||
|
|
@ -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;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue