package com.mathiasluo.designer.view.activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.Window;
import android.widget.FrameLayout;
import android.widget.TextView;
import com.mathiasluo.designer.R;
import com.mathiasluo.designer.bean.User;
import com.mathiasluo.designer.presenter.MainActivityPresenter;
import com.mathiasluo.designer.utils.LogUtils;
import com.mathiasluo.designer.utils.ToastUtil;
import com.mathiasluo.designer.view.IView.IMainActivity;
import com.mathiasluo.designer.view.fragment.PersonFragment;
import com.mathiasluo.designer.view.fragment.ShotsFragment;
import com.mathiasluo.designer.view.widget.CircleImageView;
import com.mikepenz.iconics.IconicsDrawable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import butterknife.Bind;
import butterknife.ButterKnife;
public class MainActivity extends BaseActivity<MainActivity, MainActivityPresenter> implements IMainActivity {
@Bind(R.id.nav_view)
NavigationView mNavigationView;
@Bind(R.id.drawer_layout)
DrawerLayout mDrawerLayout;
Fragment mCurrentFragment;
Map<Class<Fragment>, Fragment> fragmentMap;
public final static int REQUTECODE = 0001;
CircleImageView mUserAvater;
TextView mUserName;
TextView mUserDesgcribe;
private FragmentManager mFragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CONTENT_TRANSITIONS);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
fragmentMap = new HashMap<>();
init();
mPresenter.loadUserInfoFromRealm();
showFragment(ShotsFragment.class);
}
public void init() {
mUserAvater = (CircleImageView) mNavigationView.getHeaderView(0).findViewById(R.id.nav_header_img);
mUserName = (TextView) mNavigationView.getHeaderView(0).findViewById(R.id.nav_header_name);
mUserDesgcribe = (TextView) mNavigationView.getHeaderView(0).findViewById(R.id.nav_header_describe);
mNavigationView.setNavigationItemSelectedListener(
item -> {
item.setChecked(true);
mDrawerLayout.closeDrawers();
return true;
});
//头像登录
mUserAvater.setOnClickListener(v -> {
if (getPresenter().getCurrentUser() == null)
startActivityForResult(new Intent(MainActivity.this, LoginActivity.class), REQUTECODE);
//不关闭抽屉,便于登陆后直观看到效果
// mDrawerLayout.closeDrawers();
else {
//如果已经登陆,就打开个人主页
showFragment(PersonFragment.class);
}
});
mFragmentManager = getSupportFragmentManager();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
LogUtils.d("用户登录成功");
//加载设置用户信息
mPresenter.loadUserInfoFromRealm();
}
}
public void showFragment(Class fragment) {
FragmentTransaction transaction = mFragmentManager.beginTransaction();
if (mCurrentFragment != null) {
transaction.hide(mCurrentFragment);
}
if (fragmentMap.containsKey(fragment)) {
mCurrentFragment = fragmentMap.get(fragment);
} else {
try {
mCurrentFragment = (Fragment) fragment.newInstance();
transaction.add(R.id.main_frameLayout, mCurrentFragment);
} catch (InstantiationException e) {
ToastUtil.Toast("出现了错误哟");
e.printStackTrace();
} catch (IllegalAccessException e) {
ToastUtil.Toast("出现了错误哟");
e.printStackTrace();
}
fragmentMap.put(fragment, mCurrentFragment);
}
transaction.show(mCurrentFragment);
transaction.commit();
}
@Override
protected MainActivityPresenter creatPresenter() {
return new MainActivityPresenter();
}
@Override
public void loadUerInfo(User user) {
//设置用户头像
mPresenter.loadImageWithurl(user.getAvatarUrl(), mUserAvater);
//设置用户其他信息...
mUserName.setText(user.getUsername());
mUserDesgcribe.setText(user.getHtmlUrl());
}
@Override
public void addDrawerListener(Toolbar toolbar) {
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(new IconicsDrawable(this).sizeDp(16).icon("gmi_menu").color(Color.WHITE));
mDrawerLayout.addDrawerListener(new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.open, R.string.close));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
}