This commit is contained in:
dgis 2018-12-10 21:30:55 +00:00
parent ae82c3d4b5
commit 537e9238b5
3 changed files with 62 additions and 12 deletions

View file

@ -69,17 +69,32 @@ void mainViewResizeCallback(int x, int y) {
}
}
void fillNullCharacter(const OPENFILENAME *ofn) {
TCHAR * pos = ofn->lpstrFilter;
TCHAR * fillNullCharacter(TCHAR * fileFilter) {
TCHAR * pos = fileFilter;
int length = 0;
if(pos) {
for (;;) {
for (;; pos++, length++) {
if (*pos == 0) {
*pos = _T("|");
if (*(pos + 1) = 0)
if (*(pos + 1) == 0)
break;
}
}
TCHAR * newFileFilter = malloc(length + 1);
TCHAR * newPos = newFileFilter;
pos = fileFilter;
for (;; pos++, newPos++) {
if (*pos == 0) {
*newPos = _T('|');
if (*(pos + 1) == 0) {
*(newPos + 1) = 0;
break;
}
} else
*newPos = *pos;
}
return newFileFilter;
}
return NULL;
}
int mainViewGetOpenFileNameCallback(OPENFILENAME * ofn) {
@ -101,13 +116,15 @@ int mainViewGetOpenFileNameCallback(OPENFILENAME * ofn) {
//
// ofn->nMaxFile = ARRAYSIZEOF(szBuffer);
// ofn->lpstrFile = szBuffer;
fillNullCharacter(ofn);
mainViewCallback(CALLBACK_TYPE_GETOPENFILENAME, ofn->nFilterIndex, ofn->Flags, ofn->lpstrFilter, ofn->lpstrDefExt);
TCHAR * lpstrFilter = fillNullCharacter(ofn->lpstrFilter);
mainViewCallback(CALLBACK_TYPE_GETOPENFILENAME, ofn->nFilterIndex, ofn->Flags, lpstrFilter, ofn->lpstrDefExt);
free(lpstrFilter);
}
int mainViewGetSaveFileNameCallback(OPENFILENAME * ofn) {
fillNullCharacter(ofn);
mainViewCallback(CALLBACK_TYPE_GETSAVEFILENAME, ofn->nFilterIndex, ofn->Flags, ofn->lpstrFilter, ofn->lpstrDefExt);
TCHAR * lpstrFilter = fillNullCharacter(ofn->lpstrFilter);
mainViewCallback(CALLBACK_TYPE_GETSAVEFILENAME, ofn->nFilterIndex, ofn->Flags, lpstrFilter, ofn->lpstrDefExt);
free(lpstrFilter);
}
@ -129,7 +146,10 @@ int mainViewCallback(int type, int param1, int param2, const TCHAR * param3, con
jclass viewToUpdateClass = (*jniEnv)->GetObjectClass(jniEnv, viewToUpdate);
//jmethodID midStr = (*jniEnv)->GetMethodID(jniEnv, viewToUpdateClass, "updateCallback", "()V");
jmethodID midStr = (*jniEnv)->GetMethodID(jniEnv, viewToUpdateClass, "updateCallback", "(IIILjava/lang/String;Ljava/lang/String;)I");
int result = (*jniEnv)->CallIntMethod(jniEnv, viewToUpdate, midStr, type, param1, param2, param3, param4);
jstring utfParam3 = (*jniEnv)->NewStringUTF(jniEnv, param3);
jstring utfParam4 = (*jniEnv)->NewStringUTF(jniEnv, param4);
int result = (*jniEnv)->CallIntMethod(jniEnv, viewToUpdate, midStr, type, param1, param2, utfParam3, utfParam4);
// if(needDetach)
// ret = (*java_machine)->DetachCurrentThread(java_machine);
return result;

View file

@ -1,13 +1,17 @@
package com.regis.cosnier.emu48;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.ViewGroup;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.navigation.NavigationView;
import com.google.android.material.snackbar.Snackbar;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
@ -17,11 +21,16 @@ import androidx.drawerlayout.widget.DrawerLayout;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import java.io.IOException;
import java.io.OutputStream;
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
private static final int INTENT_SETTINGS = 1;
private static final String TAG = "MainActivity";
private MainScreenView mainScreenView;
@Override
@ -222,4 +231,25 @@ public class MainActivity extends AppCompatActivity
super.onDestroy();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(requestCode == MainScreenView.INTENT_GETSAVEFILENAME && resultCode == Activity.RESULT_OK) {
Uri uri = data.getData();
//just as an example, I am writing a String to the Uri I received from the user:
Log.d(TAG, "onActivityResult INTENT_GETSAVEFILENAME " + uri.toString());
// try {
// OutputStream output = getContentResolver().openOutputStream(uri);
//
// output.write(SOME_CONTENT.getBytes());
// output.close();
// }
// catch(IOException e) {
// Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
// }
}
super.onActivityResult(requestCode, resultCode, data);
}
}

View file

@ -243,7 +243,7 @@ public class MainScreenView extends SurfaceView {
final int CALLBACK_TYPE_GETOPENFILENAME = 2;
final int CALLBACK_TYPE_GETSAVEFILENAME = 3;
final int INTENT_GETSAVEFILENAME = 1;
public static int INTENT_GETSAVEFILENAME = 1;
int updateCallback(int type, int param1, int param2, String param3, String param4) {
switch (type) {
case CALLBACK_TYPE_INVALIDATE:
@ -259,7 +259,7 @@ public class MainScreenView extends SurfaceView {
case CALLBACK_TYPE_GETSAVEFILENAME:
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("YOUR FILETYPE"); //not needed, but maybe usefull
//intent.setType("YOUR FILETYPE"); //not needed, but maybe usefull
intent.putExtra(Intent.EXTRA_TITLE, "YOUR FILENAME"); //not needed, but maybe usefull
((Activity)getContext()).startActivityForResult(intent, INTENT_GETSAVEFILENAME);
break;