package net.cmikavac.autowol;
import java.util.ArrayList;
import java.util.List;
import net.cmikavac.autowol.models.DeviceModel;
import net.cmikavac.autowol.partials.DeviceListAdapter;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends BaseActivity {
private List<DeviceModel> mDevices = new ArrayList<DeviceModel>();
/**
* Upon activity creation populates the list view with Device entities.
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
populateListView();
}
/**
* Re-populates the list view with Device entities
* after Device deletion / creation / edit.
*/
@Override
protected void onResume() {
super.onResume();
populateListView();
}
/**
* Upon options menu creation inflates the menu and sets
* button functionalities and visibility.
* @param menu Menu entity to inflate.
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
menu.findItem(R.id.action_save).setVisible(false);
menu.findItem(R.id.action_help).setVisible(false);
return true;
}
/**
* Routes to appropriate action upon clicking on an item from the actionBar menu.
* @param item Clicked item.
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch(item.getItemId()) {
case R.id.action_new:
Intent newDeviceIntent = new Intent(MainActivity.this, DeviceActivity.class);
newDeviceIntent.putExtra("deviceObject", new DeviceModel());
startActivity(newDeviceIntent);
break;
case R.id.action_settings:
Intent settingsIntent = new Intent(MainActivity.this, SettingsActivity.class);
startActivity(settingsIntent);
break;
}
return true;
}
/**
* Fetches all Device entities from DB and binds them to an ArrayAdapter.
*/
public void populateListView() {
mDevices = mDbProvider.getAllDevices();
ArrayAdapter<DeviceModel> adapter = new DeviceListAdapter(this, mDevices);
ListView list = (ListView)findViewById(R.id.device_list_view);
list.setAdapter(adapter);
setEmptyListNotificationVisibility();
}
/**
* If no Device entities exist yet, display an "empty list notification" instead.
*/
private void setEmptyListNotificationVisibility() {
TextView notification = (TextView)findViewById(R.id.text_empty_list);
if (!mDevices.isEmpty()) {
notification.setVisibility(View.GONE);
} else {
notification.setVisibility(View.VISIBLE);
}
}
}