package com.door43.translationstudio.newui.draft;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.MenuItem;
import android.view.View;
import com.door43.translationstudio.AppContext;
import com.door43.translationstudio.R;
import com.door43.translationstudio.core.Library;
import com.door43.translationstudio.core.SourceTranslation;
import com.door43.translationstudio.core.TargetTranslation;
import com.door43.translationstudio.core.Translator;
import com.door43.translationstudio.dialogs.CustomAlertDialog;
import com.door43.translationstudio.newui.BaseActivity;
import com.door43.translationstudio.tasks.ImportDraftTask;
import com.door43.util.tasks.GenericTaskWatcher;
import com.door43.util.tasks.ManagedTask;
import com.door43.util.tasks.TaskManager;
import java.security.InvalidParameterException;
import java.util.ArrayList;
import java.util.List;
public class DraftActivity extends BaseActivity implements GenericTaskWatcher.OnFinishedListener {
public static final String TAG = "DraftActivity";
public static final String EXTRA_TARGET_TRANSLATION_ID = "target_translation_id";
private TargetTranslation mTargetTranslation;
private Translator mTranslator;
private Library mLibrary;
private RecyclerView mRecylerView;
private LinearLayoutManager mLayoutManager;
private DraftAdapter mAdapter;
private GenericTaskWatcher taskWatcher;
private SourceTranslation mDraftTranslation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_draft_preview);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mTranslator = AppContext.getTranslator();
mLibrary = AppContext.getLibrary();
// validate parameters
List<SourceTranslation> draftTranslations = new ArrayList<>();
Bundle extras = getIntent().getExtras();
if(extras != null) {
String targetTranslationId = extras.getString(EXTRA_TARGET_TRANSLATION_ID, null);
mTargetTranslation = mTranslator.getTargetTranslation(targetTranslationId);
if(mTargetTranslation != null) {
draftTranslations = mLibrary.getDraftTranslations(mTargetTranslation.getProjectId(), mTargetTranslation.getTargetLanguageId());
} else {
throw new InvalidParameterException("a valid target translation id is required");
}
} else {
throw new InvalidParameterException("This activity expects some arguments");
}
if(draftTranslations.size() == 0) {
finish();
return;
}
// TODO: 1/20/2016 eventually users will be forced to define which resource they are translating into as well. When that happens we'll know which draft to choose
mDraftTranslation = draftTranslations.get(0);
mRecylerView = (RecyclerView)findViewById(R.id.recycler_view);
mLayoutManager = new LinearLayoutManager(this);
mRecylerView.setLayoutManager(mLayoutManager);
mRecylerView.setItemAnimator(new DefaultItemAnimator());
mAdapter = new DraftAdapter(this, mDraftTranslation);
mRecylerView.setAdapter(mAdapter);
taskWatcher = new GenericTaskWatcher(this, R.string.loading);
taskWatcher.setOnFinishedListener(this);
FloatingActionButton fab = (FloatingActionButton)findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CustomAlertDialog.Create(DraftActivity.this)
.setTitle(R.string.import_draft)
.setMessage(R.string.import_draft_confirmation)
.setNegativeButton(R.string.menu_cancel, null)
.setPositiveButton(R.string.label_import, new View.OnClickListener() {
@Override
public void onClick(View v) {
// // TODO: 1/20/2016 use the draft from the selected tab
ImportDraftTask task = new ImportDraftTask(mDraftTranslation);
taskWatcher.watch(task);
TaskManager.addTask(task, ImportDraftTask.TASK_ID);
}
})
.show("confirm_draft_import");
}
});
// re-attach to tasks
ManagedTask task = TaskManager.getTask(ImportDraftTask.TASK_ID);
if(task != null) {
taskWatcher.watch(task);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onFinished(ManagedTask task) {
taskWatcher.stop();
TaskManager.clearTask(task);
TargetTranslation targetTranslation = ((ImportDraftTask) task).getTargetTranslation();
if(targetTranslation != null) {
finish();
} else {
CustomAlertDialog.Create(this)
.setTitle(R.string.error)
.setMessage(R.string.translation_import_failed)
.setNeutralButton(R.string.dismiss, null)
.show("draft-import-failed");
}
}
@Override
public void onDestroy() {
taskWatcher.stop();
super.onDestroy();
}
}