replicant-packages_apps_Email/src/com/android/email/activity/setup/AccountSetupFragment.java

131 lines
4.4 KiB
Java

/*
* Copyright (C) 2014 The Android Open Source Project
*
* 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.android.email.activity.setup;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.android.email.R;
import com.android.email.activity.UiUtilities;
import com.google.common.annotations.VisibleForTesting;
/**
* Superclass for setup UI fragments.
* Currently holds a super-interface for the callbacks, as well as the state it was launched for so
* we can unwind things correctly when the user navigates the back stack.
*/
public class AccountSetupFragment extends Fragment implements View.OnClickListener {
private static final String SAVESTATE_STATE = "AccountSetupFragment.state";
private int mState;
protected View mNextButton;
protected View mPreviousButton;
public interface Callback {
void onNextButton();
void onBackPressed();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
mState = savedInstanceState.getInt(SAVESTATE_STATE);
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(SAVESTATE_STATE, mState);
}
public void setState(int state) {
mState = state;
}
public int getState() {
return mState;
}
/**
* This method wraps the given content layout with the chrome appropriate for the account setup
* flow. It also attaches itself as a click handler to the previous and next buttons.
*
* @param inflater LayoutInflater scoped to the appropriate context
* @param container ViewGroup to inflate the view into
* @param contentLayout Resource ID of the main content layout to insert into the template
* @param headline Resource ID of the headline string
* @return Fully inflated view hierarchy.
*/
protected View inflateTemplatedView(final LayoutInflater inflater, final ViewGroup container,
final int contentLayout, final int headline) {
final View template = inflater.inflate(R.layout.account_setup_template, container, false);
TextView headlineView = UiUtilities.getView(template, R.id.headline);
headlineView.setText(headline);
final ViewGroup contentContainer =
(ViewGroup) template.findViewById(R.id.setup_fragment_content);
inflater.inflate(contentLayout, contentContainer, true);
mNextButton = UiUtilities.getView(template, R.id.next);
mNextButton.setOnClickListener(this);
mPreviousButton = UiUtilities.getView(template, R.id.previous);
mPreviousButton.setOnClickListener(this);
return template;
}
@Override
public void onClick(View v) {
final int viewId = v.getId();
final Callback callback = (Callback) getActivity();
if (viewId == R.id.next) {
callback.onNextButton();
} else if (viewId == R.id.previous) {
callback.onBackPressed();
}
}
public void setNextButtonEnabled(boolean enabled) {
if (mNextButton != null) {
mNextButton.setEnabled(enabled);
}
}
/**
* Set visibility of the "previous" button
* @param visibility {@link View#INVISIBLE}, {@link View#VISIBLE}, {@link View#GONE}
*/
public void setPreviousButtonVisibility(int visibility) {
mPreviousButton.setVisibility(visibility);
}
/**
* Set the visibility of the "next" button
* @param visibility {@link View#INVISIBLE}, {@link View#VISIBLE}, {@link View#GONE}
*/
public void setNextButtonVisibility(int visibility) {
mNextButton.setVisibility(visibility);
}
}