/*
* Copyright (C) 2014 Jason M. Heim
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jasonmheim.rollout.station;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import com.jasonmheim.rollout.R;
import com.jasonmheim.rollout.action.DestinationDialogFragment;
import com.jasonmheim.rollout.disclaimer.DisclaimerDialogFragment;
import com.jasonmheim.rollout.notice.OpenSourceNoticeDialogFragment;
import com.jasonmheim.rollout.settings.SettingsActivity;
import com.jasonmheim.rollout.inject.DaggerActivity;
import com.jasonmheim.rollout.action.ActionManager;
import com.jasonmheim.rollout.settings.Settings;
import javax.inject.Inject;
import static com.jasonmheim.rollout.Constants.ACTION_SEARCH;
import static com.jasonmheim.rollout.Constants.ACTION_SILENCE;
import static com.jasonmheim.rollout.Constants.ACTION_IDLE;
import static com.jasonmheim.rollout.Constants.ACTION_RIDE;
public class StationDataActivity extends DaggerActivity
implements StationDataFragment.Listener {
@Inject
ActionManager actionManager;
@Inject
Settings settings;
@Inject
public StationDataActivity() {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_station_list);
if (!settings.isDisclaimerAgreed()) {
getObjectGraph().get(DisclaimerDialogFragment.class)
.show(getFragmentManager(), "DisclaimerDialog");
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
int action = actionManager.getAction();
setItemVisibility(menu, R.id.set_action_search, action != ACTION_SEARCH);
setItemVisibility(menu, R.id.set_action_idle, action != ACTION_IDLE);
setItemVisibility(menu, R.id.set_action_ride, action != ACTION_RIDE);
setItemVisibility(menu, R.id.set_action_silence, action != ACTION_SILENCE);
return super.onPrepareOptionsMenu(menu);
}
private void setItemVisibility(Menu menu, int id, boolean visible) {
MenuItem item = menu.findItem(id);
if (item != null) {
item.setVisible(visible);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
switch (id) {
case R.id.set_action_search:
actionManager.setAction(ACTION_SEARCH);
break;
case R.id.set_action_silence:
actionManager.setAction(ACTION_SILENCE);
break;
case R.id.set_action_idle:
actionManager.setAction(ACTION_IDLE);
break;
case R.id.set_action_ride:
if (settings.isWorkDestinationActive() || settings.isHomeDestinationActive()) {
getObjectGraph().get(DestinationDialogFragment.class)
.show(getFragmentManager(), "DestinationDialog");
} else {
actionManager.setAction(ACTION_RIDE);
}
break;
case R.id.menu_open_settings:
Intent settingsIntent = new Intent(this, SettingsActivity.class);
startActivity(settingsIntent);
break;
case R.id.menu_open_open_source_notices:
getObjectGraph().get(OpenSourceNoticeDialogFragment.class)
.show(getFragmentManager(), "OpenSourceNoticeDialog");
break;
}
boolean result = super.onOptionsItemSelected(item);
invalidateOptionsMenu();
return result;
}
}