package com.fekracomputers.quran.UI.Activities; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.app.ActivityManager; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Process; import android.provider.Settings; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.WindowManager; import android.view.animation.LinearInterpolator; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.Spinner; import android.widget.Toast; import com.fekracomputers.quran.Database.AppPreference; import com.fekracomputers.quran.Database.DatabaseAccess; import com.fekracomputers.quran.Models.Aya; import com.fekracomputers.quran.Models.Bookmark; import com.fekracomputers.quran.Models.TranslationBook; import com.fekracomputers.quran.R; import com.fekracomputers.quran.UI.Custom.HighlightImageView; import com.fekracomputers.quran.UI.Custom.LockableViewPager; import com.fekracomputers.quran.UI.Fragments.TafseerFragment; import com.fekracomputers.quran.Utilities.AppConstants; import com.fekracomputers.quran.Utilities.Contact; import com.fekracomputers.quran.Utilities.DatabaseHandler; import com.fekracomputers.quran.Utilities.QuranValidateSources; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; /** * Activity to show translation */ public class TranslationReadActivity extends AppCompatActivity implements SensorEventListener { private RelativeLayout header; private Spinner translationBooks; private LockableViewPager translationViewPager; private SelectionTranslationsAdapter selectionTranslationsAdapter; private ArrayList<String> bookNames; private List<Integer> bookIDs; private List<TranslationBook> booksInfo; private boolean flagHideShowTool, defaultBook; private int firstBook, defaultBookIndex; private ImageView back; int x; int k = 0; Sensor proxSensor; SensorManager sm; private SensorManager sensorManager,mSensorManager; private Sensor lightSensor; private float lightAmount; DatabaseHandler db; DatabaseHandler db1; Aya aya=null; MenuItem bookmark; public static int imagesResource; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_translation_read); db = new DatabaseHandler(this); sm = (SensorManager) getSystemService(SENSOR_SERVICE); proxSensor = sm.getDefaultSensor(Sensor.TYPE_PROXIMITY); lightSensor = sm.getDefaultSensor(Sensor.TYPE_LIGHT); sm.registerListener(this,proxSensor,SensorManager.SENSOR_DELAY_NORMAL); //toolbar object Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); //init translation read activity init(); } @Override public void onBackPressed() { super.onBackPressed(); aya = new DatabaseAccess().getAyaFromPosition(6235 - translationViewPager.getCurrentItem()); startActivity(new Intent(TranslationReadActivity.this, QuranPageReadActivity.class) .putExtra(AppConstants.General.PAGE_NUMBER, 604 - aya.pageNumber)); //position where return // AppPreference.setTranslationTextSize("large"); String log=""; List<Contact> tasks = db.getAllContacts(); int result=tasks.size(); if(result >0) { // delete one book for (Contact cn : tasks) { log = cn.getPhoneNumber(); // Writing Contacts to log Log.e("Name: ", log); } AppPreference.setTranslationTextSize(log); }else{ AppPreference.setTranslationTextSize("large"); } finish(); } /** * Function to init activity views */ private void init() { Intent extras = getIntent(); String log=""; List<Contact> tasks = db.getAllContacts(); int result=tasks.size(); if(result >0) { // delete one book for (Contact cn : tasks) { log = cn.getPhoneNumber(); // Writing Contacts to log Log.e("Name: ", log); } AppPreference.setTranslationTextSize(log); }else{ if(isTablet(getApplicationContext())){ AppPreference.setTranslationTextSize("x-large"); }else{ AppPreference.setTranslationTextSize("large"); } } //get activity send intent final int TRANSLATION_PGE = getIntent().getIntExtra(AppConstants.General.PAGE_NUMBER, 1), BOOK_ID = AppPreference.getDefaultTafseer(), AYA_NUMBER = getIntent().getIntExtra(AppConstants.Tafseer.AYA, -1), SORA_NUMBER = getIntent().getIntExtra(AppConstants.Tafseer.SORA, -1); x = SORA_NUMBER; //init views flagHideShowTool = false; defaultBook = true; back = (ImageView) findViewById(R.id.back); translationBooks = (Spinner) findViewById(R.id.s_tafaseer); translationViewPager = (LockableViewPager) findViewById(R.id.vp_container); translationViewPager.setPagingEnabled(true); header = (RelativeLayout) findViewById(R.id.rl_toolbar_container); DatabaseAccess db = new DatabaseAccess(); back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Aya aya = new DatabaseAccess().getAyaFromPosition(6235 - translationViewPager.getCurrentItem()); startActivity(new Intent(TranslationReadActivity.this, QuranPageReadActivity.class) .putExtra(AppConstants.General.PAGE_NUMBER, 604 - aya.pageNumber)); //position where return // AppPreference.setTranslationTextSize("large"); String log=""; db1 = new DatabaseHandler(TranslationReadActivity.this); List<Contact> tasks = db1.getAllContacts(); int result=tasks.size(); if(result >0) { // delete one book for (Contact cn : tasks) { log = cn.getPhoneNumber(); // Writing Contacts to log Log.e("Name: ", log); } AppPreference.setTranslationTextSize(log); }else{ AppPreference.setTranslationTextSize("large"); } finish(); } }); //Load books names bookNames = new ArrayList<String>(); bookIDs = QuranValidateSources.getDownloadedTransaltions(); if (bookIDs.size() == 0) { startActivity(new Intent(this, TranslationsActivity.class)); finish(); return; } booksInfo = new DatabaseAccess().getAllTranslations(); int count = 0; for (int bookID : bookIDs) { if (firstBook == 0) firstBook = bookID; for (TranslationBook bookInfo : booksInfo) { if (bookID == bookInfo.bookID) { count++; bookNames.add(bookInfo.bookName); //default book to start display if (AppPreference.getDefaultTafseer() == bookInfo.bookID) defaultBookIndex = count; } } } selectionTranslationsAdapter = new SelectionTranslationsAdapter(getSupportFragmentManager(), BOOK_ID == -1 ? firstBook : BOOK_ID); new WeakReference<SelectionTranslationsAdapter>(selectionTranslationsAdapter); translationViewPager.setAdapter(selectionTranslationsAdapter); //check if you send to activity page or aya info int position = 0; if (AYA_NUMBER != -1) { position = db.getAyaPosition(SORA_NUMBER, AYA_NUMBER); } else { //get page first aya aya = db.getPageStartAyaID(604 - TRANSLATION_PGE); position = db.getAyaPosition(aya.suraID, aya.ayaID); } //Custom spinner adapter to readers spinner ArrayAdapter<String> spinnerBooksAdapter = new ArrayAdapter<String>(this, R.layout.spinner_layout, R.id.spinnerText, bookNames); translationBooks.setAdapter(spinnerBooksAdapter); translationViewPager.setCurrentItem(6235 - position); Log.e("tag", "translationViewPager: "+translationViewPager ); //set default book is the selected book translationBooks.setSelection(defaultBookIndex - 1, true); //Spinner on click listener for books translationBooks.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { if (defaultBook != true) { int bookID = 0; String bookName = bookNames.get(position); //loop to get book id for (TranslationBook book : booksInfo) { if (bookName == book.bookName) bookID = book.bookID; } //set default book tafseer AppPreference.setDefaultTafseer(bookID); //load new book translation her int page = translationViewPager.getCurrentItem(); selectionTranslationsAdapter = new SelectionTranslationsAdapter(getSupportFragmentManager(), AppPreference.getDefaultTafseer()); translationViewPager.setAdapter(selectionTranslationsAdapter); translationViewPager.setCurrentItem(page); Log.e("tag", "page: "+page); } else { defaultBook = false; } } @Override public void onNothingSelected(AdapterView<?> parent) { } }); //hide toolbar after time final Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { hideToolbar(); } }, 2000); Aya aya = db.getAyaFromPosition(position); Log.e("position", "init: "+ aya.pageNumber ); } /** * Function with flag to hide and show toolbar */ public void showHideToolBar() { // Aya aya122 = new DatabaseAccess().getAyaFromPosition(6235 - translationViewPager.getCurrentItem()); // hi(aya122.pageNumber); if (!flagHideShowTool) { hideToolbar(); HighlightImageView.inAnimation = false; flagHideShowTool = true; } else { showToolbar(); HighlightImageView.inAnimation = false; flagHideShowTool = false; } } /** * Function to show tool bar "animation" */ public void showToolbar() { ObjectAnimator animY = ObjectAnimator.ofFloat(header, "y", 0); AnimatorSet animSetXY = new AnimatorSet(); animSetXY.setInterpolator(new LinearInterpolator()); animSetXY.play(animY); animSetXY.start(); } /** * Function to hide tool bar "animation" */ public void hideToolbar() { ObjectAnimator animY = ObjectAnimator.ofFloat(header, "y", -(header.getHeight())); AnimatorSet animSetXY = new AnimatorSet(); animSetXY.setInterpolator(new LinearInterpolator()); animSetXY.play(animY); animSetXY.start(); } /** * Override function to create or inflate menu * * @param menu Activity menu * @return Menu you create */ @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_transaltion_read, menu); bookmark = menu.findItem(R.id.bookmark); changeBookmarkItemImage(); return true; } private void changeBookmarkItemImage() { if(bookmark!=null){ bookmark.setIcon(imagesResource); } } /** * Function on select menu item * * @param item Menu item you select * @return Flag or selection */ @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); //switch id to do action switch (id) { //return to quran read case R.id.action_read_quran: Aya aya11 = new DatabaseAccess().getAyaFromPosition(6235 - translationViewPager.getCurrentItem()); startActivity(new Intent(this, QuranPageReadActivity.class) .putExtra(AppConstants.General.PAGE_NUMBER, 604 - aya11.pageNumber) ); //position where return String log=""; List<Contact> tasks = db.getAllContacts(); int result=tasks.size(); if(result >0) { // delete one book for (Contact cn : tasks) { log = cn.getPhoneNumber(); // Writing Contacts to log Log.e("Name: ", log); } AppPreference.setTranslationTextSize(log); }else{ AppPreference.setTranslationTextSize("large"); } finish(); break; //zoom in web_view case R.id.action_zoom_in: String size = AppPreference.getTranslationTextSize(); switch (size) { case "large": AppPreference.setTranslationTextSize("x-large"); db.addContact(new Contact("x-large")); break; case "x-large": AppPreference.setTranslationTextSize("xx-large"); item.setIcon(R.drawable.ic_zoom_r); db.addContact(new Contact("xx-large")); break; case "xx-large": AppPreference.setTranslationTextSize("large"); item.setIcon(R.drawable.ic_zoom_in); db.addContact(new Contact("large")); break; } int previousPage = translationViewPager.getCurrentItem(); selectionTranslationsAdapter = null; selectionTranslationsAdapter = new SelectionTranslationsAdapter(getSupportFragmentManager(), AppPreference.getDefaultTafseer() == -1 ? firstBook : AppPreference.getDefaultTafseer()); translationViewPager.setAdapter(selectionTranslationsAdapter); translationViewPager.setCurrentItem(previousPage); break; case R.id.bookmark: //check if the page is bookmark or not if (new DatabaseAccess().isPageBookmarked(this.aya.pageNumber)) { boolean isRemoved = new DatabaseAccess().removeBookmark(this.aya.pageNumber ); if (isRemoved) { imagesResource=R.drawable.ic_not_fav; changeBookmarkItemImage(); } } else { if (new DatabaseAccess().bookmark(this.aya.pageNumber)) { imagesResource=R.drawable.ic_favo; changeBookmarkItemImage(); } } break; } return super.onOptionsItemSelected(item); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } @Override public void onSensorChanged(SensorEvent sensorEvent) { try { Log.i("Sensor Changed", "Accuracy :" + sensorEvent.values[0]); float s = sensorEvent.values[0]; String ss = String.valueOf(s); if (ss.equals("0.0") ) { //even reduce //refreshes the screen int br = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS); WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.screenBrightness = (float) 10 / 255; getWindow().setAttributes(lp); } else{ //refreshes the screen WindowManager.LayoutParams lp1 = getWindow().getAttributes(); lp1.screenBrightness = (float) 255 / 255; getWindow().setAttributes(lp1); } } catch (Exception e) { //Throw an error case it couldn't be retrieved Log.e("Error", "Cannot access system brightness"); e.printStackTrace(); } } /** * class adapter to view pager load pages of tafaseer */ public class SelectionTranslationsAdapter extends FragmentStatePagerAdapter { private int bookID; public SelectionTranslationsAdapter(FragmentManager fm, int bookID) { super(fm); this.bookID = bookID; } @Override public Fragment getItem(int position) { Log.e("tag", "getItem: "+ (6235 - position)); aya = new DatabaseAccess().getAyaFromPosition(6235 - position); // check. if(new DatabaseAccess().isPageBookmarked(aya.pageNumber)){ // imagesResource = R.drawable.ic_favo; changeBookmarkItemImage(); }else{ imagesResource = R.drawable.ic_not_fav; changeBookmarkItemImage(); } // hi(aya.pageNumber); return new TafseerFragment().newInstance(6235 - position, bookID); } @Override public int getCount() { return 6236 ; } } @Override protected void onResume() { super.onResume(); } @Override protected void onPause() { super.onPause(); } public static boolean isTablet(Context context) { return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE; } }