package com.marktony.translator.ui; import android.content.ClipData; import android.content.ClipboardManager; import android.content.ContentValues; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.design.widget.TextInputEditText; import android.support.v4.app.Fragment; import android.support.v7.app.AlertDialog; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.marktony.translator.R; import com.marktony.translator.adapter.NotebookMarkItemAdapter; import com.marktony.translator.db.DBUtil; import com.marktony.translator.db.NotebookDatabaseHelper; import com.marktony.translator.interfaze.OnRecyclerViewOnClickListener; import com.marktony.translator.model.NotebookMarkItem; import java.util.ArrayList; import java.util.Collections; import static android.content.Context.CLIPBOARD_SERVICE; /** * Created by lizhaotailang on 2016/7/12. */ public class NoteBookFragment extends Fragment { private RecyclerView recyclerViewNotebook; private FloatingActionButton fab; private ArrayList<NotebookMarkItem> list = new ArrayList<NotebookMarkItem>(); private NotebookMarkItemAdapter adapter; private TextView tvNoNote; private NotebookDatabaseHelper dbHelper; public NoteBookFragment(){ } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); dbHelper = new NotebookDatabaseHelper(getActivity(),"MyStore.db",null,1); } @Nullable @Override public View onCreateView(final LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_notebook,container,false); initViews(view); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { final AlertDialog dialog = new AlertDialog.Builder(getActivity()).create(); dialog.setTitle(R.string.add_to_notebook); LayoutInflater li = getActivity().getLayoutInflater(); final View v = li.inflate(R.layout.add_note,null); dialog.setView(v); dialog.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.OK), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { TextInputEditText etInput = (TextInputEditText) v.findViewById(R.id.et_input); TextInputEditText etOutput = (TextInputEditText) v.findViewById(R.id.et_output); String in = etInput.getText().toString(); String out = etOutput.getText().toString(); if (in.isEmpty() || out.isEmpty()){ Snackbar.make(fab, R.string.no_input, Snackbar.LENGTH_SHORT).show(); } else { if (tvNoNote.getVisibility() == View.VISIBLE){ tvNoNote.setVisibility(View.GONE); } NotebookMarkItem item = new NotebookMarkItem(in,out); ContentValues values = new ContentValues(); values.put("input",in); values.put("output",out); DBUtil.insertValue(dbHelper,values); values.clear(); list.add(0,item); adapter.notifyItemInserted(0); recyclerViewNotebook.smoothScrollToPosition(0); } } }); dialog.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.cancel) , new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { } }); dialog.show(); } }); getDataFromDB(); if (list.isEmpty()){ tvNoNote.setVisibility(View.VISIBLE); } Collections.reverse(list); adapter = new NotebookMarkItemAdapter(getActivity(),list); recyclerViewNotebook.setAdapter(adapter); adapter.setItemClickListener(new OnRecyclerViewOnClickListener() { @Override public void OnItemClick(View view, int position) { } @Override public void OnSubViewClick(View view, final int position) { switch (view.getId()){ case R.id.image_view_share: NotebookMarkItem item1 = list.get(position); Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND).setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT,String.valueOf(item1.getInput() + "\n" + item1.getOutput())); startActivity(Intent.createChooser(intent,getString(R.string.choose_app_to_share))); break; case R.id.image_view_copy: NotebookMarkItem item2 = list.get(position); ClipboardManager manager = (ClipboardManager) getActivity().getSystemService(CLIPBOARD_SERVICE); ClipData clipData = ClipData.newPlainText("text", String.valueOf(item2.getInput() + "\n" + item2.getOutput())); manager.setPrimaryClip(clipData); Snackbar.make(fab, R.string.copy_done, Snackbar.LENGTH_SHORT).show(); break; case R.id.image_view_mark_star: final NotebookMarkItem item3 = list.get(position); DBUtil.deleteValue(dbHelper,item3.getInput()); list.remove(position); adapter.notifyItemRemoved(position); adapter.notifyItemRangeChanged(position,list.size()); Snackbar.make(fab, R.string.remove_from_notebook, Snackbar.LENGTH_SHORT) .setAction(R.string.undo, new View.OnClickListener() { @Override public void onClick(View v) { ContentValues values = new ContentValues(); values.put("input",item3.getInput()); values.put("output",item3.getOutput()); DBUtil.insertValue(dbHelper,values); values.clear(); list.add(position,item3); adapter.notifyItemInserted(position); recyclerViewNotebook.smoothScrollToPosition(position); } }).show(); break; default: break; } } }); return view; } private void initViews(View view) { recyclerViewNotebook = (RecyclerView) view.findViewById(R.id.recycler_view_notebook); recyclerViewNotebook.setLayoutManager(new LinearLayoutManager(getActivity())); fab = (FloatingActionButton) view.findViewById(R.id.fab); tvNoNote = (TextView) view.findViewById(R.id.tv_no_note); } @Override public void onResume() { super.onResume(); getDataFromDB(); if (adapter != null) { adapter.notifyDataSetChanged(); } } @Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); getDataFromDB(); } private void getDataFromDB() { if (list != null) { list.clear(); } SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("notebook",null,null,null,null,null,null); if (cursor.moveToFirst()){ do { String in = cursor.getString(cursor.getColumnIndex("input")); String out = cursor.getString(cursor.getColumnIndex("output")); NotebookMarkItem item = new NotebookMarkItem(in,out); list.add(item); } while (cursor.moveToNext()); } cursor.close(); } }