package com.veaer.gank.widget;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;

import com.umeng.analytics.MobclickAgent;
import com.veaer.gank.R;
import com.veaer.gank.request.Line;
import com.veaer.gank.request.LineFactory;

import butterknife.ButterKnife;
import rx.Subscription;
import rx.subscriptions.CompositeSubscription;

/**
 * Created by Veaer on 15/8/15.
 */
public class BaseActivity extends AppCompatActivity {
    public static String TAG;
    public Activity mActivity;
    public Context mContext;
    protected final static Line mLine = LineFactory.getSingleton();
    protected CompositeSubscription mCompositeSubscription;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if(getContentViewID() != 0) {
            setContentView(getContentViewID());
            ButterKnife.bind(this);
        }
        this.mContext = this.mActivity = this;
        TAG = this.getClass().getSimpleName();
    }

    @Override
    public void onResume() {
        super.onResume();
        MobclickAgent.onResume(this);
    }

    @Override
    public void onPause() {
        super.onPause();
        MobclickAgent.onPause(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(getContentViewID() != 0) {
            ButterKnife.unbind(this);
        }
        if (this.mCompositeSubscription != null) {
            this.mCompositeSubscription.unsubscribe();
        }
    }

    public CompositeSubscription getCompositeSubscription() {
        if (this.mCompositeSubscription == null) {
            this.mCompositeSubscription = new CompositeSubscription();
        }

        return this.mCompositeSubscription;
    }

    public void addSubscription(Subscription s) {
        if (this.mCompositeSubscription == null) {
            this.mCompositeSubscription = new CompositeSubscription();
        }

        this.mCompositeSubscription.add(s);
    }

    public int getContentViewID() {
        return 0;
    }

    public void loadError(Throwable throwable) {
        showToast(getString(R.string.error));
    }


    public void showToast(int id) {
        showToast(getString(id));
    }

    public void showToast(String msg) {
        if(null == msg) { return; }
        Snackbar.make(getWindow().getDecorView(), msg, Snackbar.LENGTH_SHORT).show();
    }

}