package de.vier_bier.habpanelviewer.help; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import androidx.appcompat.app.ActionBar; import androidx.appcompat.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import com.mukesh.MarkdownView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import de.vier_bier.habpanelviewer.Constants; import de.vier_bier.habpanelviewer.R; import de.vier_bier.habpanelviewer.ScreenControllingActivity; import de.vier_bier.habpanelviewer.UiUtil; /** * Activity showing the help markdown file. */ public class HelpActivity extends ScreenControllingActivity { private MenuItem mForumItem; private MenuItem mWikiItem; private MenuItem mFileItem; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_help); Toolbar myToolbar = findViewById(R.id.toolbar); setSupportActionBar(myToolbar); ActionBar ab = getSupportActionBar(); if (ab != null) { ab.setDisplayHomeAsUpEnabled(true); } final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); String theme = prefs.getString(Constants.PREF_THEME, "dark"); if ("dark".equals(theme)) { myToolbar.setPopupTheme(R.style.Theme_AppCompat_NoActionBar); } else { myToolbar.setPopupTheme(R.style.Theme_AppCompat_Light_NoActionBar); } showHelp(); } private void showHelp() { if (mFileItem != null) { mFileItem.setEnabled(false); } if (mForumItem != null) { mForumItem.setEnabled(true); } if (mWikiItem != null) { mWikiItem.setEnabled(true); } final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); String theme = prefs.getString(Constants.PREF_THEME, "dark"); loadMarkdownFromAssets(getString(R.string.helpFile), "dark".equals(theme)); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.help_toolbar_menu, menu); mForumItem = menu.findItem(R.id.action_goto_forum); mWikiItem = menu.findItem(R.id.action_goto_wiki); mFileItem = menu.findItem(R.id.action_show_help); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_goto_forum) { mFileItem.setEnabled(true); mWikiItem.setEnabled(true); mForumItem.setEnabled(false); final MarkdownView markdownView = findViewById(R.id.activity_help_webview); markdownView.loadUrl("https://community.openhab.org/t/habpanelviewer/34112/"); return true; } if (id == R.id.action_goto_wiki) { mFileItem.setEnabled(true); mWikiItem.setEnabled(false); mForumItem.setEnabled(true); final MarkdownView markdownView = findViewById(R.id.activity_help_webview); markdownView.loadUrl("https://github.com/vbier/habpanelviewer/wiki"); return true; } if (id == R.id.action_show_help) { showHelp(); return true; } return super.onOptionsItemSelected(item); } private void loadMarkdownFromAssets(String assetsFilePath, boolean dark) { try { StringBuilder buf = new StringBuilder(); if (dark) { buf.append("<style> body { background:black; color:white } a { color: lightblue; } </style>\n"); } InputStream json = getAssets().open(assetsFilePath); BufferedReader in = new BufferedReader(new InputStreamReader(json, StandardCharsets.UTF_8)); String str; while((str = in.readLine()) != null) { buf.append(str).append("\n"); } in.close(); final MarkdownView markdownView = findViewById(R.id.activity_help_webview); markdownView.setMarkDownText(buf.toString()); } catch (IOException var6) { var6.printStackTrace(); } } @Override public View getScreenOnView() { return findViewById(R.id.activity_help_webview); } }