package example.xfsp.miappstore.activity;

import android.content.Intent;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.HorizontalScrollView;

import example.xfsp.miappstore.BaseActivity;
import example.xfsp.miappstore.R;
import example.xfsp.miappstore.bean.AppDetail;
import example.xfsp.miappstore.bean.AppDownLoadInfo;
import example.xfsp.miappstore.bean.ListAppEntity;
import example.xfsp.miappstore.utils.download.DownloadHelper;
import example.xfsp.miappstore.holder.AppChangeLogHolder;
import example.xfsp.miappstore.holder.AppCommentsHolder;
import example.xfsp.miappstore.holder.AppInfosHolder;
import example.xfsp.miappstore.holder.AppIntroHolder;
import example.xfsp.miappstore.holder.AppScreensHolder;
import example.xfsp.miappstore.holder.AppVersionsHolder;
import example.xfsp.miappstore.protocal.impl.AppDetailProtocal;
import example.xfsp.miappstore.protocal.impl.DownLoadInfoProtocal;
import example.xfsp.miappstore.utils.UiUtils;
import example.xfsp.miappstore.view.LoadPage;

/**
 * Created by Administrator on 2015/9/27.
 * App详情页
 */
public class AppDetailActivity extends BaseActivity {

    private int appid;//app的id信息
    private AppDetail load;//获取得到得数据
    private View view;
    private View base_activity_detail;
    private Button btn_download;
    private AppDownLoadInfo downLoadInfo;
    private DownloadHelper helper;
    private ListAppEntity appEntity;

    @Override
    protected void initToolBar() {
        super.initToolBar();
        base_activity_detail = View.inflate(this, R.layout.base_activity_detail, null);
    }

    @Override
    protected void initView() {
        super.initView();
        helper = DownloadHelper.getInstance(this);
        Intent intent = getIntent();
        appid = intent.getIntExtra("appid", 0);
        appEntity = (ListAppEntity) intent.getParcelableExtra("appEntity");
        FrameLayout fl_content = (FrameLayout) base_activity_detail.findViewById(R.id.fl_content);
        LoadPage loadPage = new LoadPage(AppDetailActivity.this) {
            @Override
            protected LoadResult loadServer() {
                return AppDetailActivity.this.loadServer();
            }

            @Override
            protected View createSuccessView() {
                return AppDetailActivity.this.createSucessView();
            }
        };

        fl_content.addView(loadPage);
        setContentView(base_activity_detail);
        Toolbar toolbar = (Toolbar) base_activity_detail.findViewById(R.id.id_toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }

    //创建加载成功界面
    private View createSucessView() {
        view = View.inflate(getApplicationContext(), R.layout.activity_detail, null);
        FrameLayout fl_appinfo = (FrameLayout) view.findViewById(R.id.fl_appinfo);
        HorizontalScrollView hl_screen_shots = (HorizontalScrollView) view.findViewById(R.id.hl_screen_shots);
        FrameLayout fl_changelog = (FrameLayout) view.findViewById(R.id.fl_changelog);
        FrameLayout fl_comments = (FrameLayout) view.findViewById(R.id.fl_comments);
        FrameLayout fl_introducation = (FrameLayout) view.findViewById(R.id.fl_introducation);
        FrameLayout fl_versioninfos = (FrameLayout) view.findViewById(R.id.fl_versioninfos);
        FrameLayout fl_bottom = (FrameLayout) view.findViewById(R.id.fl_bottom);


        //appInfo部分
        AppInfosHolder infosHolder = new AppInfosHolder();
        infosHolder.refreshView(load, load.getHost(), 0);
        fl_appinfo.addView(infosHolder.getConvertView());
        //截图部分
        AppScreensHolder screensHolder = new AppScreensHolder();
        screensHolder.refreshView(load, load.getHost(), 0);
        hl_screen_shots.addView(screensHolder.getConvertView());
        //介绍部分
        AppIntroHolder introHolder = new AppIntroHolder();
        introHolder.refreshView(load, load.getHost(), 0);
        fl_introducation.addView(introHolder.getConvertView());

        //日志部分
        AppChangeLogHolder logHolder = new AppChangeLogHolder();
        logHolder.refreshView(load, load.getHost(), 0);
        fl_changelog.addView(logHolder.getConvertView());
        //评论部分
        AppCommentsHolder commentsHolder = new AppCommentsHolder();
        commentsHolder.refreshView(load, load.getHost(), 0);
        fl_comments.addView(commentsHolder.getConvertView());


        //版本信息部分
        AppVersionsHolder versionsHolder = new AppVersionsHolder();
        versionsHolder.refreshView(load, load.getHost(), 0);
        fl_versioninfos.addView(versionsHolder.getConvertView());

        return view;
    }


    //加载服务器数据
    private LoadPage.LoadResult loadServer() {
        AppDetailProtocal appDetailProtocal = new AppDetailProtocal() {
            @Override
            public String getAppId() {
                return appid + "";
            }
        };
        load = appDetailProtocal.load(0);
        //主线程设置名称
        UiUtils.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                getSupportActionBar().setTitle(load.getDisPlayName());
            }
        });
        //加载详情顺便加载下载地址
        DownLoadInfoProtocal downLoadInfoProtocal = new DownLoadInfoProtocal() {
            @Override
            public String getAppId() {
                return appid + "";
            }
        };
        downLoadInfo = downLoadInfoProtocal.load(0);

        if (this.load == null) {
            return LoadPage.LoadResult.error;
        } else {
            return LoadPage.LoadResult.success;
        }
    }

    //ToolBar菜单选项
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_detail, menu);
        return super.onCreateOptionsMenu(menu);
    }

    //当菜单选中时
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                finish();
                break;
            case R.id.action_search:
                //搜索框
                break;
            default:
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}