mirror of
https://github.com/xoureldeen/Vectras-VM-Android.git
synced 2026-04-29 23:09:48 +00:00
Flan
This commit is contained in:
parent
3500b88de6
commit
17a5780ce6
17 changed files with 458 additions and 305 deletions
|
|
@ -103,6 +103,12 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
|
||||
public static CustomRomActivity activity;
|
||||
|
||||
private String thumbnailPath = "";
|
||||
private ImageView ivAddThubnail;
|
||||
private TextInputLayout cdromLayout;
|
||||
private ImageView ivIcon;
|
||||
public static TextInputLayout driveLayout;
|
||||
|
||||
private boolean isFilled(TextInputEditText TXT) {
|
||||
if (TXT.getText().toString().trim().length() > 0)
|
||||
return true;
|
||||
|
|
@ -124,8 +130,8 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
super.onCreateOptionsMenu(menu);
|
||||
|
||||
if (!modify)
|
||||
menu.add(1, 1, 1, "custom rom").setShortcut('3', 'c').setIcon(R.drawable.input_circle).setShowAsAction(1);
|
||||
//if (!modify)
|
||||
menu.add(1, 1, 1, getString(R.string.create)).setShortcut('3', 'c').setIcon(R.drawable.check_24px).setShowAsAction(1);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -135,17 +141,54 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
|
||||
switch (item.getItemId()) {
|
||||
case 1:
|
||||
Intent intent = new Intent(ACTION_OPEN_DOCUMENT);
|
||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
intent.setType("*/*");
|
||||
// Intent intent = new Intent(ACTION_OPEN_DOCUMENT);
|
||||
// intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
// intent.setType("*/*");
|
||||
//
|
||||
// // Optionally, specify a URI for the file that should appear in the
|
||||
// // system file picker when it loads.
|
||||
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
// intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, Environment.DIRECTORY_DOWNLOADS);
|
||||
// }
|
||||
//
|
||||
// startActivityForResult(intent, 0);
|
||||
if (loadingPb.getVisibility() == View.GONE) {
|
||||
if (Objects.requireNonNull(title.getText()).toString().isEmpty()) {
|
||||
VectrasApp.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())) {
|
||||
checkJsonFile();
|
||||
} else {
|
||||
if (qemu.getText().toString().isEmpty()) {
|
||||
AlertDialog alertDialog = new AlertDialog.Builder(activity, R.style.MainDialogTheme).create();
|
||||
alertDialog.setTitle(getResources().getString(R.string.problem_has_been_detected));
|
||||
alertDialog.setMessage(getResources().getString(R.string.qemu_params_is_empty));
|
||||
alertDialog.setCancelable(true);
|
||||
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, getResources().getString(R.string.continuetext), (dialog, which) -> {
|
||||
checkJsonFile();
|
||||
});
|
||||
alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getResources().getString(R.string.cancel), (dialog, which) -> {
|
||||
|
||||
// Optionally, specify a URI for the file that should appear in the
|
||||
// system file picker when it loads.
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, Environment.DIRECTORY_DOWNLOADS);
|
||||
});
|
||||
alertDialog.show();
|
||||
} else {
|
||||
AlertDialog alertDialog = new AlertDialog.Builder(activity, R.style.MainDialogTheme).create();
|
||||
alertDialog.setTitle(getResources().getString(R.string.problem_has_been_detected));
|
||||
alertDialog.setMessage(getResources().getString(R.string.you_have_not_added_any_storage_devices));
|
||||
alertDialog.setCancelable(true);
|
||||
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, getResources().getString(R.string.continuetext), (dialog, which) -> {
|
||||
checkJsonFile();
|
||||
});
|
||||
alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getResources().getString(R.string.cancel), (dialog, which) -> {
|
||||
|
||||
});
|
||||
alertDialog.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
startActivityForResult(intent, 0);
|
||||
return true;
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
|
|
@ -175,18 +218,19 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
|
||||
}
|
||||
});
|
||||
ivAddThubnail = findViewById(R.id.ivAddThubnail);
|
||||
cdromLayout = findViewById(R.id.cdromField);
|
||||
driveLayout = findViewById(R.id.driveField);
|
||||
ivIcon = findViewById(R.id.ivIcon);
|
||||
title = findViewById(R.id.title);
|
||||
icon = findViewById(R.id.icon);
|
||||
drive = findViewById(R.id.drive);
|
||||
cdrom = findViewById(R.id.cdrom);
|
||||
qemu = findViewById(R.id.qemu);
|
||||
TextInputLayout iconLayout = findViewById(R.id.iconField);
|
||||
TextInputLayout driveLayout = findViewById(R.id.driveField);
|
||||
TextInputLayout cdromLayout = findViewById(R.id.cdromField);
|
||||
TextInputLayout qemuLayout = findViewById(R.id.qemuField);
|
||||
TextView arch = findViewById(R.id.textArch);
|
||||
arch.setText(MainSettingsManager.getArch(this));
|
||||
ImageView ivIcon = findViewById(R.id.ivIcon);
|
||||
icon.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
|
@ -220,22 +264,6 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
}
|
||||
});
|
||||
|
||||
icon.setOnLongClickListener((View.OnLongClickListener) v -> {
|
||||
if (!Objects.requireNonNull(icon.getText()).toString().isEmpty()) {
|
||||
icon.setText("");
|
||||
VectrasApp.setIconWithName(ivIcon, Objects.requireNonNull(title.getText()).toString());
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
iconLayout.setOnLongClickListener((View.OnLongClickListener) v -> {
|
||||
if (!Objects.requireNonNull(icon.getText()).toString().isEmpty()) {
|
||||
icon.setText("");
|
||||
VectrasApp.setIconWithName(ivIcon, Objects.requireNonNull(title.getText()).toString());
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
drive.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
|
@ -273,39 +301,19 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
driveLayout.setEndIconOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
File vDir = new File(com.vectras.vm.AppConfig.maindirpath + "IMG");
|
||||
if (!vDir.exists()) {
|
||||
vDir.mkdirs();
|
||||
}
|
||||
CreateImageDialogFragment dialogFragment = new CreateImageDialogFragment();
|
||||
dialogFragment.customRom = true;
|
||||
dialogFragment.show(getSupportFragmentManager(), "CreateImageDialogFragment");
|
||||
}
|
||||
});
|
||||
|
||||
drive.setOnLongClickListener((View.OnLongClickListener) v -> {
|
||||
if (!Objects.requireNonNull(drive.getText()).toString().isEmpty()) {
|
||||
drive.setText("");
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
driveLayout.setOnLongClickListener((View.OnLongClickListener) v -> {
|
||||
if (!Objects.requireNonNull(drive.getText()).toString().isEmpty()) {
|
||||
drive.setText("");
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
View.OnClickListener cdromClickListener = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (Objects.requireNonNull(cdrom.getText()).length() > 0) {
|
||||
AlertDialog ad;
|
||||
ad = new AlertDialog.Builder(activity, R.style.MainDialogTheme).create();
|
||||
ad.setTitle("REPLACE ISO");
|
||||
ad.setMessage("there is iso imported you want to replace it?");
|
||||
ad.setButton(Dialog.BUTTON_POSITIVE, "REPLACE", new DialogInterface.OnClickListener() {
|
||||
if (Objects.requireNonNull(drive.getText()).toString().isEmpty()) {
|
||||
File vDir = new File(com.vectras.vm.AppConfig.maindirpath + "IMG");
|
||||
if (!vDir.exists()) {
|
||||
vDir.mkdirs();
|
||||
}
|
||||
CreateImageDialogFragment dialogFragment = new CreateImageDialogFragment();
|
||||
dialogFragment.customRom = true;
|
||||
dialogFragment.show(getSupportFragmentManager(), "CreateImageDialogFragment");
|
||||
} else {
|
||||
AlertDialog ad = new AlertDialog.Builder(CustomRomActivity.this, R.style.MainDialogTheme).create();
|
||||
ad.setTitle(getString(R.string.change_hard_drive));
|
||||
ad.setMessage(getString(R.string.do_you_want_to_change_create_or_remove));
|
||||
ad.setButton(Dialog.BUTTON_NEGATIVE, getString(R.string.change), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Intent intent = new Intent(ACTION_OPEN_DOCUMENT);
|
||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
|
|
@ -317,63 +325,63 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, Environment.DIRECTORY_DOWNLOADS);
|
||||
}
|
||||
|
||||
startActivityForResult(intent, 1003);
|
||||
return;
|
||||
startActivityForResult(intent, 1002);
|
||||
ad.dismiss();
|
||||
}
|
||||
});
|
||||
ad.setButton(Dialog.BUTTON_NEGATIVE, "REMOVE", new DialogInterface.OnClickListener() {
|
||||
ad.setButton(Dialog.BUTTON_POSITIVE, getString(R.string.remove), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
File isoFile = new File(cdrom.getText().toString());
|
||||
if (isoFile.exists()) {
|
||||
isoFile.delete();
|
||||
VectrasApp.deleteDirectory(drive.getText().toString());
|
||||
drive.setText("");
|
||||
driveLayout.setEndIconDrawable(R.drawable.round_add_24);
|
||||
ad.dismiss();
|
||||
}
|
||||
});
|
||||
ad.setButton(Dialog.BUTTON_NEUTRAL, getString(R.string.create), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
File vDir = new File(com.vectras.vm.AppConfig.maindirpath + "IMG");
|
||||
if (!vDir.exists()) {
|
||||
vDir.mkdirs();
|
||||
}
|
||||
cdrom.setText("");
|
||||
|
||||
//Pattern pattern = Pattern.compile(cdromPatternCompile());
|
||||
//Matcher matcher = pattern.matcher(qemu.getText().toString());
|
||||
|
||||
//if (matcher.find()) {
|
||||
// Replace the entire -drive ... file='...' parameter with an empty string
|
||||
//String modifiedQemuText = qemu.getText().toString().replace(matcher.group(0), "");
|
||||
//qemu.setText(modifiedQemuText);
|
||||
//} else {
|
||||
// Handle the case where the -drive parameter doesn't exist
|
||||
// This could involve logging the issue, displaying a message to the user, etc.
|
||||
//}
|
||||
CreateImageDialogFragment dialogFragment = new CreateImageDialogFragment();
|
||||
dialogFragment.customRom = true;
|
||||
dialogFragment.show(getSupportFragmentManager(), "CreateImageDialogFragment");
|
||||
ad.dismiss();
|
||||
}
|
||||
});
|
||||
ad.show();
|
||||
} else {
|
||||
Intent intent = new Intent(ACTION_OPEN_DOCUMENT);
|
||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
intent.setType("*/*");
|
||||
|
||||
// Optionally, specify a URI for the file that should appear in the
|
||||
// system file picker when it loads.
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, Environment.DIRECTORY_DOWNLOADS);
|
||||
}
|
||||
|
||||
startActivityForResult(intent, 1003);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
View.OnClickListener cdromClickListener = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent(ACTION_OPEN_DOCUMENT);
|
||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
intent.setType("*/*");
|
||||
|
||||
// Optionally, specify a URI for the file that should appear in the
|
||||
// system file picker when it loads.
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, Environment.DIRECTORY_DOWNLOADS);
|
||||
}
|
||||
|
||||
startActivityForResult(intent, 1003);
|
||||
}
|
||||
};
|
||||
|
||||
cdrom.setOnClickListener(cdromClickListener);
|
||||
cdromLayout.setOnClickListener(cdromClickListener);
|
||||
|
||||
cdrom.setOnLongClickListener((View.OnLongClickListener) v -> {
|
||||
if (!Objects.requireNonNull(cdrom.getText()).toString().isEmpty()) {
|
||||
cdrom.setText("");
|
||||
cdromLayout.setEndIconOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (!Objects.requireNonNull(cdrom.getText()).toString().isEmpty()) {
|
||||
cdrom.setText("");
|
||||
cdromLayout.setEndIconMode(TextInputLayout.END_ICON_NONE);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
cdromLayout.setOnLongClickListener((View.OnLongClickListener) v -> {
|
||||
if (!Objects.requireNonNull(cdrom.getText()).toString().isEmpty()) {
|
||||
cdrom.setText("");
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
addRomBtn = findViewById(R.id.addRomBtn);
|
||||
|
|
@ -482,36 +490,59 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
ivIcon.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent(ACTION_OPEN_DOCUMENT);
|
||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
intent.setType("image/*");
|
||||
if (thumbnailPath.isEmpty()) {
|
||||
Intent intent = new Intent(ACTION_OPEN_DOCUMENT);
|
||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
intent.setType("image/*");
|
||||
|
||||
// Optionally, specify a URI for the file that should appear in the
|
||||
// system file picker when it loads.
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, Environment.DIRECTORY_DOWNLOADS);
|
||||
// Optionally, specify a URI for the file that should appear in the
|
||||
// system file picker when it loads.
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, Environment.DIRECTORY_DOWNLOADS);
|
||||
}
|
||||
|
||||
startActivityForResult(intent, 1001);
|
||||
} else {
|
||||
AlertDialog ad = new AlertDialog.Builder(CustomRomActivity.this, R.style.MainDialogTheme).create();
|
||||
ad.setTitle(getString(R.string.change_thumbnail));
|
||||
ad.setMessage(getString(R.string.do_you_want_to_change_or_remove));
|
||||
ad.setButton(Dialog.BUTTON_NEGATIVE, getString(R.string.change), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Intent intent = new Intent(ACTION_OPEN_DOCUMENT);
|
||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
intent.setType("image/*");
|
||||
|
||||
// Optionally, specify a URI for the file that should appear in the
|
||||
// system file picker when it loads.
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, Environment.DIRECTORY_DOWNLOADS);
|
||||
}
|
||||
|
||||
startActivityForResult(intent, 1001);
|
||||
ad.dismiss();
|
||||
}
|
||||
});
|
||||
ad.setButton(Dialog.BUTTON_POSITIVE, getString(R.string.remove), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
thumbnailPath = "";
|
||||
ivAddThubnail.setImageResource(R.drawable.round_add_24);
|
||||
VectrasApp.setIconWithName(ivIcon, Objects.requireNonNull(title.getText()).toString());
|
||||
ad.dismiss();
|
||||
}
|
||||
});
|
||||
ad.show();
|
||||
}
|
||||
|
||||
startActivityForResult(intent, 1001);
|
||||
}
|
||||
});
|
||||
|
||||
ivIcon.setOnLongClickListener((View.OnLongClickListener) v -> {
|
||||
if (!Objects.requireNonNull(icon.getText()).toString().isEmpty()) {
|
||||
icon.setText("");
|
||||
VectrasApp.setIconWithName(ivIcon, title.getText().toString());
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
modify = getIntent().getBooleanExtra("MODIFY", false);
|
||||
if (modify) {
|
||||
created = true;
|
||||
addRomBtn.setText(R.string.save_changes);
|
||||
title.setText(current.itemName);
|
||||
icon.setText(current.itemIcon);
|
||||
drive.setText(current.itemPath);
|
||||
cdrom.setText(current.imgCdrom);
|
||||
thumbnailPath = current.itemIcon;
|
||||
vmID = getIntent().getStringExtra("VMID");
|
||||
|
||||
if (vmID.isEmpty()) {
|
||||
|
|
@ -528,14 +559,28 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
|
||||
qemu.setText(current.itemExtra);
|
||||
|
||||
File imgFile = new File(Objects.requireNonNull(icon.getText()).toString());
|
||||
if (!thumbnailPath.isEmpty()) {
|
||||
ivAddThubnail.setImageResource(R.drawable.round_edit_24);
|
||||
File imgFile = new File(thumbnailPath);
|
||||
|
||||
if(imgFile.exists()){
|
||||
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
|
||||
ivIcon.setImageBitmap(myBitmap);
|
||||
} else {
|
||||
VectrasApp.setIconWithName(ivIcon, current.itemName);
|
||||
if(imgFile.exists()){
|
||||
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
|
||||
ivIcon.setImageBitmap(myBitmap);
|
||||
} else {
|
||||
VectrasApp.setIconWithName(ivIcon, current.itemName);
|
||||
}
|
||||
}
|
||||
|
||||
if (Objects.requireNonNull(drive.getText()).toString().isEmpty()) {
|
||||
driveLayout.setEndIconDrawable(R.drawable.round_add_24);
|
||||
}
|
||||
|
||||
if (!Objects.requireNonNull(cdrom.getText()).toString().isEmpty()) {
|
||||
cdromLayout.setEndIconMode(TextInputLayout.END_ICON_CUSTOM);
|
||||
cdromLayout.setEndIconDrawable(R.drawable.close_24px);
|
||||
setOnClick();
|
||||
}
|
||||
|
||||
previousName = current.itemName;
|
||||
} else {
|
||||
if (getIntent().hasExtra("addromnow")) {
|
||||
|
|
@ -562,6 +607,13 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
}
|
||||
if (!Objects.requireNonNull(getIntent().getStringExtra("addtodrive")).isEmpty()) {
|
||||
drive.setText(AppConfig.vmFolder + vmID + "/" + getIntent().getStringExtra("romfilename"));
|
||||
if (Objects.requireNonNull(drive.getText()).toString().isEmpty()) {
|
||||
driveLayout.setEndIconDrawable(R.drawable.round_add_24);
|
||||
} else {
|
||||
driveLayout.setEndIconDrawable(R.drawable.more_vert_24px);
|
||||
}
|
||||
} else {
|
||||
driveLayout.setEndIconDrawable(R.drawable.round_add_24);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -589,7 +641,10 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
Terminal vterm = new Terminal(CustomRomActivity.this);
|
||||
vterm.executeShellCommand2("qemu-img create -f qcow2 " + AppConfig.vmFolder + vmID + "/disk.qcow2 128G", false, CustomRomActivity.this);
|
||||
drive.setText(AppConfig.vmFolder + vmID + "/disk.qcow2");
|
||||
} else {
|
||||
driveLayout.setEndIconDrawable(R.drawable.round_add_24);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
VectrasApp.prepareDataForAppConfig(activity);
|
||||
|
|
@ -674,7 +729,8 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
@Override
|
||||
public void run() {
|
||||
loadingPb.setVisibility(View.GONE);
|
||||
icon.setText(AppConfig.vmFolder + vmID + "/thumbnail.webp");
|
||||
ivAddThubnail.setImageResource(R.drawable.round_edit_24);
|
||||
thumbnailPath = AppConfig.vmFolder + vmID + "/thumbnail.webp";
|
||||
}
|
||||
};
|
||||
activity.runOnUiThread(runnable);
|
||||
|
|
@ -712,6 +768,9 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
if (MainSettingsManager.copyFile(activity)) {
|
||||
String cdromPath = AppConfig.vmFolder + vmID + "/" + selectedFilePath.getName();
|
||||
cdrom.setText(cdromPath);
|
||||
cdromLayout.setEndIconMode(TextInputLayout.END_ICON_CUSTOM);
|
||||
cdromLayout.setEndIconDrawable(R.drawable.close_24px);
|
||||
setOnClick();
|
||||
|
||||
//String qemuText = qemu.getText().toString();
|
||||
//String cdromParam = "-drive index=1,media=cdrom,file='" + cdromPath + "'";
|
||||
|
|
@ -982,9 +1041,9 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
|
||||
private void startCreateNewVM() {
|
||||
if (modify) {
|
||||
VMManager.editVM(Objects.requireNonNull(title.getText()).toString(), Objects.requireNonNull(icon.getText()).toString(), Objects.requireNonNull(drive.getText()).toString(), MainSettingsManager.getArch(activity), Objects.requireNonNull(cdrom.getText()).toString(), Objects.requireNonNull(qemu.getText()).toString(), getIntent().getIntExtra("POS", 0));
|
||||
VMManager.editVM(Objects.requireNonNull(title.getText()).toString(), thumbnailPath, Objects.requireNonNull(drive.getText()).toString(), MainSettingsManager.getArch(activity), Objects.requireNonNull(cdrom.getText()).toString(), Objects.requireNonNull(qemu.getText()).toString(), getIntent().getIntExtra("POS", 0));
|
||||
} else {
|
||||
VMManager.createNewVM(Objects.requireNonNull(title.getText()).toString(), Objects.requireNonNull(icon.getText()).toString(), Objects.requireNonNull(drive.getText()).toString(), MainSettingsManager.getArch(activity), Objects.requireNonNull(cdrom.getText()).toString(), Objects.requireNonNull(qemu.getText()).toString(), vmID);
|
||||
VMManager.createNewVM(Objects.requireNonNull(title.getText()).toString(), thumbnailPath, Objects.requireNonNull(drive.getText()).toString(), MainSettingsManager.getArch(activity), Objects.requireNonNull(cdrom.getText()).toString(), Objects.requireNonNull(qemu.getText()).toString(), vmID);
|
||||
}
|
||||
|
||||
created = true;
|
||||
|
|
@ -1108,19 +1167,20 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
setDefault();
|
||||
drive.setText(_getDiskFile);
|
||||
} else {
|
||||
if (Objects.requireNonNull(getIntent().getStringExtra("romextra")).contains(getIntent().getStringExtra("finalromfilename"))) {
|
||||
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(getIntent().getStringExtra("romextra").replaceAll("OhnoIjustrealizeditsmidnightandIstillhavetodothis", AppConfig.vmFolder + vmID + "/"));
|
||||
qemu.setText(Objects.requireNonNull(getIntent().getStringExtra("romextra")).replaceAll("OhnoIjustrealizeditsmidnightandIstillhavetodothis", AppConfig.vmFolder + vmID + "/"));
|
||||
}
|
||||
}
|
||||
icon.setText(getIntent().getStringExtra("romicon"));
|
||||
if (!Objects.requireNonNull(getIntent().getStringExtra("romicon")).isEmpty()) {
|
||||
File imgFile = new File(getIntent().getStringExtra("romicon"));
|
||||
File imgFile = new File(Objects.requireNonNull(getIntent().getStringExtra("romicon")));
|
||||
if (imgFile.exists()) {
|
||||
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
|
||||
ivIcon.setImageBitmap(myBitmap);
|
||||
thumbnailPath = getIntent().getStringExtra("romicon");
|
||||
ivAddThubnail.setImageResource(R.drawable.round_edit_24);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
@ -1173,17 +1233,28 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
}
|
||||
|
||||
if (jObj.has("icon") && !jObj.isNull("icon")) {
|
||||
icon.setText(AppConfig.vmFolder + vmID + "/" + jObj.getString("icon"));
|
||||
ivAddThubnail.setImageResource(R.drawable.round_edit_24);
|
||||
thumbnailPath = AppConfig.vmFolder + vmID + "/" + jObj.getString("icon");
|
||||
ImageView ivIcon = findViewById(R.id.ivIcon);
|
||||
Bitmap bmImg = BitmapFactory.decodeFile(AppConfig.vmFolder
|
||||
+ vmID + "/" + jObj.getString("icon"));
|
||||
ivIcon.setImageBitmap(bmImg);
|
||||
} 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")) {
|
||||
|
|
@ -1234,6 +1305,12 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
||||
if (Objects.requireNonNull(drive.getText()).toString().isEmpty()) {
|
||||
driveLayout.setEndIconDrawable(R.drawable.round_add_24);
|
||||
} else {
|
||||
driveLayout.setEndIconDrawable(R.drawable.more_vert_24px);
|
||||
}
|
||||
}
|
||||
|
||||
private void selectedDiskFile(Uri _content_describer, boolean _addtodrive) {
|
||||
|
|
@ -1264,6 +1341,7 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
LinearLayout custom = findViewById(R.id.custom);
|
||||
if (_addtodrive) {
|
||||
drive.setText(AppConfig.vmFolder + vmID + "/" + selectedFilePath.getName());
|
||||
driveLayout.setEndIconDrawable(R.drawable.more_vert_24px);
|
||||
}
|
||||
loadingPb.setVisibility(View.VISIBLE);
|
||||
custom.setVisibility(View.GONE);
|
||||
|
|
@ -1317,6 +1395,7 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
}).start();
|
||||
} else {
|
||||
drive.setText(selectedFilePath.getPath());
|
||||
driveLayout.setEndIconDrawable(R.drawable.more_vert_24px);
|
||||
loadingPb.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
|
|
@ -1344,6 +1423,18 @@ public class CustomRomActivity extends AppCompatActivity {
|
|||
}
|
||||
}
|
||||
|
||||
private void setOnClick() {
|
||||
cdromLayout.setEndIconOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (!Objects.requireNonNull(cdrom.getText()).toString().isEmpty()) {
|
||||
cdrom.setText("");
|
||||
cdromLayout.setEndIconMode(TextInputLayout.END_ICON_NONE);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
super.onBackPressed();
|
||||
|
|
|
|||
|
|
@ -95,6 +95,12 @@ public class CreateImageDialogFragment extends DialogFragment {
|
|||
imageSize.getText().toString() + "G", true, getActivity());
|
||||
if (customRom)
|
||||
CustomRomActivity.drive.setText(AppConfig.maindirpath + "IMG/" + imageName.getText().toString() + ".qcow2");
|
||||
try {
|
||||
CustomRomActivity.driveLayout.setEndIconDrawable(R.drawable.more_vert_24px);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
dismiss();
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -135,6 +135,14 @@ public class AdapterMainRoms extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
|||
bottomSheetDialog.cancel();
|
||||
}
|
||||
});
|
||||
Button removeRomBtn = v.findViewById(R.id.removeRomBtn);
|
||||
removeRomBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
VMManager.deleteVMDialog(current.itemName, position, MainActivity.activity);
|
||||
bottomSheetDialog.cancel();
|
||||
}
|
||||
});
|
||||
bottomSheetDialog.show();
|
||||
}
|
||||
});
|
||||
|
|
@ -150,126 +158,7 @@ public class AdapterMainRoms extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
|||
myHolder.cdRoms.setOnLongClickListener(new View.OnLongClickListener() {
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
AlertDialog ad;
|
||||
ad = new AlertDialog.Builder(MainActivity.activity, R.style.MainDialogTheme).create();
|
||||
ad.setTitle(MainActivity.activity.getString(R.string.remove)+ " " + current.itemName);
|
||||
ad.setMessage(MainActivity.activity.getString(R.string.are_you_sure));
|
||||
ad.setButton(Dialog.BUTTON_NEGATIVE, MainActivity.activity.getString(R.string.remove) + " " + current.itemName, new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
VMManager.pendingPosition = position;
|
||||
VMManager.pendingJsonContent = VectrasApp.readFile(AppConfig.maindirpath + "roms-data.json");
|
||||
|
||||
File file = new File(current.itemPath);
|
||||
File file2 = new File(current.itemDrv1);
|
||||
Pattern pattern = Pattern.compile("-drive index=1,media=cdrom,file='([^']*)'");
|
||||
Matcher matcher = pattern.matcher(current.itemExtra);
|
||||
|
||||
AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.activity, R.style.MainDialogTheme).create();
|
||||
alertDialog.setTitle("Keep files?");
|
||||
alertDialog.setMessage("Do you want to keep this ROM file and CD ROM file?");
|
||||
alertDialog.setCancelable(false);
|
||||
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Keep", new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
VMManager.hideVMIDWithPosition();
|
||||
}
|
||||
});
|
||||
alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Remove all", new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
isKeptSomeFiles = false;
|
||||
//String _romsdata = VectrasApp.readFile(AppConfig.maindirpath + "roms-data.json").replace("\\/", "/");
|
||||
//if (matcher.find()) {
|
||||
// We found the -drive pattern and its file path.
|
||||
//if (!_romsdata.contains(matcher.group(1))) {
|
||||
//File cdrom = new File(matcher.group(1));
|
||||
|
||||
//try {
|
||||
//boolean deleted = cdrom.delete();
|
||||
//if(!deleted) {
|
||||
// The file wasn't successfully deleted.
|
||||
// Handle this case, maybe the file didn't exist or was read only.
|
||||
//}
|
||||
//} catch (Exception e) {
|
||||
//UIUtils.toastLong(MainActivity.activity, e.toString());
|
||||
//}
|
||||
//} else {
|
||||
//isKeptSomeFiles = true;
|
||||
//}
|
||||
|
||||
//} else {
|
||||
// The pattern wasn't found in the current item's extra text.
|
||||
// Handle the case where the -drive pattern doesn't match.
|
||||
//}
|
||||
|
||||
// if (!_romsdata.contains(current.itemPath)) {
|
||||
// try {
|
||||
// file.delete();
|
||||
// } catch (Exception e) {
|
||||
// UIUtils.toastLong(MainActivity.activity, e.toString());
|
||||
// } finally {
|
||||
// }
|
||||
// } else {
|
||||
// isKeptSomeFiles = true;
|
||||
// }
|
||||
//
|
||||
// if (!_romsdata.contains(current.itemDrv1)) {
|
||||
// try {
|
||||
// file2.delete();
|
||||
// } catch (Exception e) {
|
||||
// UIUtils.toastLong(MainActivity.activity, e.toString());
|
||||
// } finally {
|
||||
// }
|
||||
// } else {
|
||||
// isKeptSomeFiles = true;
|
||||
// }
|
||||
|
||||
VMManager.deleteVM();
|
||||
|
||||
// if (!_romsdata.contains(AppConfig.maindirpath + "roms/" + current.itemName)) {
|
||||
// VectrasApp.deleteDirectory(AppConfig.maindirpath + "roms/" + current.itemName);
|
||||
// } else {
|
||||
// isKeptSomeFiles = true;
|
||||
// }
|
||||
//
|
||||
// if (!_romsdata.contains((AppConfig.maindirpath + "roms/" + current.itemName).replaceAll(" ", "."))) {
|
||||
// VectrasApp.deleteDirectory((AppConfig.maindirpath + "roms/" + current.itemName).replaceAll(" ", "."));
|
||||
// } else {
|
||||
// isKeptSomeFiles = true;
|
||||
// }
|
||||
|
||||
if (isKeptSomeFiles && VectrasApp.readFile(AppConfig.maindirpath + "roms-data.json").contains("{")) {
|
||||
VectrasApp.oneDialog(MainActivity.activity.getString(R.string.keep), MainActivity.activity.getString(R.string.kept_some_files), true, false, MainActivity.activity);
|
||||
}
|
||||
}
|
||||
});
|
||||
alertDialog.show();
|
||||
|
||||
MainActivity.mMainAdapter = new AdapterMainRoms(MainActivity.activity, MainActivity.data);
|
||||
MainActivity.data.remove(position);
|
||||
MainActivity.mRVMainRoms.setAdapter(MainActivity.mMainAdapter);
|
||||
MainActivity.mRVMainRoms.setLayoutManager(new GridLayoutManager(MainActivity.activity, 2));
|
||||
MainActivity.jArray.remove(position);
|
||||
try {
|
||||
Writer output = null;
|
||||
File jsonFile = new File(AppConfig.maindirpath + "roms-data" + ".json");
|
||||
output = new BufferedWriter(new FileWriter(jsonFile));
|
||||
output.write(MainActivity.jArray.toString());
|
||||
output.close();
|
||||
} catch (Exception e) {
|
||||
UIUtils.toastLong(MainActivity.activity, e.toString());
|
||||
}
|
||||
UIUtils.toastLong(MainActivity.activity, current.itemName + context.getString(R.string.are_removed_successfully));
|
||||
if (!VectrasApp.readFile(AppConfig.maindirpath + "roms-data.json").contains("{")) {
|
||||
MainActivity.mdatasize2();
|
||||
}
|
||||
return;
|
||||
}
|
||||
});
|
||||
ad.setButton(Dialog.BUTTON_POSITIVE, MainActivity.activity.getString(R.string.cancel), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
return;
|
||||
}
|
||||
});
|
||||
ad.show();
|
||||
VMManager.deleteVMDialog(current.itemName, position, MainActivity.activity);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.vectras.vm;
|
|||
import static com.vectras.vm.VectrasApp.isFileExists;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
|
|
@ -10,17 +11,24 @@ import android.net.Uri;
|
|||
import android.util.Log;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.vectras.qemu.MainSettingsManager;
|
||||
import com.vectras.vm.MainRoms.AdapterMainRoms;
|
||||
import com.vectras.vm.utils.UIUtils;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.Writer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Objects;
|
||||
import java.util.Random;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class VMManager {
|
||||
|
||||
|
|
@ -33,6 +41,7 @@ public class VMManager {
|
|||
public static String pendingVMID = "";
|
||||
public static int pendingPosition = 0;
|
||||
public static int restoredVMs = 0;
|
||||
public static boolean isKeptSomeFiles = false;
|
||||
|
||||
public static void createNewVM(String name, String thumbnail, String drive, String arch, String cdrom, String params, String vmID) {
|
||||
mapForCreateNewVM.clear();
|
||||
|
|
@ -82,6 +91,64 @@ public class VMManager {
|
|||
VectrasApp.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) {
|
||||
AlertDialog ad = new AlertDialog.Builder(_activity, R.style.MainDialogTheme).create();
|
||||
ad.setTitle(_activity.getString(R.string.remove)+ " " + _vmName);
|
||||
ad.setMessage(_activity.getString(R.string.are_you_sure));
|
||||
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");
|
||||
|
||||
AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.activity, R.style.MainDialogTheme).create();
|
||||
alertDialog.setTitle(_activity.getString(R.string.keep_files_question_mark));
|
||||
alertDialog.setMessage(_activity.getString(R.string.do_you_want_to_keep_this_ROM_file_and_CD_ROM_file));
|
||||
alertDialog.setCancelable(false);
|
||||
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, _activity.getString(R.string.keep), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
hideVMIDWithPosition();
|
||||
}
|
||||
});
|
||||
alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, _activity.getString(R.string.remove_all), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
});
|
||||
alertDialog.show();
|
||||
|
||||
MainActivity.mMainAdapter = new AdapterMainRoms(MainActivity.activity, MainActivity.data);
|
||||
MainActivity.data.remove(_position);
|
||||
MainActivity.mRVMainRoms.setAdapter(MainActivity.mMainAdapter);
|
||||
MainActivity.mRVMainRoms.setLayoutManager(new GridLayoutManager(MainActivity.activity, 2));
|
||||
MainActivity.jArray.remove(_position);
|
||||
try {
|
||||
Writer output = null;
|
||||
File jsonFile = new File(AppConfig.maindirpath + "roms-data" + ".json");
|
||||
output = new BufferedWriter(new FileWriter(jsonFile));
|
||||
output.write(MainActivity.jArray.toString());
|
||||
output.close();
|
||||
} catch (Exception e) {
|
||||
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("{")) {
|
||||
MainActivity.mdatasize2();
|
||||
}
|
||||
}
|
||||
});
|
||||
ad.setButton(Dialog.BUTTON_POSITIVE, _activity.getString(R.string.cancel), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
ad.dismiss();
|
||||
}
|
||||
});
|
||||
ad.show();
|
||||
}
|
||||
|
||||
public static String idGenerator() {
|
||||
String _result = startRamdomVMID();
|
||||
|
||||
|
|
@ -155,7 +222,7 @@ public class VMManager {
|
|||
if (!finalJson.contains(_filelist.get((int)(_startRepeat)))) {
|
||||
VectrasApp.deleteDirectory(_filelist.get((int)(_startRepeat)));
|
||||
} else {
|
||||
AdapterMainRoms.isKeptSomeFiles = true;
|
||||
isKeptSomeFiles = true;
|
||||
hideVMID(pendingVMID);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue