package io.github.mthli.Tweetin.Activity;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewCompat;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toolbar;
import com.sothree.slidinguppanel.SlidingUpPanelLayout;
import io.github.mthli.Tweetin.Fragment.Picture.PictureFragment;
import io.github.mthli.Tweetin.Picture.PictureUnit;
import io.github.mthli.Tweetin.R;
import io.github.mthli.Tweetin.Tweet.Tweet;
import io.github.mthli.Tweetin.Tweet.TweetUnit;
import io.github.mthli.Tweetin.View.ViewUnit;

public class PictureActivity extends FragmentActivity {
    private PictureFragment pictureFragment;
    public PictureFragment getPictureFragment() {
        return pictureFragment;
    }

    private Tweet tweet;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ViewUnit.setCustomTheme(this);
        setContentView(R.layout.picture);

        Toolbar toolbar = (Toolbar) findViewById(R.id.picture_toolbar);
        ViewCompat.setElevation(toolbar, ViewUnit.getElevation(this, 2));

        setActionBar(toolbar);
        getActionBar().setTitle(getString(R.string.picture_label));
        getActionBar().setDisplayHomeAsUpEnabled(true);

        tweet = (new TweetUnit(this)).getTweetFromIntent(getIntent());

        pictureFragment = (PictureFragment) getSupportFragmentManager().findFragmentById(R.id.picture_fragment);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.picture_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem menuItem) {
        switch (menuItem.getItemId()) {
            case android.R.id.home:
                pictureFragment.cancelAllTasks();
                finish();
                overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
                break;
            case R.id.picture_menu_share:
                (new TweetUnit(this)).share(tweet);
                break;
            case R.id.picture_menu_save:
                PictureUnit.save(this, pictureFragment.getOriginBitmap(), tweet.getPictureURL());
                break;
            default:
                break;
        }

        return super.onOptionsItemSelected(menuItem);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent keyEvent) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            SlidingUpPanelLayout slidingUpPanelLayout = pictureFragment.getSlidingUpPanelLayout();
            if (slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
                slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
            } else {
                pictureFragment.cancelAllTasks();
                finish();
                overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
            }
        }
        return true;
    }

    @Override
    public void onDestroy() {
        pictureFragment.cancelAllTasks();
        super.onDestroy();
    }
}