/* * Copyright 2013-2015 The GDG Frisbee 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 org.gdg.frisbee.android.onboarding; import android.content.Context; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import org.gdg.frisbee.android.R; import org.gdg.frisbee.android.api.Callback; import org.gdg.frisbee.android.api.model.plus.Person; import org.gdg.frisbee.android.app.App; import org.gdg.frisbee.android.common.BaseFragment; import org.gdg.frisbee.android.view.BitmapBorderTransformation; import butterknife.BindDimen; import butterknife.BindView; import butterknife.OnClick; public class FirstStartStep2Fragment extends BaseFragment { private static final String KEY_INVITE = "invite"; @BindView(R.id.invite_sender_container) View inviteContainer; @BindView(R.id.invite_sender_profile_image) ImageView inviteSenderImage; @BindView(R.id.invite_sender_message) TextView inviteSenderMessage; @BindDimen(R.dimen.navdrawer_user_picture_size) int profileImageSize; private Step2Listener listener = Step2Listener.EMPTY; private Invite invite; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflateView(inflater, R.layout.fragment_welcome_step2, container); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (savedInstanceState != null) { invite = savedInstanceState.getParcelable(KEY_INVITE); if (invite != null) { loadInvite(invite); } } } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putParcelable(KEY_INVITE, invite); } @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof Step2Listener) { listener = (Step2Listener) context; } } @Override public void onDetach() { super.onDetach(); listener = Step2Listener.EMPTY; } @OnClick(R.id.sign_in_button) public void onSignedIn() { listener.onSignedIn(); } @OnClick(R.id.skipSignin) public void onSkippedSignIn() { listener.onSkippedSignIn(); } public void loadInvite(Invite inviteSender) { this.invite = inviteSender; if (!isContextValid()) { return; } if (TextUtils.isEmpty(invite.sender)) { displayUnknownSender(); return; } App.from(getContext()).getPlusApi() .getPerson(inviteSender.sender) .enqueue(new Callback<Person>() { @Override public void onSuccess(Person sender) { if (isContextValid()) { displaySender(sender); } } @Override public void onError() { if (isContextValid()) { displayUnknownSender(); } } @Override public void onNetworkFailure(Throwable error) { if (isContextValid()) { displayUnknownSender(); } } }); } private void displayUnknownSender() { inviteContainer.setVisibility(View.VISIBLE); updateSenderName(getString(R.string.friend)); inviteSenderImage.setImageResource(R.drawable.ic_no_avatar); } private void displaySender(Person sender) { inviteContainer.setVisibility(View.VISIBLE); updateSenderName(sender.getDisplayName()); if (sender.getImage() != null && sender.getImage().getUrl() != null) { App.from(getContext()).getPicasso() .load(sender.getImage().getUrl()) .transform(new BitmapBorderTransformation(2, profileImageSize / 2, ContextCompat.getColor(getContext(), R.color.white)) ) .into(inviteSenderImage); } } private void updateSenderName(String senderName) { inviteSenderMessage.setText(getString(R.string.invite_congrats, senderName)); } public interface Step2Listener { void onSignedIn(); void onSkippedSignIn(); Step2Listener EMPTY = new Step2Listener() { @Override public void onSignedIn() { } @Override public void onSkippedSignIn() { } }; } }