Skip to content

Commit de8c01d

Browse files
committed
Add custom OS/entry support
* also close the app after an OS or lk install
1 parent 574376c commit de8c01d

File tree

7 files changed

+57
-9
lines changed

7 files changed

+57
-9
lines changed

app/src/main/java/org/androidbootmanager/app/roms/ROMsList.java

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ public List<ROM> getROMs() {
2929
ROM r = new ROM();
3030
r.scriptname = sn;
3131
r.fullPath = "/data/data/org.androidbootmanager.app/assets/Scripts/add_os/" + codename + "/" + r.scriptname;
32+
ArrayList<String> a;
33+
int b;
3234
switch (r.scriptname) {
3335
case "add_ubuntutouch_systemimage_haliumboot.sh":
3436
//noinspection SpellCheckingInspection
@@ -42,13 +44,40 @@ public List<ROM> getROMs() {
4244
r.parts.add(c.getString(R.string.select_part, c.getString(R.string.data_part)));
4345
r.strings = new HashMap<>();
4446
r.strings.put(c.getString(R.string.enter_rom_name), "");
45-
ArrayList<String> a = new ArrayList<String>(Arrays.asList(Objects.requireNonNull(SuFile.open("/data/abm/bootset/db/entries/").list())));
46-
a.removeIf((b) -> !b.contains("rom"));
47-
a.sort((b, c) -> Integer.compare(Integer.parseInt(b.replace("rom","").replace(".conf","")), Integer.parseInt(c.replace("rom","").replace(".conf",""))));
48-
int b = a.size() > 0 ? Integer.parseInt(a.get(a.size()-1).replace("rom","").replace(".conf",""))+1 : 0;
47+
a = new ArrayList<>(Arrays.asList(Objects.requireNonNull(SuFile.open("/data/abm/bootset/db/entries/").list())));
48+
a.removeIf((c) -> !c.contains("rom"));
49+
a.sort((c, d) -> Integer.compare(Integer.parseInt(c.replace("rom","").replace(".conf","")), Integer.parseInt(d.replace("rom","").replace(".conf",""))));
50+
b = a.size() > 0 ? Integer.parseInt(a.get(a.size()-1).replace("rom","").replace(".conf",""))+1 : 0;
4951
r.strings.put(c.getString(R.string.enter_rom_folder), "rom" + b);
5052
r.gen = (imodel, menuName, folderName) -> imodel.setCmdline(Objects.requireNonNull(imodel.getROM().getValue()).fullPath + " '" + folderName + "' '" + menuName + "' " + Objects.requireNonNull(imodel.getParts().getValue()).get(0) + " " + imodel.getParts().getValue().get(1) + " /data/data/org.androidbootmanager.app/cache/system.img /data/data/org.androidbootmanager.app/cache/halium-boot.img");
5153
break;
54+
case "other_os.sh":
55+
r.viewname = c.getString(R.string.other_os);
56+
r.requiredFiles = new HashMap<>();
57+
r.requiredFiles.put("boot.img", c.getString(R.string.select_boot));
58+
r.parts = new ArrayList<>();
59+
r.strings = new HashMap<>();
60+
r.strings.put(c.getString(R.string.enter_rom_name), "");
61+
a = new ArrayList<>(Arrays.asList(Objects.requireNonNull(SuFile.open("/data/abm/bootset/db/entries/").list())));
62+
a.removeIf((c) -> !c.contains("rom"));
63+
a.sort((c, d) -> Integer.compare(Integer.parseInt(c.replace("rom","").replace(".conf","")), Integer.parseInt(d.replace("rom","").replace(".conf",""))));
64+
b = a.size() > 0 ? Integer.parseInt(a.get(a.size()-1).replace("rom","").replace(".conf",""))+1 : 0;
65+
r.strings.put(c.getString(R.string.enter_rom_folder), "rom" + b);
66+
r.gen = (imodel, menuName, folderName) -> imodel.setCmdline(Objects.requireNonNull(imodel.getROM().getValue()).fullPath + " '" + folderName + "' '" + menuName + "' /data/data/org.androidbootmanager.app/cache/boot.img");
67+
break;
68+
case "entry_only.sh":
69+
r.viewname = c.getString(R.string.empty_entry);
70+
r.requiredFiles = new HashMap<>();
71+
r.parts = new ArrayList<>();
72+
r.strings = new HashMap<>();
73+
r.strings.put(c.getString(R.string.enter_rom_name), "");
74+
a = new ArrayList<>(Arrays.asList(Objects.requireNonNull(SuFile.open("/data/abm/bootset/db/entries/").list())));
75+
a.removeIf((c) -> !c.contains("rom"));
76+
a.sort((c, d) -> Integer.compare(Integer.parseInt(c.replace("rom","").replace(".conf","")), Integer.parseInt(d.replace("rom","").replace(".conf",""))));
77+
b = a.size() > 0 ? Integer.parseInt(a.get(a.size()-1).replace("rom","").replace(".conf",""))+1 : 0;
78+
r.strings.put(c.getString(R.string.enter_rom_folder), "rom" + b);
79+
r.gen = (imodel, menuName, folderName) -> imodel.setCmdline(Objects.requireNonNull(imodel.getROM().getValue()).fullPath + " '" + folderName + "' '" + menuName + "'");
80+
break;
5281
default:
5382
r = null;
5483
break;

app/src/main/java/org/androidbootmanager/app/ui/activities/MainActivity.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
public class MainActivity extends AppCompatActivity {
2828

2929
private AppBarConfiguration mAppBarConfiguration;
30+
public static boolean exit = false;
3031

3132
@Override
3233
protected void onCreate(Bundle savedInstanceState) {
@@ -54,6 +55,12 @@ protected void onCreate(Bundle savedInstanceState) {
5455
NavigationUI.setupWithNavController(navigationView, navController);
5556
}
5657

58+
@Override
59+
protected void onResume() {
60+
super.onResume();
61+
if(exit) finish();
62+
}
63+
5764
@Override
5865
public boolean onSupportNavigateUp() {
5966
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);

app/src/main/java/org/androidbootmanager/app/ui/activities/SplashActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public class SplashActivity extends AppCompatActivity {
3636
protected void onCreate(Bundle savedInstanceState) {
3737
super.onCreate(savedInstanceState);
3838
setContentView(R.layout.activity_splash);
39+
MainActivity.exit = false;
3940
new Thread(() -> {
4041
copyAssets();
4142
runOnUiThread(() -> {

app/src/main/java/org/androidbootmanager/app/ui/addrom/DoAddROMWizardPageFragment.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.topjohnwu.superuser.Shell;
1717

1818
import org.androidbootmanager.app.R;
19+
import org.androidbootmanager.app.ui.activities.MainActivity;
1920
import org.androidbootmanager.app.ui.wizard.WizardViewModel;
2021

2122
import java.util.LinkedList;
@@ -51,7 +52,10 @@ public void run() {
5152
if (!queue.isEmpty()) log.append("\n" + queue.poll());
5253
if (!queue.isEmpty()) handler.post(this); else if (!hdone.get()) handler.postDelayed(this, 50); else if (hdone.get()) {
5354
model.setPositiveText(getString(R.string.ok));
54-
model.setPositiveAction(() -> requireActivity().finish());
55+
model.setPositiveAction(() -> {
56+
MainActivity.exit = true;
57+
requireActivity().finish();
58+
});
5559
}
5660
}
5761
});

app/src/main/java/org/androidbootmanager/app/ui/installer/DoInstallWizardPageFragment.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.topjohnwu.superuser.Shell;
1717

1818
import org.androidbootmanager.app.R;
19+
import org.androidbootmanager.app.ui.activities.MainActivity;
1920
import org.androidbootmanager.app.ui.wizard.WizardViewModel;
2021

2122
import java.util.LinkedList;
@@ -51,7 +52,10 @@ public void run() {
5152
if (!queue.isEmpty()) log.append("\n" + queue.poll());
5253
if (!queue.isEmpty()) handler.post(this); else if (!hdone.get()) handler.postDelayed(this, 50); else if (hdone.get()) {
5354
model.setPositiveText(getString(R.string.ok));
54-
model.setPositiveAction(() -> requireActivity().finish());
55+
model.setPositiveAction(() -> {
56+
MainActivity.exit = true;
57+
requireActivity().finish();
58+
});
5559
}
5660
}
5761
});

app/src/main/res/values/strings.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@
6161
<string name="delete_msg_2">This will delete the configuration file of the ROM %1$s. You need to delete the partitions on the SD card manually to prevent data loss.</string>
6262
<string name="filename">Config file name (No spaces, no file extension)</string>
6363
<string name="add_rom">Add ROM</string>
64+
<string name="other_os">Other OS (boot.img) (Advanced users only!)</string>
65+
<string name="empty_entry">Empty Entry file (Advanced users only!)</string>
6466
<string name="wait">Please wait…</string>
6567
<string name="delete_prog">Deleting…</string>
6668
<string name="convert_prog">Converting…</string>
@@ -76,8 +78,9 @@
7678
<string name="rom_type_add_ut_sysimg_halium_rootfs">Ubuntu Touch (System image, Halium Boot image, Rootfs)</string>
7779
<string name="rom_type_add_ut_sysimg_halium">Ubuntu Touch (System image, Halium Boot image)</string>
7880
<string name="install_ut_halium_boot_systemimage">You are going to install ubuntu touch, using system image and halium boot. Are you sure?</string>
79-
<string name="select_halium_boot">Please select halium boot file</string>
80-
<string name="select_system_image">Please select systemimage</string>
81+
<string name="select_halium_boot">Please select the halium boot image</string>
82+
<string name="select_boot">Please select the boot image</string>
83+
<string name="select_system_image">Please select the system image</string>
8184
<string name="selected">File selected.</string>
8285
<string name="enter_rom_name">Please enter the ROM name for displaying in menu. You may choose freely.</string>
8386
<string name="enter_rom_folder">Please enter the ROM directory name. It may not already exist. If in doubt, keep the default.</string>

0 commit comments

Comments
 (0)