From a6d75076d59964d54238a0855255a2ba3296cd8a Mon Sep 17 00:00:00 2001 From: Daniel C Date: Sat, 20 Jan 2024 16:15:18 -0500 Subject: [PATCH] Complete support for legacy multiple import --- .gitmodules | 3 + .idea/vcs.xml | 1 + app/build.gradle | 4 +- .../main/java/dev/danielc/fujiapp/LibU.java | 2 +- .../dev/danielc/fujiapp/MainActivity.java | 65 +- .../main/java/dev/danielc/fujiapp/Tester.java | 1 - .../main/java/dev/danielc/fujiapp/Viewer.java | 2 +- app/src/main/java/libui/LibUI.java | 2 +- .../res/drawable/baseline_folder_open_24.xml | 5 + .../res/drawable/baseline_terminal_24.xml | 5 + app/src/main/res/layout/activity_main.xml | 8 +- lib/Android.mk | 8 +- lib/backend.h | 3 + lib/fuji.c | 25 +- lib/fuji.h | 2 + lib/lib.c | 40 +- lib/libui.c | 129 +- lib/libuifw | 1 + lib/scripts.c | 8 +- lib/ui.h | 4015 ----------------- lib/ui_android.h | 84 - lib/viewer.c | 51 +- 22 files changed, 270 insertions(+), 4194 deletions(-) create mode 100644 app/src/main/res/drawable/baseline_folder_open_24.xml create mode 100644 app/src/main/res/drawable/baseline_terminal_24.xml create mode 160000 lib/libuifw delete mode 100644 lib/ui.h delete mode 100644 lib/ui_android.h diff --git a/.gitmodules b/.gitmodules index 043e81d..75fe80e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ +[submodule "lib/libuifw"] + path = lib/libuifw + url = https://github.com/petabyt/libuifw.git [submodule "lib/camlib"] path = lib/camlib url = https://github.com/petabyt/camlib diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 41f2ed2..db3efac 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -3,6 +3,7 @@ + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 5349ce8..da49d21 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -42,6 +42,7 @@ dependencies { implementation 'androidx.recyclerview:recyclerview:1.1.0' } +/* // https://github.com/Dushistov/flapigen-rs/blob/master/android-example/app/build.gradle def rustBasePath = "../rust/" def archTriplets = [ @@ -59,4 +60,5 @@ archTriplets.each { arch, target -> rust.dependsOn "cargo-build-${arch}" } -//tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn "rust" } +tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn "rust" } +*/ diff --git a/app/src/main/java/dev/danielc/fujiapp/LibU.java b/app/src/main/java/dev/danielc/fujiapp/LibU.java index e0203b3..e37acb1 100644 --- a/app/src/main/java/dev/danielc/fujiapp/LibU.java +++ b/app/src/main/java/dev/danielc/fujiapp/LibU.java @@ -116,4 +116,4 @@ public static String readFileFromAssets(Context ctx, String file) throws Excepti throw e; } } -} +} \ No newline at end of file diff --git a/app/src/main/java/dev/danielc/fujiapp/MainActivity.java b/app/src/main/java/dev/danielc/fujiapp/MainActivity.java index a91e5b7..6de2c0d 100644 --- a/app/src/main/java/dev/danielc/fujiapp/MainActivity.java +++ b/app/src/main/java/dev/danielc/fujiapp/MainActivity.java @@ -6,9 +6,11 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.net.ConnectivityManager; +import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Looper; +import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; @@ -17,9 +19,10 @@ import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; +import java.io.File; + import camlib.SimpleSocket; import camlib.WiFiComm; -import libui.LibU; import libui.LibUI; public class MainActivity extends AppCompatActivity { @@ -54,16 +57,10 @@ public void onClick(View v) { } }); - findViewById(R.id.scripts).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Backend.cFujiScriptsScreen(MainActivity.this); - } - }); - - ((TextView)findViewById(R.id.bottomText)).setText(getString(R.string.url) + "\n" + - "Download location: " + Backend.getDownloads() + "\n" + - getString(R.string.motd_thing)); + TextView bottomText = ((TextView)findViewById(R.id.bottomText)); + bottomText.append(getString(R.string.url) + "\n"); + bottomText.append("Download location: " + Backend.getDownloads() + "\n"); + bottomText.append(getString(R.string.motd_thing) + " " + BuildConfig.VERSION_NAME); findViewById(R.id.test_suite).setOnClickListener(new View.OnClickListener() { @Override @@ -115,11 +112,55 @@ public void run() { @Override public boolean onOptionsItemSelected(MenuItem item) { - return LibUI.handleOptions(item, false); + if (item.getTitle() == "open") { + + File[] fileList; + File file = new File(Backend.getDownloads()); + if (!file.isDirectory()) { + return super.onOptionsItemSelected(item); + } + + fileList = file.listFiles(); + String mime = "*/*"; + String path = Backend.getDownloads(); + if (fileList.length != 0) { + path = fileList[0].getPath(); + mime = "image/*"; + } + + if (Viewer.downloadedFilename != null) { + path = Viewer.downloadedFilename; + mime = "image/*"; + } + + Intent intent = new Intent(); + intent.setAction(Intent.ACTION_VIEW); + intent.setDataAndType(Uri.parse(path), mime); + startActivity(intent); + } else if (item.getTitle() == "script") { + Backend.cFujiScriptsScreen(MainActivity.this); + } else { + return LibUI.handleOptions(item, false); + } + + return super.onOptionsItemSelected(item); } @Override public void onBackPressed() { LibUI.handleBack(false); } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuItem menuItem = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, "open"); + menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); + menuItem.setIcon(R.drawable.baseline_folder_open_24); + + menuItem = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, "script"); + menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); + menuItem.setIcon(R.drawable.baseline_terminal_24); + + return super.onCreateOptionsMenu(menu); + } } diff --git a/app/src/main/java/dev/danielc/fujiapp/Tester.java b/app/src/main/java/dev/danielc/fujiapp/Tester.java index 18e2e3e..5b76492 100644 --- a/app/src/main/java/dev/danielc/fujiapp/Tester.java +++ b/app/src/main/java/dev/danielc/fujiapp/Tester.java @@ -6,7 +6,6 @@ import androidx.appcompat.app.AppCompatActivity; import android.content.ClipData; -import android.os.Environment; import android.util.Log; import android.content.Intent; import android.text.Html; diff --git a/app/src/main/java/dev/danielc/fujiapp/Viewer.java b/app/src/main/java/dev/danielc/fujiapp/Viewer.java index 0d84d5e..f05db9e 100644 --- a/app/src/main/java/dev/danielc/fujiapp/Viewer.java +++ b/app/src/main/java/dev/danielc/fujiapp/Viewer.java @@ -76,7 +76,7 @@ public static void createDir(String directoryPath) { } } - String downloadedFilename = null; + public static String downloadedFilename = null; // Must be ran on UI thread public void writeFile(String filename, byte[] data) { diff --git a/app/src/main/java/libui/LibUI.java b/app/src/main/java/libui/LibUI.java index d2f38ef..b7a1f7d 100644 --- a/app/src/main/java/libui/LibUI.java +++ b/app/src/main/java/libui/LibUI.java @@ -58,7 +58,7 @@ public class LibUI { public static Boolean useActionBar = true; - public static void start(AppCompatActivity act) { + public static void start(Activity act) { ctx = (Context)act; waitUntilActivityLoaded(act); } diff --git a/app/src/main/res/drawable/baseline_folder_open_24.xml b/app/src/main/res/drawable/baseline_folder_open_24.xml new file mode 100644 index 0000000..e8154ef --- /dev/null +++ b/app/src/main/res/drawable/baseline_folder_open_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/baseline_terminal_24.xml b/app/src/main/res/drawable/baseline_terminal_24.xml new file mode 100644 index 0000000..36c00d7 --- /dev/null +++ b/app/src/main/res/drawable/baseline_terminal_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index b717ed0..6358216 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -27,19 +27,13 @@ android:layout_height="wrap_content" android:text="Connect" /> -