diff --git a/app/src/main/cpp/baresip.c b/app/src/main/cpp/baresip.c index 797aaa4f..6cde7dcf 100644 --- a/app/src/main/cpp/baresip.c +++ b/app/src/main/cpp/baresip.c @@ -484,3 +484,15 @@ Java_com_tutpro_baresip_MainActivity_contact_1add(JNIEnv *env, jobject thiz, return; } +JNIEXPORT jint JNICALL +Java_com_tutpro_baresip_MainActivity_reload_1config(JNIEnv *env, jobject thiz) { + int err; + err = conf_configure(); + if (err) { + LOGE("failed to reload config %d\n", err); + } else { + LOGD("config reload succeeded"); + } + return err; +} + diff --git a/app/src/main/java/com/tutpro/baresip/EditAccountsActivity.java b/app/src/main/java/com/tutpro/baresip/EditAccountsActivity.java index 4a872cd0..0b9544aa 100644 --- a/app/src/main/java/com/tutpro/baresip/EditAccountsActivity.java +++ b/app/src/main/java/com/tutpro/baresip/EditAccountsActivity.java @@ -67,7 +67,7 @@ public class EditAccountsActivity extends AppCompatActivity { } public boolean onOptionsItemSelected(MenuItem item) { - Intent i = new Intent(this, MainActivity.class); + Intent i = new Intent(); switch (item.getItemId()) { case R.id.save: try { @@ -88,13 +88,11 @@ public class EditAccountsActivity extends AppCompatActivity { e.toString()); } Log.d("Baresip", "Updated accounts file"); - i.putExtra("action", "save"); setResult(RESULT_OK, i); finish(); return true; case R.id.cancel: - i.putExtra("action", "cancel"); - setResult(RESULT_OK, i); + setResult(RESULT_CANCELED, i); finish(); return true; default: diff --git a/app/src/main/java/com/tutpro/baresip/MainActivity.java b/app/src/main/java/com/tutpro/baresip/MainActivity.java index f3812740..26a25a1c 100644 --- a/app/src/main/java/com/tutpro/baresip/MainActivity.java +++ b/app/src/main/java/com/tutpro/baresip/MainActivity.java @@ -1,6 +1,7 @@ package com.tutpro.baresip; import android.Manifest; +import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.content.res.AssetManager; @@ -8,6 +9,7 @@ import android.content.res.Configuration; import android.graphics.Color; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; +import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.*; @@ -200,11 +202,11 @@ public class MainActivity extends AppCompatActivity { } public boolean onOptionsItemSelected(MenuItem item) { - Intent i = new Intent(this, MainActivity.class); + Intent i; switch (item.getItemId()) { case R.id.accounts: - startActivity(new Intent(MainActivity.this, - EditAccountsActivity.class)); + i = new Intent(this, EditAccountsActivity.class); + startActivityForResult(i, 1); return true; case R.id.contacts: startActivity(new Intent(MainActivity.this, @@ -212,8 +214,8 @@ public class MainActivity extends AppCompatActivity { return true; case R.id.config: - startActivity(new Intent(MainActivity.this, - EditConfigActivity.class)); + i = new Intent(this, EditConfigActivity.class); + startActivityForResult(i, 2); return true; case R.id.about: startActivity(new Intent(MainActivity.this, @@ -236,6 +238,37 @@ public class MainActivity extends AppCompatActivity { } } + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == 1) { + if(resultCode == RESULT_OK) { + AlertDialog alertDialog = new AlertDialog.Builder(this).create(); + alertDialog.setTitle("Alert"); + alertDialog.setMessage("You need to restart baresip in order to activate saved accounts!"); + alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }); + alertDialog.show(); + } + if (resultCode == RESULT_CANCELED) { + Log.d("Baresip", "Edit accounts canceled"); + } + } + if (requestCode == 2) { + if(resultCode == RESULT_OK) { + Utils.alertView(this, + "You need to restart baresip in order to activate saved config!"); + reload_config(); + } + if (resultCode == RESULT_CANCELED) { + Log.d("Baresip", "Edit accounts canceled"); + } + } + } + public ArrayList aorStatusList() { ArrayList res = new ArrayList<>(); for (Account a : Accounts) { @@ -535,6 +568,7 @@ public class MainActivity extends AppCompatActivity { public native void ua_hangup(String ua, String call, int code, String reason); static public native void contacts_remove(); static public native void contact_add(String contact); + static public native int reload_config(); static { System.loadLibrary("baresip"); diff --git a/app/src/main/java/com/tutpro/baresip/Utils.java b/app/src/main/java/com/tutpro/baresip/Utils.java index e78505fc..e590ed4b 100644 --- a/app/src/main/java/com/tutpro/baresip/Utils.java +++ b/app/src/main/java/com/tutpro/baresip/Utils.java @@ -1,6 +1,10 @@ package com.tutpro.baresip; +import android.content.Context; +import android.content.DialogInterface; +import android.support.v7.app.AlertDialog; import android.util.Log; +import android.widget.Toast; import java.io.File; import java.io.FileInputStream; @@ -52,4 +56,16 @@ public class Utils { } } + static public void alertView( Context context, String message ) { + AlertDialog alertDialog = new AlertDialog.Builder(context).create(); + alertDialog.setTitle("Alert"); + alertDialog.setMessage(message); + alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }); + alertDialog.show(); + } }