/* This file is part of ZAX. ZAX is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. ZAX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with ZAX. If not, see <http://www.gnu.org/licenses/>. */ package com.inovex.zabbixmobile.activities.fragments; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.EditText; import android.widget.ListView; import com.inovex.zabbixmobile.R; import com.inovex.zabbixmobile.adapters.BaseServiceAdapter; import com.inovex.zabbixmobile.listeners.OnServerSelectedListener; import com.inovex.zabbixmobile.model.ZabbixServer; public class ServersListFragment extends BaseServiceConnectedListFragment { private BaseServiceAdapter<ZabbixServer> mServersListAdapter; private OnServerSelectedListener mActivity; @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mActivity = (OnServerSelectedListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnServerSelectedListener."); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); registerForContextMenu(getListView()); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getActivity().getMenuInflater(); inflater.inflate(R.menu.zabbix_servers_list_context, menu); } @Override public void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); mActivity.onServerSelected(mServersListAdapter.getItem(position)); } @Override protected void setupListAdapter() { mServersListAdapter = mZabbixDataService .getServersListManagementAdapter(); Log.d(TAG, "Server list size: " + mServersListAdapter.getCount()); setListAdapter(mServersListAdapter); } @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); switch (item.getItemId()) { case R.id.item_change_name: changeNameDialog(mServersListAdapter.getItem(info.position)); return true; case R.id.item_remove: deleteServerDialog(mServersListAdapter.getItem(info.position)); return true; default: return super.onContextItemSelected(item); } } private void deleteServerDialog(final ZabbixServer item) { AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); alert.setTitle(R.string.delete); alert.setMessage("Are you sure to remove the server?"); alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int whichButton) { mZabbixDataService.removeZabbixServer(item); } }); alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int whichButton) { // Canceled. } }); alert.show(); } private void changeNameDialog(final ZabbixServer zabbixServer) { AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); alert.setTitle(R.string.rename); alert.setMessage("Type the name of the server"); // Set an EditText view to get user input final EditText input = new EditText(getActivity()); input.setText(zabbixServer.getName()); alert.setView(input); alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int whichButton) { String value = input.getText().toString(); if (value.length()>0) { zabbixServer.setName(value); mZabbixDataService.updateZabbixServer(zabbixServer); } } }); alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int whichButton) { // Canceled. } }); alert.show(); } }