/*
* Copyright (c) 2014-2016 Sean Liu.
*
* 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.github.baoti.pioneer.ui.me;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.CardView;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.github.baoti.android.presenter.FragmentView;
import com.github.baoti.pioneer.AppMain;
import com.github.baoti.pioneer.AppMainModule;
import com.github.baoti.pioneer.R;
import com.github.baoti.pioneer.entity.ImageBean;
import com.github.baoti.pioneer.misc.picasso.PicassoHelper;
import com.github.baoti.pioneer.ui.Navigator;
import com.github.baoti.pioneer.ui.common.image.chooser.ImageChooserFragment;
import com.github.baoti.pioneer.ui.login.LoginDialogFragment;
import com.squareup.picasso.Picasso;
import javax.inject.Inject;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import dagger.Lazy;
import dagger.Module;
/**
* Created by liuyedong on 14-12-26.
*/
public class MeFragment extends FragmentView<IMeView, MePresenter> implements IMeView,
ImageChooserFragment.OnImageChooserListener {
public static MeFragment newInstance() {
return new MeFragment();
}
private static final int CHOOSE_AVATAR = 0;
@Inject
Lazy<MePresenter> presenterLazy;
@Inject
Picasso picasso;
@BindView(R.id.app_toolbar)
Toolbar toolbar;
@BindView(R.id.cv_account_info)
CardView accountInfo;
@BindView(R.id.iv_avatar)
ImageView avatar;
@BindView(R.id.tv_account)
TextView accountId;
@BindView(R.id.tv_name)
TextView name;
@BindView(R.id.tv_following)
TextView following;
@BindView(R.id.tv_followers)
TextView followers;
@BindView(R.id.btn_sign_in)
Button signIn;
@BindView(R.id.btn_sign_out)
Button signOut;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_me, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
ButterKnife.bind(this, view);
AppMain.globalGraph().plus(new MeModule()).inject(this);
setupToolbar();
super.onViewCreated(view, savedInstanceState);
}
private void setupToolbar() {
toolbar.setTitle("Me");
Navigator.setupToolbarNavigation(this, toolbar);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (getActivity() instanceof ActionBarActivity) {
ActionBar actionBar = ((ActionBarActivity) getActivity()).getSupportActionBar();
actionBar.setSubtitle(R.string.title_me);
} else {
getActivity().setTitle(R.string.title_me);
}
}
@Override
protected MePresenter createPresenter(IMeView view) {
return presenterLazy.get();
}
@Override
public void showAccountId(String accountId) {
this.accountId.setText(accountId);
}
@Override
public void showName(String name) {
this.name.setText(name);
}
@Override
public void showFollowers(String followers) {
this.followers.setText(followers);
}
@Override
public void showFollowing(String following) {
this.following.setText(following);
}
@Override
public void showAvatar(ImageBean avatar) {
PicassoHelper.load(Picasso.with(getActivity()), avatar)
.placeholder(R.drawable.avatar)
.error(R.drawable.avatar)
.into(this.avatar);
}
@Override
public void showSignIn() {
signIn.setVisibility(View.VISIBLE);
}
@Override
public void hideSignIn() {
signIn.setVisibility(View.GONE);
}
@Override
public void showAccountInfo() {
accountInfo.setVisibility(View.VISIBLE);
signOut.setVisibility(View.VISIBLE);
}
@Override
public void hideAccountInfo() {
accountInfo.setVisibility(View.GONE);
signOut.setVisibility(View.GONE);
}
@Override
public void navigateToLogin() {
LoginDialogFragment.newInstance().show(getFragmentManager(), null);
}
@OnClick(R.id.btn_go_home)
void onGoHomeClicked() {
Navigator.upToMain(getActivity());
}
@OnClick(R.id.btn_close_app)
void onCloseAppClicked() {
Navigator.closeApp(getActivity());
}
@OnClick(R.id.btn_sign_in)
void onSignInClicked() {
getPresenter().onSignInClicked();
}
@OnClick(R.id.btn_sign_out)
void onSignOutClicked() {
getPresenter().onSignOutClicked();
}
@OnClick(R.id.tr_avatar)
void onAvatarClicked() {
ImageChooserFragment.showDialog(getFragmentManager(), true)
.setOnChooseListener(this, CHOOSE_AVATAR);
}
@Override
public void onImageChose(int requestCode, @Nullable Uri image) {
switch (requestCode) {
case CHOOSE_AVATAR:
getPresenter().onAvatarChanged(image);
picasso.load(image).into(avatar);
break;
}
}
@Override
public void onImageCancelled(int requestCode) {
}
@Module(injects = MeFragment.class, addsTo = AppMainModule.class)
public class MeModule {
}
}