/*
* Copyright (C) 2013 Ian G. Clifton
* Code featured in Android User Interface Design: Turning Ideas and
* Sketches into Beautifully Designed Apps (ISBN-10: 0321886739;
* ISBN-13: 978-0321886736).
*
* 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.iangclifton.auid.appendixc;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.Window;
import com.iangclifton.auid.appendixc.sections.Section;
import com.iangclifton.auid.appendixc.sections.SectionActivity;
/**
* An activity representing a list of Sections. This activity has different
* presentations for handset and tablet-size devices. On handsets, the activity
* presents a list of items, which when touched, lead to a
* {@link SectionActivity} representing item details. On tablets, the
* activity presents the list of items and item details side-by-side using two
* vertical panes.
* <p>
* The activity makes heavy use of fragments. The list of items is a
* {@link SectionListFragment} and the item details (if present) is a
* {@link SectionDetailFragment}.
* <p>
* This activity also implements the required
* {@link SectionListFragment.Callbacks} interface to listen for item
* selections.
*/
public class MainActivity extends FragmentActivity implements SectionListFragment.Callbacks {
/**
* Whether or not the activity is in two-pane mode, i.e. running on a tablet
* device.
*/
private boolean mTwoPane;
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().requestFeature(Window.FEATURE_PROGRESS);
setProgressBarIndeterminate(true);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_section_list);
if (findViewById(R.id.section_detail_container) != null) {
// The detail container view will be present only in the
// large-screen layouts (res/values-large and
// res/values-sw600dp). If this view is present, then the
// activity should be in two-pane mode.
mTwoPane = true;
// In two-pane mode, list items should be given the
// 'activated' state when touched.
((SectionListFragment) getSupportFragmentManager() .findFragmentById(R.id.section_list)).setActivateOnItemClick(true);
}
}
/**
* Callback method from {@link SectionListFragment.Callbacks} indicating
* that the item with the given ID was selected.
*/
@Override
public void onItemSelected(Section section) {
if (mTwoPane) {
Fragment fragment = section.getFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.section_detail_container, fragment).commit();
} else {
// In single-pane mode, simply start the detail activity
// for the selected item ID.
Intent detailIntent = new Intent(this, SectionActivity.class);
detailIntent.putExtra(SectionActivity.ARG_SECTION, section);
startActivity(detailIntent);
}
}
}