LocalPictureActivity.java 源代码


package activity;

import activity.FishEye.FishEyePhotoActivity;
import activity.WallMounted.WallMountedPhotoActivity;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.CheckBox;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import base.HiActivity;
import bean.MyCamera;
import com.hichip.campro.R;
import common.Constant;
import common.HiDataValue;
import common.TitleView;
import custom.dialog.NiftyDialogBuilder;
import custom.stickygridview.GridItem;
import custom.stickygridview.StickyGridAdapter;
import custom.stickygridview.YMComparator;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.TimeZone;
import utils.HiTools;
import utils.MyToast;
import utils.SharePreUtils;
import utils.TimeUtil;

public class LocalPictureActivity extends HiActivity implements View.OnClickListener {
    private static final int ACTIVITY_RESULT_PHOTO_VIEW = 10;
    private static final int DEFAULT_LIST_SIZE = 20;
    public static final String EXTRA_GIRDLST = "girdlst";
    public static final String EXTRA_POSITION = "position";
    public static Activity mActivity;
    public static List<GridItem> mDeleteList = new ArrayList();
    private static int section = 1;
    private StickyGridAdapter adapter;
    private GridView gridview;
    private MyCamera mMyCamera;
    private LinearLayout mll_anim;
    private String uid;
    final List<String> IMAGE_FILES = Collections.synchronizedList(new ArrayList(20));
    private ArrayList<GridItem> mGirdList = new ArrayList<>();
    private Map<String, Integer> sectionMap = new HashMap();
    private boolean isDeleteModel = false;
    private BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(ImagePagerActivity.BROAD_ACTION)) {
                int intExtra = intent.getIntExtra(ImagePagerActivity.INDEX, 0);
                if (LocalPictureActivity.this.mGirdList == null || LocalPictureActivity.this.mGirdList.size() <= 0 || intExtra >= LocalPictureActivity.this.mGirdList.size()) {
                    return;
                }
                LocalPictureActivity.this.mGirdList.remove(intExtra);
                LocalPictureActivity.this.adapter.notifyDataSetChanged();
            }
        }
    };

    @Override
    protected int setLayoutId() {
        return R.layout.activity_local_picture;
    }

    @Override
    protected void init(Bundle bundle) {
        this.uid = getIntent().getExtras().getString(HiDataValue.EXTRAS_KEY_UID);
        Iterator<MyCamera> it = HiDataValue.CameraList.iterator();
        while (true) {
            if (!it.hasNext()) {
                break;
            }
            MyCamera next = it.next();
            if (this.uid.equalsIgnoreCase(next.getUid())) {
                this.mMyCamera = next;
                break;
            }
        }
        initView();
        registerBrodCast();
        mActivity = this;
    }

    private void initView() {
        this.mGirdList.clear();
        initTopView();
        setImagesPath(new File(HiDataValue.getPathCameraSnapshot(this.mMyCamera.getUid(), this)).getAbsolutePath());
        removeCorruptImage();
        this.gridview = (GridView) findViewById(R.id.asset_grid);
        Collections.sort(this.mGirdList, new YMComparator());
        ListIterator<GridItem> listIterator = this.mGirdList.listIterator();
        while (listIterator.hasNext()) {
            GridItem next = listIterator.next();
            String time = next.getTime();
            if (!this.sectionMap.containsKey(time)) {
                next.setSection(section);
                this.sectionMap.put(time, Integer.valueOf(section));
                section++;
            } else {
                next.setSection(this.sectionMap.get(time).intValue());
            }
        }
        StickyGridAdapter stickyGridAdapter = new StickyGridAdapter(this, this.mGirdList, this.gridview, this.mMyCamera);
        this.adapter = stickyGridAdapter;
        this.gridview.setAdapter((ListAdapter) stickyGridAdapter);
        this.gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long j) {
                if (i < 0) {
                    return;
                }
                if (LocalPictureActivity.this.isDeleteModel) {
                    CheckBox checkBox = (CheckBox) view.findViewById(R.id.grid_cb);
                    checkBox.setChecked(!checkBox.isChecked());
                    if (checkBox.isChecked()) {
                        LocalPictureActivity.mDeleteList.add((GridItem) LocalPictureActivity.this.mGirdList.get(i));
                    } else {
                        LocalPictureActivity.mDeleteList.remove(LocalPictureActivity.this.mGirdList.get(i));
                    }
                    LocalPictureActivity.this.adapter.checks[i] = checkBox.isChecked();
                    return;
                }
                Intent intent = new Intent();
                if (LocalPictureActivity.this.mMyCamera.isWallMounted) {
                    intent.putExtra(HiDataValue.EXTRAS_KEY_UID, LocalPictureActivity.this.mMyCamera.getUid());
                    intent.putExtra("photo_path", ((GridItem) LocalPictureActivity.this.mGirdList.get(i)).getPath());
                    intent.putExtra("position", i);
                    intent.setClass(LocalPictureActivity.this, WallMountedPhotoActivity.class);
                    LocalPictureActivity.this.startActivity(intent);
                    return;
                }
                if (LocalPictureActivity.this.mMyCamera.isFishEye()) {
                    LocalPictureActivity localPictureActivity = LocalPictureActivity.this;
                    int i2 = SharePreUtils.getInt(Constant.INSTALLMODE, localPictureActivity, localPictureActivity.mMyCamera.getUid());
                    MyCamera myCamera = LocalPictureActivity.this.mMyCamera;
                    if (i2 == -1) {
                        i2 = 0;
                    }
                    myCamera.mInstallMode = i2;
                    intent.setClass(LocalPictureActivity.this, FishEyePhotoActivity.class);
                    intent.putExtra("photo_path", ((GridItem) LocalPictureActivity.this.mGirdList.get(i)).getPath());
                    intent.putExtra("position", i);
                } else {
                    intent.setClass(LocalPictureActivity.this, ImagePagerActivity.class);
                }
                intent.putExtra(HiDataValue.EXTRAS_KEY_UID, LocalPictureActivity.this.mMyCamera.getUid());
                intent.putParcelableArrayListExtra("girdlst", LocalPictureActivity.this.mGirdList);
                intent.putExtra("position", i);
                LocalPictureActivity.this.startActivityForResult(intent, 10);
            }
        });
    }

    private void initTopView() {
        LinearLayout linearLayout = (LinearLayout) findViewById(R.id.ll_anim);
        this.mll_anim = linearLayout;
        linearLayout.setOnClickListener(this);
        final TitleView titleView = (TitleView) findViewById(R.id.title_top_lp);
        titleView.setTitle(getString(R.string.title_local_picture));
        titleView.setButton(0);
        titleView.setButton(1);
        titleView.setRightTxt(getString(R.string.edit));
        titleView.setNavigationBarButtonListener(new TitleView.NavigationBarButtonListener() {
            @Override
            public void OnNavigationButtonClick(int i) {
                if (i == 0) {
                    LocalPictureActivity.this.finish();
                    return;
                }
                if (i != 1) {
                    return;
                }
                LocalPictureActivity.mDeleteList.clear();
                if (LocalPictureActivity.this.isDeleteModel) {
                    titleView.setRightTxt(LocalPictureActivity.this.getString(R.string.edit));
                    LocalPictureActivity.this.adapter.setDelMode(0);
                    LocalPictureActivity.this.loadAnimation(HiTools.dip2px(r4, 50.0f));
                    LocalPictureActivity.this.isDeleteModel = false;
                    return;
                }
                titleView.setRightTxt(LocalPictureActivity.this.getString(R.string.finish));
                LocalPictureActivity.this.loadAnimation(HiTools.dip2px(r4, -50.0f));
                LocalPictureActivity.this.adapter.setDelMode(1);
                LocalPictureActivity.this.isDeleteModel = true;
            }
        });
    }

    public final synchronized void setImagesPath(String str) {
        this.IMAGE_FILES.clear();
        String[] list = new File(str).list();
        if (list != null && list.length > 0) {
            Arrays.sort(list);
            for (String str2 : list) {
                this.mGirdList.add(new GridItem(str + "/" + str2, paserTimeToYM(new File(str + "/" + str2).lastModified() / 1000)));
            }
            Collections.reverse(this.IMAGE_FILES);
        }
    }

    public final void removeCorruptImage() {
        Iterator<String> it = this.IMAGE_FILES.iterator();
        while (it.hasNext()) {
            if (BitmapFactory.decodeFile(it.next()) == null) {
                it.remove();
            }
        }
    }

    private String paserTimeToYM(long j) {
        TimeZone.setDefault(TimeZone.getDefault());
        return new SimpleDateFormat(TimeUtil.FORMAT_DATE).format(new Date(j * 1000));
    }

    @Override
    public void onActivityResult(int i, int i2, Intent intent) {
        super.onActivityResult(i, i2, intent);
        if (i == 10 && i2 == -1) {
            this.mGirdList.remove(intent.getExtras().getInt(ImagePagerActivity.INDEX));
            this.adapter.notifyDataSetChanged();
        }
    }

    @Override
    public void onClick(View view) {
        int id = view.getId();
        if (id == R.id.btn_return) {
            finish();
            return;
        }
        if (id != R.id.ll_anim) {
            return;
        }
        if (mDeleteList.size() <= 0) {
            MyToast.showToast(this, getString(R.string.tip_delete_snap));
        } else {
            final NiftyDialogBuilder niftyDialogBuilder = NiftyDialogBuilder.getInstance(this);
            niftyDialogBuilder.withMessage(getString(R.string.tips_msg_delete_snapshot)).withButton1Text(getString(R.string.btn_no)).withButton2Text(getString(R.string.btn_ok)).setButton1Click(new View.OnClickListener() {
                @Override
                public void onClick(View view2) {
                    niftyDialogBuilder.dismiss();
                }
            }).setButton2Click(new View.OnClickListener() {
                @Override
                public void onClick(View view2) {
                    niftyDialogBuilder.dismiss();
                    Iterator<GridItem> it = LocalPictureActivity.mDeleteList.iterator();
                    while (it.hasNext()) {
                        new File(it.next().getPath()).delete();
                    }
                    LocalPictureActivity.this.mGirdList.removeAll(LocalPictureActivity.mDeleteList);
                    for (int i = 0; i < LocalPictureActivity.this.adapter.checks.length - LocalPictureActivity.mDeleteList.size(); i++) {
                        LocalPictureActivity.this.adapter.checks[i] = false;
                    }
                    LocalPictureActivity.this.adapter.notifyDataSetChanged();
                    LocalPictureActivity.mDeleteList.clear();
                }
            }).show();
        }
    }

    public void loadAnimation(float f) {
        ObjectAnimator ofFloat = ObjectAnimator.ofFloat(this.mll_anim, "translationY", this.mll_anim.getTranslationY(), f);
        ofFloat.setDuration(250L);
        ofFloat.start();
    }

    private void registerBrodCast() {
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(ImagePagerActivity.BROAD_ACTION);
        registerReceiver(this.mReceiver, intentFilter);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        BroadcastReceiver broadcastReceiver = this.mReceiver;
        if (broadcastReceiver != null) {
            unregisterReceiver(broadcastReceiver);
        }
    }
}