package com.sunvote.xpadapp.fragments; import android.annotation.TargetApi; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.support.v4.content.ContextCompat; import android.util.DisplayMetrics; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageButton; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.github.barteksc.pdfviewer.PDFView; import com.github.barteksc.pdfviewer.listener.OnRenderListener; import com.sunvote.xpadapp.MainActivity; import com.sunvote.xpadapp.R; import com.sunvote.xpadapp.base.BaseFragment; import com.sunvote.xpadapp.db.modal.BillInfo; import com.sunvote.xpadapp.db.modal.VoteResult; import com.sunvote.xpadapp.utils.SharedPreferencesUtil; import com.sunvote.xpadcomm.XPadApi; import com.sunvote.xpadcomm.XPadApiInterface.VoteInfo; import com.ycanfunc.util.StringUtils; import java.io.File; public class MultiContentDetailFragment extends BaseFragment { private String TAG = "MultiContentDetailFr"; private BillInfo bill; private VoteInfo voteInfo; // private MultiTitleItem data; private TextView tvTitle; private TextView tvTips; private TextView ivReuslt; private Button btnA; private Button btnB; private Button btnC; //private PDFViewPager pdfView; private PDFView pdfView; private Button btnLookPdf; // private RelativeLayout panelVote; private RelativeLayout panelVotes; private RelativeLayout panelModify; private RelativeLayout panelTips; public String[] options; private boolean showBackBtn; // public int modifyable; // public int secret; private int scale = 0; private int originSize = 200; private int voteValue; private RelativeLayout confirmLayout; private TextView tvConfirmText; private MainActivity mact; private RelativeLayout contentDetailLayout; public String[] voteOptions = new String[13]; //btn一行个数 private int btnNum = 6; //关闭当前Fragment public boolean isClose = true; //pdf 页码 public int pdfPageNum = 0; private String filename; public ContentVoteOnBack contentBackListener; private String DATABASE_PATH = android.os.Environment.getExternalStorageDirectory().getAbsolutePath(); //自定义评测 private final int customVote=101; //pdf延迟加载 private int pdfDelayLoadTime=500; private int uType; public interface ContentVoteOnBack { void onBack(VoteResult result); } public void setInfo(BillInfo billInfo, VoteInfo vote, boolean isShowBack,int pageNum,int mUIType) { bill = billInfo; voteInfo = vote; showBackBtn = isShowBack; pdfPageNum = pageNum; uType=mUIType; } public void setPdfPage(int page){ if(pdfView!=null){ pdfView.jumpTo(page-1); //pdfView.setCurrentItem(page-1); } } private void initOptions() { voteOptions[0] = getString(R.string.zc_fd); voteOptions[1] = getString(R.string.zc_fd_qq); voteOptions[2] = getString(R.string.ty_fd_qq); voteOptions[3] = getString(R.string.my_jbmy_bmy); voteOptions[4] = getString(R.string.my_jbmy_bmy_blj); voteOptions[5] = getString(R.string.my_jbmy_yb_bmy); voteOptions[6] = getString(R.string.fcmy_my_blj_bmy_fcbmy); voteOptions[7] = getString(R.string.fcty_ty_bqd_bty_fcbty); voteOptions[8] = getString(R.string.yx_cz_bcz); voteOptions[9] = getString(R.string.yx_cz_jbcz_bcz); voteOptions[10] = getString(R.string.y_l_z_c); voteOptions[11] = getString(R.string.my_bmy_fcbmy); if (voteInfo == null) { return; } if (voteInfo.mode == XPadApi.VoteType_Vote) { if (voteInfo.mode1_msgType == 1) { options = voteOptions[1].split("/"); } else if (voteInfo.mode1_msgType == 2) { options = voteOptions[0].split("/"); } else if (voteInfo.mode1_msgType == 3) { if(voteInfo.mode4==customVote){ //自定义评测 if(bill!=null && !StringUtils.isEmpty(bill.billOptions)){ options = bill.billOptions.split("/"); } }else { options = voteOptions[voteInfo.mode4 - 1].split("/"); } } } else if (voteInfo.mode == XPadApi.VoteType_Evaluate) { if (voteInfo.mode1_msgType > 0) { options = voteOptions[voteInfo.mode1_msgType - 1].split("/"); } } Log.d(TAG, "options:" + options.toString()); } @Override public void onResume() { super.onResume(); isClose= true; openPdfFile(); } @Override public void onDestroy() { super.onDestroy(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_multi_content_detail, container, false); try { Log.d(TAG, "onCreateView"); contentDetailLayout = view.findViewById(R.id.content_detail_pannal_vote1); initOptions(); view.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ;// } }); mact = (MainActivity) getActivity(); tvTitle = (TextView) view.findViewById(R.id.content_detail_title); if (bill != null) { if (bill.title != null) { tvTitle.setText(bill.title); } } final View pdfViews = view.findViewById(R.id.content_detail_scview); pdfViews.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { ; } }); pdfView = view.findViewById(R.id.content_detail_pdfview); filename = DATABASE_PATH + "/sunvote/" + mact.meetingId + "/" + bill.billFile; panelVotes = (RelativeLayout) view.findViewById(R.id.content_detail_pannal_vote); panelModify = (RelativeLayout) view.findViewById(R.id.content_detail_pannal_modify); tvTips = (TextView) view.findViewById(R.id.content_detail_tv_tips); ivReuslt = (TextView) view.findViewById(R.id.content_detail_tv_result); ivReuslt.setVisibility(View.INVISIBLE); new Handler().postDelayed(new Runnable() { public void run() { //execute the task openPdfFile(); } }, pdfDelayLoadTime); panelVotes.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ; } }); panelModify.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ; } }); ivReuslt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ; } }); btnLookPdf = (Button) view.findViewById(R.id.btn_look_pdf); btnLookPdf.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { isClose = false; mact.isLoadPDF = false; pdfPageNum = pdfView.getCurrentPage() + 1; //pdfPageNum=pdfView.getCurrentItem()+1; FragmentManager fm = getFragmentManager(); FragmentTransaction tx = fm.beginTransaction(); PDFContextShowFragment pdfShow = new PDFContextShowFragment(); mact.pdfFragment = pdfShow; pdfShow.setInfo(filename, bill.billFile, pdfPageNum + "", "0", false); tx.add(R.id.frame_content, pdfShow, "pdfShow"); if (uType == 1) { tx.addToBackStack(null); } else { mact.multiContentFragment = null; fm.popBackStack(); } tx.commitAllowingStateLoss(); } }); btnA = (Button) view.findViewById(R.id.content_detail_btnA); btnA.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (voteInfo.mode2_modify == 1) { doVoteWithIndex(1); } else { showConfirmWithValue(1); } } }); btnB = (Button) view.findViewById(R.id.content_detail_btnB); btnB.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (voteInfo.mode2_modify == 1) { doVoteWithIndex(2); } else { showConfirmWithValue(2); } } }); btnC = (Button) view.findViewById(R.id.content_detail_btnC); btnC.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (options.length == 2) { if (voteInfo.mode2_modify == 1) { doVoteWithIndex(2); } else { showConfirmWithValue(2); } } else { if (voteInfo.mode2_modify == 1) { doVoteWithIndex(3); } else { showConfirmWithValue(3); } } } }); ImageButton btnBack = (ImageButton) view.findViewById(R.id.content_detail_btnback); btnBack.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { goBack(); } }); if (!showBackBtn) { btnBack.setVisibility(View.INVISIBLE); } else { btnBack.setVisibility(View.VISIBLE); } Button btnModify = (Button) view.findViewById(R.id.content_detail_btn_modify); btnModify.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { panelModify.setVisibility(View.GONE); showVote(); ivReuslt.setVisibility(View.VISIBLE); } }); tvConfirmText = (TextView) view.findViewById(R.id.content_detail_confirm_textview); confirmLayout = (RelativeLayout) view.findViewById(R.id.content_detail_confirm_panel); Button btnConfirmOK = (Button) view.findViewById(R.id.content_detail_btn_confirm_ok); btnConfirmOK.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { hideConfirm(); doVoteWithIndex(voteValue); } }); Button btnConfirmCancel = (Button) view.findViewById(R.id.content_detail_btn_confirm_cancel); btnConfirmCancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { hideConfirm(); } }); if (voteInfo != null) { if (voteInfo.mode4 == customVote) { contentDetailLayout.setVisibility(View.VISIBLE); panelVotes.setVisibility(View.GONE); if (options != null) { setButton(options); } } else { contentDetailLayout.setVisibility(View.INVISIBLE); if (options.length == 2) { btnA.setText(options[0]); btnB.setVisibility(View.INVISIBLE); btnC.setText(options[1]); } else if (options.length == 3) { btnA.setText(options[0]); btnB.setText(options[1]); btnC.setText(options[2]); } setBtnModle(1, false); showVote(); } showResult(); checkIsVoted(); panelVotes.setVisibility(View.VISIBLE); } else { panelVotes.setVisibility(View.GONE); hideVote(); } }catch (Exception ex){} return view; } private void openPdfFile(){ if(filename != null) { File file = new File(filename); if (file.exists()) { pdfView.fromFile(file) .enableSwipe(true) // allows to block changing pages using swipe .swipeHorizontal(false) .enableDoubletap(true) .defaultPage(0) //.onPageChange(onPageChangeListener) .onRender(new OnRenderListener() { @Override public void onInitiallyRendered(int nbPages, float pageWidth, float pageHeight) { pdfView.fitToWidth(pdfPageNum - 1); } }) .enableAnnotationRendering(false) .password(null) .scrollHandle(null) .enableAntialiasing(true) .spacing(0) .load(); } else { Toast.makeText(getActivity(), "议案文件未找到", Toast.LENGTH_LONG).show(); } } } /** * 自定评测按钮 wutaian 2017.08.23 * @param data */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN) private void setButton(String [] data){ Button btn [] = new Button[data.length]; DisplayMetrics dm = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; int height = dm.heightPixels; int j = -1; int f = btn.length; for (int i=0;i 9){ btn[i].setTextSize(18); } btn[i].setOnClickListener(btnClick); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams((width-80)/btnNum, 105); //设置按钮的宽度和高度 if (i%btnNum == 0) { j++; } f--; if(f 0) { ivReuslt.setVisibility(View.INVISIBLE); new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { @Override public void run() { if (voteInfo.mode3_secret == 0) { ivReuslt.setText(options[bill.voteResult - 1]); ivReuslt.setBackgroundResource(R.drawable.voted_empty); } else { ivReuslt.setText(""); ivReuslt.setBackgroundResource(R.drawable.voted); } ivReuslt.setVisibility(View.VISIBLE); } },200); } else { ivReuslt.setVisibility(View.INVISIBLE); } } private void goBack() { isClose= true; if (contentBackListener != null) { VoteResult result=new VoteResult(); result.selectResult=voteValue; contentBackListener.onBack(result); } /*BasePDFPagerAdapter adapter = (BasePDFPagerAdapter) pdfView.getAdapter(); if (adapter != null) { adapter.close(); adapter = null; }*/ FragmentManager fm = getFragmentManager(); FragmentTransaction tx = fm.beginTransaction(); tx.remove(MultiContentDetailFragment.this); tx.commit(); } public void hideVote() { // isStartVote = false; panelVotes.setVisibility(View.GONE); panelModify.setVisibility(View.GONE); // btnA.setVisibility(View.INVISIBLE); // btnB.setVisibility(View.INVISIBLE); // btnC.setVisibility(View.INVISIBLE); // ivReuslt.setVisibility(View.INVISIBLE); // tvTips.setVisibility(View.INVISIBLE); } public void showVote() { // isStartVote = true; if(voteInfo.mode4==customVote){ contentDetailLayout.setVisibility(View.VISIBLE); setBtnModle(2,true); setBtnModle(1,true); }else{ contentDetailLayout.setVisibility(View.INVISIBLE); panelVotes.setVisibility(View.VISIBLE); enableVote(); } // btnA.setVisibility(View.VISIBLE); // btnB.setVisibility(View.VISIBLE); // btnC.setVisibility(View.VISIBLE); // ivReuslt.setVisibility(View.VISIBLE); // tvTips.setVisibility(View.VISIBLE); } public void disableVote() { if(voteInfo.mode4==customVote){ contentDetailLayout.setVisibility(View.VISIBLE); setBtnModle(2,false); }else{ contentDetailLayout.setVisibility(View.INVISIBLE); btnA.setEnabled(false); btnB.setEnabled(false); btnC.setEnabled(false); } } public void enableVote() { if(voteInfo.mode4==customVote){ contentDetailLayout.setVisibility(View.VISIBLE); setBtnModle(2,true); }else{ btnA.setEnabled(true); btnB.setEnabled(true); btnC.setEnabled(true); } } private void showModify() { if(voteInfo.mode4==customVote){ contentDetailLayout.setVisibility(View.INVISIBLE); } panelModify.setVisibility(View.VISIBLE); } /* @Override public void onVoteEvent(VoteInfo info) { super.onVoteEvent(info); if (info.mode == XPadApi.VoteType_Stop) { hideVote(); saveVoteInfo(); } else { voteInfo = (VoteInfo) info; if (voteInfo.mode2_modify == 1) { tvTips.setText(getString(R.string.please_vote_can_modify)); } else { tvTips.setText(getString(R.string.please_vote_can_not_modify)); } showVote(); checkIsVoted(); } } */ private void showModifyOrDisable(){ if (voteInfo.mode2_modify == 1) { showModify(); //btnLookPdf.setEnabled(true); } else { disableVote(); //btnLookPdf.setEnabled(false); } } @Override public void onVoteSubmitSuccess() { tvTips.setText(getString(R.string.submited)); showModifyOrDisable(); saveVoteInfo(); } @Override public void onVoteSubmitError() { super.onVoteSubmitError(); showVote(); } private void saveVoteInfo(){ SharedPreferencesUtil.saveData(getActivity(),DATAPOS,Integer.valueOf(voteInfo.dataPos)); SharedPreferencesUtil.saveData(getActivity(),VOTEMODE,Integer.valueOf(voteInfo.mode)); SharedPreferencesUtil.saveData(getActivity(),VOTEVALUE,Integer.valueOf(voteValue)); } private void checkIsVoted(){ Log.i(TAG, "checkIsVoted: "); Integer datapos = (Integer) SharedPreferencesUtil.getData(getActivity(),DATAPOS,Integer.valueOf(-1)); Integer votemode = (Integer) SharedPreferencesUtil.getData(getActivity(),VOTEMODE,Integer.valueOf(-1)); Integer val = (Integer) SharedPreferencesUtil.getData(getActivity(),VOTEVALUE,Integer.valueOf(-1)); Log.i(TAG, "checkIsVoted: datapos:"+ datapos.intValue() +" voteMode:"+ votemode.intValue()+ " val:"+val.intValue()); if(datapos.intValue() == voteInfo.dataPos && votemode.intValue() == voteInfo.mode && val.intValue()!=-1){ voteValue = val.intValue(); if (bill != null) { bill.voteResult = voteValue; } showResult(); showModifyOrDisable(); tvTips.setText(getString(R.string.submited)); } } }