mirror of
https://github.com/freeedcom/ai-codereviewer.git
synced 2025-06-30 21:04:16 +00:00
add project adins
This commit is contained in:
parent
ad06ac5505
commit
f8f85d679d
5299 changed files with 625430 additions and 0 deletions
Binary file not shown.
After Width: | Height: | Size: 3.7 KiB |
|
@ -0,0 +1,762 @@
|
|||
package com.adins.mss.base.todolist.form;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
import android.text.format.DateFormat;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.adins.mss.base.Backup;
|
||||
import com.adins.mss.base.GlobalData;
|
||||
import com.adins.mss.base.NewMainActivity;
|
||||
import com.adins.mss.base.R;
|
||||
import com.adins.mss.base.crashlytics.FireCrash;
|
||||
import com.adins.mss.base.dynamicform.SurveyHeaderBean;
|
||||
import com.adins.mss.base.timeline.TimelineManager;
|
||||
import com.adins.mss.base.todolist.ToDoList;
|
||||
import com.adins.mss.base.todolist.form.helper.JsonRequestRetrieveVerificationForm;
|
||||
import com.adins.mss.base.todolist.todayplanrepository.TodayPlanRepository;
|
||||
import com.adins.mss.base.util.GsonHelper;
|
||||
import com.adins.mss.base.util.Utility;
|
||||
import com.adins.mss.constant.Global;
|
||||
import com.adins.mss.dao.GeneralParameter;
|
||||
import com.adins.mss.dao.PlanTask;
|
||||
import com.adins.mss.dao.Scheme;
|
||||
import com.adins.mss.dao.TaskH;
|
||||
import com.adins.mss.dao.TaskHSequence;
|
||||
import com.adins.mss.dao.User;
|
||||
import com.adins.mss.foundation.db.dataaccess.GeneralParameterDataAccess;
|
||||
import com.adins.mss.foundation.db.dataaccess.PlanTaskDataAccess;
|
||||
import com.adins.mss.foundation.db.dataaccess.SchemeDataAccess;
|
||||
import com.adins.mss.foundation.db.dataaccess.TaskHDataAccess;
|
||||
import com.adins.mss.foundation.db.dataaccess.TaskHSequenceDataAccess;
|
||||
import com.adins.mss.foundation.db.dataaccess.TimelineDataAccess;
|
||||
import com.adins.mss.foundation.db.dataaccess.TimelineTypeDataAccess;
|
||||
import com.adins.mss.foundation.formatter.Tool;
|
||||
import com.adins.mss.foundation.http.HttpConnectionResult;
|
||||
import com.adins.mss.foundation.http.HttpCryptedConnection;
|
||||
import com.google.firebase.perf.FirebasePerformance;
|
||||
import com.google.firebase.perf.metrics.HttpMetric;
|
||||
|
||||
import org.acra.ACRA;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by kusnendi.muhamad on 27/07/2017.
|
||||
*/
|
||||
|
||||
public class TasklistImpl implements TasklistInterface {
|
||||
public static final int TASK_DURATION = 2 * 1000; // 2 seconds
|
||||
public static final String uuidSchemeDummy = "schemeDummy";
|
||||
|
||||
public Activity activity;
|
||||
public int position = 0;
|
||||
public String errMessage = "";
|
||||
public boolean isGetFromServer;
|
||||
private List<TaskH> listTaskH;
|
||||
private ToDoList toDoList;
|
||||
private Context context;
|
||||
private String param;
|
||||
private Scheme selectedScheme;
|
||||
private List<Scheme> listScheme;
|
||||
private boolean isPriorityOpen = false;
|
||||
private RefreshBackgroundTask backgroundTask;
|
||||
private TasklistListener listener;
|
||||
public int ptp;
|
||||
public String tenorFromValue = "";
|
||||
public String tenorToValue = "";
|
||||
public String osFromValue = "";
|
||||
public String osToValue = "";
|
||||
public String custName = "";
|
||||
|
||||
public TasklistImpl(Fragment fragment, TasklistListener listener) {
|
||||
this.activity = fragment.getActivity();
|
||||
this.context = fragment.getContext();
|
||||
this.toDoList = new ToDoList(context);
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
public int getSelectedTask() {
|
||||
return position;
|
||||
}
|
||||
|
||||
public void setSelectedTask(int taskPosition) {
|
||||
this.position = taskPosition;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPtp() {
|
||||
return ptp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPtp(int ptp) {
|
||||
this.ptp = ptp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTenorFromValue() {
|
||||
return tenorFromValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTenorFromValue(String tenorFrom) {
|
||||
this.tenorFromValue = tenorFrom;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTenorToValue() {
|
||||
return tenorToValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTenorToValue(String tenorTo) {
|
||||
this.tenorToValue = tenorTo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getOsFromValue() {
|
||||
return osFromValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOsFromValue(String osFrom) {
|
||||
this.osFromValue = osFrom;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getOsToValue() {
|
||||
return osToValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOsToValue(String osTo) {
|
||||
this.osToValue = osTo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCustName() {
|
||||
return custName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCustName(String custName) {
|
||||
this.custName = custName;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<Scheme> listScheme() {
|
||||
|
||||
Scheme schemeDummy = new Scheme();
|
||||
schemeDummy.setUuid_scheme(uuidSchemeDummy);
|
||||
schemeDummy.setScheme_description("All");
|
||||
schemeDummy.setForm_id("schemeDummy");
|
||||
listScheme.add(0, schemeDummy);
|
||||
|
||||
return listScheme;
|
||||
}
|
||||
|
||||
public void setListScheme(List<Scheme> list) {
|
||||
this.listScheme = list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskHSequence> getTaskHSequences() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskH> listTaskH() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskH> getSelectedTaskH(int position) {
|
||||
if (listTaskH != null && !listTaskH.isEmpty())
|
||||
listTaskH.clear();
|
||||
|
||||
selectedScheme = getSelectedScheme();
|
||||
|
||||
switch (position) {
|
||||
case 0:
|
||||
listTaskH = getTaskH(selectedScheme, 0);
|
||||
break;
|
||||
case 1:
|
||||
listTaskH = getTaskH(selectedScheme, 1);
|
||||
break;
|
||||
case 2:
|
||||
listTaskH = getTaskH(selectedScheme, 2);
|
||||
break;
|
||||
case 3:
|
||||
listTaskH = getTaskH(selectedScheme, 3);
|
||||
break;
|
||||
case 4:
|
||||
listTaskH = getTaskH(selectedScheme, 4);
|
||||
break;
|
||||
case 5:
|
||||
listTaskH = getTaskH(selectedScheme, 5);
|
||||
break;
|
||||
case 6:
|
||||
listTaskH = getTaskH(selectedScheme, 6);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return listTaskH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskH> getTaskH(Scheme selectedScheme, int searchType) {
|
||||
listTaskH = new ArrayList<>();
|
||||
listTaskH = toDoList.getListTask(searchType, (null == selectedScheme) ? uuidSchemeDummy : selectedScheme.getUuid_scheme(), ptp, tenorFromValue, tenorToValue, osFromValue, osToValue, custName);
|
||||
|
||||
List<TaskHSequence> taskHSequences = TaskHSequenceDataAccess.getAllOrderAsc(context);
|
||||
List<TaskH> taskHLists = new ArrayList<>();
|
||||
if (taskHSequences.isEmpty() || GlobalData.isNewTaskAvailable() || needUpdateTaskHSequence(listTaskH,taskHSequences)) {
|
||||
TaskHSequenceDataAccess.clean(context);
|
||||
TaskHSequenceDataAccess.insertAllNewTaskHSeq(context, listTaskH);
|
||||
taskHSequences = TaskHSequenceDataAccess.getAllOrderAsc(context);
|
||||
GlobalData.setNewTaskAvailable(false);
|
||||
}
|
||||
for (int i = 0; i < taskHSequences.size(); i++) {
|
||||
taskHLists.add(taskHSequences.get(i).getTaskH());
|
||||
}
|
||||
listTaskH = taskHLists;
|
||||
|
||||
//check for planned tasks
|
||||
if(Global.PLAN_TASK_ENABLED){
|
||||
List<TaskH> nonPlannedTasks = new ArrayList<>();
|
||||
String uuidUser = GlobalData.getSharedGlobalData().getUser().getUuid_user();
|
||||
List<PlanTask> planTasks = PlanTaskDataAccess.getAllPlan(context,uuidUser);
|
||||
if(!planTasks.isEmpty()){
|
||||
for(TaskH _taskH : listTaskH){
|
||||
if(_taskH.getStatus().equals(TaskHDataAccess.STATUS_SEND_SENT) ||
|
||||
_taskH.getStatus().equals(TaskHDataAccess.STATUS_SEND_UPLOADING)
|
||||
|| _taskH.getStatus().equals(TaskHDataAccess.STATUS_SEND_PENDING))
|
||||
continue;
|
||||
boolean taskHasPlanned = false;
|
||||
for (PlanTask planTask: planTasks){
|
||||
if(_taskH.getTask_id().equals(planTask.getUuid_task_h())){
|
||||
taskHasPlanned = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!taskHasPlanned){
|
||||
nonPlannedTasks.add(_taskH);
|
||||
}
|
||||
}
|
||||
//set taskh with non planned tasks
|
||||
listTaskH = nonPlannedTasks;
|
||||
}
|
||||
}
|
||||
|
||||
return listTaskH;
|
||||
}
|
||||
|
||||
private boolean needUpdateTaskHSequence(List<TaskH> taskHList, List<TaskHSequence> taskHSequences){
|
||||
boolean result = false;
|
||||
if(taskHSequences.size() != taskHList.size())
|
||||
return true;
|
||||
|
||||
//check if there is taskH created from handset
|
||||
for (TaskH taskH : taskHList) {
|
||||
if (taskH.getAssignment_date() == null) {
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!result){
|
||||
for (int i = 0; i<taskHSequences.size(); i++) {
|
||||
TaskH taskH = taskHSequences.get(i).getTaskH();
|
||||
if(taskH == null || !taskHList.get(i).getTask_id().equals(taskH.getTask_id()) || taskH.getStatus().equals(TaskHDataAccess.STATUS_SEND_SENT)
|
||||
|| taskH.getStatus().equals(TaskHDataAccess.STATUS_SEND_DELETED)){
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskH> getAllTaskH(Scheme selectedScheme) {
|
||||
listTaskH = new ArrayList<>();
|
||||
listTaskH = toDoList.getListTaskInPriority(ToDoList.SEARCH_BY_ALL, "",
|
||||
(selectedScheme == null) ? uuidSchemeDummy : selectedScheme.getUuid_scheme());
|
||||
|
||||
List<TaskHSequence> taskHSequences = TaskHSequenceDataAccess.getAllOrderAsc(context);
|
||||
List<TaskH> taskHLists = new ArrayList<>();
|
||||
TaskHSequenceDataAccess.clean(context);
|
||||
TaskHSequenceDataAccess.insertAllNewTaskHSeq(context, listTaskH);
|
||||
taskHSequences = TaskHSequenceDataAccess.getAllOrderAsc(context);
|
||||
for (int i = 0; i < taskHSequences.size(); i++) {
|
||||
taskHLists.add(taskHSequences.get(i).getTaskH());
|
||||
}
|
||||
listTaskH = taskHLists;
|
||||
return listTaskH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskH> getTaskHInHighPriority(Scheme selectedScheme) {
|
||||
listTaskH = new ArrayList<>();
|
||||
listTaskH.addAll(toDoList.getListTaskInHighPriority(selectedScheme.getUuid_scheme()));
|
||||
if (listTaskH.isEmpty()) {
|
||||
return listTaskH;
|
||||
}
|
||||
List<TaskHSequence> taskHSequences = TaskHSequenceDataAccess.getAllOrderAsc(context);
|
||||
List<TaskH> taskHLists = new ArrayList<>();
|
||||
if (taskHSequences.isEmpty()) {
|
||||
TaskHSequenceDataAccess.clean(context);
|
||||
TaskHSequenceDataAccess.insertAllNewTaskHSeq(context, listTaskH);
|
||||
TaskHSequenceDataAccess.getAllOrderAsc(context);
|
||||
} else {
|
||||
for (int i = 0; i < listTaskH.size(); i++) {
|
||||
TaskHSequence taskHSequence = TaskHSequenceDataAccess.getTaskHSeqByUUIDTaskH(context, listTaskH.get(i).getUuid_task_h());
|
||||
taskHLists.add(taskHSequence.getTaskH());
|
||||
}
|
||||
}
|
||||
listTaskH = taskHLists;
|
||||
return listTaskH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskH> getTaskHInLowPriority(Scheme selectedScheme) {
|
||||
listTaskH = new ArrayList<>();
|
||||
listTaskH.addAll(toDoList.getListTaskInLowPriority(selectedScheme.getUuid_scheme()));
|
||||
if (listTaskH.isEmpty()) {
|
||||
return listTaskH;
|
||||
}
|
||||
List<TaskHSequence> taskHSequences = TaskHSequenceDataAccess.getAllOrderAsc(context);
|
||||
List<TaskH> taskHLists = new ArrayList<>();
|
||||
if (taskHSequences.isEmpty()) {
|
||||
TaskHSequenceDataAccess.clean(context);
|
||||
TaskHSequenceDataAccess.insertAllNewTaskHSeq(context, listTaskH);
|
||||
TaskHSequenceDataAccess.getAllOrderAsc(context);
|
||||
} else {
|
||||
for (int i = 0; i < listTaskH.size(); i++) {
|
||||
TaskHSequence taskHSequence = TaskHSequenceDataAccess.getTaskHSeqByUUIDTaskH(context, listTaskH.get(i).getUuid_task_h());
|
||||
taskHLists.add(taskHSequence.getTaskH());
|
||||
}
|
||||
}
|
||||
listTaskH = taskHLists;
|
||||
return listTaskH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskH> getTaskHInNormalPriority(Scheme selectedScheme) {
|
||||
listTaskH.addAll(toDoList.getListTaskInNormalPriority(selectedScheme.getUuid_scheme()));
|
||||
if (listTaskH.isEmpty()) {
|
||||
return listTaskH;
|
||||
}
|
||||
List<TaskHSequence> taskHSequences = TaskHSequenceDataAccess.getAllOrderAsc(context);
|
||||
List<TaskH> taskHLists = new ArrayList<>();
|
||||
if (taskHSequences.isEmpty()) {
|
||||
TaskHSequenceDataAccess.clean(context);
|
||||
TaskHSequenceDataAccess.insertAllNewTaskHSeq(context, listTaskH);
|
||||
TaskHSequenceDataAccess.getAllOrderAsc(context);
|
||||
} else {
|
||||
for (int i = 0; i < listTaskH.size(); i++) {
|
||||
TaskHSequence taskHSequence = TaskHSequenceDataAccess.getTaskHSeqByUUIDTaskH(context, listTaskH.get(i).getUuid_task_h());
|
||||
taskHLists.add(taskHSequence.getTaskH());
|
||||
}
|
||||
}
|
||||
listTaskH = taskHLists;
|
||||
return listTaskH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTasklistFromServer(Context context) {
|
||||
String errMsg = "";
|
||||
if (Tool.isInternetconnected(activity)) {
|
||||
String result;
|
||||
User user = GlobalData.getSharedGlobalData().getUser();
|
||||
JsonRequestRetrieveVerificationForm requestType = new JsonRequestRetrieveVerificationForm();
|
||||
requestType.setAudit(GlobalData.getSharedGlobalData().getAuditData());
|
||||
requestType.addImeiAndroidIdToUnstructured();
|
||||
|
||||
String json = GsonHelper.toJson(requestType);
|
||||
String url = GlobalData.getSharedGlobalData().getURL_GET_TASKLIST();
|
||||
boolean encrypt = GlobalData.getSharedGlobalData().isEncrypt();
|
||||
boolean decrypt = GlobalData.getSharedGlobalData().isDecrypt();
|
||||
HttpCryptedConnection httpConn = new HttpCryptedConnection(activity, encrypt, decrypt);
|
||||
HttpConnectionResult serverResult = null;
|
||||
|
||||
//Firebase Performance Trace HTTP Request
|
||||
HttpMetric networkMetric =
|
||||
FirebasePerformance.getInstance().newHttpMetric(url, FirebasePerformance.HttpMethod.POST);
|
||||
Utility.metricStart(networkMetric, json);
|
||||
|
||||
try {
|
||||
serverResult = httpConn.requestToServer(url, json, Global.DEFAULTCONNECTIONTIMEOUT);
|
||||
Utility.metricStop(networkMetric, serverResult);
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
ACRA.getErrorReporter().putCustomData("errorRequestToServer", e.getMessage());
|
||||
ACRA.getErrorReporter().putCustomData("errorRequestToServer", DateFormat.format("yyyy.MM.dd G \'at\' HH:mm:ss z", Calendar.getInstance().getTime()).toString());
|
||||
ACRA.getErrorReporter().handleSilentException(new Exception("Exception saat request to server"));
|
||||
e.printStackTrace();
|
||||
errMsg = activity.getString(R.string.jsonParseFailed);
|
||||
return errMsg;
|
||||
}
|
||||
|
||||
|
||||
List<String> listUuidTaskH = new ArrayList<>();
|
||||
|
||||
if (serverResult != null && serverResult.isOK()) {
|
||||
try {
|
||||
result = serverResult.getResult();
|
||||
JsonResponseTaskList taskList = GsonHelper.fromJson(result, JsonResponseTaskList.class);
|
||||
if (taskList.getStatus().getCode() == 0) {
|
||||
List<TaskH> listTaskH = taskList.getListTaskList();
|
||||
if (listTaskH != null && !listTaskH.isEmpty()) {
|
||||
String uuidUser = GlobalData.getSharedGlobalData().getUser().getUuid_user();
|
||||
TaskHDataAccess.deleteTaskHByStatus(activity, uuidUser, TaskHDataAccess.STATUS_SEND_INIT);
|
||||
|
||||
for (TaskH taskH : listTaskH) {
|
||||
taskH.setUser(user);
|
||||
taskH.setIs_verification(Global.TRUE_STRING);
|
||||
|
||||
String uuid_scheme = taskH.getUuid_scheme();
|
||||
listUuidTaskH.add(taskH.getUuid_task_h());
|
||||
Scheme scheme = SchemeDataAccess.getOne(activity, uuid_scheme);
|
||||
if (scheme != null) {
|
||||
taskH.setScheme(scheme);
|
||||
TaskH h = TaskHDataAccess.getOneHeader(activity, taskH.getUuid_task_h());
|
||||
String uuid_timelineType = TimelineTypeDataAccess.getTimelineTypebyType(activity, Global.TIMELINE_TYPE_TASK).getUuid_timeline_type();
|
||||
boolean wasInTimeline = TimelineDataAccess.getOneTimelineByTaskH(activity, user.getUuid_user(), taskH.getUuid_task_h(), uuid_timelineType) != null;
|
||||
if (h != null && h.getStatus() != null) {
|
||||
if (!ToDoList.isOldTask(h)) {
|
||||
taskH.setStatus(TaskHDataAccess.STATUS_SEND_INIT);
|
||||
TaskHDataAccess.addOrReplace(activity, taskH);
|
||||
if (!wasInTimeline)
|
||||
TimelineManager.insertTimeline(activity, taskH);
|
||||
} else {
|
||||
if (taskH.getPts_date() != null) {
|
||||
h.setPts_date(taskH.getPts_date());
|
||||
TaskHDataAccess.addOrReplace(activity, h);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
taskH.setStatus(TaskHDataAccess.STATUS_SEND_INIT);
|
||||
TaskHDataAccess.addOrReplace(activity, taskH);
|
||||
if (!wasInTimeline)
|
||||
TimelineManager.insertTimeline(activity, taskH);
|
||||
}
|
||||
}
|
||||
}
|
||||
List<TaskH> taskHs = TaskHDataAccess.getAllTaskByStatus(activity, GlobalData.getSharedGlobalData().getUser().getUuid_user(), TaskHDataAccess.STATUS_SEND_DOWNLOAD);
|
||||
taskHs.addAll(TaskHDataAccess.getAllTaskByStatus(activity, GlobalData.getSharedGlobalData().getUser().getUuid_user(), TaskHDataAccess.STATUS_SEND_SAVEDRAFT));
|
||||
|
||||
List<TaskH> needRemoveFromBackup = new ArrayList<>();
|
||||
for (TaskH h : taskHs) {
|
||||
String uuid_task_h = h.getUuid_task_h();
|
||||
boolean isSame = false;
|
||||
for (String uuid_from_server : listUuidTaskH) {
|
||||
if (uuid_task_h.equals(uuid_from_server)) {
|
||||
isSame = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!isSame) {
|
||||
TaskHDataAccess.deleteWithRelation(activity, h);
|
||||
if(h.getStatus().equals(TaskHDataAccess.STATUS_SEND_SAVEDRAFT)){
|
||||
needRemoveFromBackup.add(h);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Backup backup = new Backup(activity);
|
||||
backup.removeTask(needRemoveFromBackup);
|
||||
|
||||
if (Global.PLAN_TASK_ENABLED) {
|
||||
TodayPlanRepository todayPlanRepository = GlobalData.getSharedGlobalData().getTodayPlanRepo();
|
||||
todayPlanRepository.generatePlansFromTaskList(listTaskH);
|
||||
}
|
||||
}
|
||||
errMsg = "noError";
|
||||
return errMsg;
|
||||
} else {
|
||||
errMsg = activity.getString(R.string.jsonParseFailed);
|
||||
return errMsg;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
ACRA.getErrorReporter().putCustomData("errorGetMessageFromServer", e.getMessage());
|
||||
ACRA.getErrorReporter().putCustomData("errorGetMessageFromServer", DateFormat.format("yyyy.MM.dd G \'at\' HH:mm:ss z", Calendar.getInstance().getTime()).toString());
|
||||
ACRA.getErrorReporter().handleSilentException(new Exception("Exception saat convert json dari Server"));
|
||||
errMsg = activity.getString(R.string.jsonParseFailed);
|
||||
return errMsg;
|
||||
}
|
||||
}else {
|
||||
errMsg = activity.getString(R.string.jsonParseFailed);
|
||||
return errMsg;
|
||||
}
|
||||
} else {
|
||||
return errMsg;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ToDoList getTodoList() {
|
||||
return new ToDoList(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initiateRefresh(String type) {
|
||||
cancelRefreshTask();
|
||||
backgroundTask = new RefreshBackgroundTask(type);
|
||||
backgroundTask.execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initiateRefresh(boolean getDataFromServer) {
|
||||
cancelRefreshTask();
|
||||
backgroundTask = new RefreshBackgroundTask(getDataFromServer);
|
||||
backgroundTask.execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelRefreshTask() {
|
||||
if (backgroundTask != null) {
|
||||
backgroundTask.cancel(true);
|
||||
backgroundTask = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AsyncTask<Void, Void, List<TaskH>> refreshBackgroundTask(boolean isFromServer) {
|
||||
this.isGetFromServer = isFromServer;
|
||||
return new AsyncTask<Void, Void, List<TaskH>>() {
|
||||
@Override
|
||||
protected void onCancelled() {
|
||||
super.onCancelled();
|
||||
if (listener != null) listener.onRefreshBackgroundCancelled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<TaskH> doInBackground(Void... params) {
|
||||
try {
|
||||
if (isGetFromServer)
|
||||
errMessage = getTasklistFromServer(context);
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
ACRA.getErrorReporter().putCustomData("errorGetErrorMessage", e.getMessage());
|
||||
ACRA.getErrorReporter().putCustomData("errorGetErrorMessage", DateFormat.format("yyyy.MM.dd G \'at\' HH:mm:ss z", Calendar.getInstance().getTime()).toString());
|
||||
ACRA.getErrorReporter().handleSilentException(new Exception("Exception saat convert taskList in error message"));
|
||||
e.printStackTrace();
|
||||
}
|
||||
List<TaskH> listTaskH = new ArrayList<>();
|
||||
listTaskH = getSelectedTaskH(getSelectedTask());
|
||||
// Return a new random list of cheeses
|
||||
return listTaskH;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(List<TaskH> result) {
|
||||
super.onPostExecute(result);
|
||||
if (!errMessage.isEmpty() && !errMessage.equals("noError")) {
|
||||
Toast.makeText(activity, errMessage, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
try {
|
||||
NewMainActivity.setCounter();
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
ACRA.getErrorReporter().putCustomData("ErrorMainMenuActivity", e.getMessage());
|
||||
ACRA.getErrorReporter().putCustomData("ErrorMainMenuActivity", DateFormat.format("yyyy.MM.dd G \'at\' HH:mm:ss z", Calendar.getInstance().getTime()).toString());
|
||||
ACRA.getErrorReporter().handleSilentException(new Exception("Exception saat set Drawer Counter"));
|
||||
}
|
||||
|
||||
if (listener != null) listener.onRefreshBackgroundComplete(result);
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskH> refreshBackgroundTask(boolean isGetFromServer, int pos, SwipeRefreshLayout swipeRefreshLayout) {
|
||||
|
||||
try {
|
||||
this.isGetFromServer = isGetFromServer;
|
||||
this.position = pos;
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
|
||||
}
|
||||
|
||||
new AsyncTask<Void, Void, List<TaskH>>() {
|
||||
@Override
|
||||
protected List<TaskH> doInBackground(Void... args) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(List<TaskH> result) {
|
||||
//EMPTY
|
||||
}
|
||||
}.execute();
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getParam() {
|
||||
try {
|
||||
|
||||
GeneralParameter layoutSetting;
|
||||
if (Global.APPLICATION_SURVEY.equalsIgnoreCase(GlobalData.getSharedGlobalData().getApplication())) {
|
||||
layoutSetting = GeneralParameterDataAccess.getOne(activity, GlobalData.getSharedGlobalData().getUser().getUuid_user(), Global.GS_TASK_LAYOUT_MS);
|
||||
param = layoutSetting == null ? "1" : layoutSetting.getGs_value();
|
||||
} else if (Global.APPLICATION_COLLECTION.equalsIgnoreCase(GlobalData.getSharedGlobalData().getApplication())) {
|
||||
layoutSetting = GeneralParameterDataAccess.getOne(activity, GlobalData.getSharedGlobalData().getUser().getUuid_user(), Global.GS_TASK_LAYOUT_MC);
|
||||
param = layoutSetting == null ? "1" : layoutSetting.getGs_value();
|
||||
} else {
|
||||
layoutSetting = GeneralParameterDataAccess.getOne(activity, GlobalData.getSharedGlobalData().getUser().getUuid_user(), Global.GS_TASK_LAYOUT_MO);
|
||||
}
|
||||
|
||||
param = layoutSetting == null ? "1" : layoutSetting.getGs_value();
|
||||
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
e.printStackTrace();
|
||||
ACRA.getErrorReporter().putCustomData("ErrorPriorityTabFragment", e.getMessage());
|
||||
ACRA.getErrorReporter().handleSilentException(new Exception("Error get param Priority Tab Fragment" + e.getMessage()));
|
||||
}
|
||||
|
||||
if (null == param) {
|
||||
param = "1";
|
||||
}
|
||||
|
||||
return param;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Scheme getSelectedScheme() {
|
||||
return selectedScheme;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelectedScheme(Scheme scheme) {
|
||||
this.selectedScheme = scheme;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PriorityHandler getPriorityHandler(boolean isPriorityOpen) {
|
||||
return new PriorityHandler(isPriorityOpen);
|
||||
}
|
||||
|
||||
private class RefreshBackgroundTask extends AsyncTask<Void, Void, List<TaskH>> {
|
||||
private String tabs = "priority";
|
||||
|
||||
//Default constructor
|
||||
public RefreshBackgroundTask(String tabs) {
|
||||
this.tabs = tabs;
|
||||
}
|
||||
|
||||
public RefreshBackgroundTask(boolean isRequestToServer) {
|
||||
isGetFromServer = isRequestToServer;
|
||||
}
|
||||
|
||||
public RefreshBackgroundTask(boolean isRequestToServer, int pos) {
|
||||
isGetFromServer = isRequestToServer;
|
||||
position = pos;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCancelled() {
|
||||
super.onCancelled();
|
||||
listener.onRefreshBackgroundCancelled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<TaskH> doInBackground(Void... params) {
|
||||
// Sleep for a small amount of time to simulate a background-task
|
||||
try {
|
||||
Thread.sleep(TASK_DURATION);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
try {
|
||||
if (isGetFromServer && !tabs.equals("status"))
|
||||
errMessage = getTasklistFromServer(context);
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
ACRA.getErrorReporter().putCustomData("errorGetErrorMessage", e.getMessage());
|
||||
ACRA.getErrorReporter().putCustomData("errorGetErrorMessage", DateFormat.format("yyyy.MM.dd G \'at\' HH:mm:ss z", Calendar.getInstance().getTime()).toString());
|
||||
ACRA.getErrorReporter().handleSilentException(new Exception("Exception saat convert taskList in error message"));
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
List<TaskH> listTaskH = new ArrayList<>();
|
||||
switch (tabs) {
|
||||
case "status":
|
||||
listTaskH.addAll(toDoList.getListTaskInStatus(ToDoList.SEARCH_BY_ALL, ""));
|
||||
ToDoList.setListOfSurveyStatus(null);
|
||||
List<SurveyHeaderBean> list = new ArrayList<>();
|
||||
for (TaskH h : listTaskH) {
|
||||
list.add(new SurveyHeaderBean(h));
|
||||
}
|
||||
ToDoList.setListOfSurveyStatus(list);
|
||||
break;
|
||||
|
||||
default:
|
||||
listTaskH = getSelectedTaskH(getSelectedTask());
|
||||
break;
|
||||
}
|
||||
|
||||
// Return a new random list of cheeses
|
||||
return listTaskH;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(List<TaskH> result) {
|
||||
super.onPostExecute(result);
|
||||
if (!errMessage.isEmpty() && !errMessage.equals("noError")) {
|
||||
Toast.makeText(activity, errMessage, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
try {
|
||||
NewMainActivity.setCounter();
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
ACRA.getErrorReporter().putCustomData("ErrorMainMenuActivity", e.getMessage());
|
||||
ACRA.getErrorReporter().putCustomData("ErrorMainMenuActivity", DateFormat.format("yyyy.MM.dd G \'at\' HH:mm:ss z", Calendar.getInstance().getTime()).toString());
|
||||
ACRA.getErrorReporter().handleSilentException(new Exception("Exception saat set Drawer Counter"));
|
||||
}
|
||||
|
||||
listener.onRefreshBackgroundComplete(result);
|
||||
}
|
||||
}
|
||||
|
||||
public class PriorityHandler extends Handler {
|
||||
|
||||
public PriorityHandler(boolean isPriority) {
|
||||
isPriorityOpen = isPriority;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
try {
|
||||
if (isPriorityOpen) {
|
||||
initiateRefresh(false);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
ACRA.getErrorReporter().putCustomData("errorRefresh", e.getMessage());
|
||||
ACRA.getErrorReporter().putCustomData("errorRefresh", DateFormat.format("yyyy.MM.dd G \'at\' HH:mm:ss z", Calendar.getInstance().getTime()).toString());
|
||||
ACRA.getErrorReporter().handleSilentException(new Exception("Exception saat initiate Refresh"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,111 @@
|
|||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:background="@drawable/dialog2_bg">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/settings"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="50dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:text="@string/title_mn_changepassword"
|
||||
android:textColor="@color/gradient_end"
|
||||
android:gravity="center"
|
||||
android:textStyle="bold"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_margin="20dp">
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:passwordToggleEnabled="true"
|
||||
android:visibility="gone">
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/currentPassword"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="45dp"
|
||||
android:hint="@string/lblCurrentPassword"
|
||||
android:maxLines="1"
|
||||
android:inputType="textPassword"
|
||||
android:layout_gravity="center"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:padding="10dp"
|
||||
android:layout_marginTop="5dp"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
<!--
|
||||
<EditText android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/currentPassword"
|
||||
android:hint="@string/lblCurrentPassword"
|
||||
android:inputType="textPassword"
|
||||
android:padding="10dp"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"/>
|
||||
-->
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:passwordToggleEnabled="true">
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/newPassword"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="45dp"
|
||||
android:hint="@string/lblNewPassword"
|
||||
android:maxLines="1"
|
||||
android:inputType="textPassword"
|
||||
android:layout_gravity="center"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:padding="10dp"
|
||||
android:layout_marginTop="5dp"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:passwordToggleEnabled="true">
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/retypePassword"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="45dp"
|
||||
android:hint="@string/hintRetypePassword"
|
||||
android:maxLines="1"
|
||||
android:inputType="textPassword"
|
||||
android:layout_gravity="center"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:padding="10dp"
|
||||
android:layout_marginTop="5dp"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
<!--<EditText android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/newPassword"
|
||||
android:hint="@string/lblNewPassword"
|
||||
android:inputType="textPassword"
|
||||
android:padding="10dp"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"/>
|
||||
<EditText android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/retypePassword"
|
||||
android:hint="@string/hintRetypePassword"
|
||||
android:inputType="textPassword"
|
||||
android:padding="10dp"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"/>-->
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnSave"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="45dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:background="@drawable/button_background"
|
||||
android:text="@string/btnSave"
|
||||
android:textColor="@color/fontColorWhite"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"/>
|
||||
</LinearLayout>
|
|
@ -0,0 +1,99 @@
|
|||
package com.adins.mss.odr.accounts.adapter;
|
||||
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.adins.mss.dao.Account;
|
||||
import com.adins.mss.dao.Contact;
|
||||
import com.adins.mss.dao.Product;
|
||||
import com.adins.mss.odr.R;
|
||||
import com.adins.mss.odr.accounts.LoadContact;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by olivia.dg on 11/17/2017.
|
||||
*/
|
||||
|
||||
public class ContactListAdapter extends RecyclerView.Adapter<ContactListAdapter.ContactListViewHolder> {
|
||||
|
||||
private static FragmentActivity activity;
|
||||
private List<Product> productList;
|
||||
private Account account;
|
||||
|
||||
public ContactListAdapter(FragmentActivity activity, Account account, List<Product> productList) {
|
||||
this.activity = activity;
|
||||
this.account = account;
|
||||
this.productList = productList;
|
||||
}
|
||||
|
||||
public class ContactListViewHolder extends RecyclerView.ViewHolder {
|
||||
public final View mView;
|
||||
public final TextView txtProduct;
|
||||
|
||||
public ContactListViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
mView = itemView;
|
||||
txtProduct = (TextView) itemView.findViewById(R.id.txtProduct);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ContactListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.productc_contact_list_item, parent, false);
|
||||
ContactListViewHolder viewHolder = new ContactListViewHolder(v);
|
||||
return viewHolder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(ContactListViewHolder holder, final int position) {
|
||||
holder.txtProduct.setText(productList.get(position).getProduct_name());
|
||||
holder.mView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// showDetail(activity, productList.get(position));
|
||||
LoadContact task = new LoadContact(activity, account, productList.get(position).getUuid_product());
|
||||
task.execute();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
if (productList == null || productList.size() == 0)
|
||||
return 0;
|
||||
else
|
||||
return productList.size();
|
||||
}
|
||||
|
||||
private void showDetail(FragmentActivity activity, Contact contact) {
|
||||
final AlertDialog dialog = new AlertDialog.Builder(activity, R.style.Dialog_NoTitle)
|
||||
.setView(R.layout.dialog_contact_detail)
|
||||
.create();
|
||||
dialog.setCancelable(true);
|
||||
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();
|
||||
wmlp.gravity = Gravity.BOTTOM;
|
||||
wmlp.windowAnimations = R.style.DialogAnimation;
|
||||
dialog.show();
|
||||
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
|
||||
TextView contactName = (TextView) dialog.findViewById(R.id.txtName);
|
||||
TextView contactDept = (TextView) dialog.findViewById(R.id.txtDepartment);
|
||||
TextView contactPhone = (TextView) dialog.findViewById(R.id.txtPhone);
|
||||
TextView contactEmail = (TextView) dialog.findViewById(R.id.txtEmail);
|
||||
|
||||
contactName.setText(contact.getContact_name());
|
||||
contactDept.setText(contact.getContact_dept());
|
||||
contactPhone.setText(contact.getContact_phone());
|
||||
contactEmail.setText(contact.getContact_email());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,109 @@
|
|||
package com.adins.mss.odr;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Typeface;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseExpandableListAdapter;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by winy.firdasari on 20/01/2015.
|
||||
*/
|
||||
public class ExpandableListAdapter extends BaseExpandableListAdapter {
|
||||
|
||||
private Context _context;
|
||||
private List<String> _listDataHeader; // header titles
|
||||
// child data in format of header title, child title
|
||||
private HashMap<String, List<String>> _listDataChild;
|
||||
|
||||
public ExpandableListAdapter(Context context, List<String> listDataHeader,
|
||||
HashMap<String, List<String>> listChildData) {
|
||||
this._context = context;
|
||||
this._listDataHeader = listDataHeader;
|
||||
this._listDataChild = listChildData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getChild(int groupPosition, int childPosititon) {
|
||||
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
|
||||
.get(childPosititon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getChildId(int groupPosition, int childPosition) {
|
||||
return childPosition;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getChildView(int groupPosition, final int childPosition,
|
||||
boolean isLastChild, View convertView, ViewGroup parent) {
|
||||
|
||||
final String childText = (String) getChild(groupPosition, childPosition);
|
||||
|
||||
if (convertView == null) {
|
||||
LayoutInflater infalInflater = (LayoutInflater) this._context
|
||||
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
convertView = infalInflater.inflate(R.layout.result_order_list_item, null);
|
||||
}
|
||||
|
||||
TextView txtListChild = (TextView) convertView
|
||||
.findViewById(R.id.txtStatusOrder);
|
||||
|
||||
txtListChild.setText(childText);
|
||||
return convertView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getChildrenCount(int groupPosition) {
|
||||
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
|
||||
.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getGroup(int groupPosition) {
|
||||
return this._listDataHeader.get(groupPosition);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getGroupCount() {
|
||||
return this._listDataHeader.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getGroupId(int groupPosition) {
|
||||
return groupPosition;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getGroupView(int groupPosition, boolean isExpanded,
|
||||
View convertView, ViewGroup parent) {
|
||||
String headerTitle = (String) getGroup(groupPosition);
|
||||
if (convertView == null) {
|
||||
LayoutInflater infalInflater = (LayoutInflater) this._context
|
||||
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
convertView = infalInflater.inflate(R.layout.result_order_list, null);
|
||||
}
|
||||
|
||||
TextView lblListHeader = (TextView) convertView
|
||||
.findViewById(R.id.txtOrderList);
|
||||
lblListHeader.setTypeface(null, Typeface.BOLD);
|
||||
lblListHeader.setText(headerTitle);
|
||||
|
||||
return convertView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasStableIds() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isChildSelectable(int groupPosition, int childPosition) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,112 @@
|
|||
package org.acra;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.adins.mss.base.GlobalData;
|
||||
import com.adins.mss.base.util.LocaleHelper;
|
||||
|
||||
import org.acra.collector.CrashReportData;
|
||||
import org.acra.util.ToastSender;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Locale;
|
||||
|
||||
import static org.acra.ACRA.LOG_TAG;
|
||||
import static org.acra.ReportField.USER_COMMENT;
|
||||
import static org.acra.ReportField.USER_EMAIL;
|
||||
|
||||
/**
|
||||
* Activity which implements the base functionality for a CrashReportDialog
|
||||
* Activities which extend from this class can override onCreate() to create a custom view,
|
||||
* but they must call super.onCreate() at the beginning of the method.
|
||||
* <p>
|
||||
* The methods sendCrash(comment, usrEmail) and cancelReports() can be used to send or cancel
|
||||
* sending of reports respectively.
|
||||
* <p>
|
||||
* This Activity will be instantiated with 2 arguments:
|
||||
* <ol>
|
||||
* <li>{@link ACRAConstants#EXTRA_REPORT_FILE_NAME}</li>
|
||||
* <li>{@link ACRAConstants#EXTRA_REPORT_EXCEPTION}</li>
|
||||
* </ol>
|
||||
*/
|
||||
public abstract class BaseCrashReportDialog extends Activity {
|
||||
|
||||
private String mReportFileName;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
ACRA.log.d(LOG_TAG, "CrashReportDialog extras=" + getIntent().getExtras());
|
||||
|
||||
final boolean forceCancel = getIntent().getBooleanExtra(ACRAConstants.EXTRA_FORCE_CANCEL, false);
|
||||
if (forceCancel) {
|
||||
ACRA.log.d(LOG_TAG, "Forced reports deletion.");
|
||||
cancelReports();
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
mReportFileName = getIntent().getStringExtra(ACRAConstants.EXTRA_REPORT_FILE_NAME);
|
||||
ACRA.log.d(LOG_TAG, "Opening CrashReportDialog for " + mReportFileName);
|
||||
if (mReportFileName == null) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void attachBaseContext(Context newBase) {
|
||||
Context context = newBase;
|
||||
Locale locale;
|
||||
try{
|
||||
locale = new Locale(GlobalData.getSharedGlobalData().getLocale());
|
||||
context = LocaleHelper.wrap(newBase, locale);
|
||||
} catch (Exception e) {
|
||||
locale = new Locale(LocaleHelper.ENGLSIH);
|
||||
context = LocaleHelper.wrap(newBase, locale);
|
||||
} finally {
|
||||
super.attachBaseContext(context);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Cancel any pending crash reports
|
||||
*/
|
||||
protected void cancelReports() {
|
||||
ACRA.getErrorReporter().deletePendingNonApprovedReports(false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Send crash report given user's comment and email address. If none should be empty strings
|
||||
*
|
||||
* @param comment Comment (may be null) provided by the user.
|
||||
* @param userEmail Email address (may be null) provided by the client.
|
||||
*/
|
||||
protected void sendCrash(String comment, String userEmail) {
|
||||
final CrashReportPersister persister = new CrashReportPersister(getApplicationContext());
|
||||
try {
|
||||
ACRA.log.d(LOG_TAG, "Add user comment to " + mReportFileName);
|
||||
final CrashReportData crashData = persister.load(mReportFileName);
|
||||
crashData.put(USER_COMMENT, comment == null ? "" : comment);
|
||||
crashData.put(USER_EMAIL, userEmail == null ? "" : userEmail);
|
||||
persister.store(crashData, mReportFileName);
|
||||
} catch (IOException e) {
|
||||
ACRA.log.w(LOG_TAG, "User comment not added: ", e);
|
||||
}
|
||||
|
||||
// Start the report sending task
|
||||
ACRA.log.v(LOG_TAG, "About to start SenderWorker from CrashReportDialog");
|
||||
ACRA.getErrorReporter().startSendingReports(false, true);
|
||||
|
||||
// Optional Toast to thank the user
|
||||
final int toastId = ACRA.getConfig().resDialogOkToast();
|
||||
if (toastId != 0) {
|
||||
ToastSender.sendToast(getApplicationContext(), toastId, Toast.LENGTH_LONG);
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load diff
Binary file not shown.
After Width: | Height: | Size: 3.9 KiB |
|
@ -0,0 +1,29 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/bgColor">
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?android:attr/actionBarSize"
|
||||
android:background="@drawable/header"
|
||||
app:titleTextAppearance="?android:attr/textAppearanceSmall"
|
||||
android:titleTextColor="@color/fontColorWhite"
|
||||
app:popupTheme="@style/ThemeOverlay.AppCompat.ActionBar"
|
||||
android:fitsSystemWindows="true"/>
|
||||
<RelativeLayout
|
||||
android:id="@+id/content_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/accountList"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/bgColorWhite">
|
||||
</androidx.recyclerview.widget.RecyclerView>
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
Loading…
Add table
Add a link
Reference in a new issue