| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596 |
- package com.usai.apex;
- import android.animation.Animator;
- import android.animation.AnimatorListenerAdapter;
- import android.app.AlertDialog;
- import android.app.ProgressDialog;
- import android.content.ClipboardManager;
- import android.content.Context;
- import android.content.Intent;
- import android.database.Cursor;
- import android.graphics.Bitmap;
- import android.graphics.Color;
- import android.net.Uri;
- import android.os.AsyncTask;
- import android.os.Build;
- import android.os.Bundle;
- import android.provider.ContactsContract;
- import android.support.constraint.ConstraintLayout;
- import android.support.v4.app.Fragment;
- import android.text.Editable;
- import android.text.Html;
- import android.text.TextWatcher;
- import android.util.Log;
- import android.util.SparseIntArray;
- import android.view.GestureDetector;
- import android.view.Gravity;
- import android.view.LayoutInflater;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.ViewGroup;
- import android.webkit.WebResourceRequest;
- import android.webkit.WebResourceResponse;
- import android.webkit.WebView;
- import android.webkit.WebViewClient;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ImageButton;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.RelativeLayout;
- import android.widget.ScrollView;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.usai.apex.ShipMap.ShipMap;
- import com.usai.apex.mainframe.NewDetailActivity;
- import com.usai.apex.pdf.PDFPreviewActivity;
- import com.usai.util.Network;
- import com.usai.util.RAUtil;
- import com.usai.util.commonUtil;
- import org.apache.http.util.EncodingUtils;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.io.ByteArrayInputStream;
- import java.io.File;
- import java.io.InputStream;
- import java.util.regex.Pattern;
- public class DetailFragment extends Fragment implements OnClickListener /*
- * ,
- * OnGestureListener
- */
- {
- private static final int People_Pick_Code = 1357;
- private String copiedKey;
- private String copiedVal;
- private View touchedView;
- private class GestureListener extends GestureDetector.SimpleOnGestureListener {
- @Override
- public boolean onDoubleTapEvent(MotionEvent e) {
- if (e.getAction() == MotionEvent.ACTION_UP) {
- if (touchedView == null) {
- ClipboardManager cm = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
- cm.setText(copiedVal);
- Toast.makeText(mContext, "Copied " + copiedKey, Toast.LENGTH_LONG).show();
- } else {
- String type = (String) touchedView.getTag();
- if (type.equals("tracking")) {
- TextView tvgroup = (TextView) touchedView.findViewById(R.id.tv_group);
- if (tvgroup != null) {
- String val = tvgroup.getText().toString();
- ClipboardManager cm = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
- cm.setText(val);
- Toast.makeText(mContext, "Copied " + val, Toast.LENGTH_LONG).show();
- }
- }
- }
- }
- copiedKey = null;
- copiedVal = null;
- touchedView = null;
- return false;
- }
- @Override
- public boolean onSingleTapConfirmed(MotionEvent e) {
- if (touchedView != null) {
- onClick(touchedView);
- }
- touchedView = null;
- return false;
- }
- }
- private static final int REQUEST_LOGINACTIVITY = 1;
- // DataFragment mdataFragment;
- Context mContext;
- ProgressDialog progressDialog;
- private GestureDetector detector;
- protected void showProgressDialog(final String title, final String msg) {
- getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- try {
- progressDialog.setTitle(title);
- progressDialog.setMessage(msg);
- progressDialog.show();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- }
- /* private GestureDetector mGestureDetector; */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- if (progressDialog == null) {
- progressDialog = new ProgressDialog(mContext);
- progressDialog.setCancelable(false);
- }
- if (detector == null) {
- detector = new GestureDetector(mContext, new GestureListener());
- }
- }
- // @Override
- // public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- // super.onActivityCreated(savedInstanceState);
- //
- // progressDialog = new ProgressDialog(mContext);
- // progressDialog.setCancelable(false);
- // }
- @Override
- public void onAttach(Context context) {
- super.onAttach(context);
- mContext = context;
- }
- @Override
- public void onDestroyView()
- {
- Log.d("DetailFragment", "onDestroyView()");
- super.onDestroyView();
- }
- // public String get_content()
- // {
- // return fragment_content;
- // }
- LinearLayout ll_root;
- ScrollView sl_root;
- String mimeType = "text/html";
- private SearchTask m_task = null;
- SparseIntArray control = new SparseIntArray();
- // private TextView mStatusMessageView;
- private View mStatusView;
- String fragment_content = null;
- public void requestdata()
- {
- if (m_task != null)
- {
- return;
- }
- if (fragment_content != null)
- {
- LayoutInflater inflater = (LayoutInflater) ApexTrackingApplication
- .get_instance().getSystemService(
- Context.LAYOUT_INFLATER_SERVICE);
- init(fragment_content, inflater);
- return;
- }
- // if (mdataFragment.get_result() != null) {
- // LayoutInflater inflater = (LayoutInflater) ApexTrackingApplication
- // .get_instance().getSystemService(
- // Context.LAYOUT_INFLATER_SERVICE);
- // init(mdataFragment.get_result(), inflater);
- // }
- // if (fragment_content != null)
- // return;
- // mStatusMessageView.setText("Loading");
- showProgress(true);
- m_task = new SearchTask();
- m_task.execute();
- }
- public void set_content(String content)
- {
- fragment_content = content;
- }
- private void showProgress(final boolean show)
- {
- // On Honeycomb MR2 we have the ViewPropertyAnimator APIs, which allow
- // for very easy animations. If available, use these APIs to fade-in
- // the progress spinner.
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
- {
- int shortAnimTime = ApexTrackingApplication.get_instance()
- .getResources()
- .getInteger(android.R.integer.config_shortAnimTime);
- mStatusView.setVisibility(View.VISIBLE);
- mStatusView.animate().setDuration(shortAnimTime)
- .alpha(show ? 1 : 0)
- .setListener(new AnimatorListenerAdapter()
- {
- @Override
- public void onAnimationEnd(Animator animation)
- {
- mStatusView.setVisibility(show ? View.VISIBLE
- : View.INVISIBLE);
- }
- });
- ll_root.setVisibility(View.VISIBLE);
- ll_root.animate().setDuration(shortAnimTime).alpha(show ? 0 : 1)
- .setListener(new AnimatorListenerAdapter()
- {
- @Override
- public void onAnimationEnd(Animator animation)
- {
- ll_root.setVisibility(show ? View.INVISIBLE
- : View.VISIBLE);
- }
- });
- }
- else
- {
- // The ViewPropertyAnimator APIs are not available, so simply show
- // and hide the relevant UI components.
- mStatusView.setVisibility(show ? View.VISIBLE : View.INVISIBLE);
- ll_root.setVisibility(show ? View.INVISIBLE : View.VISIBLE);
- }
- }
- // @Override
- // public void onActivityCreated(Bundle savedInstanceState)
- // {
- // FragmentManager fm = getFragmentManager();
- //
- // // Check to see if we have retained the worker fragment.
- // mdataFragment = (DataFragment)fm.findFragmentByTag("work");
- //
- // // If not retained (or first time running), we need to create it.
- // if (mdataFragment == null) {
- // mdataFragment = new DataFragment();
- // // Tell it who it is working with.
- // mdataFragment.setTargetFragment(this, 0);
- // fm.beginTransaction().add(mdataFragment, "work").commit();
- // }
- // super.onActivityCreated(savedInstanceState);
- // }
- private ShipMap mTrackingMap;
- private int mSelectTrackingPosition = -1;
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- if (mContent != null) {
- outState.putString("content",mContent.toString());
- }
- outState.putInt("selectContactPosition",mSelectContactPosition);
- outState.putInt("selectTrackingPosition",mSelectTrackingPosition);
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState)
- {
- final Context context = getContext();
- /* mGestureDetector = new GestureDetector(this); */
- View view = null;
- if(this.getArguments().getString("action_type").equals("Tracing")||this.getArguments().getString("action_type").equals("Tracking")) {
- view = inflater.inflate(R.layout.detail_fragment_withmap, null);
- mTrackingMap = view.findViewById(R.id.tracking_map);
- } else {
- view = inflater.inflate(R.layout.detail_fragment, null);
- mTrackingMap = null;
- }
- if (savedInstanceState != null) {
- fragment_content = savedInstanceState.getString("content");
- mSelectContactPosition = savedInstanceState.getInt("selectContactPosition");
- mSelectTrackingPosition = savedInstanceState.getInt("selectTrackingPosition");
- }
- // if(this.getArguments().getString("action_type").equals("Tracing"))
- // {
- // LinearLayout ll1 = view.findViewById(R.id.detail_linear);
- //
- // ShipMap shipMap = new ShipMap(context);
- //// mShipMap = shipMap;
- //
- //
- // LinearLayout.LayoutParams mapLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0,1.0f);
- // mapLayoutParams.setMargins(commonUtil.dp2px(context,5),commonUtil.dp2px(context,2),commonUtil.dp2px(context,5),commonUtil.dp2px(context,2));
- //
- // ll1.addView(shipMap,mapLayoutParams);
- //
- // }
- sl_root = (ScrollView) view.findViewById(R.id.sl_root);
- /*
- * sl_root.setOnTouchListener(new View.OnTouchListener() {
- *
- * @Override public boolean onTouch(View v, MotionEvent event) { return
- * mGestureDetector.onTouchEvent(event); } });
- */
- ll_root = (LinearLayout) view.findViewById(R.id.ll_root);
- mStatusView = view.findViewById(R.id.status);
- LinearLayout ll = (LinearLayout) view.findViewById(R.id.ll_refresh);
- Button btn_refresh = (Button) ll.findViewById(R.id.btn_refresh);
- btn_refresh.setOnClickListener(new View.OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- LinearLayout ll = (LinearLayout) ll_root
- .findViewById(R.id.ll_refresh);
- ll.setVisibility(View.GONE);
- requestdata();
- }
- });
- // FragmentManager fm = getFragmentManager();
- // List<Fragment> fragments = fm.getFragments();
- // if (fragments != null) {
- // Log.e("DetailFragment", "fragments count=" + fragments.size());
- // // for (int i = 0; i < fragments.size(); i++)
- // // Log.e("DetailFragment", "fragments name=" + fragments.size());
- //
- // }
- // // this.getFragmentManager();
- // String tag = getArguments().getString("module_name");
- // // Check to see if we have retained the worker fragment.
- // mdataFragment = (DataFragment) fm.findFragmentById(12345);
- //
- // // If not retained (or first time running), we need to create it.
- // if (mdataFragment == null) {
- // Log.e("dataFragment creaded ", "tag=data_" + tag);
- // mdataFragment = new DataFragment();
- // // Tell it who it is working with.
- // mdataFragment.setTargetFragment(this, 0);
- // fm.beginTransaction().add(12345,mdataFragment, "data+" +
- // tag).commit();
- // }
- requestdata();
- return view;
- }
- protected JSONObject loadfakecontent(int rawid)
- {
- String jstring = "";
- try
- {
- InputStream in = getResources().openRawResource(rawid);
- // 获取文件的字节数
- int lenght = in.available();
- // 创建byte数组
- byte[] buffer = new byte[lenght];
- // 将文件中的数据读到byte数组中
- in.read(buffer);
- jstring = EncodingUtils.getString(buffer, "UTF-8");
- JSONObject jsobj = new JSONObject(jstring);
- return jsobj;
- // JSONObject objrecords = jsobj.getJSONObject("records");
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- return null;
- }
- public JSONObject mContent;
- private int mSelectContactPosition = -1;
- void init(String jstr, LayoutInflater inflater)
- {
- String TAG = "init@DetailFragment";
- Log.d(TAG, jstr);
- try
- {
- JSONObject jsonObj = new JSONObject(jstr);
- int group_count = jsonObj.getInt("count");
- // if (getArguments().getString("action_type").equals("Detail")) {
- // JSONObject commObj = loadfakecontent(R.raw.fake_comm);
- // jsonObj.put("group" + group_count++,commObj);
- // jsonObj.put("count",group_count);
- // }
- mContent = jsonObj;
- if (group_count == 0)
- {
- TextView tv_empty = (TextView) ll_root
- .findViewById(R.id.tv_empty);
- tv_empty.setVisibility(View.VISIBLE);
- }
- for (int i = 0; i < group_count; i++)
- {
- // String key = (String) it.next();
- // if (key.equals("result"))
- // continue;
- final JSONObject groupobj = jsonObj.getJSONObject("group" + i);
- View v = inflater.inflate(R.layout.group_tag, null);
- // v.setOnClickListener(this);
- TextView tvgroup = (TextView) v.findViewById(R.id.tv_group);
- String group_name = groupobj.getString("_name");
- tvgroup.setText(group_name);
- v.setId(commonUtil.generateViewId());
- ll_root.addView(v);
- String grouptype = groupobj.getString("_type");
- v.setTag(grouptype);
- v.setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View view, MotionEvent motionEvent) {
- touchedView = view;
- detector.onTouchEvent(motionEvent);
- return true;
- }
- });
- // groupobj.remove("_type");
- if (grouptype.equals("mapping"))
- {
- LinearLayout mappingview = (LinearLayout) inflater.inflate(
- R.layout.key_mapping, null);
- mappingview.setId(commonUtil.generateViewId());
- control.put(v.getId(), mappingview.getId());
- ll_root.addView(mappingview);
- int map_count = groupobj.getInt("count");
- for (int j = 0; j < map_count; j++)
- {
- // String keygroup = (String) itgroup.next();
- JSONObject itemobj = groupobj.getJSONObject("item" + j);
- final String key = (String) itemobj.keys().next();
- final String val = itemobj.getString(key);
- LinearLayout mappingitem = (LinearLayout) inflater
- .inflate(R.layout.keymapping_item, null);
- TextView tvkey = (TextView) mappingitem
- .findViewById(R.id.tv_key);
- tvkey.setText(key);
- // tvkey.setBackgroundResource(R.drawable.detail_item);
- TextView tvval = (TextView) mappingitem
- .findViewById(R.id.tv_value);
- tvval.setText(Html.fromHtml(val));
- // tvval.setBackgroundResource(R.drawable.detail_item);
- tvval.setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View view, MotionEvent motionEvent) {
- copiedKey = key;
- copiedVal = val;
- detector.onTouchEvent(motionEvent);
- return true;
- }
- });
- mappingview.addView(mappingitem);
- }
- // Iterator itgroup = groupobj.keys();
- // while (itgroup.hasNext())
- // {
- //
- //
- // }
- }
- else if (grouptype.equals("table"))
- {
- String content = groupobj.getString("content");
- WebView wv;
- wv = (WebView) inflater.inflate(R.layout.web_content, null);
- wv.getSettings().setDefaultTextEncodingName("UTF-8");
- wv.setId(commonUtil.generateViewId());
- wv.setWebViewClient(new MyWebViewClient());
- // wv.setDownloadListener(new DownloadListener()
- // {
- //
- // @Override
- // public void onDownloadStart(String url,
- // String userAgent, String contentDisposition,
- // String mimetype, long contentLength)
- // {
- // if(!commonUtil.localdirExist())
- // {
- //
- // new AlertDialog.Builder(getActivity())
- // .setIconAttribute(android.R.attr.alertDialogIcon)
- // .setTitle(R.string.str_localdir_error)
- // .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
- // public void onClick(DialogInterface dialog, int whichButton) {
- //
- // /* User clicked OK so do some stuff */
- // }
- // })
- // .create().show();
- // return;
- // }
- //// String filename = contentDisposition.replace("attachment;filename=\"", "");
- //// filename = filename.replace("\"", "");
- ////
- //// Log.d("WebView", "Download Action");
- //// Log.d("tag", "url=" + url);
- //// // Log.i("tag", "userAgent="+userAgent);
- //// // Log.i("tag",
- //// // "contentDisposition="+contentDisposition);
- //// // Log.i("tag", "mimetype="+mimetype);
- //// // Log.i("tag", "contentLength="+contentLength);
- //// // Uri uri = Uri.parse(url);
- //// // Intent intent = new Intent(Intent.ACTION_VIEW,
- //// // uri);
- //// // startActivity(intent);
- ////
- //// final DownloadManager downloadManager = (DownloadManager) ApexTrackingApplication
- //// .get_instance().getSystemService(
- //// Context.DOWNLOAD_SERVICE);
- ////
- //// Uri uri = Uri.parse(url);
- //// final Request request = new Request(uri);
- ////
- //// // 设置允许使用的网络类型,这里是移动网络和wifi都可以
- //// request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE
- //// | DownloadManager.Request.NETWORK_WIFI);
- ////
- ////
- ////
- //// request.setDestinationInExternalPublicDir("Apex Mobile",filename);
- ////
- //// // 禁止发出通知,既后台下载,如果要使用这一句必须声明一个权限:android.permission.DOWNLOAD_WITHOUT_NOTIFICATION
- //// // request.setShowRunningNotification(false);
- ////
- //// // 不显示下载界面
- //// request.setVisibleInDownloadsUi(false);
- //// request.setNotificationVisibility(Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
- ////
- //// /*
- //// * 设置下载后文件存放的位置,如果sdcard不可用,那么设置这个将报错,
- //// * 因此最好不设置如果sdcard可用,下载后的文件 在/mnt/sdcard/Android/
- //// * data/packageName/files目录下面
- //// * ,如果sdcard不可用,设置了下面这个将报错,不设置,下载后的文件在/cache这个 目录下面
- //// */
- //// // request.setDestinationInExternalFilesDir(this,
- //// // null, "tar.apk");
- ////
- ////// getActivity();
- //// AlertDialog.Builder builder = new Builder(
- //// getActivity());
- //// builder.setMessage(getString(R.string.str_downloadmessage));
- ////
- //// builder.setTitle(getString(R.string.str_confirmdownload));
- ////
- //// builder.setPositiveButton(
- //// getString(R.string.str_download),
- //// new Dialog.OnClickListener()
- //// {
- ////
- //// @Override
- //// public void onClick(
- //// DialogInterface dialog,
- //// int which)
- //// {
- //// downloadManager.enqueue(request);
- //// dialog.dismiss();
- ////
- //// }
- //// });
- ////
- //// builder.setNegativeButton(
- //// getString(R.string.str_cancel),
- //// new Dialog.OnClickListener()
- //// {
- ////
- //// @Override
- //// public void onClick(
- //// DialogInterface dialog,
- //// int which)
- //// {
- //// dialog.dismiss();
- //// }
- //// });
- ////
- //// builder.create().show();
- //
- // }
- //
- // });
- wv.setTag(i);
- control.put(v.getId(), wv.getId());
- wv.loadData(content, mimeType, null);
- // wv.setOnTouchListener(new OnTouchListener()
- // {
- // @Override
- // public boolean onTouch(View v, MotionEvent event)
- // {
- //
- // if (event.getAction() == MotionEvent.ACTION_UP)
- // sl_root.requestDisallowInterceptTouchEvent(false);
- // else
- // sl_root.requestDisallowInterceptTouchEvent(true);
- //
- // return false;
- // }
- // });
- ll_root.addView(wv);
- Log.d("table content", content);
- }
- if (grouptype.equals("tracking"))
- {
- LinearLayout listview = (LinearLayout) inflater.inflate(
- R.layout.list_content, null);
- listview.setId(commonUtil.generateViewId());
- ViewGroup.LayoutParams lp=listview.getLayoutParams();
- control.put(v.getId(), listview.getId());
- ll_root.addView(listview);
- long list_count = groupobj.getInt("count");
- for (int j = 0; j < list_count; j++)
- {
- final JSONObject itemobj = groupobj.getJSONObject("item" + j);
- ConstraintLayout listitem = (ConstraintLayout) inflater
- .inflate(R.layout.detail_tracking_cell, null);
- ImageView icon = (ImageView) listitem
- .findViewById(R.id.iv_thumb);
- String iconname = itemobj.getString("icon");
- int rid = commonUtil.iconName2Rid(getActivity(),iconname);
- icon.setImageResource(rid);
- if(j!=0)
- {
- icon.setColorFilter(Color.GRAY);
- // ColorMatrix matrix = new ColorMatrix();
- // matrix.setSaturation(0);
- // ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
- // icon..image.setColorFilter(filter);
- }
- TextView tvitem = (TextView) listitem
- .findViewById(R.id.tv_title);
- String val = itemobj.getString("msg");
- tvitem.setText(val);
- // tvitem.setBackgroundResource(R.drawable.detail_item);
- // listitem.removeView(tvitem);
- int px=commonUtil.dp2px(getActivity(),56);
- listitem.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, px, 1));
- listview.addView(listitem);
- // ViewGroup.LayoutParams lp1=listitem.getLayoutParams();
- final int selectIndex = i;
- listitem.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mTrackingMap != null) {
- JSONObject location = groupobj.optJSONObject("location");
- if (location != null) {
- mTrackingMap.showShipAnnotation(location);
- }
- mSelectTrackingPosition = selectIndex;
- }
- }
- });
- if (mSelectTrackingPosition == i) {
- if (mTrackingMap != null) {
- JSONObject location = groupobj.optJSONObject("location");
- if (location != null) {
- mTrackingMap.showShipAnnotation(location);
- }
- }
- }
- }
- }
- if (grouptype.equals("list"))
- {
- LinearLayout listview = (LinearLayout) inflater.inflate(
- R.layout.list_content, null);
- listview.setId(commonUtil.generateViewId());
- control.put(v.getId(), listview.getId());
- ll_root.addView(listview);
- long list_count = groupobj.getInt("count");
- for (int j = 0; j < list_count; j++)
- {
- RelativeLayout listitem = (RelativeLayout) inflater
- .inflate(R.layout.list_item, null);
- TextView tvitem = (TextView) listitem
- .findViewById(R.id.tv_item);
- String val = groupobj.getString("line" + j);
- tvitem.setText(val);
- // tvitem.setBackgroundResource(R.drawable.detail_item);
- listitem.removeView(tvitem);
- listview.addView(tvitem);
- }
- // Iterator itgroup = groupobj.keys();
- // while (itgroup.hasNext())
- // {
- // String keygroup = (String) itgroup.next();
- //
- // }
- }
- if (grouptype.equals("communication"))
- {
- LinearLayout listview = (LinearLayout) inflater.inflate(
- R.layout.list_content, null);
- listview.setId(commonUtil.generateViewId());
- control.put(v.getId(), listview.getId());
- ll_root.addView(listview);
- // 添加收件人和cc
- ConstraintLayout commu_header = (ConstraintLayout) inflater
- .inflate(R.layout.commu_item_header, null);
- TextView toTv = commu_header.findViewById(R.id.comm_to_tv);
- EditText ccTv = commu_header.findViewById(R.id.comm_cc_tv);
- ImageButton contactBtn = commu_header.findViewById(R.id.comm_contact_btn);
- ccTv.setTag("group_" + i + "_cc");
- String to = groupobj.optString("receipt");
- String cc = groupobj.optString("cc");
- toTv.setText(to);
- ccTv.setText(cc);
- TextFieldTextWatcher ccWatcher = new TextFieldTextWatcher(getContext(),ccTv,i,0);
- ccTv.addTextChangedListener(ccWatcher);
- final int selectIndex = i;
- contactBtn.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- mSelectContactPosition = selectIndex;
- Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
- startActivityForResult(intent, People_Pick_Code);
- }
- });
- listview.addView(commu_header);
- long list_count = groupobj.getInt("count");
- for (int j = 0; j < list_count; j++)
- {
- ConstraintLayout msgitem = (ConstraintLayout) inflater
- .inflate(R.layout.commu_item_msg, null);
- JSONObject msgObj = groupobj.getJSONObject("item" + j);
- String sender = msgObj.optString("Sender");
- String msg = msgObj.optString("msg");
- String time = msgObj.optString("mst_time");
- final String email_url = msgObj.optString("email_url");
- TextView senderTv = msgitem.findViewById(R.id.comm_sender_tv);
- TextView msgTv = msgitem.findViewById(R.id.comm_msg_tv);
- TextView timeTv = msgitem.findViewById(R.id.comm_time_tv);
- Button sendBtn = msgitem.findViewById(R.id.comm_send_msg_btn);
- senderTv.setText(sender);
- msgTv.setText(msg);
- timeTv.setText(time);
- sendBtn.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- Uri content_url = Uri.parse(email_url);
- Intent intent = new Intent(Intent.ACTION_VIEW,content_url);
- // Intent intent = new Intent();
- // intent.setAction("android.intent.action.VIEW");
- // intent.setData(content_url);
- startActivity(intent);
- }
- });
- if (email_url == null || email_url.length() == 0) {
- sendBtn.setVisibility(View.INVISIBLE);
- }
- listview.addView(msgitem);
- }
- //添加 消息输入和发送
- ConstraintLayout commu_footer = (ConstraintLayout) inflater
- .inflate(R.layout.commu_item_footer, null);
- EditText editTv = commu_footer.findViewById(R.id.comm_edit_tv);
- Button sendEmailBtn = commu_footer.findViewById(R.id.comm_send_email_btn);
- TextFieldTextWatcher editWatcher = new TextFieldTextWatcher(getContext(),editTv,i,1);
- editTv.addTextChangedListener(editWatcher);
- String edit_content = groupobj.optString("edit_content");
- editTv.setText(edit_content);
- final int groupIndex = i;
- sendEmailBtn.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- JSONObject commGroup = getGroup(groupIndex);
- final String cc = commGroup.optString("cc");
- final String content = commGroup.optString("edit_content");
- if (content == null || content.length() == 0) {
- new AlertDialog.Builder(mContext)
- .setTitle("Warning")
- .setMessage("The communication message that will be sent is blank")
- .setPositiveButton("Ok",null)
- .show();
- return;
- }
- if (cc != null && cc.length() > 0) {
- // 校验邮箱地址
- String[] ccArr = cc.split(";");
- for (int k = 0; k < ccArr.length; k++) {
- String ccStr = ccArr[k];
- if (ccStr.length() > 0) {
- boolean isEmail = validateEmail(ccStr);
- if (!isEmail) {
- new AlertDialog.Builder(mContext)
- .setTitle("Warning")
- .setMessage("The communication cc is not right")
- .setPositiveButton("Ok",null)
- .show();
- return;
- }
- }
- }
- }
- // send
- final ProgressDialog pd = new ProgressDialog(mContext);
- pd.setTitle(null);
- pd.setMessage("send email");
- pd.setCancelable(false);
- pd.show();
- final String serialNo = commGroup.optString("serial_no");
- new Thread(new Runnable() {
- @Override
- public void run() {
- final JSONObject response = Network.sendEmail(content,cc,serialNo);
- getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- pd.dismiss();
- boolean showAlert = false;
- String msg = null;
- if (response != null) {
- int result = response.optInt("result",Network.RESULT_FALSE);
- if (result != Network.RESULT_TRUE) {
- showAlert = true;
- msg = response.optString("err_msg");
- }
- } else {
- showAlert = true;
- }
- if (msg == null) {
- msg = "Sorry,something wrong";
- }
- if (showAlert) {
- new AlertDialog.Builder(mContext)
- .setTitle(null)
- .setMessage(msg)
- .setPositiveButton("Ok",null)
- .show();
- }
- }
- });
- }
- }).start();
- }
- });
- listview.addView(commu_footer);
- listview.forceLayout();
- }
- // String value = obj.getString(key);
- // JSONArray array = obj.getJSONArray(key);
- // for(int i=0;i<array.length();i++){
- // JSONObject jsonobject = array.getJSONObject(i);
- // jsonobject.put("name", key);
- // jsonobject.put("exp", key+"="+jsonobject.getString("value"));
- // newArray.put(jsonobject);
- }
- // Iterator it = jsonObj.keys();
- // while (it.hasNext())
- // {
- //
- // }
- }
- catch (JSONException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- private JSONObject getGroup(int group) {
- if (mContent != null) {
- JSONObject groupobj = mContent.optJSONObject("group" + group);
- return groupobj;
- }
- return null;
- }
- private boolean validateEmail(String email) {
- String emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
- return Pattern.matches(emailRegex,email);
- }
- @Override
- public void onClick(View v)
- {
- View view = ll_root.findViewById(control.get(v.getId()));
- ImageView expand_iv = v.findViewById(R.id.group_expand_indicator);
- if (view.getVisibility() == View.VISIBLE) {
- expand_iv.setImageResource(R.drawable.ic_expand_less);
- view.setVisibility(View.GONE);
- }
- else {
- expand_iv.setImageResource(R.drawable.ic_expand_more);
- view.setVisibility(View.VISIBLE);
- }
- }
- @Override
- public void onDestroy()
- {
- if (m_task != null)
- m_task.cancel(true);
- super.onDestroy();
- }
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data)
- {
- // ((NewDetailActivity) getActivity()).showlogin = false;
- super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == People_Pick_Code) {
- Uri contactData = data.getData();
- Cursor c = mContext.getContentResolver().query(contactData, null, null, null, null);
- if (c.moveToFirst()) {
- String contactId = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
- Cursor cursor = mContext.getContentResolver().query(
- ContactsContract.CommonDataKinds.Email.CONTENT_URI,
- new String[]{ContactsContract.CommonDataKinds.Email.DATA, ContactsContract.CommonDataKinds.Email.TYPE}, ContactsContract.Data.CONTACT_ID + "='" + contactId + "'", null, null);
- while(cursor.moveToNext()) {
- String email = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
- String emailType = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
- email = email.replace("\r\n",";");
- email = email.replace("\r",";");
- email = email.replace("\n",";");
- String[] emailArr = email.split(";");
- for (int i = 0; i < emailArr.length; i++) {
- email = emailArr[i];
- if (email.length() > 0) {
- if (emailType != null && Integer.valueOf(emailType) == ContactsContract.CommonDataKinds.Email.TYPE_WORK) {
- appendContactEmail(email,mSelectContactPosition);
- return;
- }
- }
- }
- }
- }
- mSelectContactPosition = -1;
- }
- }
- @Override
- public void onDetach()
- {
- if (m_task != null)
- m_task.cancel(false);
- super.onDetach();
- }
- class SearchTask extends AsyncTask<Void, Void, Boolean>
- {
- int errorcode;
- @Override
- protected Boolean doInBackground(Void... params)
- {
- Log.d("SearchTask", "doInBackground");
- if (!Network.NetworkIsAvailable())
- {
- errorcode = Network.RESULT_NET_NOTAVAILABLE;
- return false;
- }
- String jstr = Network.get_detail(getArguments());
- if (jstr == null || jstr.length() <= 0)
- {
- // Log.d(TAG, "json is wrong");
- errorcode = Network.RESULT_NET_ERROR;
- return false;
- }
- // mdataFragment.put_result(jstr);
- fragment_content = jstr;
- NewDetailActivity activity = (NewDetailActivity) getActivity();
- activity.save_content(getArguments().getString("action_type"), jstr);
- errorcode = Network.RESULT_TRUE;
- return true;
- }
- @Override
- protected void onPostExecute(Boolean success)
- {
- Log.i("onPostExecute", "entry");
- m_task = null;
- showProgress(false);
- // if (ApexTrackingApplication.get_authorization() == false)
- // {
- // if(((DetailActivity) getActivity()).showlogin == true)
- // return;
- // ((DetailActivity) getActivity()).showlogin = true;
- // LinearLayout ll = (LinearLayout) ll_root
- // .findViewById(R.id.ll_refresh);
- // ll.setVisibility(View.VISIBLE);
- // Toast toast = Toast.makeText(
- // ApexTrackingApplication.get_instance(),
- // getText(R.string.msg_net_passwordchangedremote) , Toast.LENGTH_LONG);
- // toast.setGravity(Gravity.CENTER, 0, 0);
- // toast.show();
- // Intent i = new Intent();
- // i.setClass(getActivity(), ApexActivity.class);
- // startActivityForResult(i, REQUEST_LOGINACTIVITY);
- // return;
- // }
-
- switch (errorcode)
- {
- case Network.RESULT_NET_NOTAVAILABLE:
- {
- Toast toast = Toast.makeText(
- ApexTrackingApplication.get_instance(),
- getText(R.string.msg_connection_none),
- Toast.LENGTH_LONG);
- toast.setGravity(Gravity.CENTER, 0, 0);
- toast.show();
- break;
- }
- case Network.RESULT_NET_ERROR:
- {
- Toast toast = Toast.makeText(
- ApexTrackingApplication.get_instance(),
- getText(R.string.msg_net_error), Toast.LENGTH_LONG);
- toast.setGravity(Gravity.CENTER, 0, 0);
- toast.show();
- break;
- }
- case Network.RESULT_ERROR:
- // case Network.RESULT_RESPONSE_NULL:
- {
- Toast toast = Toast.makeText(
- ApexTrackingApplication.get_instance(),
- getText(R.string.msg_net_resulterror) + ":"
- + errorcode, Toast.LENGTH_LONG);
- toast.setGravity(Gravity.CENTER, 0, 0);
- toast.show();
- break;
- }
- default:
- break;
- }
- if (success)
- {
- LayoutInflater inflater = (LayoutInflater) ApexTrackingApplication
- .get_instance().getSystemService(
- Context.LAYOUT_INFLATER_SERVICE);
- init(fragment_content, inflater/*
- * getActivity().
- * getLayoutInflater()
- */);
- }
- else
- {
- LinearLayout ll = (LinearLayout) ll_root
- .findViewById(R.id.ll_refresh);
- ll.setVisibility(View.VISIBLE);
- }
- super.onPostExecute(success);
- }
- @Override
- protected void onCancelled()
- {
- m_task = null;
- showProgress(false);
- }
- }
- private void showQuickLook(final String url) {
- showProgressDialog("Please wait","Downloading...");
- new Thread(new Runnable() {
- @Override
- public void run() {
- String cacheDir = ApexTrackingApplication.getInstance().getExternalCacheDir().getAbsolutePath();//ApexTrackingApplication.getInstance().getDocumentDir();
- final Bundle param = new Bundle();
- // 下载文件
- final File downloadFile = Network.downloadFile(param,url,cacheDir);
- getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- progressDialog.dismiss();
- if (downloadFile != null && downloadFile.exists()) {
- String email = null,email_subject = null,email_content = null;
- //此处需要新增保存文档的本地表
- try {
- email = mContent.getString("email");
- email_subject = mContent.getString("email_subject");
- email_content = mContent.getString("email_content");
- } catch (JSONException e) {
- e.printStackTrace();
- }
- // email=param.getString("email");
- // email_subject=param.getString("email_subject");
- // email_content=param.getString("email_content");
- previewPDF(downloadFile.getAbsolutePath(),email,email_subject,email_content);
- } else {
- showAlert("Sorry,there is a wrong.");
- }
- }
- });
- }
- }).start();
- }
- // public class DataFragment extends Fragment {
- //
- // String result = null;
- //
- // @Override
- // public void onCreate(Bundle savedInstanceState) {
- // setRetainInstance(true);
- // super.onCreate(savedInstanceState);
- // }
- //
- // public String get_result() {
- // return result;
- //
- // }
- //
- // public void put_result(String s) {
- // result = s;
- // }
- //
- // }
- public void showAlert(String msg) {
- if (msg == null || msg.isEmpty()) {
- return;
- }
- new android.support.v7.app.AlertDialog.Builder(mContext)
- .setMessage(msg)
- .show();
- }
- protected void previewPDF(String file,String email,String subject,String content) {
- Intent myIntent = new Intent();
- myIntent = new Intent(getActivity(), PDFPreviewActivity.class);
- myIntent.putExtra("file",file);
- myIntent.putExtra("iscache",true);
- try {
- JSONObject json = new JSONObject();
- // email = "66666@qq.com";
- // subject = "test subject";
- // content = "test body";
- if (email != null) {
- json.put("email",email);
- }
- if (subject != null) {
- json.put("subject",subject);
- }
- if (content != null) {
- json.put("content",content);
- }
- myIntent.putExtra("email",json.toString());
- } catch (JSONException e) {
- e.printStackTrace();
- }
- startActivity(myIntent);
- }
- public void download(String url) {
- final String download_url = url;
- showQuickLook(url);
- if(true)
- return;
- showProgressDialog("Please wait","Downloading...");
- new Thread(new Runnable() {
- @Override
- public void run() {
- // String cacheDir = ApexTrackingApplication.getInstance().getDocumentDir();
- // 下载文件
- final File downloadFile = Network.downloadFile(null,download_url,null);
- getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- progressDialog.dismiss();
- RAUtil.openFile(getActivity(),downloadFile);
- }
- });
- }
- }).start();
- }
- public class MyWebViewClient extends WebViewClient
- {
- // 如果页面中链接,如果希望点击链接继续在当前browser中响应,
- // 而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。
- public boolean shouldOverviewUrlLoading(WebView view, String url)
- {
- Log.d("Web Client", "shouldOverviewUrlLoading: " + url);
- // L.i("shouldOverviewUrlLoading");
- view.loadUrl(url);
- return true;
- }
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
- Log.d("Web Client", "shouldOverrideUrlLoading: " + request);
- return super.shouldOverrideUrlLoading(view, request);
- }
- public void onPageStarted(WebView view, String url, Bitmap favicon)
- {
- // L.i("onPageStarted");
- // showProgress();
- Log.d("Web Client", "onPageStarted: ");
- }
- public void onPageFinished(WebView view, String url)
- {
- // L.i("onPageFinished");
- // closeProgress();
- Log.d("Web Client", "onPageFinished: ");
- }
- public void onReceivedError(WebView view, int errorCode,
- String description, String failingUrl)
- {
- // L.i("onReceivedError");
- // closeProgress();
- Log.d("Web Client", "onReceivedError: ");
- }
- @Override
- public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
- Log.d("Web Client", "shouldInterceptRequest: " + url);
- if (url.startsWith("http") && url.contains("action_type=download_doc")) {
- download(url);
- String content = contentOfWebView(view);
- WebResourceResponse response = new WebResourceResponse("text/html",
- "utf-8",
- new ByteArrayInputStream(content.getBytes()));
- return response;
- } else {
- return super.shouldInterceptRequest(view,url);
- }
- }
- String contentOfWebView(WebView webView) {
- int i = (int)webView.getTag();
- try {
- JSONObject groupobj = mContent.getJSONObject("group" + i);
- String content = groupobj.getString("content");
- return content;
- } catch (JSONException e) {
- e.printStackTrace();
- }
- return null;
- }
- // @Override
- // public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
- // Log.d("Web Client", "shouldInterceptRequest: " + request);
- //
- // if (request.getUrl().toString().contains("action_type=download_doc")) {
- // return null;
- // } else {
- // return super.shouldInterceptRequest(view,request);
- // }
- //
- //
- // }
- }
- private void appendContactEmail(String email,int group) {
- try {
- String groupKey = "group" + group;
- JSONObject groupObj = mContent.getJSONObject(groupKey);
- String groupType = groupObj.getString("_type");
- if (groupType.equals("communication")) {
- String oldCC = groupObj.optString("cc");
- if (oldCC == null || oldCC.length() == 0) {
- oldCC = email + ";";
- } else {
- if (oldCC.substring(oldCC.length() - 1).equals(";")) {
- oldCC = oldCC + email + ";";
- } else {
- oldCC = oldCC + ";" + email + ";";
- }
- }
- commContentChange(oldCC,group,0);
- EditText ccTv = ll_root.findViewWithTag("group_" + group + "_cc");
- if (ccTv != null) {
- ccTv.setText(oldCC);
- ccTv.requestFocus();
- ccTv.setSelection(oldCC.length());
- }
- }
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- private void commContentChange(String content,int group,int child) {
- try {
- String groupKey = "group" + group;
- JSONObject groupObj = mContent.getJSONObject(groupKey);
- String groupType = groupObj.getString("_type");
- if (groupType.equals("communication")) {
- if (child == 0) {
- groupObj.put("cc",content);
- } else if (child == 1) {
- groupObj.put("edit_content",content);
- }
- mContent.put(groupKey,groupObj);
- }
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- public class TextFieldTextWatcher implements TextWatcher {
- Context mCtx;
- int group;
- int child;
- EditText textView;
- public TextFieldTextWatcher(Context ctx,EditText textView,int group,int child) {
- this.mCtx = ctx;
- this.textView = textView;
- this.group = group;
- this.child = child;
- }
- String origin_text;
- String string;
- int start_position;
- int change_length; // 修改原文长度
- int new_string_length;
- /**
- * s 改变前的内容
- * start 增加内容前光标位置,删除内容后光标位置 (起始位置)
- * count 选中s中的内容长度(发生改变的原内容长度),未选中为0
- * after 新添加的内容长度,删除为0
- * */
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- // Log.d("TextChange", "before Text Changed: " + s + " Start: " + start + " Count: " + count + " After: " + after);
- origin_text = s.toString();
- start_position = start;
- change_length = count;
- new_string_length = after;
- }
- /**
- * s 改变后的内容
- * start 增加内容前光标位置,删除内容后光标位置 (起始位置)
- * before 选中s中的内容长度(发生改变的原内容长度),未选中为0
- * count 增加内容长度,删除内容为0
- * */
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- // Log.d("TextChange", "on Text Changed: " + s + " Start: " + start + " Before: " + before + " Count: " + count);
- }
- @Override
- public void afterTextChanged(Editable s) {
- commContentChange(s.toString(),group,child);
- }
- }
- }
|