Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.tim.timapp;
- import android.app.AlertDialog;
- import android.app.Fragment;
- import android.app.FragmentManager;
- import android.content.DialogInterface;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.support.design.widget.NavigationView;
- import android.support.v4.view.GravityCompat;
- import android.support.v4.widget.DrawerLayout;
- import android.support.v7.app.ActionBarDrawerToggle;
- import android.support.v7.app.AppCompatActivity;
- import android.support.v7.widget.Toolbar;
- import android.util.Base64;
- import android.util.Log;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.widget.LinearLayout;
- import com.example.fragments.MainFragments.FillableFragment;
- import com.example.fragments.MainFragments.MainFragment;
- import com.example.fragments.MainFragments.VariableFragments.GeneralSettingsEmptyFragment;
- import com.example.fragments.MainFragments.VariableFragments.GeneralSettingsVariableFragment;
- import com.example.fragments.MainFragments.VariableFragments.StuffManagerEmptyFragment;
- import com.example.fragments.MainFragments.VariableFragments.StuffManagerVariableFragment;
- import com.example.fragments.MainFragments.VariableFragments.VariableFragment;
- import com.example.fragments.MainFragments.WakeUpLightFragment;
- import com.example.fragments.Settings.GeneralSettingsFragment;
- import com.example.fragments.Settings.StuffManagerFragment;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.util.ArrayList;
- public class MainActivity extends AppCompatActivity
- implements NavigationView.OnNavigationItemSelectedListener {
- private static boolean isMainShown = false;
- private static boolean isSettingsShown = false;
- private static boolean doSavePopup = false;
- private static String backTitle = "";
- private String tag = "TEST MA";
- DBHandler dbHandler;
- Menu menu;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- dbHandler = DBHandler.getInstance(this);
- setTitle(getString(R.string.navdrwaer_home));
- setContentView(R.layout.activity_main);
- isMainShown = true;
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
- DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
- ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
- this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
- drawer.setDrawerListener(toggle);
- toggle.syncState();
- NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
- navigationView.setNavigationItemSelectedListener(this);
- // Menu menu = navigationView.getMenu();
- // MenuItem it1 = menu.add(R.id.group1, 1, 2, "TEST DYNAMIC");
- // it1.setIcon(R.drawable.ic_menu_camera);
- FragmentManager fm = getFragmentManager();
- fm.beginTransaction().replace(R.id.content_frame, new MainFragment()).commit();
- float amount = dbHandler.stuffTableSize();
- ArrayList nameArray = dbHandler.stuffLinksNameArrayMethod();
- menu = navigationView.getMenu();
- for (int i=0; i < amount; i++) {
- menu.add(R.id.group1, i, 1, nameArray.get(i).toString());
- // item.setIcon(R.drawable.ic_menu_camera);
- }
- // Way to start app on specific page
- onNavigationItemSelected(menu.findItem(R.id.nav_generalsettings));
- }
- // TODO: 01-Mar-16
- // TODO: 01-Mar-16 Fix and clean onBackPressed
- // TODO: 01-Mar-16
- @Override
- public void onBackPressed() {
- Log.d("TEST", Boolean.toString(doSavePopup));
- FragmentManager fm = getFragmentManager();
- DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
- if (drawer.isDrawerOpen(GravityCompat.START)) {
- drawer.closeDrawer(GravityCompat.START);
- } else if (isSettingsShown) {
- getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
- setTitle(backTitle);
- isSettingsShown = false;
- } else if (!isMainShown) {
- fm.beginTransaction().replace(R.id.content_frame, new MainFragment()).commit();
- setTitle("Home");
- isMainShown = true;
- } else if (doSavePopup) {
- new AlertDialog.Builder(MainActivity.this)
- .setMessage(R.string.generalSettingsLeaving)
- .setTitle("TEST")
- .setCancelable(true)
- .setPositiveButton(R.string.generalSettingsLeavingSave, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- //TODO: Clicked Save, save.
- }
- })
- .setNegativeButton(R.string.generalSettingsLeavingDiscard, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- //TODO: Clicked Discard, discard.
- }
- }).create().show();
- // fm.beginTransaction().replace(R.id.content_frame, new MainFragment()).commit();
- // setTitle("Home");
- isMainShown = true;
- doSavePopup = false;
- //TODO: Tidy up here, from changing to a general doSavePopup thingy.
- } else {
- super.onBackPressed();
- }
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- FragmentManager fm = getFragmentManager();
- isMainShown = false;
- isSettingsShown = true;
- //TODO Change from general-settings page to specific settings page.
- switch (item.getItemId()) {
- case 0:
- fm.beginTransaction().replace(R.id.content_frame, new GeneralSettingsFragment()).addToBackStack("backStack").commit();
- backTitle = getString(R.string.settings);
- setTitle(backTitle + " Settings");
- return true;
- case 1:
- fm.beginTransaction().replace(R.id.content_frame, new GeneralSettingsFragment()).addToBackStack("backStack").commit();
- backTitle = getString(R.string.navdrawer_timelight);
- setTitle(backTitle + " Settings");
- return true;
- case 2:
- fm.beginTransaction().replace(R.id.content_frame, new GeneralSettingsFragment()).addToBackStack("backStack").commit();
- backTitle = getString(R.string.navdrawer_togglelight);
- setTitle(backTitle + " Settings");
- return true;
- case 3:
- fm.beginTransaction().replace(R.id.content_frame, new GeneralSettingsFragment()).addToBackStack("backStack").commit();
- backTitle = getString(R.string.navdrawer_wakeuplight);
- setTitle(backTitle + " Settings");
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- // TODO: 01-Mar-16
- // TODO: 01-Mar-16 Fix and clean onNavigationItemSelected
- // TODO: 01-Mar-16
- @SuppressWarnings("StatementWithEmptyBody")
- @Override
- public boolean onNavigationItemSelected(MenuItem item) {
- FragmentManager fm = getFragmentManager();
- isMainShown = false;
- ArrayList<String> nameArray = dbHandler.stuffLinksNameArrayMethod();
- int id = item.getItemId();
- // if (id == R.id.nav_wakeuplight) {
- // fm.beginTransaction().replace(R.id.content_frame, new WakeUpLightFragment(), getString(R.string.navdrawer_wakeuplight)).commit();
- // setTitle(getString(R.string.navdrawer_wakeuplight));
- // new JSONTask().execute("http://192.168.0.120:8080/json.htm?type=command¶m=getuservariables", "WuL");
- // doSavePopup = true;
- // } else if (id == R.id.nav_togglelights) {
- // fm.beginTransaction().replace(R.id.content_frame, new ToggleLightFragment(), getString(R.string.navdrawer_togglelight)).commit();
- // setTitle(getString(R.string.navdrawer_togglelight));
- // } else if (id == R.id.nav_timelight) {
- // fm.beginTransaction().replace(R.id.content_frame, new TimeLightFragment(), getString(R.string.navdrawer_timelight)).commit();
- // setTitle(getString(R.string.navdrawer_timelight));
- // } else if (id == R.id.nav_generalsettings) {
- // fm.beginTransaction().replace(R.id.content_frame, new GeneralSettingsFragment(), getString(R.string.navdrawer_generalsettings)).commit();
- // setTitle(getString(R.string.navdrawer_generalsettings));
- // } else if (id == R.id.nav_stuffmanager) {
- // fm.beginTransaction().replace(R.id.content_frame, new StuffManagerFragment(), getString(R.string.navdrawer_stuffmanager)).commit();
- // setTitle(getString(R.string.navdrawer_stuffmanager));
- // DrawVariableFragments();
- // }
- // if (id == R.id.nav_generalsettings) {
- // fm.beginTransaction().replace(R.id.content_frame, new GeneralSettingsFragment(), getString(R.string.navdrawer_generalsettings)).commit();
- // setTitle(getString(R.string.navdrawer_generalsettings));
- if (id == R.id.nav_generalsettings) {
- fm.beginTransaction().replace(R.id.content_frame, new GeneralSettingsFragment(), getString(R.string.navdrawer_generalsettings)).commit();
- setTitle(getString(R.string.navdrawer_generalsettings));
- DrawVariableFragments("GeneralSettings", "draw");
- } else if (id == R.id.nav_stuffmanager) {
- fm.beginTransaction().replace(R.id.content_frame, new StuffManagerFragment(), getString(R.string.navdrawer_stuffmanager)).commit();
- setTitle(getString(R.string.navdrawer_stuffmanager));
- DrawVariableFragments("StuffManager", "draw");
- } else if (id == R.id.nav_wakeuplight) {
- // TODO: 02-Mar-16 Remove this
- fm.beginTransaction().replace(R.id.content_frame, new WakeUpLightFragment(), getString(R.string.navdrawer_wakeuplight)).commit();
- setTitle(getString(R.string.navdrawer_wakeuplight));
- } else {
- Bundle args = new Bundle();
- args.putInt("id", id);
- Fragment fillableFragment = new FillableFragment();
- fillableFragment.setArguments(args);
- fm.beginTransaction().replace(R.id.content_frame, fillableFragment, nameArray.get(id)).commit();
- setTitle(nameArray.get(id));
- }
- DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
- drawer.closeDrawer(GravityCompat.START);
- return true;
- }
- public void DrawVariableFragments(String base,String token){
- FragmentManager fm = getFragmentManager();
- ArrayList<String> Data;
- dbHandler = DBHandler.getInstance(this);
- int AmountOfEntries;
- int SettingsContainer;
- Fragment SettingsVariableFragment;
- Fragment SettingsEmptyFragment;
- if (base.equalsIgnoreCase("StuffManager")) {
- Data = new ArrayList<String>() {{add("StuffManager"); add("name"); add("tag"); }};
- SettingsContainer = R.id.FragmentContainer2;
- SettingsVariableFragment = new StuffManagerVariableFragment();
- SettingsEmptyFragment = new StuffManagerEmptyFragment();
- } else if (base.equalsIgnoreCase("GeneralSettings")) {
- Data = new ArrayList<String>() {{add("GeneralSettings"); add("name"); add("ip"); add("port"); add("username"); add("pass"); }};
- SettingsContainer = R.id.FragmentContainerGeneralSettings;
- SettingsVariableFragment = new GeneralSettingsVariableFragment();
- SettingsEmptyFragment = new GeneralSettingsEmptyFragment();
- } else {
- Log.e(tag, "String Base not recognised");
- return;
- }
- AmountOfEntries = dbHandler.returnArray(base, Data.get(1)).size();
- if ((dbHandler.returnArray(base, Data.get(1))).size() == 0 ) {
- fm.beginTransaction().add(SettingsContainer, SettingsEmptyFragment, (base + "EmptyFragment")).commit();
- fm.executePendingTransactions();
- return;
- }
- if (AmountOfEntries > 0) {
- String EmptyFragName = (base + "EmptyFragment");
- if ((fm.findFragmentByTag(EmptyFragName)) != null) {
- fm.beginTransaction().remove(fm.findFragmentByTag(EmptyFragName)).commit();
- fm.executePendingTransactions();
- }
- for (int i = 0; i < AmountOfEntries; i++) {
- ArrayList<String> fragmentData = new ArrayList<>();
- for (int k=1; k < Data.size(); k++) {
- int j=k-1;
- fragmentData.set(j, (dbHandler.returnArray(base, Data.get(k)).get(j)));
- }
- if (token.equalsIgnoreCase("edit")) {
- LinearLayout linearLayout = (LinearLayout) findViewById(SettingsContainer);
- linearLayout.removeAllViews();
- DrawVariableFragments(base ,"draw");
- } else if (token.equalsIgnoreCase("add")) {
- if (fm.findFragmentByTag(fragmentData.get(i)) == null) {
- fm.beginTransaction().add(SettingsContainer, SettingsVariableFragment, fragmentData.get(0)).commit();
- fm.executePendingTransactions();
- if (base.equalsIgnoreCase("StuffManager")) {
- ((StuffManagerVariableFragment) fm
- .findFragmentByTag(fragmentData.get(i)))
- .setText(fragmentData.get(0), fragmentData.get(1));
- } else if (base.equalsIgnoreCase("GeneralSettings")) {
- ((GeneralSettingsVariableFragment) fm
- .findFragmentByTag(fragmentData.get(i)))
- .setText(fragmentData.get(0), fragmentData.get(1), fragmentData.get(2), fragmentData.get(3));
- }
- }
- } else if (token.equalsIgnoreCase("draw")) {
- fm.beginTransaction().add(SettingsContainer, SettingsVariableFragment, fragmentData.get(0)).commit();
- fm.executePendingTransactions();
- if (base.equalsIgnoreCase("StuffManager")) {
- ((StuffManagerVariableFragment) fm
- .findFragmentByTag(fragmentData.get(i)))
- .setText(fragmentData.get(0), fragmentData.get(1));
- } else if (base.equalsIgnoreCase("GeneralSettings")) {
- ((GeneralSettingsVariableFragment) fm
- .findFragmentByTag(fragmentData.get(i)))
- .setText(fragmentData.get(0), fragmentData.get(1), fragmentData.get(2), fragmentData.get(3));
- }
- }
- }
- } else {
- Log.d("TEST", "WTF, nameArray.size != 0 && !> 0");
- }
- }
- private class JSONTask extends AsyncTask<String, String, String> {
- final String basicAuth = "Basic " + Base64.encodeToString("pi:pass".getBytes(), Base64.NO_WRAP);
- ArrayList<String> GlobalkArray = new ArrayList<>();
- ArrayList<Integer> GlobalvArray = new ArrayList<>();
- @Override
- protected String doInBackground(String... params) {
- HttpURLConnection connection = null;
- BufferedReader reader = null;
- try {
- URL url = new URL(params[0]);
- connection = (HttpURLConnection) url.openConnection();
- connection.setRequestProperty("Authorization", basicAuth);
- connection.connect();
- InputStream stream = connection.getInputStream();
- reader = new BufferedReader(new InputStreamReader(stream));
- StringBuilder buffer = new StringBuilder();
- String line;
- while ((line = reader.readLine()) != null) {
- buffer.append(line);
- }
- try {
- JSONObject jsonRootObject = new JSONObject(buffer.toString());
- JSONArray jsonArray = jsonRootObject.optJSONArray("result");
- ArrayList<String> kArray= new ArrayList<>();
- ArrayList<Integer> vArray= new ArrayList<>();
- for (int i = 0; i < jsonArray.length(); i++) {
- JSONObject jsonObject = jsonArray.getJSONObject(i);
- int idx = Integer.parseInt(jsonObject.optString("idx"));
- String name = jsonObject.optString("Name");
- int value = Integer.parseInt(jsonObject.optString("Value"));
- kArray.add(i, name);
- vArray.add(i, value);
- }
- int j = 0;
- for (int i=0; i < kArray.size(); i++){
- if ((kArray.get(i)).contains(params[1])){
- GlobalkArray.add(j, kArray.get(i));
- GlobalvArray.add(j, vArray.get(i));
- j++;
- } else {
- Log.d("Array", "This value (" + kArray.get(i) + ") does not contain the parameter (" + params[1] + ")");
- // Do nothing, filters out all variables that do NOT have the given parameter in it.
- }
- }
- } catch (JSONException e) {e.printStackTrace();}
- return "true";
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- if (connection != null) {
- connection.disconnect();
- }
- try {
- if (reader != null) {
- reader.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return null;
- }
- @Override
- protected void onPostExecute (String result){
- super.onPostExecute(result);
- FragmentManager fm = getFragmentManager();
- if (result != null) {
- for (int i=0; i < GlobalkArray.size(); i++) {
- fm.beginTransaction().add(R.id.FragmentContainer, new VariableFragment(), "VariableFragment").commit();
- fm.executePendingTransactions();
- ((VariableFragment)getFragmentManager().findFragmentByTag("VariableFragment")).setTextView(GlobalkArray.get(i));
- ((VariableFragment)getFragmentManager().findFragmentByTag("VariableFragment")).setEditText(GlobalvArray.get(i).toString());
- }
- } else {
- Log.e("OnPostExecute", "Result is null");
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment