package io.github.mthli.Ninja.Activity;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import io.github.mthli.Ninja.Browser.AdBlock;
import io.github.mthli.Ninja.Database.RecordAction;
import io.github.mthli.Ninja.R;
import io.github.mthli.Ninja.Unit.BrowserUnit;
import io.github.mthli.Ninja.View.NinjaToast;
import io.github.mthli.Ninja.View.WhitelistAdapter;
import java.util.List;
public class WhitelistActivity extends Activity {
private WhitelistAdapter adapter;
private List<String> list;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.whitelist);
getActionBar().setDisplayHomeAsUpEnabled(true);
RecordAction action = new RecordAction(this);
action.open(false);
list = action.listDomains();
action.close();
ListView listView = (ListView) findViewById(R.id.whitelist);
listView.setEmptyView(findViewById(R.id.whitelist_empty));
adapter = new WhitelistAdapter(this, R.layout.whitelist_item, list);
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
final EditText editText = (EditText) findViewById(R.id.whilelist_edit);
showSoftInput(editText);
Button button = (Button) findViewById(R.id.whilelist_add);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String domain = editText.getText().toString().trim();
if (domain.isEmpty()) {
NinjaToast.show(WhitelistActivity.this, R.string.toast_input_empty);
} else if (!BrowserUnit.isURL(domain)) {
NinjaToast.show(WhitelistActivity.this, R.string.toast_invalid_domain);
} else {
RecordAction action = new RecordAction(WhitelistActivity.this);
action.open(true);
if (action.checkDomain(domain)) {
NinjaToast.show(WhitelistActivity.this, R.string.toast_domain_already_exists);
} else {
AdBlock adBlock = new AdBlock(WhitelistActivity.this);
adBlock.addDomain(domain.trim());
list.add(0, domain.trim());
adapter.notifyDataSetChanged();
NinjaToast.show(WhitelistActivity.this, R.string.toast_add_whitelist_successful);
}
action.close();
}
}
});
}
@Override
public void onPause() {
hideSoftInput(findViewById(R.id.whilelist_edit));
super.onPause();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.whilelist_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case android.R.id.home:
finish();
break;
case R.id.whitelist_menu_clear:
AdBlock adBlock = new AdBlock(this);
adBlock.clearDomains();
list.clear();
adapter.notifyDataSetChanged();
break;
default:
break;
}
return true;
}
private void hideSoftInput(View view) {
view.clearFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
private void showSoftInput(View view) {
view.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
}
}