/*
* Copyright (C) 2014 Philippine Android Developers Community
*
* 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 ph.devcon.android.attendee;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.support.v4.app.TaskStackBuilder;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import butterknife.ButterKnife;
import butterknife.InjectView;
import de.greenrobot.event.EventBus;
import ph.devcon.android.DevConApplication;
import ph.devcon.android.R;
import ph.devcon.android.attendee.adapter.AttendeeDetailsPagerAdapter;
import ph.devcon.android.attendee.db.Attendee;
import ph.devcon.android.attendee.event.FetchedAttendeeListEvent;
import ph.devcon.android.attendee.service.AttendeeService;
import ph.devcon.android.navigation.BaseDevConActivity;
/**
* Created by lope on 10/12/14.
*/
public class AttendeeDetailsActivity extends BaseDevConActivity {
public static final String POSITION = "position";
public static final String ID_ITEMS = "id_items";
AttendeeDetailsPagerAdapter mAttendeeDetailsPagerAdapter;
@InjectView(R.id.container)
ViewPager mViewPager;
@Inject
EventBus eventBus;
@Inject
AttendeeService attendeeService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DevConApplication.injectMembers(this);
ButterKnife.inject(this);
if (!eventBus.isRegistered(this)) {
eventBus.registerSticky(this);
}
setHomeAsUp();
List<Integer> idItems = getIntent().getIntegerArrayListExtra(ID_ITEMS);
attendeeService.populateFromIdList(getSupportLoaderManager(), savedInstanceState,
idItems);
// ViewPager and its adapters use support library
// fragments, so use getSupportFragmentManager.
mAttendeeDetailsPagerAdapter =
new AttendeeDetailsPagerAdapter(
getSupportFragmentManager(), new ArrayList<Attendee>());
mViewPager.setAdapter(mAttendeeDetailsPagerAdapter);
}
@Override
public void onSectionAttached(int number) {
mTitle = getString(R.string.title_attendees);
}
public void setAttendeeList(List<Attendee> attendeeListList) {
if (attendeeListList != null && !attendeeListList.isEmpty()) {
mAttendeeDetailsPagerAdapter.setItems(attendeeListList);
mAttendeeDetailsPagerAdapter.notifyDataSetChanged();
mViewPager.setCurrentItem(getIntent().getIntExtra(POSITION, 0));
}
}
public void onEventMainThread(FetchedAttendeeListEvent event) {
setAttendeeList(event.attendees);
}
@Override
protected int getLayout() {
return R.layout.activity_attendee_details;
}
protected View buildFooterView(LayoutInflater inflater) {
return inflater.inflate(R.layout.footer_standard, null);
}
@Override
public void onBackPressed() {
int currentItem = mViewPager.getCurrentItem();
if (currentItem != 0) {
mViewPager.setCurrentItem(currentItem - 1);
} else {
super.onBackPressed();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
Intent upIntent = NavUtils.getParentActivityIntent(this);
if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
// This activity is NOT part of this app's task, so create a new task
// when navigating up, with a synthesized back stack.
TaskStackBuilder.create(this)
// Add all of this activity's parents to the back stack
.addNextIntentWithParentStack(upIntent)
// Navigate up to the closest parent
.startActivities();
} else {
// This activity is part of this app's task, so simply
// navigate up to the logical parent activity.
NavUtils.navigateUpTo(this, upIntent);
}
// NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onDestroy() {
super.onDestroy();
eventBus.unregister(this);
}
}