Skip to content

Instantly share code, notes, and snippets.

@ec84b4
Created September 14, 2013 13:41
Show Gist options
  • Save ec84b4/6562137 to your computer and use it in GitHub Desktop.
Save ec84b4/6562137 to your computer and use it in GitHub Desktop.
package ir.khaled.mydictionary;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.app.SearchManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentSender;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.graphics.Color;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.app.Activity;
import android.os.IBinder;
import android.os.Parcelable;
import android.os.RemoteException;
import android.os.Vibrator;
import android.preference.PreferenceManager;
import android.speech.tts.TextToSpeech;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.internal.view.SupportMenuItem;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Surface;
import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.android.vending.billing.IInAppBillingService;
import org.apache.commons.net.ftp.FTPClient;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.net.InetAddress;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Locale;
import javax.crypto.IllegalBlockSizeException;
public class PackageActivity extends ActionBarActivity implements TextToSpeech.OnInitListener {
DatabasePackage databasePackage;
SharedPreferences prefs;
SharedPreferences UserInfo;
SharedPreferences.Editor EditorUserInfo;
SharedPreferences mainPrefs;
SharedPreferences.Editor editorMainPrefs;
public AlertDialog dialogMeaning;
// public AlertDialog dialogEdit;
public AlertDialog dialogSummery;
AlertDialog dialogAskLogin;
AlertDialog dialogAskBuy;
AlertDialog dialogLogin;
AlertDialog dialogSingUp;
ProgressDialog progressBar;
EditText etSearch;
ArrayList<Custom> arrayItemsInMD;
ArrayList<ItemPackage> arrayItemsDontAdd;
ArrayList<ItemPackage> arrayItems;
ArrayList<ItemPackageShow> itemsToShow;
ArrayList<String> arrayItemsToday;
ArrayList<Integer> checkedPositionsInt;
ArrayList<Integer> arrayIndexesLastDay;
ArrayList<String> arrayIndexesLastDayDate;
ListView items;
AdapterPackage adapter;
boolean markSeveral = false;
boolean showItemNumber = true;
boolean isFromSearch = false;
boolean isFromSearchDot = false;
boolean isToMarkAll = true;
boolean dialogMeaningIsOpen = false;
boolean dialogSummeryIsOpen = false;
boolean dialogLoginIsOpen;
boolean dialogSingUpIsOpen;
boolean dialogAskLoginIsOpen;
boolean dialogAskBuyIsOpen;
boolean answerViewed = false;
boolean isNewDay = false;
boolean isPaused = false;
int dialogMeaningWordPosition = 0;
int todayNum = 0;
int addPerDay = 10;
String isDistanceTempAdd = "";
String isDistanceTempLast = "";
String isDistance = "";
String searchMethod;
String todayDate = "";
String lastDate = "";
String sortMethod = "";
String searchText = "";
String userUsername = "";
String userPassword = "";
String s = File.separator;
String packageName = "";
Parcelable listViewPosition = null;
IInAppBillingService mService;
ServiceConnection mServiceConn = null;
private TextToSpeech tts;
FTPClient con;
Names v;
private ActionBarDrawerToggle mDrawerToggle;
private CharSequence mDrawerTitle;
private CharSequence mTitle;
private String[] mPlanetTitles;
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
SearchView mSearchView;
Menu mMenu;
@Override
public boolean onSearchRequested() {
etSearch.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(etSearch, InputMethodManager.SHOW_IMPLICIT);
return false;
}
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = tts.setLanguage(Locale.US);
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "This Language is not supported");
} else {
}
} else {
Log.e("TTS", "Initilization Failed!");
}
}
void speakOut(String text) {
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_package);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
getPrefs();
setElementsId();
if (UserInfo.getString("has504In", "").equals(v.TRUE_HAS_IN)) {
EditorUserInfo.putString(packageNameOnServer()+"In", v.TRUE_HAS_IN);
}
if (UserInfo.getString("has504Buy", "").equals(v.TRUE_HAS_BUY)) {
EditorUserInfo.putString(packageNameOnServer()+"Buy", v.TRUE_HAS_BUY);
}
if (userUsername.equals("")) {
dialogAskLogin();
} else {
hasDatabase();
// has504();
}
restore(savedInstanceState);
if (savedInstanceState != null) {
listViewPosition = savedInstanceState.getParcelable("listViewPosition");
searchText = savedInstanceState.getString("etSearchText");
}
etSearch.setText(searchText);
buyConnect();
bindService(new
Intent("ir.cafebazaar.pardakht.InAppBillingService.BIND"),
mServiceConn, Context.BIND_AUTO_CREATE);
leftDrawer();
}
void leftDrawer() {
mPlanetTitles = getResources().getStringArray(R.array.drawer_leitner);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
// Set the adapter for the list view
TextView textView = new TextView(this);
textView.setGravity(Gravity.CENTER_HORIZONTAL);
textView.setText("Khaled Mli");
textView.setTextAppearance(this, android.R.style.TextAppearance_Large);
textView.setPadding(0, 10, 0, 20);
mDrawerList.addHeaderView(textView);
mDrawerList.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, mPlanetTitles));
// Set the list's click listener
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
mTitle = mDrawerTitle = getTitle();
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer1, R.string.drawer_open, R.string.drawer_close) {
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
// getSupportActionBar().setTitle(mTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
// getSupportActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
};
// Set the drawer toggle as the DrawerListener
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
mDrawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer1, /* nav drawer icon to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description */
R.string.drawer_close /* "close drawer" description */
) {
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
// getSupportActionBar().setTitle(mTitle);
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
getSupportActionBar().setTitle(mDrawerTitle);
}
};
// Set the drawer toggle as the DrawerListener
mDrawerLayout.setDrawerListener(mDrawerToggle);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
ActionBar actionBar = getSupportActionBar();
actionBar.show();
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
selectItem(position);
}
}
/**
* Swaps fragments in the main content view
*/
private void selectItem(int position) {
// Create a new fragment and specify the planet to show based on position
// Fragment fragment = new PlanetFragment();
// Bundle args = new Bundle();
// args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position);
// fragment.setArguments(args);
//
// // Insert the fragment by replacing any existing fragment
// FragmentManager fragmentManager = getFragmentManager();
// fragmentManager.beginTransaction()
// .replace(R.id.content_frame, fragment)
// .commit();
// Highlight the selected item, update the title, and close the drawer
mDrawerList.setItemChecked(position, true);
setTitle(mPlanetTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
Intent intent;
switch (position) {
case 1:
this.finish();
PackageActivity.this.overridePendingTransition(R.anim.in, R.anim.out);
break;
case 2:
this.finish();
intent = new Intent(this, LeitnerActivity.class);
this.startActivity(intent);
PackageActivity.this.overridePendingTransition(R.anim.in, R.anim.out);
break;
case 3:
intent = new Intent(this, TagsActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity(intent);
PackageActivity.this.overridePendingTransition(R.anim.in, R.anim.out);
break;
case 4:
intent = new Intent(this, Backup.class);
// intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity(intent);
PackageActivity.this.overridePendingTransition(R.anim.in, R.anim.out);
break;
case 5:
intent = new Intent(this, Preferences.class);
// intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity(intent);
PackageActivity.this.overridePendingTransition(R.anim.in, R.anim.out);
break;
case 6:
intent = new Intent(this, AboutActivity.class);
// intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity(intent);
PackageActivity.this.overridePendingTransition(R.anim.in, R.anim.out);
break;
default:
break;
}
}
@Override
public void setTitle(CharSequence title) {
mTitle = title;
// getSupportActionBar().setTitle(mTitle);
}
void setElementsId() {
v = new Names();
tts = new TextToSpeech(this, this);
databasePackage = new DatabasePackage(this, packageName);
UserInfo = getSharedPreferences("userInfo", 0);
EditorUserInfo = UserInfo.edit();
mainPrefs = getSharedPreferences("main", 0);
editorMainPrefs = mainPrefs.edit();
userUsername = UserInfo.getString("userUsername", "");
userPassword = UserInfo.getString("userPassword", "");
dialogMeaning = new AlertDialog.Builder(this).create();
dialogSummery = new AlertDialog.Builder(this).create();
dialogAskLogin = new AlertDialog.Builder(this).create();
dialogAskBuy = new AlertDialog.Builder(this).create();
dialogLogin = new AlertDialog.Builder(this).create();
dialogSingUp = new AlertDialog.Builder(this).create();
progressBar = new ProgressDialog(PackageActivity.this);
etSearch = (EditText) findViewById(R.id.packageSearchET);
arrayItemsInMD = new ArrayList<Custom>();
arrayItemsDontAdd = new ArrayList<ItemPackage>();
arrayItems = new ArrayList<ItemPackage>();
itemsToShow = new ArrayList<ItemPackageShow>();
arrayItemsToday = new ArrayList<String>();
checkedPositionsInt = new ArrayList<Integer>();
items = (ListView) findViewById(R.id.packageListView);
adapter = new AdapterPackage(PackageActivity.this, R.layout.row, itemsToShow);
arrayIndexesLastDay = new ArrayList<Integer>();
arrayIndexesLastDayDate = new ArrayList<String>();
}
boolean returnTrue = false;
void checkVersionPackage() throws PackageManager.NameNotFoundException {
String currentVersion1 = mainPrefs.getString(packageNameOnServer()+"Version", "1");
final String currentVersion = currentVersion1;
class FtpTask extends AsyncTask<Void, Integer, Void> {
FTPClient con;
boolean succeed = false;
String error = "";
String errorS = "";
private Context context;
String s = File.separator;
String newVersion = "";
public FtpTask(Context context) { this.context = context; }
protected void onPreExecute() {
newVersion = currentVersion;
}
protected Void doInBackground(Void... args) {
try {
if (con == null) con = new FTPClient();
if (!con.isConnected()) con.connect(InetAddress.getByName("5.9.0.183"));
if (con.login("mdftp@khaled.ir", "3k2oy8HRhs")) {
con.enterLocalPassiveMode(); // important!
InputStream inputStream;
BufferedReader r;
inputStream = con.retrieveFileStream(s + "databases" + s + packageNameOnServer() + s + "version");
r = new BufferedReader(new InputStreamReader(inputStream));
newVersion = r.readLine();
inputStream.close();
r.close();
con.completePendingCommand();
if (!newVersion.equals(currentVersion)) {
publishProgress(0);
editorMainPrefs.putString(packageNameOnServer() + "Version", newVersion);
editorMainPrefs.commit();
File pathMain = getDatabasePath("packageUpdate.db");
if (pathMain.exists()) {
File currentDB = new File(pathMain, "");
currentDB.delete();
}
FileOutputStream outBackup = new FileOutputStream("/data/data/ir.khaled.mydictionary/databases/packageUpdate.db");
con.retrieveFile(s + "databases" + s + packageNameOnServer() + s + databaseNameOnServer(), outBackup);
DatabasePackage dbUpdate = new DatabasePackage(PackageActivity.this, "packageUpdate.db");
ArrayList<ItemPackage> items = dbUpdate.getAllItems(v.TABLE_LEITNER);
for (int i = 0; i < arrayItems.size(); i++) {
ItemPackage itemUp = items.get(i);
arrayItems.get(i).setMeaningFa(itemUp.getMeaningFa());
arrayItems.get(i).setMeaningEn(itemUp.getMeaningEn());
arrayItems.get(i).setExamplesEn(itemUp.getExamplesEn());
arrayItems.get(i).setExamplesFa(itemUp.getExamplesFa());
arrayItems.get(i).setTags(itemUp.getTags());
databasePackage.updateItem(arrayItems.get(i), v.TABLE_LEITNER);
}
if (pathMain.exists()) {
File currentDB = new File(pathMain, "");
currentDB.delete();
}
succeed = true;
}
}
con.logout();
con.disconnect();
} catch (Exception e) {
error = e.toString();
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result) {
if (succeed) {
Toast.makeText(PackageActivity.this, "Successfully updated.", Toast.LENGTH_SHORT).show();
if (progressBar.isShowing()) progressBar.dismiss();
}
if (mScreenOrientationLocked) {
unlockScreenOrientation();
}
}
protected void onProgressUpdate(Integer... args) {
if (args[0] == 0) {
runOnUiThread(new Runnable() {
@Override
public void run() {
progressBar = new ProgressDialog(context);
progressBar.setCancelable(false);
progressBar.setTitle("updating your package");
progressBar.setMessage( packageNameOnServer() + " has been updated on server\nplease wait till we update your package ...");
progressBar.show();
}
});
lockScreenOrientation();
} else if (args[0] == 1) {
progressBar.setMessage("downloading " + packageNameOnServer() + " for you ...");
} else if (args[0] == 2) {
progressBar.setMessage("loading data ...");
}
}
}
new FtpTask(PackageActivity.this).execute();
}
// void checkVersion504() throws PackageManager.NameNotFoundException {
// final String currentVersion = mainPrefs.getString("package504Version", "1");
// class FtpTask extends AsyncTask<Void, Integer, Void> {
// FTPClient con;
// boolean succeed = false;
// String error = "";
// String errorS = "";
// private Context context;
// String s = File.separator;
//
// String newVersion = "";
//
//
// public FtpTask(Context context) { this.context = context; }
//
// protected void onPreExecute() {
// newVersion = currentVersion;
// }
//
// protected Void doInBackground(Void... args) {
// try {
// if (con == null) con = new FTPClient();
// if (!con.isConnected()) con.connect(InetAddress.getByName("5.9.0.183"));
//
// if (con.login("mdftp@khaled.ir", "3k2oy8HRhs")) {
// con.enterLocalPassiveMode(); // important!
//
// InputStream inputStream;
// BufferedReader r;
//
// inputStream = con.retrieveFileStream(s + "databases" + s + "package504" + s + "version");
// r = new BufferedReader(new InputStreamReader(inputStream));
// newVersion = r.readLine();
// inputStream.close();
// r.close();
// con.completePendingCommand();
//
// if (!newVersion.equals(currentVersion)) {
// publishProgress(0);
// editorMainPrefs.putString("package504Version", newVersion);
// editorMainPrefs.commit();
//
// File pathMain = getDatabasePath("package504update.db");
// if (pathMain.exists()) {
// File currentDB = new File(pathMain, "");
// currentDB.delete();
// }
//
// FileOutputStream outBackup = new FileOutputStream("/data/data/ir.khaled.mydictionary/databases/package504Update.db");
// con.retrieveFile("databases" + s + "package504" + s + "504.zip", outBackup);
//
// DatabasePackage dbUpdate = new DatabasePackage(PackageActivity.this, "package504Update.db");
// ArrayList<ItemPackage> items = dbUpdate.getAllItems(v.TABLE_LEITNER);
//
// for (int i = 0; i < arrayItems.size(); i++) {
// ItemPackage itemUp = items.get(i);
//
// arrayItems.get(i).setMeaningFa(itemUp.getMeaningFa());
// arrayItems.get(i).setMeaningEn(itemUp.getMeaningEn());
// arrayItems.get(i).setExamplesEn(itemUp.getExamplesEn());
// arrayItems.get(i).setExamplesFa(itemUp.getExamplesFa());
// arrayItems.get(i).setTags(itemUp.getTags());
//
// databasePackage.updateItem(arrayItems.get(i), v.TABLE_LEITNER);
// }
//
// if (pathMain.exists()) {
// File currentDB = new File(pathMain, "");
// currentDB.delete();
// }
// succeed = true;
// }
// }
// con.logout();
// con.disconnect();
//
// } catch (Exception e) {
// error = e.toString();
// e.printStackTrace();
// }
// return null;
// }
//
// protected void onPostExecute(Void result) {
// if (succeed) {
// Toast.makeText(PackageActivity.this, "Successfully updated.", Toast.LENGTH_SHORT).show();
// if (progressBar.isShowing()) progressBar.dismiss();
// }
// if (mScreenOrientationLocked) {
// unlockScreenOrientation();
// }
// }
//
// protected void onProgressUpdate(Integer... args) {
// if (args[0] == 0) {
// runOnUiThread(new Runnable() {
// @Override
// public void run() {
// progressBar = new ProgressDialog(context);
// progressBar.setCancelable(false);
// progressBar.setTitle("updating your package");
// progressBar.setMessage("package 504 has been updated on server\nplease wait till we update your package ...");
// progressBar.show();
// }
// });
// lockScreenOrientation();
// } else if (args[0] == 1) {
// progressBar.setMessage("downloading package 504 for you ...");
// } else if (args[0] == 2) {
// progressBar.setMessage("loading data ...");
// }
// }
//
// }
// new FtpTask(PackageActivity.this).execute();
// }
boolean mScreenOrientationLocked = false;
private void lockScreenOrientation() {
if (!mScreenOrientationLocked) {
final int orientation = getResources().getConfiguration().orientation;
final int rotation = getWindowManager().getDefaultDisplay().getOrientation();
if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90) {
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
} else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270) {
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
}
}
mScreenOrientationLocked = true;
}
switch (getResources().getConfiguration().orientation) {
case Configuration.ORIENTATION_PORTRAIT:
int rotation = getWindowManager().getDefaultDisplay().getRotation();
if (rotation == android.view.Surface.ROTATION_90 || rotation == android.view.Surface.ROTATION_180) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
break;
case Configuration.ORIENTATION_LANDSCAPE:
int rotation1 = getWindowManager().getDefaultDisplay().getRotation();
if (rotation1 == android.view.Surface.ROTATION_0 || rotation1 == android.view.Surface.ROTATION_90) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
}
break;
}
}
private void unlockScreenOrientation() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
mScreenOrientationLocked = false;
}
boolean hasDatabase() {
returnTrue = false;
class FtpTask extends AsyncTask<Void, Integer, Void> {
boolean hasPackageBuy = false;
String error = "";
ProgressDialog progressBar;
private Context context;
String s = File.separator;
public FtpTask(Context context) {
this.context = context;
}
protected void onPreExecute() {
progressBar = new ProgressDialog(context);
progressBar.setCancelable(false);
progressBar.setMessage("Connecting to server ...");
progressBar.show();
lockScreenOrientation();
}
protected Void doInBackground(Void... args) {
String userDbPath = s + userUsername + s + "mydictionary" + s + "databases" + s;
String databasePath = s + "databases" + s + packageNameOnServer() + s + databaseNameOnServer();
try {
con = new FTPClient();
con.connect(InetAddress.getByName("5.9.0.183"));
if (con.login("ftpUsers@khaled.ir", "8I4KJ4UeRq")) {
con.enterLocalPassiveMode(); // important!
publishProgress(0);
InputStream inputStream = con.retrieveFileStream("has"+packageNameOnServer());
if (inputStream != null) {
con.completePendingCommand();
hasPackageBuy = true;
con = new FTPClient();
con.connect(InetAddress.getByName("5.9.0.183"));
if (con.login("mdftp@khaled.ir", "3k2oy8HRhs")) {
hasPackageBuy = true;
publishProgress(1);
File pathMain = getDatabasePath(packageName);
if (pathMain.exists()) {
File currentDB = new File(pathMain, "");
currentDB.delete();
}
FileOutputStream outBackup = new FileOutputStream("/data/data/ir.khaled.mydictionary/databases/"+packageNameOnServer());
con.retrieveFile(s + "databases" + s + packageNameOnServer() + s + databaseNameOnServer(), outBackup);
EditorUserInfo.putString(packageNameOnServer() + "Buy", v.TRUE_HAS_BUY);///true
EditorUserInfo.putString(packageNameOnServer() + "In", v.TRUE_HAS_IN);//true
EditorUserInfo.commit();
}
} else {
hasPackageBuy = false;
}
inputStream.close();
}
con.logout();
con.disconnect();
} catch (Exception e) {
error = e.toString();
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result) {
if (hasPackageBuy) {
returnTrue = true;
publishProgress(2);
setElementsValue();
refreshListViewData();
listeners();
try {
// checkVersion504();
checkVersionPackage();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
} else if (!hasPackageBuy) {
Toast.makeText(PackageActivity.this, "you don't have " + packageNameOnServer() + " in your account.", Toast.LENGTH_SHORT).show();
dialogAskBuy();
} else if (!error.equals("")) {
Toast.makeText(PackageActivity.this, error, Toast.LENGTH_SHORT).show();
}
progressBar.dismiss();
unlockScreenOrientation();
}
protected void onProgressUpdate(Integer... args) {
if (args[0] == 0) {
progressBar.setMessage("Checking your packages ...");
} else if (args[0] == 1) {
progressBar.setMessage("downloading " + packageNameOnServer() + " for you ...");
} else if (args[0] == 2) {
progressBar.setMessage("loading data ...");
}
}
}
File pathMain = getDatabasePath(packageName);
if (pathMain.exists()){
EditorUserInfo.putString(packageNameOnServer()+"Buy", v.TRUE_HAS_BUY);///true
EditorUserInfo.putString(packageNameOnServer()+"In", v.TRUE_HAS_IN);//true
EditorUserInfo.commit();
}
if (UserInfo.getString(packageNameOnServer()+"Buy", "hasBuy").equals(v.TRUE_HAS_BUY)) {
if (UserInfo.getString(packageNameOnServer()+"In", "hasIn").equals(v.TRUE_HAS_IN)) {
setElementsValue();
refreshListViewData();
listeners();
try {
checkVersionPackage();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
} else {
new FtpTask(PackageActivity.this).execute();
}
} else {
new FtpTask(PackageActivity.this).execute();
}
return true;
}
String packageNameOnServer() {//getPackage name
if (packageName.equals("package504.db")) {
return "package504";
} else if (packageName.equals("wordsH1.db")) {
return "packageH1";
} else if (packageName.equals("wordsH2.db")) {
return "packageH2";
} else if (packageName.equals("wordsH3.db")) {
return "packageH3";
} else if (packageName.equals("wordsH4.db")) {
return "packageH4";
}
return "package504.db";
}
String databaseNameOnServer() {
if (packageName.equals("package504.db")) {
return "504.zip";
} else if (packageName.equals("wordsH1.db")) {
return "packageH1.zip";
} else if (packageName.equals("wordsH2.db")) {
return "packageH2.zip";
} else if (packageName.equals("wordsH3.db")) {
return "packageH3.zip";
} else if (packageName.equals("wordsH4.db")) {
return "packageH4.zip";
}
return "504.zip";
}
// boolean has504() {
// returnTrue = false;
//
// class FtpTask extends AsyncTask<Void, Integer, Void> {
//
// boolean has504Buy = false;
//
// String error = "";
// ProgressDialog progressBar;
// private Context context;
// String s = File.separator;
//
// public FtpTask(Context context) {
// this.context = context;
// }
//
// protected void onPreExecute() {
// progressBar = new ProgressDialog(context);
// progressBar.setCancelable(false);
// progressBar.setMessage("Connecting to server ...");
// progressBar.show();
// lockScreenOrientation();
// }
//
// protected Void doInBackground(Void... args) {
// String userDbPath = s + userUsername + s + "mydictionary" + s + "databases" + s;
// try {
// con = new FTPClient();
// con.connect(InetAddress.getByName("5.9.0.183"));
//
// if (con.login("ftpUsers@khaled.ir", "8I4KJ4UeRq")) {
// con.enterLocalPassiveMode(); // important!
//
// publishProgress(0);
//
// InputStream inputStream = con.retrieveFileStream(userDbPath + "has504");
// if (inputStream != null) {
// con.completePendingCommand();
// has504Buy = true;
//
// con = new FTPClient();
// con.connect(InetAddress.getByName("5.9.0.183"));
// if (con.login("mdftp@khaled.ir", "3k2oy8HRhs")) {
// has504Buy = true;
// publishProgress(1);
//
// File pathMain = getDatabasePath("package504.db");
// if (pathMain.exists()) {
// File currentDB = new File(pathMain, "");
// currentDB.delete();
// }
//
// FileOutputStream outBackup = new FileOutputStream("/data/data/ir.khaled.mydictionary/databases/package504.db");
// con.retrieveFile(s + "databases" + s + "package504" + s + "504.zip", outBackup);
//
// EditorUserInfo.putString("has504Buy", v.TRUE_HAS_BUY);///true
// EditorUserInfo.putString("has504In", v.TRUE_HAS_IN);//true
// EditorUserInfo.commit();
// }
// } else {
// has504Buy = false;
// }
// inputStream.close();
// }
// con.logout();
// con.disconnect();
//
// } catch (Exception e) {
// error = e.toString();
// e.printStackTrace();
// }
// return null;
// }
//
// protected void onPostExecute(Void result) {
// if (has504Buy) {
// returnTrue = true;
//
// publishProgress(2);
//
// setElementsValue();
// refreshListViewData();
// listeners();
// try {
// checkVersion504();
// } catch (PackageManager.NameNotFoundException e) {
// e.printStackTrace();
// }
// } else if (!has504Buy) {
// Toast.makeText(PackageActivity.this, "you don't have any package in your account.", Toast.LENGTH_SHORT).show();
// dialogAskBuy();
// } else if (!error.equals("")) {
// Toast.makeText(PackageActivity.this, error, Toast.LENGTH_SHORT).show();
// }
// progressBar.dismiss();
// unlockScreenOrientation();
// }
//
// protected void onProgressUpdate(Integer... args) {
// if (args[0] == 0) {
// progressBar.setMessage("Checking your packages ...");
// } else if (args[0] == 1) {
// progressBar.setMessage("downloading package 504 for you ...");
// } else if (args[0] == 2) {
// progressBar.setMessage("loading data ...");
// }
// }
// }
//
// File pathMain = getDatabasePath("package504.db");
//
// if (pathMain.exists()) {
// EditorUserInfo.putString("has504In", v.TRUE_HAS_IN);//hasIn
// EditorUserInfo.commit();
// }
//
// if (UserInfo.getString("has504Buy", "hasBuy").equals(v.TRUE_HAS_BUY)) {
// if (UserInfo.getString("has504In", "hasIn").equals(v.TRUE_HAS_IN)) {
// setElementsValue();
// refreshListViewData();
// listeners();
// try {
// checkVersion504();
// } catch (PackageManager.NameNotFoundException e) {
// e.printStackTrace();
// }
// } else {
// new FtpTask(PackageActivity.this).execute();
// }
// } else {
// new FtpTask(PackageActivity.this).execute();
// }
// return true;
// }
void dialogAskBuy() {
LayoutInflater inflater = this.getLayoutInflater();
dialogAskBuy = new AlertDialog.Builder(this)
// .setTitle("You don't have "+packageNameOnServer()+". Select another package from settings or click on a package to buy it.")
.setView(inflater.inflate(R.layout.dialog_package_list_buy, null))
.setPositiveButton("More information", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Uri uriUrl = Uri.parse("http://mydictionary.khaled.ir/");
// Uri uriUrl = Uri.parse("market://details?id=com.hister.mydictionary");
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
startActivity(launchBrowser);
// PackageActivity.super.onBackPressed();
dialogAskBuy();
}
})
.setNegativeButton(R.string.close, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
PackageActivity.super.onBackPressed();
}
})
.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK &&
event.getAction() == KeyEvent.ACTION_UP &&
!event.isCanceled()) {
PackageActivity.super.onBackPressed();
return true;
}
return false;
}
})
.create();
dialogAskBuy.show();
dialogAskBuy.setCanceledOnTouchOutside(false);
TextView tvMessage = (TextView) dialogAskBuy.findViewById(R.id.packageListMessage);
tvMessage.setText("You don't have "+packageNameOnServer()+". Select another package from settings or click on a package to buy it.");
ArrayList<String> itemsBuy = new ArrayList<String>();
itemsBuy.add("504 essential words");
itemsBuy.add("1st grade high school");
itemsBuy.add("2st grade high school");
itemsBuy.add("3st grade high school");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(PackageActivity.this, android.R.layout.simple_list_item_1, itemsBuy);
ListView listBuy = (ListView) dialogAskBuy.findViewById(R.id.packageListBuy);
listBuy.setAdapter(adapter);
listBuy.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
buy(i);
dialogAskBuy.dismiss();
}
});
}
void buy(int position) {
String sku = "";
switch (position) {
case 0:
sku = "504words";
// sku = "test";
break;
case 1:
sku = "wordsH1";
break;
case 2:
sku = "wordsH2";
break;
case 3:
sku = "wordsH3";
break;
}
Bundle buyIntentBundle = null;
try {
buyIntentBundle = mService.getBuyIntent(3, getPackageName(),
sku, "inapp", v.DEVELOPER_PAY_LOAD);
} catch (RemoteException e) {
e.printStackTrace();
}
PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
try {
startIntentSenderForResult(pendingIntent.getIntentSender(),
1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0),
Integer.valueOf(0));
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
}
void buyConnect() {
mServiceConn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
mService = null;
}
@Override
public void onServiceConnected(ComponentName name,
IBinder service) {
mService = IInAppBillingService.Stub.asInterface(service);
}
};
}
void buySuccessful(String sku) {//sku = package name(id)
EditorUserInfo.putString(packageNameOnServer()+"Buy", v.TRUE_HAS_BUY);
EditorUserInfo.commit();
get504();
if (dialogAskBuy.isShowing()) {
dialogAskBuy.dismiss();
}
prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
SharedPreferences.Editor edPrefs = prefs.edit();
edPrefs.putString("package", packageNameOnServer());
packageName = prefs.getString("package", sku);
}
void buyUnSuccessful() {
dialogAskBuy();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1001 && data != null) {
int responseCode = data.getIntExtra("RESPONSE_CODE", 0);
String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
// String sku1 = "";
// JSONObject jo1 = null;
// try {
// jo1 = new JSONObject(purchaseData);
// sku1 = jo1.getString("productId");
// buySuccessful(sku1);
// return;
// } catch (JSONException e) {
// e.printStackTrace();
// }
if (responseCode == v.BILLING_RESPONSE_RESULT_OK) {
try {
JSONObject jo = new JSONObject(purchaseData);
String sku = jo.getString("productId");
String text = "";
if (sku.equals("504words")) {
text = "504 essential words package";
}
Toast.makeText(PackageActivity.this, "You have bought the " + text + ". enjoy it!", Toast.LENGTH_LONG).show();
buySuccessful(sku);
} catch (JSONException e) {
Toast.makeText(PackageActivity.this, "Failed to parse purchase data.", Toast.LENGTH_LONG).show();
e.printStackTrace();
buyUnSuccessful();
}
} else if (responseCode == v.BILLING_RESPONSE_RESULT_USER_CANCELED) {
Toast.makeText(PackageActivity.this, "you canceled the operation.", Toast.LENGTH_LONG).show();
buyUnSuccessful();
} else if (responseCode == v.BILLING_RESPONSE_RESULT_ERROR) {
Toast.makeText(PackageActivity.this, "There was an error in payment operation", Toast.LENGTH_LONG).show();
buyUnSuccessful();
} else if (responseCode == v.BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED) {
Toast.makeText(PackageActivity.this, "you have already bought 504 essential words package", Toast.LENGTH_LONG).show();
buyUnSuccessful();
} else {
buyUnSuccessful();
}
} else {
Toast.makeText(PackageActivity.this, "the operation was unsuccessful", Toast.LENGTH_LONG).show();
buyUnSuccessful();
}
}
void setElementsValue() {
arrayItems.addAll(databasePackage.getAllItems(v.TABLE_LEITNER));
arrayIndexesLastDay.addAll(databasePackage.getAllItemsLastDay());
arrayIndexesLastDayDate.addAll(databasePackage.getAllItemsLastDayDate());
}
void get504() {
class FtpTask extends AsyncTask<Void, Integer, Void> {
boolean hasPackageBuy = false;
String error = "";
ProgressDialog progressBar;
private Context context;
String s = File.separator;
public FtpTask(Context context) {
this.context = context;
}
protected void onPreExecute() {
progressBar = new ProgressDialog(context);
progressBar.setCancelable(false);
progressBar.setMessage("Connecting to server ...");
progressBar.show();
lockScreenOrientation();
}
protected Void doInBackground(Void... args) {
String userDbPath = s + userUsername + s + "mydictionary" + s + "databases" + s;
String databasePath = s + "databases" + s + packageNameOnServer() + s + databaseNameOnServer();
try {
con = new FTPClient();
con.connect(InetAddress.getByName("5.9.0.183"));
if (con.login("ftpUsers@khaled.ir", "8I4KJ4UeRq")) {
con.enterLocalPassiveMode(); // important!
publishProgress(0);
InputStream inputStream = con.retrieveFileStream("has"+packageNameOnServer());
if (inputStream != null) {
con.completePendingCommand();
hasPackageBuy = true;
con = new FTPClient();
con.connect(InetAddress.getByName("5.9.0.183"));
if (con.login("mdftp@khaled.ir", "3k2oy8HRhs")) {
hasPackageBuy = true;
publishProgress(1);
File pathMain = getDatabasePath(packageName);
if (pathMain.exists()) {
File currentDB = new File(pathMain, "");
currentDB.delete();
}
FileOutputStream outBackup = new FileOutputStream("/data/data/ir.khaled.mydictionary/databases/"+packageNameOnServer());
con.retrieveFile(s + "databases" + s + packageNameOnServer() + s + databaseNameOnServer(), outBackup);
EditorUserInfo.putString(packageNameOnServer() + "Buy", v.TRUE_HAS_BUY);///true
EditorUserInfo.putString(packageNameOnServer() + "In", v.TRUE_HAS_IN);//true
EditorUserInfo.commit();
}
} else {
hasPackageBuy = false;
}
inputStream.close();
}
con.logout();
con.disconnect();
} catch (Exception e) {
error = e.toString();
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result) {
if (hasPackageBuy) {
returnTrue = true;
publishProgress(2);
setElementsValue();
refreshListViewData();
listeners();
try {
// checkVersion504();
checkVersionPackage();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
} else if (!hasPackageBuy) {
Toast.makeText(PackageActivity.this, "you don't have " + packageNameOnServer() + " in your account.", Toast.LENGTH_SHORT).show();
dialogAskBuy();
} else if (!error.equals("")) {
Toast.makeText(PackageActivity.this, error, Toast.LENGTH_SHORT).show();
}
progressBar.dismiss();
unlockScreenOrientation();
}
protected void onProgressUpdate(Integer... args) {
if (args[0] == 0) {
progressBar.setMessage("Checking your packages ...");
} else if (args[0] == 1) {
progressBar.setMessage("downloading " + packageNameOnServer() + " for you ...");
} else if (args[0] == 2) {
progressBar.setMessage("loading data ...");
}
}
}
new FtpTask(PackageActivity.this).execute();
}
void refreshListViewData() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
todayDate = simpleDateFormat.format(new Date());
lastDate = databasePackage.getLastDate();
if (lastDate.equals(todayDate)) {
isNewDay = false;
todayNum = databasePackage.getLastDay();
} else {
isNewDay = true;
todayNum = databasePackage.getLastDay() + 1;
if (todayNum < 31 && todayNum > 1) {
todayNum--;
updateIndexesLastDayLessThan30();
todayNum++;
} else if (todayNum > 1) {
todayNum--;
updateIndexLastDayMoreThan30();
todayNum++;
}
databasePackage.updateLastDate(todayDate);
databasePackage.updateLastDay(todayNum);
lastDate = todayDate;
}
arrayItems.clear();
itemsToShow.clear();
if (databasePackage.getItemsCount(v.TABLE_LEITNER) > 0) {
arrayItems.addAll(databasePackage.getAllItems(v.TABLE_LEITNER));
if (mainPrefs.getBoolean("firstLoginPackage", true)) {
editorMainPrefs.putBoolean("firstLoginPackage", false);
editorMainPrefs.putInt("lastPerDay", 10);
editorMainPrefs.commit();
}
if (isNewDay) {
int added = 0;
for (ItemPackage arrayItem : arrayItems) {
if (arrayItem.getCount() == 0 && added < addPerDay) {
added++;
arrayItemsToday.add(arrayItem.getName());
databasePackage.updateItemPerDay(added, arrayItem.getName());
}
}
for (int i = addPerDay; i <arrayItemsToday.size(); i++) {
arrayItemsToday.set(i, "NO");
databasePackage.updateItemPerDay(i+1, "NO");
}
} else {
arrayItemsToday = databasePackage.getItemsPerDay();
}
if (addPerDay != mainPrefs.getInt("lastPerDay", 10)) {
int lastPerDay = mainPrefs.getInt("lastPerDay", 10);
editorMainPrefs.putInt("lastPerDay", addPerDay);
editorMainPrefs.commit();
if (addPerDay > lastPerDay) {
int added = 0;
for (int i = 0; i < arrayItems.size(); i++) {
if (arrayItems.get(i).getCount() == 0 && added <= addPerDay - lastPerDay) {
boolean addThis = true;
for (int i1 = 0; i1 < lastPerDay - 1; i1++) {
if (arrayItemsToday.get(i1).equals(arrayItems.get(i).getName())) {
addThis = false;
break;
}
}
if (addThis) {
arrayItemsToday.set((lastPerDay + added), arrayItems.get(i).getName());
databasePackage.updateItemPerDay((lastPerDay + added)+1, arrayItems.get(i).getName());
added++;
}
}
}
} else {
for (int i = addPerDay; i < arrayItemsToday.size(); i++) {
arrayItemsToday.set(i, "NO");
databasePackage.updateItemPerDay(i+1, "NO");
}
}
}
refreshShow();
sort();
if (itemsToShow.size() > 0) {
int k = 1;
for (int i = 0; i < itemsToShow.size(); i++) {
itemsToShow.get(i).setChVisible(markSeveral);
if (markSeveral && checkedPositionsInt.size() > 0)
itemsToShow.get(i).setChChecked(checkedPositionsInt.get(i) == 0);
itemsToShow.get(i).setName(showItemNumber ? k + ". " + itemsToShow.get(i).getName() : itemsToShow.get(i).getName());
k++;
}
} else {
itemsToShow.add(new ItemPackageShow(" Nothing found", "My Dictionary"));
}
}
adapter.notifyDataSetChanged();
items.setAdapter(adapter);
if (listViewPosition != null)
items.onRestoreInstanceState(listViewPosition);
if (isFromSearch) {
listViewPosition = items.onSaveInstanceState();
search(etSearch.getText().toString());
items.onRestoreInstanceState(listViewPosition);
}
TextView tvSummery = (TextView) findViewById(R.id.packageSummeryTV);
if (itemsToShow.size() > 0) {
if (!itemsToShow.get(0).getName().equals(" Nothing found") && !itemsToShow.get(0).getMeaningFa().equals("My Dictionary"))
tvSummery.setText("'" + Integer.toString(itemsToShow.size()) + "'");
else tvSummery.setText("'" + Integer.toString(itemsToShow.size() - 1) + "'");
} else {
tvSummery.setText("'0'");
}
}
void sort() {
if (sortMethod.equals("nameA")) {
sortNameA();
} else if (sortMethod.equals("nameD")) {
sortNameD();
} else if (sortMethod.equals("dateA")) {
} else if (sortMethod.equals("dateD")) {
sortDateD();
} else if (sortMethod.equals("countA")) {
sortCountA();
} else if (sortMethod.equals("countD")) {
sortCountD();
}
}
void sortNameA() {
ArrayList<String> words = new ArrayList<String>();
for (ItemPackageShow item : itemsToShow) {
words.add(item.getName());
}
Collections.sort(words);
ArrayList<ItemPackage> buff = new ArrayList<ItemPackage>();
for (ItemPackageShow item : itemsToShow) {
buff.add(convertToItem(item));
}
itemsToShow.clear();
for (int i = 0; i < buff.size(); i++) {
for (ItemPackage j : buff) {
if (words.get(i).equals(j.getName())) {
itemsToShow.add(convertToItemPackageShow(j));
}
}
}
}
void sortNameD() {
sortNameA();
ArrayList<ItemPackage> buff = new ArrayList<ItemPackage>();
for (ItemPackageShow item : itemsToShow) {
buff.add(convertToItem(item));
}
itemsToShow.clear();
for (int i = buff.size() - 1; i >= 0; i--) {
itemsToShow.add(convertToItemPackageShow(buff.get(i)));
}
}
void sortDateD() {
ArrayList<ItemPackage> buff = new ArrayList<ItemPackage>();
for (ItemPackageShow item : itemsToShow) {
buff.add(convertToItem(item));
}
itemsToShow.clear();
for (int i = buff.size() - 1; i >= 0; i--) {
itemsToShow.add(convertToItemPackageShow(buff.get(i)));
}
}
void sortCountA() {
for (int i = 0; i < itemsToShow.size() - 1; i++) {
for (int j = 0; j < itemsToShow.size() - 1; j++) {
if (itemsToShow.get(j).getCount() > itemsToShow.get(j + 1).getCount()) {
ItemPackageShow temp = itemsToShow.get(j);
ItemPackageShow temp1 = itemsToShow.get(j + 1);
itemsToShow.set(j, temp1);
itemsToShow.set(j + 1, temp);
}
}
}
}
void sortCountD() {
for (int i = 0; i < itemsToShow.size() - 1; i++) {
for (int j = 0; j < itemsToShow.size() - 1; j++) {
if (itemsToShow.get(j).getCount() < itemsToShow.get(j + 1).getCount()) {
ItemPackageShow temp = itemsToShow.get(j);
ItemPackageShow temp1 = itemsToShow.get(j + 1);
itemsToShow.set(j, temp1);
itemsToShow.set(j + 1, temp);
}
}
}
}
public void summery_OnClick(View view) {
if (!dialogSummery.isShowing())
dialogSummery();
}
void dialogSummery() {
int[] deck = {0, 0, 0, 0, 0};
LayoutInflater inflater = this.getLayoutInflater();
final View layout = inflater.inflate(R.layout.dialog_summery, null);
final AlertDialog.Builder d = new AlertDialog.Builder(this)
.setView(layout)
.setPositiveButton(R.string.ok, null);
dialogSummery = d.create();
dialogSummery.show();
TextView[] deckTv = {(TextView) dialogSummery.findViewById(R.id.d1),
(TextView) dialogSummery.findViewById(R.id.d2),
(TextView) dialogSummery.findViewById(R.id.d3),
(TextView) dialogSummery.findViewById(R.id.d4),
(TextView) dialogSummery.findViewById(R.id.d5)};
for (ItemPackageShow item : itemsToShow) {
if (!item.getName().equals(" Nothing found") && !item.getMeaningFa().equals("My Dictionary")) {
if (item.getDeck() == 1) {
deck[0]++;
deckTv[0].setTextColor(Color.GREEN);
} else if (item.getDeck() == 2) {
deck[1]++;
deckTv[1].setTextColor(Color.GREEN);
} else if (item.getDeck() == 3) {
deck[2]++;
deckTv[2].setTextColor(Color.GREEN);
} else if (item.getDeck() == 4) {
deck[3]++;
deckTv[3].setTextColor(Color.GREEN);
} else if (item.getDeck() == 5) {
deck[4]++;
deckTv[4].setTextColor(Color.GREEN);
}
}
}
boolean d1Ready = deck[0] == 0;
boolean d2Ready = deck[1] == 0;
boolean d3Ready = deck[2] == 0;
boolean d4Ready = deck[3] == 0;
boolean d5Ready = deck[4] == 0;
for (ItemPackage item : arrayItems) {
if (item.getDeck() == 1 && d1Ready) {
deck[0]++;
deckTv[0].setTextColor(Color.RED);
} else if (item.getDeck() == 2 && d2Ready) {
deck[1]++;
deckTv[1].setTextColor(Color.RED);
} else if (item.getDeck() == 3 && d3Ready) {
deck[2]++;
deckTv[2].setTextColor(Color.RED);
} else if (item.getDeck() == 4 && d4Ready) {
deck[3]++;
deckTv[3].setTextColor(Color.RED);
} else if (item.getDeck() == 5 && d5Ready) {
deck[4]++;
deckTv[4].setTextColor(Color.RED);
}
}
int totalCards = 0;
for (int i = 0; i < 5; i++) {
deckTv[i].setText(Integer.toString(deck[i]));
totalCards+= deck[i];
}
TextView tAnswers = (TextView) dialogSummery.findViewById(R.id.tAnswers);
TextView tCorrects = (TextView) dialogSummery.findViewById(R.id.tCorrects);
TextView tIncorrects = (TextView) dialogSummery.findViewById(R.id.tIncorrects);
TextView tCards = (TextView) dialogSummery.findViewById(R.id.tCards);
TextView tDays = (TextView) dialogSummery.findViewById(R.id.tDays);
int totalAnswers = 0, totalCorrects = 0, totalIncorrects = 0, totalDays = todayNum;
for (ItemPackage item : arrayItems) {
totalAnswers += item.getCount();
totalCorrects += item.getCountCorrect();
totalIncorrects += item.getCountInCorrect();
}
tAnswers.setText("Total Answers: " + totalAnswers);
tCorrects.setText("Total Corrects: " + totalCorrects);
tIncorrects.setText("Total Incorrects: " + totalIncorrects);
tCards.setText("Total Cards: " + totalCards);
tDays.setText("Total Days: " + totalDays);
}
void refreshShow() {
if (todayNum < 31) {
refreshLessThan30();
} else {
refreshMoreThan30();
}
}
void refreshLessThan30() {
switch (todayNum) {
case 1: {
for (ItemPackage item : arrayItems) {
if (item.getIndex() == 0 && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 2: {
for (ItemPackage item : arrayItems) {
if (item.getIndex() == 0 && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 3: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 4: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 5: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 6: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 7: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 3 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 8: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 4 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 9: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 5 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 10: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 6 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 11: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 3 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 12: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 4 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 13: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 5 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 14: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 6 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 15: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 7 || item.getIndex() == 3 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 16: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 8 || item.getIndex() == 4 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 17: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 9 || item.getIndex() == 5 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 18: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 10 || item.getIndex() == 6 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 19: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 11 || item.getIndex() == 3 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 20: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 12 || item.getIndex() == 4 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 21: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 13 || item.getIndex() == 5 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 22: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 14 || item.getIndex() == 6 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 23: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 7 || item.getIndex() == 3 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 24: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 8 || item.getIndex() == 4 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 25: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 9 || item.getIndex() == 5 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 26: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 10 || item.getIndex() == 6 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 27: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 11 || item.getIndex() == 3 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 28: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 12 || item.getIndex() == 4 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 29: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 13 || item.getIndex() == 5 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 30: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 14 || item.getIndex() == 6 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
default: {
break;
}
}
}
void refreshMoreThan30() {
int lastIndexDeck5 = nextIndexMore30(16);
switch (lastIndexDeck5) {
case 15: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 15 || item.getIndex() == 7 || item.getIndex() == 3 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 16: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 16 || item.getIndex() == 8 || item.getIndex() == 4 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 17: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 17 || item.getIndex() == 9 || item.getIndex() == 5 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 18: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 18 || item.getIndex() == 10 || item.getIndex() == 6 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 19: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 19 || item.getIndex() == 11 || item.getIndex() == 3 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 20: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 20 || item.getIndex() == 12 || item.getIndex() == 4 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 21: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 21 || item.getIndex() == 13 || item.getIndex() == 5 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 22: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 22 || item.getIndex() == 14 || item.getIndex() == 6 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 23: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 23 || item.getIndex() == 7 || item.getIndex() == 3 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 24: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 24 || item.getIndex() == 8 || item.getIndex() == 4 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 25: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 25 || item.getIndex() == 9 || item.getIndex() == 5 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 26: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 26 || item.getIndex() == 10 || item.getIndex() == 6 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 27: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 27 || item.getIndex() == 11 || item.getIndex() == 3 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 28: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 28 || item.getIndex() == 12 || item.getIndex() == 4 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 29: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 29 || item.getIndex() == 13 || item.getIndex() == 5 || item.getIndex() == 1 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
case 30: {
for (ItemPackage item : arrayItems) {
if ((item.getIndex() == 30 || item.getIndex() == 14 || item.getIndex() == 6 || item.getIndex() == 2 || item.getIndex() == 0) && item.getLastCheckDay() != todayNum) {
if (item.getCount() == 0 && arrayItemsToday.contains(item.getName())) {
itemsToShow.add(convertToItemPackageShow(item));
} else if (item.getCount() > 0) {
itemsToShow.add(convertToItemPackageShow(item));
}
}
}
break;
}
default: {
break;
}
}
}
ItemPackageShow convertToItemPackageShow(ItemPackage j) {
return new ItemPackageShow(j.getId(), j.getName(), j.getMeaningEn(), j.getMeaningFa(), j.getExamplesEn(), j.getExamplesFa(), j.getTags(), j.getLastCheckDate(), j.getLastCheckDay(), j.getDeck(), j.getIndex(), j.getCountCorrect(), j.getCountInCorrect(), j.getCount());
}
ItemPackage convertToItem(ItemPackageShow j) {
return new ItemPackage(j.getId(), j.getName(), j.getMeaningEn(), j.getMeaningFa(), j.getExamplesEn(), j.getExamplesFa(), j.getTags(), j.getLastCheckDate(), j.getLastCheckDay(), j.getDeck(), j.getIndex(), j.getCountCorrect(), j.getCountInCorrect(), j.getCount());
}
void listeners() {
items.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (!itemsToShow.get(position).getName().equals(" Nothing found") && !itemsToShow.get(position).getMeaningFa().equals("My Dictionary")) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(etSearch.getWindowToken(), 0);
if (markSeveral) {
if (itemsToShow.get(position).isChChecked()) {
itemsToShow.get(position).setChChecked(false);
adapter.notifyDataSetChanged();
notifyCheckedPositionsInt();
} else {
itemsToShow.get(position).setChChecked(true);
adapter.notifyDataSetChanged();
notifyCheckedPositionsInt();
}
} else {
if (!dialogMeaning.isShowing())
dialogMeaning(position);
}
// } else if (!(itemsToShow.get(position).getName().equals(" Nothing found") &&
// itemsToShow.get(position).getMeaning().equals("My Dictionary") &&
// itemsToShow.get(position).getAddDate().equals("8I4KJ4UeRq")) /*&& position1 != 0*/) {
// dialogMeaning(position, getPosition(position));
// }
}
}
});
etSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
search(etSearch.getText().toString());
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(etSearch.getWindowToken(), 0);
return true;
}
return false;
}
});
etSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void afterTextChanged(Editable editable) {
if (etSearch.getText().length() == 0) {
isFromSearch = false;
listViewPosition = items.onSaveInstanceState();
refreshListViewData();
} else {
search(etSearch.getText().toString());
}
}
});
}
void notifyCheckedPositionsInt() {
checkedPositionsInt.clear();
for (int i = 0; i < itemsToShow.size(); i++) {
checkedPositionsInt.add(i, itemsToShow.get(i).isChChecked() ? 0 : 1);
}
}
String getDistance(String date) {
if (!date.equals("")) {
boolean thisHour = false;
boolean today = false;
boolean thisMonth = false;
boolean thisYear = false;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm");
String currentDateAndTime = simpleDateFormat.format(new Date());
Date d1 = null;
Date d2 = null;
try {
d1 = simpleDateFormat.parse(date);
d2 = simpleDateFormat.parse(currentDateAndTime);
} catch (ParseException e) {
e.printStackTrace();
return "wrong date";
}
final long diff = d2.getTime() - d1.getTime();
final long diffSeconds = diff / 1000;
final long diffMinutes = diffSeconds / 60;
final long diffHours = diffMinutes / 60;
final long diffDays = diffHours / 24;
final long diffMonth = diffDays / 30;
final long diffYear = diffMonth / 12;
if (diffYear == 0 && diffMonth == 0 && diffDays == 0 && diffHours == 0) {
thisHour = true;
} else if (diffYear == 0 && diffMonth == 0 && diffDays == 0) {
today = true;
} else if (diffYear == 0 && diffMonth == 0) {
thisMonth = true;
} else if (diffYear == 0) {
thisYear = true;
}
if (thisHour) {
return diffMinutes == 0 ? "just now" : diffMinutes < 2 ? Long.toString(diffMinutes) + " minute ago" : Long.toString(diffMinutes) + " minutes ago";
} else if (today) {
return diffHours < 2 ? Long.toString(diffHours) + " hour ago" : Long.toString(diffHours) + " hours ago";
} else if (thisMonth) {
long difDay = diffDays;
long difHour = diffHours;
String strDistance;
if (diffHours > 24) {
difHour = diffHours % 24;
} else {
difDay--;
difHour = (difHour + 24) - difHour;
}
strDistance = difDay < 2 ? Long.toString(difDay) + " day" : Long.toString(difDay) + " days";
strDistance += (difHour == 0 ? " ago"
: difHour < 2 ? " and " + Long.toString(difHour) + " hour ago"
: " and " + Long.toString(difHour) + " hours ago");
if (difHour == 24) {
strDistance = "1 day and 0 hour ago";
}
return strDistance;
} else {
long difDay = diffDays;
long difMonth = diffMonth;
long difYear = diffYear;
String strDistance = "";
if (difDay > 30) {
difDay = difDay % 30;
} else {
difMonth--;
difDay = (difDay + 30) - difDay;
}
if (difMonth > 12) {
difMonth = difMonth % 12;
} else {
difYear--;
difMonth = (difMonth + 12) - difMonth;
}
if (diffYear == 0) {
if (difMonth > 0) {
strDistance = difMonth < 2 ? Long.toString(difMonth) + " month" : Long.toString(difMonth) + " months";
if (difDay == 0) {
strDistance += " and " + Long.toString(difDay) + " day ago";
}
}
strDistance += difDay < 2 ? " and " + Long.toString(difDay) + " day ago"
: " and " + Long.toString(difDay) + " days ago";
} else {
strDistance = difYear < 2 ? Long.toString(difYear) + " year" : Long.toString(difYear) + " years";
strDistance += (difMonth == 0 ? " ago"
: difMonth < 2 ? " and " + Long.toString(difMonth) + " month ago"
: " and " + Long.toString(difMonth) + " months ago");
}
return strDistance;
}
}
return "nothing";
}
int getPosition(int position) {
int realPosition = 0;
boolean found = false;
for (int i = 0; i < arrayItems.size(); i++) {
if (arrayItems.get(i).getName().equals(itemsToShow.get(position).getName())) {
realPosition = i;
break;
}
for (int j = 0; j < arrayItems.size(); j++) {
if ((Integer.toString(j + 1) + ". " + arrayItems.get(i).getName()).equals(itemsToShow.get(position).getName())) {
realPosition = i;
found = true;
break;
}
}
if (found) break;
}
return realPosition;
}
int getPosition(String word) {
for (int i = 0; i < arrayItems.size(); i++) {
if (arrayItems.get(i).getName().toUpperCase().equals(word)) {
return i;
}
}
return 0;
}
void search(String key) {
char first[] = key.toCharArray();
if (key.length() > 0 && first[0] == '.') {
int found = 0;
itemsToShow.clear();
if (arrayItems.size() > 0) {
key = key.toUpperCase();
key = key.substring(1);
for (ItemPackage arrayItem : arrayItems) {
String word = arrayItem.getName().toUpperCase();
String meaning = arrayItem.getMeaningFa().toUpperCase();
if (searchMethod.equals("wordsAndMeanings") ? word.contains(key) || meaning.contains(key) :
searchMethod.equals("justWords") ? word.contains(key) :
meaning.contains(key)) {
found++;
itemsToShow.add(convertToItemPackageShow(arrayItem));
}
}
if (found > 0) {
items.setAdapter(adapter);
adapter.notifyDataSetChanged();
sort();
}
}
isFromSearchDot = true;
isFromSearch = true;
if (itemsToShow.size() > 0) {
for (int i = 0; i < itemsToShow.size(); i++) {
if (!(itemsToShow.get(i).getName().equals(" Nothing found") &&
itemsToShow.get(i).getMeaningFa().equals("My Dictionary"))) {
itemsToShow.get(i).setChVisible(markSeveral);
//whether show item's number or not
if (!(itemsToShow.get(i).getName().equals(" Nothing found") && itemsToShow.get(i).getMeaningFa().equals("My Dictionary")))
itemsToShow.get(i).setName(showItemNumber ? i + 1 + ". " + itemsToShow.get(i).getName() : itemsToShow.get(i).getName());
}
}
notifyCheckedPositionsInt();
TextView tvSummery = (TextView) findViewById(R.id.packageSummeryTV);
if (!itemsToShow.get(0).getName().equals(" Nothing found") && !itemsToShow.get(0).getMeaningFa().equals("My Dictionary")) {
tvSummery.setText("'" + Integer.toString(itemsToShow.size()) + "'");
} else tvSummery.setText("'" + Integer.toString(itemsToShow.size() - 1) + "'");
} else {
TextView tvSummery = (TextView) findViewById(R.id.packageSummeryTV);
tvSummery.setText("'0'");
itemsToShow.add(new ItemPackageShow(" Nothing found", "My Dictionary"));
}
} else if (key.length() > 0) {
int found = 0;
itemsToShow.clear();
refreshShow();
adapter.notifyDataSetChanged();
if (itemsToShow.size() > 0) {
int i = 0;
key = key.toUpperCase();
while (i < itemsToShow.size()) {
String word = itemsToShow.get(i).getName().toUpperCase();
String meaning = itemsToShow.get(i).getMeaningFa().toUpperCase();
if (searchMethod.equals("wordsAndMeanings") ? !word.contains(key) && !meaning.contains(key) :
searchMethod.equals("justWords") ? !word.contains(key) :
!meaning.contains(key)) {
itemsToShow.remove(i);
i = 0;
} else {
found++;
i++;
}
}
if (found > 0) {
items.setAdapter(adapter);
}
adapter.notifyDataSetChanged();
}
isFromSearch = true;
if (itemsToShow.size() > 0) {
for (int i = 0; i < itemsToShow.size(); i++) {
if (!(itemsToShow.get(i).getName().equals(" Nothing found") &&
itemsToShow.get(i).getMeaningFa().equals("My Dictionary"))) {
itemsToShow.get(i).setChVisible(markSeveral);
//whether show item's number or not
if (!(itemsToShow.get(i).getName().equals(" Nothing found") && itemsToShow.get(i).getMeaningFa().equals("My Dictionary")))
itemsToShow.get(i).setName(showItemNumber ? i + 1 + ". " + itemsToShow.get(i).getName() : itemsToShow.get(i).getName());
}
}
notifyCheckedPositionsInt();
} else {
itemsToShow.add(new ItemPackageShow(" Nothing found", "My Dictionary"));
}
}
}
void getPrefs() {
prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
searchMethod = prefs.getString("searchMethod", "wordsAndMeanings");
showItemNumber = prefs.getBoolean("showItemNumber", true);
isDistance = prefs.getString("timeMethod", "distance");
sortMethod = prefs.getString("sortMethod", "dateA");
String addPerDayStr = prefs.getString("addPerDay", "s10");
addPerDay = addPerDayStr.equals("s5") ? 5 : addPerDayStr.equals("s10") ? 10 : addPerDayStr.equals("s15") ? 15 : 20;
packageName = prefs.getString("package", "package504.db");
}
void clearMarks() {
for (int i = 0; i < itemsToShow.size(); i++) {
itemsToShow.get(i).setChChecked(false);
notifyCheckedPositionsInt();
}
adapter.notifyDataSetChanged();
}
public void tvLastDateOnClick(View view) {
TextView tvLastDate = (TextView) dialogMeaning.findViewById(R.id.packageLastDate);
if (isDistanceTempLast.equals("date")) {
isDistanceTempLast = "distance";
tvLastDate.setText(getDistance(arrayItems.get(getPosition(dialogMeaningWordPosition)).getLastCheckDate()));
} else {
tvLastDate.setText(arrayItems.get(getPosition(dialogMeaningWordPosition)).getLastCheckDate());
isDistanceTempLast = "date";
}
}
void dialogMeaning(final int position) {
LayoutInflater inflater = this.getLayoutInflater();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(inflater.inflate(R.layout.dialog_meaning_package, null));
builder.setPositiveButton(R.string.correct, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setNegativeButton(R.string.Incorrect, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setNeutralButton("Flip", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
int currentApi = android.os.Build.VERSION.SDK_INT;
// if (currentApi >= Build.VERSION_CODES.HONEYCOMB){
// builder.setIconAttribute(android.R.drawable.ic_dialog_info);
// }else {
builder.setIcon(android.R.drawable.ic_dialog_info);
// }
dialogMeaning = builder.create();
dialogMeaning.show();
dialogMeaningWordPosition = position;
ItemPackage j = arrayItems.get(getPosition(position));
TextView tvName = (TextView) dialogMeaning.findViewById(R.id.packageName);
TextView tvName1 = (TextView) dialogMeaning.findViewById(R.id.packageName1);
TextView tvMeaningFa = (TextView) dialogMeaning.findViewById(R.id.packageMeaningFa);
TextView tvMeaningEn = (TextView) dialogMeaning.findViewById(R.id.packageMeaningEn);
TextView tvExamplesEn = (TextView) dialogMeaning.findViewById(R.id.packageExamplesEn);
TextView tvExamplesFa = (TextView) dialogMeaning.findViewById(R.id.packageExamplesFa);
TextView tvMFa = (TextView) dialogMeaning.findViewById(R.id.pMeaningFa);
TextView tvMEn = (TextView) dialogMeaning.findViewById(R.id.pMeaningEn);
TextView tvEEn = (TextView) dialogMeaning.findViewById(R.id.pExamplesEn);
TextView tvEFa = (TextView) dialogMeaning.findViewById(R.id.pExamplesFa);
TextView tvLastDate = (TextView) dialogMeaning.findViewById(R.id.packageLastDate);
TextView tvPosition = (TextView) dialogMeaning.findViewById(R.id.packagePosition);
TextView tvCountCorrect = (TextView) dialogMeaning.findViewById(R.id.packageCountCorrect);
TextView tvCount = (TextView) dialogMeaning.findViewById(R.id.packageCount);
TextView tvCountInCorrect = (TextView) dialogMeaning.findViewById(R.id.packageCountInCorrect);
answerViewed = false;
int index = indexDeck(j.getIndex());
tvPosition.setText("at deck '" + Integer.toString(j.getDeck()) + "', index '" + Integer.toString(index) + "'");
tvCountCorrect.setText(Integer.toString(j.getCountCorrect()));
tvCount.setText(Integer.toString(j.getCount()));
tvCountInCorrect.setText(Integer.toString(j.getCountInCorrect()));
isDistanceTempAdd = isDistance;
isDistanceTempLast = isDistance;
if (isDistance.equals("distance")) {
tvLastDate.setText(getDistance(j.getLastCheckDate()));
} else {
tvLastDate.setText(j.getLastCheckDate());
}
tvName.setText(j.getName());
tvName1.setText(j.getName());
tvMeaningFa.setText(j.getMeaningFa());
tvMeaningEn.setText(j.getMeaningEn());
tvExamplesEn.setText(j.getExamplesEn());
tvExamplesFa.setText(j.getExamplesFa());
TextView tvPos = (TextView) dialogMeaning.findViewById(R.id.packagePos);
tvPos.setText(Integer.toString(position + 1) + " of " + Integer.toString(itemsToShow.size()));
dialogMeaning.setCanceledOnTouchOutside(true);
final String textTvName = tvName.getText().toString();
tvName.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
Vibrator mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
mVibrator.vibrate(30);
speakOut(textTvName);
return true;
}
});
final String textTvName1 = tvName1.getText().toString();
tvName1.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
Vibrator mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
mVibrator.vibrate(30);
speakOut(textTvName1);
return true;
}
});
final String textTvMeaningEn = tvMeaningEn.getText().toString();
tvMeaningEn.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
Vibrator mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
mVibrator.vibrate(30);
speakOut(textTvMeaningEn);
return true;
}
});
final String textTvExamplesEn = tvExamplesEn.getText().toString();
tvExamplesEn.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
Vibrator mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
mVibrator.vibrate(30);
speakOut(textTvExamplesEn);
return true;
}
});
tvName.setVisibility(View.VISIBLE);
tvName1.setVisibility(View.GONE);
tvMeaningFa.setVisibility(View.GONE);
tvMeaningEn.setVisibility(View.GONE);
tvExamplesEn.setVisibility(View.GONE);
tvExamplesFa.setVisibility(View.GONE);
tvMFa.setVisibility(View.GONE);
tvMEn.setVisibility(View.GONE);
tvEEn.setVisibility(View.GONE);
tvEFa.setVisibility(View.GONE);
Button btnPositive = dialogMeaning.getButton(DialogInterface.BUTTON_POSITIVE);
Button btnNegative = dialogMeaning.getButton(DialogInterface.BUTTON_NEGATIVE);
Button btnNeutral = dialogMeaning.getButton(DialogInterface.BUTTON_NEUTRAL);
btnPositive.setOnClickListener(new CustomListenerMeaning(dialogMeaning, position, 0));
btnNegative.setOnClickListener(new CustomListenerMeaning(dialogMeaning, position, 1));
btnNeutral.setOnClickListener(new CustomListenerMeaning(dialogMeaning, position, 2));
}
class CustomListenerMeaning implements View.OnClickListener {
private final Dialog dialog;
private final int position;
private final int whatToDo;
public CustomListenerMeaning(Dialog dialog, int position, int whatToDo) {
this.dialog = dialog;
this.position = position;
this.whatToDo = whatToDo;
}
@Override
public void onClick(View v) {
if (!isFromSearch) {
isFromSearchDot = false;
}
if (whatToDo == 2) {
name_Click();
} else if (answerViewed && !isFromSearchDot) {
if (whatToDo == 0) {
move_Next_Correct(position);
update_Info_After_Answer(position, true);
} else {
int realPosition = getPosition(position);
arrayItems.get(realPosition).setDeck(1);
arrayItems.get(realPosition).setIndex(0);
update_Info_After_Answer(position, false);
}
dialog.dismiss();
} else if (isFromSearchDot) {
Toast.makeText(PackageActivity.this, "you can't answer on review mode.", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(PackageActivity.this, "First check the answer by clicking on the word then answer", Toast.LENGTH_SHORT).show();
}
}
}
void name_Click() {
answerViewed = true;
TextView tvName1 = (TextView) dialogMeaning.findViewById(R.id.packageName1);
TextView tvName = (TextView) dialogMeaning.findViewById(R.id.packageName);
TextView tvMeaningFa = (TextView) dialogMeaning.findViewById(R.id.packageMeaningFa);
TextView tvMeaningEn = (TextView) dialogMeaning.findViewById(R.id.packageMeaningEn);
TextView tvExamplesEn = (TextView) dialogMeaning.findViewById(R.id.packageExamplesEn);
TextView tvExamplesFa = (TextView) dialogMeaning.findViewById(R.id.packageExamplesFa);
TextView tvMFa = (TextView) dialogMeaning.findViewById(R.id.pMeaningFa);
TextView tvMEn = (TextView) dialogMeaning.findViewById(R.id.pMeaningEn);
TextView tvEEn = (TextView) dialogMeaning.findViewById(R.id.pExamplesEn);
TextView tvEFa = (TextView) dialogMeaning.findViewById(R.id.pExamplesFa);
if (tvName.getVisibility() == View.VISIBLE) {
tvName.setVisibility(View.GONE);
tvName1.setVisibility(View.VISIBLE);
tvMeaningFa.setVisibility(View.VISIBLE);
tvMFa.setVisibility(View.VISIBLE);
tvMEn.setVisibility(View.VISIBLE);
tvEEn.setVisibility(View.VISIBLE);
tvEFa.setVisibility(View.VISIBLE);
} else {
tvName.setVisibility(View.VISIBLE);
tvName1.setVisibility(View.GONE);
tvMeaningFa.setVisibility(View.GONE);
tvMeaningEn.setVisibility(View.GONE);
tvExamplesEn.setVisibility(View.GONE);
tvExamplesFa.setVisibility(View.GONE);
tvMFa.setVisibility(View.GONE);
tvMEn.setVisibility(View.GONE);
tvEEn.setVisibility(View.GONE);
tvEFa.setVisibility(View.GONE);
}
}
public void meaningFa_click(View view) {
TextView tvMeaningFa = (TextView) dialogMeaning.findViewById(R.id.packageMeaningFa);
if (tvMeaningFa.getVisibility() == View.VISIBLE) {
tvMeaningFa.setVisibility(View.GONE);
} else {
tvMeaningFa.setVisibility(View.VISIBLE);
}
}
public void meaningEn_click(View view) {
TextView tvMeaningEn = (TextView) dialogMeaning.findViewById(R.id.packageMeaningEn);
if (tvMeaningEn.getVisibility() == View.VISIBLE) {
tvMeaningEn.setVisibility(View.GONE);
} else {
tvMeaningEn.setVisibility(View.VISIBLE);
}
}
public void examplesEn_click(View view) {
TextView tvExamplesEn = (TextView) dialogMeaning.findViewById(R.id.packageExamplesEn);
if (tvExamplesEn.getVisibility() == View.VISIBLE) {
tvExamplesEn.setVisibility(View.GONE);
} else {
tvExamplesEn.setVisibility(View.VISIBLE);
}
}
public void examplesFa_click(View view) {
TextView tvExamplesFa = (TextView) dialogMeaning.findViewById(R.id.packageExamplesFa);
if (tvExamplesFa.getVisibility() == View.VISIBLE) {
tvExamplesFa.setVisibility(View.GONE);
} else {
tvExamplesFa.setVisibility(View.VISIBLE);
}
}
int indexDeck(int index) {
switch (index) {
case 0:
return 1;
case 1:
return 1;
case 2:
return 2;
case 3:
return 1;
case 4:
return 2;
case 5:
return 3;
case 6:
return 4;
case 7:
return 1;
case 8:
return 2;
case 9:
return 3;
case 10:
return 4;
case 11:
return 5;
case 12:
return 6;
case 13:
return 7;
case 14:
return 8;
case 15:
return 1;
case 16:
return 2;
case 17:
return 3;
case 18:
return 4;
case 19:
return 5;
case 20:
return 6;
case 21:
return 7;
case 22:
return 8;
case 23:
return 9;
case 24:
return 10;
case 25:
return 11;
case 26:
return 12;
case 27:
return 13;
case 28:
return 14;
case 29:
return 15;
case 30:
return 16;
}
return 1;
}
void move_Next_Correct(int position) {
int realPosition = getPosition(position);
int currentDeck = arrayItems.get(realPosition).getDeck();
int nextIndex = 0;
switch (currentDeck) {
case 0: //to deck 1 / /////// / / not going to happen
arrayItems.get(realPosition).setDeck(1);
arrayItems.get(realPosition).setIndex(0);
databasePackage.updatePosition(arrayItems.get(realPosition).getId(), 1, 0);
break;
case 1: //to deck 2
nextIndex = whichIndexTurnDeck(2);
databasePackage.updateItemLastDays(nextIndex + 1, todayNum);//update third one
databasePackage.updateItemLastDaysDate(nextIndex + 1, todayDate);//update third one
arrayIndexesLastDay.set(nextIndex, todayNum);
arrayIndexesLastDayDate.set(nextIndex, todayDate);
arrayItems.get(realPosition).setDeck(2);
arrayItems.get(realPosition).setIndex(nextIndex);
databasePackage.updatePosition(arrayItems.get(realPosition).getId(), 2, nextIndex);
break;
case 2: // to deck 3
nextIndex = whichIndexTurnDeck(4);
databasePackage.updateItemLastDays(nextIndex + 1, todayNum);//update third one
databasePackage.updateItemLastDaysDate(nextIndex + 1, todayDate);//update third one
arrayIndexesLastDay.set(nextIndex, todayNum);
arrayIndexesLastDayDate.set(nextIndex, todayDate);
arrayItems.get(realPosition).setDeck(3);
arrayItems.get(realPosition).setIndex(nextIndex);
databasePackage.updatePosition(arrayItems.get(realPosition).getId(), 3, nextIndex);
break;
case 3: // to deck 4
nextIndex = whichIndexTurnDeck(8);
databasePackage.updateItemLastDays(nextIndex + 1, todayNum);//update third one
databasePackage.updateItemLastDaysDate(nextIndex + 1, todayDate);//update third one
arrayIndexesLastDay.set(nextIndex, todayNum);
arrayIndexesLastDayDate.set(nextIndex, todayDate);
arrayItems.get(realPosition).setDeck(4);
arrayItems.get(realPosition).setIndex(nextIndex);
databasePackage.updatePosition(arrayItems.get(realPosition).getId(), 4, nextIndex);
break;
case 4: // to deck 5
nextIndex = whichIndexTurnDeck(16);
databasePackage.updateItemLastDays(nextIndex + 1, todayNum);//update third one
databasePackage.updateItemLastDaysDate(nextIndex + 1, todayDate);//update third one
arrayIndexesLastDay.set(nextIndex, todayNum);
arrayIndexesLastDayDate.set(nextIndex, todayDate);
arrayItems.get(realPosition).setDeck(5);
arrayItems.get(realPosition).setIndex(nextIndex);
databasePackage.updatePosition(arrayItems.get(realPosition).getId(), 5, nextIndex);
break;
case 5: // to archive
databasePackage.addItem(arrayItems.get(realPosition), v.TABLE_ARCHIVE);
break;
}
}
int whichIndexTurnDeck(int size) {
int lastIndex = -1;
int lastDay = -1;
if (size == 2) {
if (arrayIndexesLastDay.get(1) == -1) {
return 1;
}
for (int i = 1; i < 3; i++) {
if (arrayIndexesLastDay.get(i) > lastDay) {
lastDay = arrayIndexesLastDay.get(i);
lastIndex = i;
}
}
if (todayDate.equals(arrayIndexesLastDayDate.get(lastIndex))) {
return lastIndex;
} else {
if (lastIndex == 2) {
return 1;//next index
} else if (lastIndex == 1) {
return 2;//next index
}
}
} else if (size == 4) {
if (arrayIndexesLastDay.get(3) == -1) {
return 3;
}
for (int i = 3; i < 7; i++) {
if (arrayIndexesLastDay.get(i) > lastDay) {
lastDay = arrayIndexesLastDay.get(i);
lastIndex = i;
}
}
if (todayDate.equals(arrayIndexesLastDayDate.get(lastIndex))) {
return lastIndex;
} else {
if (lastIndex == 6) {
return 3;
} else {
return lastIndex + 1;
}
}
} else if (size == 8) {
if (arrayIndexesLastDay.get(7) == -1) {
return 7;
}
for (int i = 7; i < 15; i++) {
if (arrayIndexesLastDay.get(i) > lastDay) {
lastDay = arrayIndexesLastDay.get(i);
lastIndex = i;
}
}
if (todayDate.equals(arrayIndexesLastDayDate.get(lastIndex))) {
return lastIndex;
} else {
if (lastIndex == 14) {
return 7;
} else {
return lastIndex + 1;
}
}
} else if (size == 16) {
if (arrayIndexesLastDay.get(15) == -1) {
return 15;
}
for (int i = 15; i < 31; i++) {
if (arrayIndexesLastDay.get(i) > lastDay) {
lastDay = arrayIndexesLastDay.get(i);
lastIndex = i;
}
}
if (todayDate.equals(arrayIndexesLastDayDate.get(lastIndex))) {
return lastIndex;
} else {
if (lastIndex == 30) {
return 15;
} else {
return lastIndex + 1;
}
}
}
return -1;
}
int lastIndexMore30() {
int lastIndex = -1;
int lastDay = -1;
for (int i = 15; i < 31; i++) {
if (arrayIndexesLastDay.get(i) > lastDay) {
lastDay = arrayIndexesLastDay.get(i);
lastIndex = i;
}
}
return lastIndex;
}
int nextIndexMore30(int size) {
int lastIndex = -1;
int lastDay = -1;
if (size == 16) {
for (int i = 15; i < 31; i++) {
if (arrayIndexesLastDay.get(i) > lastDay) {
lastDay = arrayIndexesLastDay.get(i);
lastIndex = i;
}
}
if (todayDate.equals(arrayIndexesLastDayDate.get(lastIndex))) {
return lastIndex;
} else {
if (lastIndex == 30) {
return 15;
} else {
return lastIndex + 1;
}
}
}
return -1;
}
void update_Info_After_Answer(int position, boolean correct) {
int realPosition = getPosition(position);
ItemPackage j = arrayItems.get(realPosition);
databasePackage.updateLastDate(todayDate);
databasePackage.updateLastDay(todayNum);
lastDate = todayDate;
int countCorrect = correct ? j.getCountCorrect() + 1 : j.getCountCorrect();
int countIncorrect = !correct ? j.getCountInCorrect() + 1 : j.getCountInCorrect();
int count = j.getCount() + 1;
arrayItems.get(realPosition).setCountCorrect(countCorrect);
arrayItems.get(realPosition).setCountInCorrect(countIncorrect);
arrayItems.get(realPosition).setCount(count);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm");
String currentDateAndTime = simpleDateFormat.format(new Date());
arrayItems.get(realPosition).setLastCheckDate(currentDateAndTime);
arrayItems.get(realPosition).setLastCheckDay(todayNum);
j = arrayItems.get(realPosition);
databasePackage.updateItem(new ItemPackage(j.getId(), j.getName(), j.getMeaningEn(), j.getMeaningFa(), j.getExamplesEn(), j.getExamplesFa(), j.getTags(),
currentDateAndTime, todayNum,
j.getDeck(), j.getIndex(),
countCorrect, countIncorrect, count), v.TABLE_LEITNER);
listViewPosition = items.onSaveInstanceState();
refreshListViewData();
if (position != itemsToShow.size() && (!itemsToShow.get(position).getName().equals(" Nothing found"))) {
dialogMeaning(position);
}
}
void updateIndexesLastDayLessThan30() {
switch (todayNum) {
case 1: {
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 2: {
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 3: {
databasePackage.updateItemLastDays(4, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(4, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(3, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(3, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 4: {
databasePackage.updateItemLastDays(5, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(5, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(4, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(4, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 5: {
databasePackage.updateItemLastDays(6, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(6, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(5, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(5, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 6: {
databasePackage.updateItemLastDays(7, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(7, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(6, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(6, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 7: {
databasePackage.updateItemLastDays(8, todayNum);
databasePackage.updateItemLastDays(4, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(8, lastDate);
databasePackage.updateItemLastDaysDate(4, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(7, todayNum);
arrayIndexesLastDay.set(3, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(7, lastDate);
arrayIndexesLastDayDate.set(3, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 8: {
databasePackage.updateItemLastDays(9, todayNum);
databasePackage.updateItemLastDays(5, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(9, lastDate);
databasePackage.updateItemLastDaysDate(5, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(8, todayNum);
arrayIndexesLastDay.set(4, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(8, lastDate);
arrayIndexesLastDayDate.set(4, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 9: {
databasePackage.updateItemLastDays(10, todayNum);
databasePackage.updateItemLastDays(6, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(102, lastDate);
databasePackage.updateItemLastDaysDate(6, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(9, todayNum);
arrayIndexesLastDay.set(5, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(9, lastDate);
arrayIndexesLastDayDate.set(5, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 10: {
databasePackage.updateItemLastDays(11, todayNum);
databasePackage.updateItemLastDays(7, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(11, lastDate);
databasePackage.updateItemLastDaysDate(7, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(10, todayNum);
arrayIndexesLastDay.set(6, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(10, lastDate);
arrayIndexesLastDayDate.set(6, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 11: {
databasePackage.updateItemLastDays(12, todayNum);
databasePackage.updateItemLastDays(4, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(12, lastDate);
databasePackage.updateItemLastDaysDate(4, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(11, todayNum);
arrayIndexesLastDay.set(3, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(11, lastDate);
arrayIndexesLastDayDate.set(3, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 12: {
databasePackage.updateItemLastDays(13, todayNum);
databasePackage.updateItemLastDays(5, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(13, lastDate);
databasePackage.updateItemLastDaysDate(5, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(12, todayNum);
arrayIndexesLastDay.set(4, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(12, lastDate);
arrayIndexesLastDayDate.set(4, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 13: {
databasePackage.updateItemLastDays(14, todayNum);
databasePackage.updateItemLastDays(6, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(14, lastDate);
databasePackage.updateItemLastDaysDate(6, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(13, todayNum);
arrayIndexesLastDay.set(5, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(13, lastDate);
arrayIndexesLastDayDate.set(5, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 14: {
databasePackage.updateItemLastDays(15, todayNum);
databasePackage.updateItemLastDays(7, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(15, lastDate);
databasePackage.updateItemLastDaysDate(7, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(14, todayNum);
arrayIndexesLastDay.set(6, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(14, lastDate);
arrayIndexesLastDayDate.set(6, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 15: {
databasePackage.updateItemLastDays(16, todayNum);
databasePackage.updateItemLastDays(8, todayNum);
databasePackage.updateItemLastDays(4, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(16, lastDate);
databasePackage.updateItemLastDaysDate(8, lastDate);
databasePackage.updateItemLastDaysDate(4, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(15, todayNum);
arrayIndexesLastDay.set(7, todayNum);
arrayIndexesLastDay.set(3, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(15, lastDate);
arrayIndexesLastDayDate.set(7, lastDate);
arrayIndexesLastDayDate.set(3, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 16: {
databasePackage.updateItemLastDays(17, todayNum);
databasePackage.updateItemLastDays(9, todayNum);
databasePackage.updateItemLastDays(5, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(17, lastDate);
databasePackage.updateItemLastDaysDate(9, lastDate);
databasePackage.updateItemLastDaysDate(5, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(16, todayNum);
arrayIndexesLastDay.set(8, todayNum);
arrayIndexesLastDay.set(4, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(16, lastDate);
arrayIndexesLastDayDate.set(8, lastDate);
arrayIndexesLastDayDate.set(4, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 17: {
databasePackage.updateItemLastDays(18, todayNum);
databasePackage.updateItemLastDays(10, todayNum);
databasePackage.updateItemLastDays(6, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(18, lastDate);
databasePackage.updateItemLastDaysDate(10, lastDate);
databasePackage.updateItemLastDaysDate(6, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(17, todayNum);
arrayIndexesLastDay.set(9, todayNum);
arrayIndexesLastDay.set(5, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(17, lastDate);
arrayIndexesLastDayDate.set(9, lastDate);
arrayIndexesLastDayDate.set(5, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 18: {
databasePackage.updateItemLastDays(19, todayNum);
databasePackage.updateItemLastDays(11, todayNum);
databasePackage.updateItemLastDays(7, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(19, lastDate);
databasePackage.updateItemLastDaysDate(11, lastDate);
databasePackage.updateItemLastDaysDate(7, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(18, todayNum);
arrayIndexesLastDay.set(10, todayNum);
arrayIndexesLastDay.set(6, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(18, lastDate);
arrayIndexesLastDayDate.set(10, lastDate);
arrayIndexesLastDayDate.set(6, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 19: {
databasePackage.updateItemLastDays(20, todayNum);
databasePackage.updateItemLastDays(12, todayNum);
databasePackage.updateItemLastDays(4, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(20, lastDate);
databasePackage.updateItemLastDaysDate(12, lastDate);
databasePackage.updateItemLastDaysDate(4, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(19, todayNum);
arrayIndexesLastDay.set(11, todayNum);
arrayIndexesLastDay.set(3, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(19, lastDate);
arrayIndexesLastDayDate.set(11, lastDate);
arrayIndexesLastDayDate.set(3, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 20: {
databasePackage.updateItemLastDays(21, todayNum);
databasePackage.updateItemLastDays(13, todayNum);
databasePackage.updateItemLastDays(5, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(21, lastDate);
databasePackage.updateItemLastDaysDate(13, lastDate);
databasePackage.updateItemLastDaysDate(5, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(20, todayNum);
arrayIndexesLastDay.set(12, todayNum);
arrayIndexesLastDay.set(4, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(20, lastDate);
arrayIndexesLastDayDate.set(12, lastDate);
arrayIndexesLastDayDate.set(4, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 21: {
databasePackage.updateItemLastDays(22, todayNum);
databasePackage.updateItemLastDays(14, todayNum);
databasePackage.updateItemLastDays(6, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(22, lastDate);
databasePackage.updateItemLastDaysDate(14, lastDate);
databasePackage.updateItemLastDaysDate(6, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(21, todayNum);
arrayIndexesLastDay.set(13, todayNum);
arrayIndexesLastDay.set(5, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(21, lastDate);
arrayIndexesLastDayDate.set(13, lastDate);
arrayIndexesLastDayDate.set(5, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 22: {
databasePackage.updateItemLastDays(23, todayNum);
databasePackage.updateItemLastDays(15, todayNum);
databasePackage.updateItemLastDays(7, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(23, lastDate);
databasePackage.updateItemLastDaysDate(15, lastDate);
databasePackage.updateItemLastDaysDate(7, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(22, todayNum);
arrayIndexesLastDay.set(14, todayNum);
arrayIndexesLastDay.set(6, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(22, lastDate);
arrayIndexesLastDayDate.set(14, lastDate);
arrayIndexesLastDayDate.set(6, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 23: {
databasePackage.updateItemLastDays(24, todayNum);
databasePackage.updateItemLastDays(8, todayNum);
databasePackage.updateItemLastDays(4, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(24, lastDate);
databasePackage.updateItemLastDaysDate(8, lastDate);
databasePackage.updateItemLastDaysDate(4, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(23, todayNum);
arrayIndexesLastDay.set(7, todayNum);
arrayIndexesLastDay.set(3, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(23, lastDate);
arrayIndexesLastDayDate.set(7, lastDate);
arrayIndexesLastDayDate.set(3, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 24: {
databasePackage.updateItemLastDays(25, todayNum);
databasePackage.updateItemLastDays(9, todayNum);
databasePackage.updateItemLastDays(5, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(25, lastDate);
databasePackage.updateItemLastDaysDate(9, lastDate);
databasePackage.updateItemLastDaysDate(5, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(24, todayNum);
arrayIndexesLastDay.set(8, todayNum);
arrayIndexesLastDay.set(4, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(24, lastDate);
arrayIndexesLastDayDate.set(8, lastDate);
arrayIndexesLastDayDate.set(4, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 25: {
databasePackage.updateItemLastDays(26, todayNum);
databasePackage.updateItemLastDays(10, todayNum);
databasePackage.updateItemLastDays(6, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(26, lastDate);
databasePackage.updateItemLastDaysDate(10, lastDate);
databasePackage.updateItemLastDaysDate(6, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(25, todayNum);
arrayIndexesLastDay.set(9, todayNum);
arrayIndexesLastDay.set(5, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(25, lastDate);
arrayIndexesLastDayDate.set(9, lastDate);
arrayIndexesLastDayDate.set(5, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 26: {
databasePackage.updateItemLastDays(27, todayNum);
databasePackage.updateItemLastDays(11, todayNum);
databasePackage.updateItemLastDays(7, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(27, lastDate);
databasePackage.updateItemLastDaysDate(11, lastDate);
databasePackage.updateItemLastDaysDate(7, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(26, todayNum);
arrayIndexesLastDay.set(10, todayNum);
arrayIndexesLastDay.set(6, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(26, lastDate);
arrayIndexesLastDayDate.set(10, lastDate);
arrayIndexesLastDayDate.set(6, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 27: {
databasePackage.updateItemLastDays(28, todayNum);
databasePackage.updateItemLastDays(12, todayNum);
databasePackage.updateItemLastDays(4, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(28, lastDate);
databasePackage.updateItemLastDaysDate(12, lastDate);
databasePackage.updateItemLastDaysDate(4, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(27, todayNum);
arrayIndexesLastDay.set(11, todayNum);
arrayIndexesLastDay.set(3, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(27, lastDate);
arrayIndexesLastDayDate.set(11, lastDate);
arrayIndexesLastDayDate.set(3, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 28: {
databasePackage.updateItemLastDays(29, todayNum);
databasePackage.updateItemLastDays(13, todayNum);
databasePackage.updateItemLastDays(5, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(29, lastDate);
databasePackage.updateItemLastDaysDate(13, lastDate);
databasePackage.updateItemLastDaysDate(5, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(28, todayNum);
arrayIndexesLastDay.set(12, todayNum);
arrayIndexesLastDay.set(4, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(28, lastDate);
arrayIndexesLastDayDate.set(12, lastDate);
arrayIndexesLastDayDate.set(4, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 29: {
databasePackage.updateItemLastDays(30, todayNum);
databasePackage.updateItemLastDays(14, todayNum);
databasePackage.updateItemLastDays(6, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(30, lastDate);
databasePackage.updateItemLastDaysDate(14, lastDate);
databasePackage.updateItemLastDaysDate(6, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(29, todayNum);
arrayIndexesLastDay.set(13, todayNum);
arrayIndexesLastDay.set(5, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(29, lastDate);
arrayIndexesLastDayDate.set(13, lastDate);
arrayIndexesLastDayDate.set(5, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 30: {
databasePackage.updateItemLastDays(31, todayNum);
databasePackage.updateItemLastDays(15, todayNum);
databasePackage.updateItemLastDays(7, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(31, lastDate);
databasePackage.updateItemLastDaysDate(15, lastDate);
databasePackage.updateItemLastDaysDate(7, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(30, todayNum);
arrayIndexesLastDay.set(14, todayNum);
arrayIndexesLastDay.set(6, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(30, lastDate);
arrayIndexesLastDayDate.set(14, lastDate);
arrayIndexesLastDayDate.set(6, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
default: {
break;
}
}
}
void updateIndexLastDayMoreThan30() {
int nextIndexDeck5 = lastIndexMore30();
switch (nextIndexDeck5) {
case 15: {
databasePackage.updateItemLastDays(16, todayNum);
databasePackage.updateItemLastDays(8, todayNum);
databasePackage.updateItemLastDays(4, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(16, lastDate);
databasePackage.updateItemLastDaysDate(8, lastDate);
databasePackage.updateItemLastDaysDate(4, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(15, todayNum);
arrayIndexesLastDay.set(7, todayNum);
arrayIndexesLastDay.set(3, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(15, lastDate);
arrayIndexesLastDayDate.set(7, lastDate);
arrayIndexesLastDayDate.set(3, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 16: {
databasePackage.updateItemLastDays(17, todayNum);
databasePackage.updateItemLastDays(9, todayNum);
databasePackage.updateItemLastDays(5, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(17, lastDate);
databasePackage.updateItemLastDaysDate(9, lastDate);
databasePackage.updateItemLastDaysDate(5, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(16, todayNum);
arrayIndexesLastDay.set(8, todayNum);
arrayIndexesLastDay.set(4, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(16, lastDate);
arrayIndexesLastDayDate.set(8, lastDate);
arrayIndexesLastDayDate.set(4, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 17: {
databasePackage.updateItemLastDays(18, todayNum);
databasePackage.updateItemLastDays(10, todayNum);
databasePackage.updateItemLastDays(6, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(18, lastDate);
databasePackage.updateItemLastDaysDate(10, lastDate);
databasePackage.updateItemLastDaysDate(6, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(17, todayNum);
arrayIndexesLastDay.set(9, todayNum);
arrayIndexesLastDay.set(5, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(17, lastDate);
arrayIndexesLastDayDate.set(9, lastDate);
arrayIndexesLastDayDate.set(5, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 18: {
databasePackage.updateItemLastDays(19, todayNum);
databasePackage.updateItemLastDays(11, todayNum);
databasePackage.updateItemLastDays(7, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(19, lastDate);
databasePackage.updateItemLastDaysDate(11, lastDate);
databasePackage.updateItemLastDaysDate(7, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(18, todayNum);
arrayIndexesLastDay.set(10, todayNum);
arrayIndexesLastDay.set(6, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(18, lastDate);
arrayIndexesLastDayDate.set(10, lastDate);
arrayIndexesLastDayDate.set(6, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 19: {
databasePackage.updateItemLastDays(20, todayNum);
databasePackage.updateItemLastDays(12, todayNum);
databasePackage.updateItemLastDays(4, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(20, lastDate);
databasePackage.updateItemLastDaysDate(12, lastDate);
databasePackage.updateItemLastDaysDate(4, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(19, todayNum);
arrayIndexesLastDay.set(11, todayNum);
arrayIndexesLastDay.set(3, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(19, lastDate);
arrayIndexesLastDayDate.set(11, lastDate);
arrayIndexesLastDayDate.set(3, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 20: {
databasePackage.updateItemLastDays(21, todayNum);
databasePackage.updateItemLastDays(13, todayNum);
databasePackage.updateItemLastDays(5, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(21, lastDate);
databasePackage.updateItemLastDaysDate(13, lastDate);
databasePackage.updateItemLastDaysDate(5, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(20, todayNum);
arrayIndexesLastDay.set(12, todayNum);
arrayIndexesLastDay.set(4, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(20, lastDate);
arrayIndexesLastDayDate.set(12, lastDate);
arrayIndexesLastDayDate.set(4, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 21: {
databasePackage.updateItemLastDays(22, todayNum);
databasePackage.updateItemLastDays(14, todayNum);
databasePackage.updateItemLastDays(6, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(22, lastDate);
databasePackage.updateItemLastDaysDate(14, lastDate);
databasePackage.updateItemLastDaysDate(6, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(21, todayNum);
arrayIndexesLastDay.set(13, todayNum);
arrayIndexesLastDay.set(5, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(21, lastDate);
arrayIndexesLastDayDate.set(13, lastDate);
arrayIndexesLastDayDate.set(5, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 22: {
databasePackage.updateItemLastDays(23, todayNum);
databasePackage.updateItemLastDays(15, todayNum);
databasePackage.updateItemLastDays(7, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(23, lastDate);
databasePackage.updateItemLastDaysDate(15, lastDate);
databasePackage.updateItemLastDaysDate(7, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(22, todayNum);
arrayIndexesLastDay.set(14, todayNum);
arrayIndexesLastDay.set(6, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(22, lastDate);
arrayIndexesLastDayDate.set(14, lastDate);
arrayIndexesLastDayDate.set(6, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 23: {
databasePackage.updateItemLastDays(24, todayNum);
databasePackage.updateItemLastDays(8, todayNum);
databasePackage.updateItemLastDays(4, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(24, lastDate);
databasePackage.updateItemLastDaysDate(8, lastDate);
databasePackage.updateItemLastDaysDate(4, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(23, todayNum);
arrayIndexesLastDay.set(7, todayNum);
arrayIndexesLastDay.set(3, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(23, lastDate);
arrayIndexesLastDayDate.set(7, lastDate);
arrayIndexesLastDayDate.set(3, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 24: {
databasePackage.updateItemLastDays(25, todayNum);
databasePackage.updateItemLastDays(9, todayNum);
databasePackage.updateItemLastDays(5, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(25, lastDate);
databasePackage.updateItemLastDaysDate(9, lastDate);
databasePackage.updateItemLastDaysDate(5, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(24, todayNum);
arrayIndexesLastDay.set(8, todayNum);
arrayIndexesLastDay.set(4, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(24, lastDate);
arrayIndexesLastDayDate.set(8, lastDate);
arrayIndexesLastDayDate.set(4, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 25: {
databasePackage.updateItemLastDays(26, todayNum);
databasePackage.updateItemLastDays(10, todayNum);
databasePackage.updateItemLastDays(6, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(26, lastDate);
databasePackage.updateItemLastDaysDate(10, lastDate);
databasePackage.updateItemLastDaysDate(6, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(25, todayNum);
arrayIndexesLastDay.set(9, todayNum);
arrayIndexesLastDay.set(5, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(25, lastDate);
arrayIndexesLastDayDate.set(9, lastDate);
arrayIndexesLastDayDate.set(5, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 26: {
databasePackage.updateItemLastDays(27, todayNum);
databasePackage.updateItemLastDays(11, todayNum);
databasePackage.updateItemLastDays(7, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(27, lastDate);
databasePackage.updateItemLastDaysDate(11, lastDate);
databasePackage.updateItemLastDaysDate(7, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(26, todayNum);
arrayIndexesLastDay.set(10, todayNum);
arrayIndexesLastDay.set(6, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(26, lastDate);
arrayIndexesLastDayDate.set(10, lastDate);
arrayIndexesLastDayDate.set(6, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 27: {
databasePackage.updateItemLastDays(28, todayNum);
databasePackage.updateItemLastDays(12, todayNum);
databasePackage.updateItemLastDays(4, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(28, lastDate);
databasePackage.updateItemLastDaysDate(12, lastDate);
databasePackage.updateItemLastDaysDate(4, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(27, todayNum);
arrayIndexesLastDay.set(11, todayNum);
arrayIndexesLastDay.set(3, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(27, lastDate);
arrayIndexesLastDayDate.set(11, lastDate);
arrayIndexesLastDayDate.set(3, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 28: {
databasePackage.updateItemLastDays(29, todayNum);
databasePackage.updateItemLastDays(13, todayNum);
databasePackage.updateItemLastDays(5, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(29, lastDate);
databasePackage.updateItemLastDaysDate(13, lastDate);
databasePackage.updateItemLastDaysDate(5, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(28, todayNum);
arrayIndexesLastDay.set(12, todayNum);
arrayIndexesLastDay.set(4, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(28, lastDate);
arrayIndexesLastDayDate.set(12, lastDate);
arrayIndexesLastDayDate.set(4, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
case 29: {
databasePackage.updateItemLastDays(30, todayNum);
databasePackage.updateItemLastDays(14, todayNum);
databasePackage.updateItemLastDays(6, todayNum);
databasePackage.updateItemLastDays(2, todayNum);
databasePackage.updateItemLastDaysDate(30, lastDate);
databasePackage.updateItemLastDaysDate(14, lastDate);
databasePackage.updateItemLastDaysDate(6, lastDate);
databasePackage.updateItemLastDaysDate(2, lastDate);
arrayIndexesLastDay.set(29, todayNum);
arrayIndexesLastDay.set(13, todayNum);
arrayIndexesLastDay.set(5, todayNum);
arrayIndexesLastDay.set(1, todayNum);
arrayIndexesLastDayDate.set(29, lastDate);
arrayIndexesLastDayDate.set(13, lastDate);
arrayIndexesLastDayDate.set(5, lastDate);
arrayIndexesLastDayDate.set(1, lastDate);
break;
}
case 30: {
databasePackage.updateItemLastDays(31, todayNum);
databasePackage.updateItemLastDays(15, todayNum);
databasePackage.updateItemLastDays(7, todayNum);
databasePackage.updateItemLastDays(3, todayNum);
databasePackage.updateItemLastDaysDate(31, lastDate);
databasePackage.updateItemLastDaysDate(15, lastDate);
databasePackage.updateItemLastDaysDate(7, lastDate);
databasePackage.updateItemLastDaysDate(3, lastDate);
arrayIndexesLastDay.set(30, todayNum);
arrayIndexesLastDay.set(14, todayNum);
arrayIndexesLastDay.set(6, todayNum);
arrayIndexesLastDay.set(2, todayNum);
arrayIndexesLastDayDate.set(30, lastDate);
arrayIndexesLastDayDate.set(14, lastDate);
arrayIndexesLastDayDate.set(6, lastDate);
arrayIndexesLastDayDate.set(2, lastDate);
break;
}
default: {
break;
}
}
}
void dialogAskLogin() {
dialogAskLogin = new AlertDialog.Builder(this)
.setMessage("To use leitner packages you need to login or create an account.")
.setPositiveButton(R.string.login, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialogLogin();
}
})
.setNegativeButton(R.string.signUp, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialogSignUp();
}
})
.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK &&
event.getAction() == KeyEvent.ACTION_UP &&
!event.isCanceled()) {
PackageActivity.super.onBackPressed();
return true;
}
return false;
}
})
.create();
dialogAskLogin.show();
dialogAskLogin.setCanceledOnTouchOutside(false);
}
void dialogLogin() {
LayoutInflater inflater = this.getLayoutInflater();
dialogLogin = new AlertDialog.Builder(this)
.setView(inflater.inflate(R.layout.dialog_signup, null))
.setPositiveButton(R.string.login,
new Dialog.OnClickListener() {
public void onClick(DialogInterface d, int which) {
}
})
.setNegativeButton(R.string.signUp, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialogSignUp();
}
})
.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK &&
event.getAction() == KeyEvent.ACTION_UP &&
!event.isCanceled()) {
PackageActivity.super.onBackPressed();
return true;
}
return false;
}
})
.create();
dialogLogin.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
dialogLogin.show();
TextView tvHeader = (TextView) dialogLogin.findViewById(R.id.tvHeader);
tvHeader.setText("Login");
EditText etEmail = (EditText) dialogLogin.findViewById(R.id.etEmail);
EditText etUsername = (EditText) dialogLogin.findViewById(R.id.etUsername);
EditText etPassword = (EditText) dialogLogin.findViewById(R.id.etPassword);
etEmail.setVisibility(View.GONE);
etUsername.setHint("Enter Your Username");
etPassword.setHint("Enter Your Password");
dialogLogin.setCanceledOnTouchOutside(false);
Button theButton = dialogLogin.getButton(DialogInterface.BUTTON_POSITIVE);
theButton.setOnClickListener(new CustomListenerLogin(dialogLogin));
}
class CustomListenerLogin implements View.OnClickListener {
private final Dialog dialog;
public CustomListenerLogin(Dialog dialog) {
this.dialog = dialog;
}
@Override
public void onClick(View v) {
class FtpTask extends AsyncTask<Void, Integer, Void> {
EditText etUsernameL = (EditText) dialogLogin.findViewById(R.id.etUsername);
EditText etPasswordL = (EditText) dialogLogin.findViewById(R.id.etPassword);
String strUsername = etUsernameL.getText().toString();
String strPassword = etPasswordL.getText().toString();
String strEmail = "";
boolean succeed = false;
String error = "";
ProgressDialog progressBar;
private Context context;
String canFind = "";
String password = "";
public FtpTask(Context context) {
this.context = context;
}
protected void onPreExecute() {
progressBar = new ProgressDialog(context);
progressBar.setCancelable(false);
progressBar.setMessage("Connecting to server ...");
progressBar.show();
lockScreenOrientation();
}
protected Void doInBackground(Void... args) {
try {
if (con == null) con = new FTPClient();
if (!con.isConnected()) con.connect(InetAddress.getByName("5.9.0.183"));
if (con.login("ftpUsers@khaled.ir", "8I4KJ4UeRq")) {
con.enterLocalPassiveMode(); // important!
publishProgress(0);
boolean canAdd = con.makeDirectory(s + strUsername);
if (canAdd) {
con.removeDirectory(s + strUsername);
canFind = "no such user";
} else {
canFind = "successful";
InputStream inputStream = con.retrieveFileStream(s + strUsername + s + "userPassword");
con.completePendingCommand();
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
password = r.readLine();
inputStream.close();
r.close();
inputStream = con.retrieveFileStream(s + strUsername + s + "userEmail");
con.completePendingCommand();
r = new BufferedReader(new InputStreamReader(inputStream));
strEmail = r.readLine();
inputStream.close();
r.close();
}
succeed = true;
} else {
// Toast.makeText(Backup.this, "couldn't connect to server", Toast.LENGTH_SHORT).show();
}
con.logout();
con.disconnect();
} catch (Exception e) {
error = e.toString();
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result) {
Log.v("FTPTask", "FTP connection complete");
if (canFind.equals("successful")) {
if (strPassword.equals(password)) {
EditorUserInfo.putString("userUsername", strUsername);
EditorUserInfo.putString("userPassword", strPassword);
EditorUserInfo.putString("userEmail", strEmail);
EditorUserInfo.commit();
userPassword = strPassword;
userUsername = strUsername;
try {
FileOutputStream outputStream;
outputStream = openFileOutput("userUsername", Context.MODE_PRIVATE);
outputStream.write(strUsername.getBytes());
outputStream.close();
outputStream = openFileOutput("userPassword", Context.MODE_PRIVATE);
outputStream.write(strPassword.getBytes());
outputStream.close();
outputStream = openFileOutput("userEmail", Context.MODE_PRIVATE);
outputStream.write(strEmail.getBytes());
outputStream.close();
} catch (IOException e) {
// Toast.makeText(PackageActivity.this, e.toString(), Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
dialogLogin.dismiss();
Toast.makeText(PackageActivity.this, "you successfully logged in.", Toast.LENGTH_SHORT).show();
hasDatabase();
} else {
Toast.makeText(PackageActivity.this, "password is wrong, try again", Toast.LENGTH_SHORT).show();
}
} else if (canFind.equals("no such user")) {
Toast.makeText(PackageActivity.this, "username is wrong, try again", Toast.LENGTH_SHORT).show();
} else if (canFind.equals("unsuccessful")) {
Toast.makeText(PackageActivity.this, "process ran into a problem.", Toast.LENGTH_SHORT).show();
} else if (!succeed) {
Toast.makeText(PackageActivity.this, error, Toast.LENGTH_SHORT).show();
}
progressBar.dismiss();
unlockScreenOrientation();
}
protected void onProgressUpdate(Integer... args) {
if (args[0] == 0)
progressBar.setMessage("Matching details ...");
}
}
new FtpTask(PackageActivity.this).execute();
}
}
void dialogSignUp() {
LayoutInflater inflater = this.getLayoutInflater();
dialogSingUp = new AlertDialog.Builder(this)
.setView(inflater.inflate(R.layout.dialog_signup, null))
.setPositiveButton(R.string.create,
new Dialog.OnClickListener() {
public void onClick(DialogInterface d, int which) {
}
})
.setNegativeButton(R.string.login, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialogLogin();
}
})
.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK &&
event.getAction() == KeyEvent.ACTION_UP &&
!event.isCanceled()) {
PackageActivity.super.onBackPressed();
return true;
}
return false;
}
})
.create();
dialogSingUp.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
dialogSingUp.show();
TextView tvHeader = (TextView) dialogSingUp.findViewById(R.id.tvHeader);
tvHeader.setText("Sign Up");
EditText etEmail = (EditText) dialogSingUp.findViewById(R.id.etEmail);
EditText etUsername = (EditText) dialogSingUp.findViewById(R.id.etUsername);
EditText etPassword = (EditText) dialogSingUp.findViewById(R.id.etPassword);
etEmail.setHint("Enter your email address");
etUsername.setHint("Enter a Username");
etPassword.setHint("Enter a Password");
dialogSingUp.setCanceledOnTouchOutside(false);
Button theButton = dialogSingUp.getButton(DialogInterface.BUTTON_POSITIVE);
theButton.setOnClickListener(new CustomListenerSignUp(dialogSingUp));
}
class CustomListenerSignUp implements View.OnClickListener {
private final Dialog dialog;
public CustomListenerSignUp(Dialog dialog) {
this.dialog = dialog;
}
@Override
public void onClick(View v) {
class FtpTask extends AsyncTask<Void, Integer, Void> {
EditText etEmailS = (EditText) dialogSingUp.findViewById(R.id.etEmail);
EditText etUsernameS = (EditText) dialogSingUp.findViewById(R.id.etUsername);
EditText etPasswordS = (EditText) dialogSingUp.findViewById(R.id.etPassword);
String strEmail = etEmailS.getText().toString();
String strUsername = etUsernameS.getText().toString();
String strPassword = etPasswordS.getText().toString();
boolean succeed = false;
String error = "";
ProgressDialog progressBar;
private Context context;
String canCreate = "unsuccessful";
public FtpTask(Context context) {
this.context = context;
}
protected void onPreExecute() {
progressBar = new ProgressDialog(context);
progressBar.setCancelable(false);
progressBar.setMessage("Connecting to server ...");
progressBar.show();
lockScreenOrientation();
}
protected Void doInBackground(Void... args) {
try {
if (con == null) con = new FTPClient();
if (!con.isConnected()) con.connect(InetAddress.getByName("5.9.0.183"));
if (con.login("ftpUsers@khaled.ir", "8I4KJ4UeRq")) {
con.enterLocalPassiveMode(); // important!
publishProgress(0);
if (isValidEmail(strEmail) && strUsername.length() >= 3 && strPassword.length() >= 5 && !isIllegal(strUsername)) {
boolean canAdd = con.makeDirectory(s + strUsername);
canCreate = canAdd ? "successful" : "taken userUsername";
if (canAdd) {
FileOutputStream outputStream;
outputStream = openFileOutput("userUsername", Context.MODE_PRIVATE);
outputStream.write(strUsername.getBytes());
outputStream.close();
outputStream = openFileOutput("userPassword", Context.MODE_PRIVATE);
outputStream.write(strPassword.getBytes());
outputStream.close();
outputStream = openFileOutput("userEmail", Context.MODE_PRIVATE);
outputStream.write(strEmail.getBytes());
outputStream.close();
EditorUserInfo.putString("userUsername", strUsername);
EditorUserInfo.putString("userPassword", strPassword);
EditorUserInfo.putString("userEmail", strEmail);
EditorUserInfo.commit();
FileInputStream in = openFileInput("userPassword");
con.storeFile(s + strUsername + s + "userPassword", in);
in.close();
in = openFileInput("userEmail");
con.storeFile(s + strUsername + s + "userEmail", in);
in.close();
succeed = true;
}
}
} else {
// Toast.makeText(Backup.this, "couldn't connect to server", Toast.LENGTH_SHORT).show();
}
con.logout();
con.disconnect();
} catch (Exception e) {
error = e.toString();
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result) {
if (isValidEmail(strEmail) && strUsername.length() >= 3 && strPassword.length() >= 5 && !isIllegal(strUsername)) {
if (canCreate.equals("successful")) {
dialogSingUp.dismiss();
hasDatabase();
Toast.makeText(PackageActivity.this, "your account successfully created.", Toast.LENGTH_SHORT).show();
} else if (canCreate.equals("taken userUsername")) {
Toast.makeText(PackageActivity.this, "this userUsername is taken choose another", Toast.LENGTH_SHORT).show();
}
} else {
if (!isValidEmail(strEmail)) {
Toast.makeText(PackageActivity.this, "please enter an valid email address.", Toast.LENGTH_SHORT).show();
} else if (strUsername.length() < 3) {
Toast.makeText(PackageActivity.this, "lowest length for username is 3", Toast.LENGTH_SHORT).show();
} else if (strPassword.length() < 5) {
Toast.makeText(PackageActivity.this, "lowest length for password is 5", Toast.LENGTH_SHORT).show();
} else if (isIllegal(strUsername)) {
Toast.makeText(PackageActivity.this, "username cant contain '/'", Toast.LENGTH_SHORT).show();
} else if (!succeed) {
Toast.makeText(PackageActivity.this, error, Toast.LENGTH_SHORT).show();
}
}
progressBar.dismiss();
unlockScreenOrientation();
}
protected void onProgressUpdate(Integer... args) {
if (args[0] == 0) {
progressBar.setMessage("Creating your account ...");
}
}
}
new FtpTask(PackageActivity.this).execute();
}
}
boolean isValidEmail(CharSequence target) {
return target != null && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}
boolean isIllegal(String string) {
for (char c : string.toCharArray()) {
if (c == '/') {
return true;
}
}
return false;
}
protected void onSaveInstanceState(Bundle icicle) {
super.onSaveInstanceState(icicle);
if (!etSearch.getText().equals(null)) {
icicle.putString("etSearchText", etSearch.getText().toString());
} else {
icicle.putString("etSearchText", "");
}
icicle.putParcelable("listViewPosition", items.onSaveInstanceState());
icicle.putBoolean("isFromSearch", isFromSearch);
if (dialogMeaning.isShowing()) {
icicle.putBoolean("dialogMeaningIsOpen", dialogMeaning.isShowing());
icicle.putInt("dialogMeaningWordPosition", dialogMeaningWordPosition);
icicle.putBoolean("isFromSearch", isFromSearch);
}
if (dialogSummery.isShowing()) {
icicle.putBoolean("dialogSummeryIsOpen", dialogSummery.isShowing());
}
if (dialogAskLogin.isShowing()) {
icicle.putBoolean("dialogAskLoginIsOpen", dialogAskLogin.isShowing());
}
if (dialogAskBuy.isShowing()) {
icicle.putBoolean("dialogAskBuyIsOpen", dialogAskBuy.isShowing());
}
if (dialogLogin.isShowing()) {
icicle.putBoolean("dialogLoginIsOpen", dialogLogin.isShowing());
EditText etUsername = (EditText) dialogLogin.findViewById(R.id.etUsername);
EditText etPassword = (EditText) dialogLogin.findViewById(R.id.etPassword);
icicle.putString("loginUsername", etUsername.getText().toString());
icicle.putString("loginPassword", etPassword.getText().toString());
}
if (dialogSingUp.isShowing()) {
icicle.putBoolean("dialogSingUpIsOpen", dialogSingUp.isShowing());
EditText etEmail = (EditText) dialogSingUp.findViewById(R.id.etEmail);
EditText etUsername = (EditText) dialogSingUp.findViewById(R.id.etUsername);
EditText etPassword = (EditText) dialogSingUp.findViewById(R.id.etPassword);
icicle.putString("signUpEmail", etEmail.getText().toString());
icicle.putString("signUpUsername", etUsername.getText().toString());
icicle.putString("signUpPassword", etPassword.getText().toString());
}
if (markSeveral) {
icicle.putBoolean("markSeveral", markSeveral);
icicle.putIntegerArrayList("checkedPositionsInt", checkedPositionsInt);
}
}
void restore(Bundle icicle) {
if (icicle != null) {
dialogMeaningIsOpen = icicle.getBoolean("dialogMeaningIsOpen");
dialogSummeryIsOpen = icicle.getBoolean("dialogSummeryIsOpen");
dialogAskLoginIsOpen = icicle.getBoolean("dialogAskLoginIsOpen");
dialogAskBuyIsOpen = icicle.getBoolean("dialogAskBuyIsOpen");
dialogLoginIsOpen = icicle.getBoolean("dialogLoginIsOpen");
dialogSingUpIsOpen = icicle.getBoolean("dialogSingUpIsOpen");
listViewPosition = icicle.getParcelable("listViewPosition");
markSeveral = icicle.getBoolean("markSeveral");
isFromSearch = icicle.getBoolean("isFromSearch");
}
if (dialogMeaningIsOpen) {
refreshListViewData();
dialogMeaningWordPosition = icicle.getInt("dialogMeaningWordPosition");
if (!dialogMeaning.isShowing())
dialogMeaning(dialogMeaningWordPosition);
}
if (dialogSummeryIsOpen) {
if (!dialogSummery.isShowing())
dialogSummery();
}
if (dialogAskLoginIsOpen) {
if (!dialogAskLogin.isShowing())
dialogAskLogin();
}
if (dialogAskBuyIsOpen) {
if (!dialogAskBuy.isShowing())
dialogAskBuy();
}
if (dialogLoginIsOpen) {
if (!dialogLogin.isShowing()) {
dialogLogin();
EditText etUsername = (EditText) dialogLogin.findViewById(R.id.etUsername);
EditText etPassword = (EditText) dialogLogin.findViewById(R.id.etPassword);
etUsername.setText(icicle.getString("loginUsername", ""));
etPassword.setText(icicle.getString("loginPassword", ""));
}
}
if (dialogSingUpIsOpen) {
if (!dialogSingUp.isShowing()) {
dialogSignUp();
EditText etEmail = (EditText) dialogSingUp.findViewById(R.id.etEmail);
EditText etUsername = (EditText) dialogSingUp.findViewById(R.id.etUsername);
EditText etPassword = (EditText) dialogSingUp.findViewById(R.id.etPassword);
etEmail.setText(icicle.getString("signUpEmail", ""));
etUsername.setText(icicle.getString("signUpUsername", ""));
etPassword.setText(icicle.getString("signUpPassword", ""));
}
}
if (markSeveral) {
checkedPositionsInt = icicle.getIntegerArrayList("checkedPositionsInt");
refreshListViewData();
}
}
@Override
public void onBackPressed() {
if (markSeveral) {
markSeveral = false;
// setElementsId();
listViewPosition = items.onSaveInstanceState();
refreshListViewData();
clearMarks();
} else if (isFromSearch) {
etSearch.setText("");
isFromSearch = false;
listViewPosition = items.onSaveInstanceState();
refreshListViewData();
} else {
super.onBackPressed();
}
}
@Override
public void onPause() {
super.onPause();
isPaused = true;
}
@Override
public void onStop() {
super.onStop();
// final View view = getLayoutInflater().inflate(R.layout.row_header, items, false);
// items.removeHeaderView(view);
}
@Override
public void onResume() {
super.onResume();
getPrefs();
if (UserInfo.getString(packageNameOnServer()+"Buy", "hasBuy").equals(v.TRUE_HAS_BUY) && UserInfo.getString(packageNameOnServer()+"In", "hasIn").equals(v.TRUE_HAS_IN)) {
refreshListViewData();
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (tts != null) {
tts.stop();
tts.shutdown();
}
if (mServiceConn != null) {
unbindService(mServiceConn);
}
dialogMeaning.dismiss();
dialogSummery.dismiss();
dialogAskLogin.dismiss();
dialogAskBuy.dismiss();
dialogLogin.dismiss();
dialogSingUp.dismiss();
progressBar.dismiss();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
return true;
}
public boolean onPrepareOptionsMenu(Menu menu) {
mMenu = menu;
if (menu != null) {
menu.clear();
}
if (markSeveral && arrayItems.size() > 0) {
getMenuInflater().inflate(R.menu.on_delete, menu);
MenuItem itemMarkAll = menu.findItem(R.id.action_markAll);
boolean isAllMarked = true;
boolean isAllUnmark = true;
notifyCheckedPositionsInt();
for (int i = 0; i < itemsToShow.size(); i++) {
if (checkedPositionsInt.get(i).equals(1)) {
isAllMarked = false;
}
if (checkedPositionsInt.get(i).equals(0)) {
isAllUnmark = false;
}
}
if ((isToMarkAll && isAllMarked) || (!isToMarkAll && isAllMarked) || (!isToMarkAll && !isAllMarked && !isAllUnmark) || isAllMarked) {
isToMarkAll = false;
} else if ((isToMarkAll && !isAllMarked) || (!isToMarkAll && !isAllMarked && isAllUnmark) || isAllUnmark) {
isToMarkAll = true;
}
if (isToMarkAll) {
itemMarkAll.setTitle(R.string.action_markAll);
} else {
itemMarkAll.setTitle(R.string.action_unmarkAll);
}
} else {
getMenuInflater().inflate(R.menu.package_a, menu);
}
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
if (searchManager != null) {
SupportMenuItem sv = (SupportMenuItem) menu.findItem(R.id.search);
SearchView searchView = (SearchView) sv.getActionView();
final SearchView searchView1 = searchView;
// Assumes current activity is the searchable activity
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(searchView1.getWindowToken(), 0);
return true;
}
@Override
public boolean onQueryTextChange(String s) {
if (s.length() == 0) {
isFromSearch = false;
listViewPosition = items.onSaveInstanceState();
refreshListViewData();
} else {
search(s);
}
return true;
}
});
SupportMenuItem sv1 = (SupportMenuItem) menu.findItem(R.id.search);
mSearchView = searchView;
sv1.setSupportOnActionExpandListener(new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem menuItem) {
mSearchView.onActionViewExpanded();
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem menuItem) {
isFromSearch = false;
listViewPosition = items.onSaveInstanceState();
refreshListViewData();
return true;
}
});
searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
int x = 0;
}
});
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
switch (item.getItemId()) {
case R.id.action_settings:
PackageActivity.this.startActivity(new Intent(PackageActivity.this, Preferences.class));
return true;
case R.id.action_close:
this.finish();
return true;
case R.id.action_summery:
dialogSummery();
break;
}
return super.onOptionsItemSelected(item);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment