package com.erakk.lnreader.UI.activity;
import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.erakk.lnreader.Constants;
import com.erakk.lnreader.LNReaderApplication;
import com.erakk.lnreader.R;
import com.erakk.lnreader.UIHelper;
import com.erakk.lnreader.adapter.FindMissingAdapter;
import com.erakk.lnreader.callback.ICallbackEventData;
import com.erakk.lnreader.callback.IExtendedCallbackNotifier;
import com.erakk.lnreader.dao.NovelsDao;
import com.erakk.lnreader.model.FindMissingModel;
import com.erakk.lnreader.task.DeleteMissingTask;
import java.util.ArrayList;
import java.util.List;
public class FindMissingActivity extends BaseActivity implements IExtendedCallbackNotifier<Integer> {
private static final String TAG = FindMissingActivity.class.toString();
private ArrayList<FindMissingModel> models = null;
private FindMissingAdapter adapter = null;
private String mode;
private boolean dowloadSelected = false;
private boolean elseSelected = true;
private DeleteMissingTask task;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find_missing);
mode = getIntent().getStringExtra(Constants.EXTRA_FIND_MISSING_MODE);
setItems(mode);
setTitle("Maintenance: " + getString(getResources().getIdentifier(mode, "string", getPackageName())));
checkWarning();
}
private void checkWarning() {
if (UIHelper.getShowMaintWarning(this)) {
UIHelper.createYesNoDialog(
this
, getResources().getString(R.string.maint_warning_text)
, getResources().getString(R.string.maint_warning_title)
, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_NEGATIVE) {
finish();
}
}
}).show();
}
}
private void setItems(String extra) {
int resourceId = R.layout.item_find_missing;
models = NovelsDao.getInstance().getMissingItems(extra);
adapter = new FindMissingAdapter(this, resourceId, models, extra, dowloadSelected, elseSelected);
getListView().setAdapter(adapter);
}
@Override
protected void onRestart() {
super.onRestart();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_find_missing, menu);
return true;
}
@SuppressLint("NewApi")
private void executeDeleteTask(List<FindMissingModel> items, String mode) {
task = new DeleteMissingTask(items, mode, this, TAG);
String key = TAG + ":" + mode;
boolean isAdded = LNReaderApplication.getInstance().addTask(key, task);
if (isAdded) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
else
task.execute();
} else {
Log.i(TAG, "Continue delete task: " + key);
DeleteMissingTask tempTask = (DeleteMissingTask) LNReaderApplication.getInstance().getTask(key);
if (tempTask != null) {
task = tempTask;
task.setCallback(this, TAG);
}
toggleProgressBar(true);
}
}
public void toggleProgressBar(boolean show) {
TextView loadingText = (TextView) findViewById(R.id.emptyList);
if(loadingText != null) {
if (show) {
loadingText.setVisibility(TextView.VISIBLE);
getListView().setVisibility(ListView.GONE);
} else {
loadingText.setVisibility(TextView.GONE);
getListView().setVisibility(ListView.VISIBLE);
}
}
}
private ListView getListView() {
return (ListView) findViewById(android.R.id.list);
}
@Override
public void onProgressCallback(ICallbackEventData message) {
toggleProgressBar(true);
TextView loadingText = (TextView) findViewById(R.id.emptyList);
if(loadingText != null) {
loadingText.setText(message.getMessage());
}
}
@Override
public void onCompleteCallback(ICallbackEventData message, Integer result) {
Toast.makeText(this, getString(R.string.toast_show_deleted_count, result), Toast.LENGTH_SHORT).show();
toggleProgressBar(false);
setItems(mode);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_show_downloaded:
if (adapter != null) {
item.setChecked(!item.isChecked());
adapter.filterDownloaded(item.isChecked());
dowloadSelected = item.isChecked();
}
return true;
case R.id.menu_show_everything_else:
if (adapter != null) {
item.setChecked(!item.isChecked());
adapter.filterEverythingElse(item.isChecked());
elseSelected = item.isChecked();
}
return true;
case R.id.menu_clear_all:
if (task != null && task.getStatus() != AsyncTask.Status.FINISHED) {
Toast.makeText(this, getString(R.string.task_delete_running), Toast.LENGTH_SHORT).show();
return true;
}
if (adapter != null) {
List<FindMissingModel> items = adapter.getItems();
if (items != null) {
executeDeleteTask(items, mode);
}
}
return true;
case R.id.menu_clear_selected:
if (task != null && task.getStatus() != AsyncTask.Status.FINISHED) {
Toast.makeText(this, getString(R.string.task_delete_running), Toast.LENGTH_SHORT).show();
return true;
}
if (adapter != null) {
List<FindMissingModel> items = adapter.getItems();
if (items != null) {
List<FindMissingModel> selectedItems = new ArrayList<FindMissingModel>();
for (FindMissingModel missing : items) {
if (missing.isSelected()) {
selectedItems.add(missing);
}
}
executeDeleteTask(selectedItems, mode);
}
}
return true;
case android.R.id.home:
super.onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean downloadListSetup(String taskId, String message, int setupType, boolean hasError) {
return false;
}
}