package com.marktony.translator.ui; import android.content.ClipData; import android.content.ClipboardManager; import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.ProgressBar; 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; public class SearchActivity extends AppCompatActivity { private RecyclerView recyclerView; private TextView textView; private ProgressBar progressBar; private SearchView searchView; private NotebookMarkItemAdapter adapter; private ArrayList<NotebookMarkItem> list = new ArrayList<NotebookMarkItem>(); private NotebookDatabaseHelper dbHelper; private SQLiteDatabase db; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); dbHelper = new NotebookDatabaseHelper(SearchActivity.this,"MyStore.db",null,1); db = dbHelper.getReadableDatabase(); recyclerView = (RecyclerView) findViewById(R.id.recycler_view_notebook); recyclerView.setLayoutManager(new LinearLayoutManager(SearchActivity.this)); textView = (TextView) findViewById(R.id.text_view); progressBar = (ProgressBar) findViewById(R.id.progress_bar); searchView = (SearchView) findViewById(R.id.searchView); searchView.setIconified(false); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { progressBar.setVisibility(View.VISIBLE); if (list != null) { list.clear(); } 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")); if (in.contains(query) || out.contains(query)){ NotebookMarkItem item1 = new NotebookMarkItem(in,out); list.add(item1); } } while (cursor.moveToNext()); } cursor.close(); if (list.isEmpty()){ textView.setVisibility(View.VISIBLE); } else { textView.setVisibility(View.GONE); handleResults(); } progressBar.setVisibility(View.GONE); return true; } @Override public boolean onQueryTextChange(String newText) { return false; } }); } private void handleResults() { Collections.reverse(list); if (adapter == null) { adapter = new NotebookMarkItemAdapter(SearchActivity.this,list); recyclerView.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) getSystemService(CLIPBOARD_SERVICE); ClipData clipData = ClipData.newPlainText("text", String.valueOf(item2.getInput() + "\n" + item2.getOutput())); manager.setPrimaryClip(clipData); Snackbar.make(recyclerView, 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(recyclerView, R.string.add_to_notebook, Snackbar.LENGTH_LONG) .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); recyclerView.smoothScrollToPosition(position); } }).show(); break; default: break; } } }); } else { adapter.notifyDataSetChanged(); } } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == android.R.id.home){ onBackPressed(); } if (id == R.id.action_search){ return false; } return super.onOptionsItemSelected(item); } @Override public void onBackPressed() { super.onBackPressed(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if (imm.isActive()){ imm.hideSoftInputFromWindow(recyclerView.getWindowToken(),0); } } }