package dev.ukanth.ufirewall.activity; import android.app.Dialog; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import java.util.ArrayList; import java.util.List; import dev.ukanth.ufirewall.R; import dev.ukanth.ufirewall.util.G; import dev.ukanth.ufirewall.util.Profile; import dev.ukanth.ufirewall.util.ProfileAdapter; /** * Created by ukanth on 31/7/15. */ public class ProfileActivity extends AppCompatActivity{ List<Profile> profilesList = new ArrayList<Profile>(); ProfileAdapter profileAdapter; protected static final int MENU_ADD = 100; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.profile_main); Toolbar toolbar = (Toolbar) findViewById(R.id.profile_toolbar); setSupportActionBar(toolbar); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); initList(); ListView listView = (ListView) findViewById(R.id.listProfileView); profileAdapter = new ProfileAdapter(profilesList, this); listView.setAdapter(profileAdapter); // we register for the contextmneu registerForContextMenu(listView); } @Override public boolean onCreateOptionsMenu(android.view.Menu menu) { // Common options: Copy, Export to SD Card, Refresh menu.add(0, MENU_ADD, 0, getString(R.string.profile_add)).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); super.onCreateOptionsMenu(menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_ADD: addNewProfile(); break; case android.R.id.home: onBackPressed(); return true; default: return super.onOptionsItemSelected(item); } return true; } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); AdapterView.AdapterContextMenuInfo aInfo = (AdapterView.AdapterContextMenuInfo) menuInfo; Profile profile = profileAdapter.getItem(aInfo.position); menu.setHeaderTitle(getString(R.string.select) + " " + profile.getProfileName()); menu.add(1, 1, 1, getString(R.string.delete)); } @Override public boolean onContextItemSelected(MenuItem item) { int itemId = item.getItemId(); AdapterView.AdapterContextMenuInfo aInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); if(aInfo.position > 3) { G.removeAdditionalProfile(profilesList.get(aInfo.position).getProfileName()); profilesList.remove(aInfo.position); profileAdapter.notifyDataSetChanged(); } return true; } private void initList() { // We populate the Profiles profilesList.add(new Profile(G.gPrefs.getString("default", getString(R.string.defaultProfile)))); profilesList.add(new Profile(G.gPrefs.getString("profile1", getString(R.string.profile1)))); profilesList.add(new Profile(G.gPrefs.getString("profile2", getString(R.string.profile2)))); profilesList.add(new Profile(G.gPrefs.getString("profile3", getString(R.string.profile3)))); List<String> pList = G.getAdditionalProfiles(); for(String profileName : pList) { if(profileName !=null && profileName.length() > 0) { profilesList.add(new Profile(profileName)); } } } // Handle user click public void addNewProfile() { final Dialog d = new Dialog(this); d.setContentView(R.layout.profile_adddialog); d.setTitle(getString(R.string.profile_add)); d.setCancelable(true); final EditText edit = (EditText) d.findViewById(R.id.editTextProfile); Button b = (Button) d.findViewById(R.id.button1); b.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String profileName = edit.getText().toString(); ProfileActivity.this.profilesList.add(new Profile(profileName)); G.addAdditionalProfile(profileName); ProfileActivity.this.profileAdapter.notifyDataSetChanged(); // We notify the data model is changed d.dismiss(); } }); d.show(); } }