package net.i2p.android.help;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;

import net.i2p.android.router.R;

import java.lang.reflect.Field;

public class BrowserConfigActivity extends ActionBarActivity implements
        BrowserAdapter.OnBrowserSelectedListener {

    /**
     * Whether or not the activity is in two-pane mode, i.e. running on a tablet
     * device.
     */
    private boolean mTwoPane;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_help);

        // Set the action bar
        Toolbar toolbar = (Toolbar) findViewById(R.id.main_toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        if (findViewById(R.id.detail_fragment) != null) {
            // The detail container view will be present only in the
            // large-screen layouts (res/values-large and
            // res/values-sw600dp). If this view is present, then the
            // activity should be in two-pane mode.
            mTwoPane = true;
        }

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.main_fragment, new BrowserListFragment())
                    .commit();
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                onBackPressed();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    // BrowserAdapter.OnBrowserSelected

    @Override
    public void onBrowserSelected(Browser browser) {
        int file;
        if (browser.isKnown) {
            if (browser.isSupported) {
                // Check for embedded browser
                if (browser.packageName.startsWith("net.i2p.android"))
                    file = R.raw.help_embedded_browser;
                else {
                    // Load the configuration guide for this browser
                    try {
                        String name = "help_" + browser.packageName.replace('.', '_');
                        Class res = R.raw.class;
                        Field field = res.getField(name);
                        file = field.getInt(null);
                    } catch (Exception e) {
                        file = R.raw.help_unknown_browser;
                    }
                }
            } else
                file = R.raw.help_unsupported_browser;
        } else
            file = R.raw.help_unknown_browser;
        HelpHtmlFragment configFrag = HelpHtmlFragment.newInstance(file);
        if (mTwoPane) {
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.detail_fragment, configFrag)
                    .commit();
        } else {
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.main_fragment, configFrag)
                    .addToBackStack("config" + browser.packageName)
                    .commit();
        }
    }
}