|
|
@@ -13,6 +13,8 @@ import android.support.annotation.NonNull;
|
|
|
import android.support.v4.app.ActivityCompat;
|
|
|
import android.support.v7.app.AlertDialog;
|
|
|
import android.support.v7.app.AppCompatActivity;
|
|
|
+import android.view.Menu;
|
|
|
+import android.view.MenuItem;
|
|
|
import android.webkit.WebChromeClient;
|
|
|
import android.webkit.WebView;
|
|
|
import android.webkit.WebViewClient;
|
|
|
@@ -22,6 +24,7 @@ import com.knacki.mimou.bridge.JavascriptFunction;
|
|
|
import com.knacki.mimou.preference.CredentialHolder;
|
|
|
import com.knacki.mimou.bridge.JsInterface;
|
|
|
import com.knacki.mimou.R;
|
|
|
+import com.knacki.mimou.preference.PreferenceHolder;
|
|
|
import com.knacki.mimou.preference.UserSettings;
|
|
|
|
|
|
import java.util.List;
|
|
|
@@ -31,6 +34,8 @@ public class MainActivity extends AppCompatActivity {
|
|
|
public final static int SMS_PERMISSION_CALLBACK = 42;
|
|
|
protected WebView web;
|
|
|
protected JsInterface interfaceMimouDroid;
|
|
|
+ protected MainActivityMenu menu;
|
|
|
+ protected String currentChannel = null;
|
|
|
public static boolean needReload = true;
|
|
|
private static Logger log = Logger.getLogger(MainActivity.class.getName());
|
|
|
private JsInterface.TypedCallback<Boolean> currentCallback = null;
|
|
|
@@ -47,12 +52,12 @@ public class MainActivity extends AppCompatActivity {
|
|
|
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
|
|
Uri uri = Uri.parse(url);
|
|
|
|
|
|
- log.severe("Loading url " +url);
|
|
|
+ log.fine("Loading url " +url);
|
|
|
if (uri.getHost().equals(getString(R.string.mimouHost))) {
|
|
|
List<String> pathSegments = uri.getPathSegments();
|
|
|
if (pathSegments.size() > 0) {
|
|
|
if (pathSegments.get(0).equals("login") && !url.contains("?phoneAccess=")) {
|
|
|
- CredentialHolder.reset(MainActivity.this);
|
|
|
+ PreferenceHolder.reset(MainActivity.this);
|
|
|
showLogin();
|
|
|
return true;
|
|
|
}
|
|
|
@@ -82,10 +87,26 @@ public class MainActivity extends AppCompatActivity {
|
|
|
reload();
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public boolean onCreateOptionsMenu(Menu m) {
|
|
|
+ getMenuInflater().inflate(R.menu.title_opt, m);
|
|
|
+ menu = new MainActivityMenu(m);
|
|
|
+ menu.setFavoriteEnabled(false);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void uiThread(Runnable e) {
|
|
|
+ new Handler(Looper.getMainLooper()).post(e);
|
|
|
+ }
|
|
|
+
|
|
|
public void reload() {
|
|
|
if (needReload && web != null) {
|
|
|
if (CredentialHolder.hasCredential(this)) {
|
|
|
- final String url = getString(R.string.mimouUrl) + (CredentialHolder.isLocal(this) ? getString(R.string.localUrl) : (getString(R.string.loginUrl) + "/android?phoneAccess=" +CredentialHolder.getToken(this)));
|
|
|
+ final String url;
|
|
|
+ if (CredentialHolder.isLocal(this))
|
|
|
+ url = getString(R.string.mimouUrl) + getString(R.string.localUrl);
|
|
|
+ else
|
|
|
+ url = getString(R.string.mimouUrl) + getString(R.string.loginUrl) + "/android?phoneAccess=" + CredentialHolder.getToken(this);
|
|
|
log.fine("Loading URL: " +url);
|
|
|
web.loadUrl(url);
|
|
|
} else {
|
|
|
@@ -107,6 +128,13 @@ public class MainActivity extends AppCompatActivity {
|
|
|
else
|
|
|
reload();
|
|
|
interfaceMimouDroid.setActivity(this);
|
|
|
+ runJavascript(new JavascriptFunction(JsInterface.ON_APPLICATION_RESUMED));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onPause() {
|
|
|
+ super.onPause();
|
|
|
+ runJavascript(new JavascriptFunction(JsInterface.ON_APPLICATION_PAUSED));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -125,7 +153,7 @@ public class MainActivity extends AppCompatActivity {
|
|
|
}
|
|
|
|
|
|
private void runJavascript(final String js) {
|
|
|
- (new Handler(Looper.getMainLooper())).post(new Runnable() {
|
|
|
+ uiThread(new Runnable() {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
if (web != null)
|
|
|
@@ -153,6 +181,27 @@ public class MainActivity extends AppCompatActivity {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void setCurrentChannel(String channelId) {
|
|
|
+ currentChannel = channelId;
|
|
|
+ UserSettings.previousChanel(this, channelId);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setTitle(final CharSequence title, final Boolean isFavorite) {
|
|
|
+ uiThread(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ setTitle(title);
|
|
|
+
|
|
|
+ if (isFavorite == null) {
|
|
|
+ menu.setFavoriteEnabled(false);
|
|
|
+ } else {
|
|
|
+ menu.setFavoriteEnabled(true);
|
|
|
+ menu.setFavorite(isFavorite);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
private void promptAndroidPermission() {
|
|
|
ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.READ_SMS, Manifest.permission.SEND_SMS}, SMS_PERMISSION_CALLBACK);
|
|
|
}
|
|
|
@@ -194,8 +243,49 @@ public class MainActivity extends AppCompatActivity {
|
|
|
@Override
|
|
|
public void onBackPressed() {
|
|
|
if (UserSettings.backShowMenu(this))
|
|
|
- runJavascript(new JavascriptFunction("onNativeBackPressed"));
|
|
|
+ runJavascript(new JavascriptFunction(JsInterface.TOGGLE_MENU));
|
|
|
else
|
|
|
moveTaskToBack(true);
|
|
|
}
|
|
|
+
|
|
|
+ class MainActivityMenu {
|
|
|
+ protected MenuItem favoriteButton;
|
|
|
+ protected MenuItem menuButton;
|
|
|
+ protected boolean favoriteEnabled;
|
|
|
+ protected boolean isFavorite;
|
|
|
+
|
|
|
+ MainActivityMenu(Menu menu) {
|
|
|
+ favoriteButton = menu.getItem(0);
|
|
|
+ menuButton = menu.getItem(1);
|
|
|
+
|
|
|
+ favoriteButton.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
|
|
+ @Override
|
|
|
+ public boolean onMenuItemClick(MenuItem menuItem) {
|
|
|
+ if (favoriteEnabled && currentChannel != null) {
|
|
|
+ runJavascript(new JavascriptFunction(JsInterface.SET_CHANNEL_FAVORITE).addArgument(currentChannel).addArgument(!isFavorite));
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ menuButton.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
|
|
+ @Override
|
|
|
+ public boolean onMenuItemClick(MenuItem menuItem) {
|
|
|
+ runJavascript(new JavascriptFunction(JsInterface.TOGGLE_MENU));
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setFavoriteEnabled(boolean enabled) {
|
|
|
+ favoriteButton.setVisible(enabled);
|
|
|
+ favoriteEnabled = enabled;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setFavorite(boolean isFav) {
|
|
|
+ isFavorite = isFav;
|
|
|
+ favoriteButton.setTitle(isFav ? "STARRED" : "NOT STARRED");
|
|
|
+ //favoriteButton.setIcon(MainActivity.this.getDrawable(R.drawable.favorite));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|