package org.awesomeapp.messenger.bho; import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.pm.PackageManager; import android.database.Cursor; import android.os.Environment; import android.support.design.widget.Snackbar; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import net.sqlcipher.DatabaseUtils; import java.io.File; import java.util.ArrayList; import im.zom.messenger.R; /** * Created by n8fr8 on 6/2/16. */ public class DictionarySearch { // public final static String DEFAULT_FONT = "Jomolhari-alpha3c-0605331.ttf"; public final static String DEFAULT_FONT = "monlamuniouchan2.ttf"; //"Monlam Uni Sans Serif.ttf";//"monlamuniouchan3.ttf";//"monlambodyig.ttf"; public final static String COLUMN_ID = "_id"; public final static String COLUMN_WORD = "word"; public final static String COLUMN_MEANING = "definition"; public final static int QUERY_LIMIT = 5; private final static String DB_FOLDER_NAME = "monlam"; private DictionaryAdapter database; private int MY_PERMISSIONS_REQUEST_FILE = 1; public DictionarySearch (Activity context) { int permissionCheck = ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE); if (permissionCheck == PackageManager.PERMISSION_DENIED) { // Should we show an explanation? if (ActivityCompat.shouldShowRequestPermissionRationale(context, Manifest.permission.READ_EXTERNAL_STORAGE)) { } else { // No explanation needed, we can request the permission. ActivityCompat.requestPermissions(context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_FILE); // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an // app-defined int constant. The callback method gets the // result of the request. } return; } File dbPath = new File(Environment.getExternalStorageDirectory(), DB_FOLDER_NAME); if (dbPath.exists()) database = new DictionaryAdapter(context, dbPath, "tbtotb","tbtotb"); } public void close () { if (database != null) { database.close(); database = null; } } public boolean exists () { return database != null; } public ArrayList<String> getMatchingWords (String queryString) { if (database == null) return null; ArrayList<String> results = null; String queryText = COLUMN_WORD + " LIKE " + DatabaseUtils.sqlEscapeString(queryString + "%"); //OR " + COLUMN_MEANING + " LIKE '%" + queryString + "%'"; Cursor cursor = database.getAllEntries(new String[] {COLUMN_WORD}, queryText, null, null, null, COLUMN_WORD, " ASC LIMIT " + QUERY_LIMIT); if (cursor != null) { if (cursor.getCount() > 0) { results = new ArrayList<String>(); while (cursor.moveToNext()) { results.add(cursor.getString(0)); } } cursor.close(); } return results; } }