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
|
@ -0,0 +1,107 @@
|
|||
package com.adins.mss.foundation.questiongenerator.form;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.adins.mss.constant.Global;
|
||||
import com.adins.mss.foundation.questiongenerator.OptionAnswerBean;
|
||||
import com.adins.mss.foundation.questiongenerator.QuestionBean;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class MultiOptionQuestionViewAbstract extends QuestionView {
|
||||
|
||||
protected List<OptionAnswerBean> options;
|
||||
protected QuestionBean bean;
|
||||
|
||||
public MultiOptionQuestionViewAbstract(Context context, QuestionBean bean) {
|
||||
super(context, bean);
|
||||
this.bean = bean;
|
||||
}
|
||||
|
||||
public abstract void setOptions(Context context, List<OptionAnswerBean> options);
|
||||
|
||||
//commented, use saveAnswerToBean instead
|
||||
public abstract void saveSelectedOptionToBean();
|
||||
|
||||
public abstract void selectOption(int id, String desc);
|
||||
|
||||
|
||||
public void selectOption(String lovCode, String description) {
|
||||
int indexOfOption = -1;
|
||||
int i = 0;
|
||||
for (OptionAnswerBean optAnsBean : options) {
|
||||
if (lovCode.equals(optAnsBean.getCode())) {
|
||||
indexOfOption = i;
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
if (indexOfOption > -1) selectOption(i, description);
|
||||
}
|
||||
|
||||
public OptionAnswerBean getSelectedOptionAnswer() {
|
||||
//Change to Array
|
||||
// return this.questionBean.getSelectedOptionAnswer();
|
||||
OptionAnswerBean result = null;
|
||||
List<OptionAnswerBean> selectedOptions = this.questionBean.getSelectedOptionAnswers();
|
||||
if (selectedOptions != null && selectedOptions.size() > 0) {
|
||||
result = this.questionBean.getSelectedOptionAnswers().get(0);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setSelectedOptionAnswer(OptionAnswerBean option) {
|
||||
|
||||
List<OptionAnswerBean> selectedOptionAnswers = new ArrayList<OptionAnswerBean>();
|
||||
if (option != null) {
|
||||
selectedOptionAnswers.add(option);
|
||||
questionBean.setLovCode(option.getCode());
|
||||
questionBean.setLookupId(option.getUuid_lookup());
|
||||
} else {
|
||||
questionBean.setLovCode(null);
|
||||
questionBean.setLookupId(null);
|
||||
}
|
||||
setSelectedOptionAnswers(selectedOptionAnswers);
|
||||
}
|
||||
|
||||
public List<OptionAnswerBean> getSelectedOptionAnswers() {
|
||||
return this.questionBean.getSelectedOptionAnswers();
|
||||
}
|
||||
|
||||
public void setSelectedOptionAnswers(List<OptionAnswerBean> options) {
|
||||
|
||||
//set OptionAnswerBean as selected in case old logic still exist
|
||||
for (OptionAnswerBean option : options) {
|
||||
if (option != null) option.setSelected(true);
|
||||
}
|
||||
|
||||
this.questionBean.setSelectedOptionAnswers(options);
|
||||
//we don't set the lovCode, because there are multiple of them
|
||||
}
|
||||
|
||||
//Description textfield are handled in each subclass for now, changed to abstract
|
||||
// public void enableDescription(Context context){
|
||||
public abstract void enableDescription(Context context);
|
||||
|
||||
//This method select all options with lovCode in beans. Need to be called manually form subclass
|
||||
//We code to use parameter instead of own selectedOptionAnswers in case it need to be from other source
|
||||
public void selectSavedOptionsFromBeans(List<OptionAnswerBean> beans) {
|
||||
|
||||
if (beans == null) return;
|
||||
|
||||
for (OptionAnswerBean optAnsBean : beans) {
|
||||
String lovCode = optAnsBean.getCode();
|
||||
String description = null;
|
||||
if (Global.AT_DROPDOWN_W_DESCRIPTION.equals(bean.getAnswer_type()) ||
|
||||
Global.AT_RADIO_W_DESCRIPTION.equals(bean.getAnswer_type()) ||
|
||||
Global.AT_MULTIPLE_W_DESCRIPTION.equals(bean.getAnswer_type())) {
|
||||
// description = optAnsBean.getValue();
|
||||
description = bean.getAnswer();
|
||||
}
|
||||
selectOption(lovCode, description);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,289 @@
|
|||
/*
|
||||
* Copyright 2013, Edmodo, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with the License.
|
||||
* You may obtain a copy of the License in the LICENSE file, or at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS"
|
||||
* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language
|
||||
* governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.edmodo.cropper.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Pair;
|
||||
import android.util.TypedValue;
|
||||
|
||||
import com.edmodo.cropper.cropwindow.CropOverlayView;
|
||||
import com.edmodo.cropper.cropwindow.handle.Handle;
|
||||
|
||||
/**
|
||||
* Utility class to perform basic operations with Handles.
|
||||
*/
|
||||
public class HandleUtil {
|
||||
|
||||
// Private Constants ///////////////////////////////////////////////////////
|
||||
|
||||
// The radius (in dp) of the touchable area around the handle. We are basing
|
||||
// this value off of the recommended 48dp Rhythm. See:
|
||||
// http://developer.android.com/design/style/metrics-grids.html#48dp-rhythm
|
||||
private static final int TARGET_RADIUS_DP = 24;
|
||||
|
||||
// Public Methods //////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Gets the default target radius (in pixels). This is the radius of the
|
||||
* circular area that can be touched in order to activate the handle.
|
||||
*
|
||||
* @param context the Context
|
||||
* @return the target radius (in pixels)
|
||||
*/
|
||||
public static float getTargetRadius(Context context) {
|
||||
|
||||
final float targetRadius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
|
||||
TARGET_RADIUS_DP,
|
||||
context.getResources().getDisplayMetrics());
|
||||
return targetRadius;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines which, if any, of the handles are pressed given the touch
|
||||
* coordinates, the bounding box, and the touch radius.
|
||||
*
|
||||
* @param x the x-coordinate of the touch point
|
||||
* @param y the y-coordinate of the touch point
|
||||
* @param left the x-coordinate of the left bound
|
||||
* @param top the y-coordinate of the top bound
|
||||
* @param right the x-coordinate of the right bound
|
||||
* @param bottom the y-coordinate of the bottom bound
|
||||
* @param targetRadius the target radius in pixels
|
||||
* @return the Handle that was pressed; null if no Handle was pressed
|
||||
*/
|
||||
public static Handle getPressedHandle(float x,
|
||||
float y,
|
||||
float left,
|
||||
float top,
|
||||
float right,
|
||||
float bottom,
|
||||
float targetRadius) {
|
||||
|
||||
Handle pressedHandle = null;
|
||||
|
||||
// Note: corner-handles take precedence, then side-handles, then center.
|
||||
|
||||
if (HandleUtil.isInCornerTargetZone(x, y, left, top, targetRadius)) {
|
||||
pressedHandle = Handle.TOP_LEFT;
|
||||
} else if (HandleUtil.isInCornerTargetZone(x, y, right, top, targetRadius)) {
|
||||
pressedHandle = Handle.TOP_RIGHT;
|
||||
} else if (HandleUtil.isInCornerTargetZone(x, y, left, bottom, targetRadius)) {
|
||||
pressedHandle = Handle.BOTTOM_LEFT;
|
||||
} else if (HandleUtil.isInCornerTargetZone(x, y, right, bottom, targetRadius)) {
|
||||
pressedHandle = Handle.BOTTOM_RIGHT;
|
||||
} else if (HandleUtil.isInCenterTargetZone(x, y, left, top, right, bottom) && focusCenter()) {
|
||||
pressedHandle = Handle.CENTER;
|
||||
} else if (HandleUtil.isInHorizontalTargetZone(x, y, left, right, top, targetRadius)) {
|
||||
pressedHandle = Handle.TOP;
|
||||
} else if (HandleUtil.isInHorizontalTargetZone(x, y, left, right, bottom, targetRadius)) {
|
||||
pressedHandle = Handle.BOTTOM;
|
||||
} else if (HandleUtil.isInVerticalTargetZone(x, y, left, top, bottom, targetRadius)) {
|
||||
pressedHandle = Handle.LEFT;
|
||||
} else if (HandleUtil.isInVerticalTargetZone(x, y, right, top, bottom, targetRadius)) {
|
||||
pressedHandle = Handle.RIGHT;
|
||||
} else if (HandleUtil.isInCenterTargetZone(x, y, left, top, right, bottom) && !focusCenter()) {
|
||||
pressedHandle = Handle.CENTER;
|
||||
|
||||
}
|
||||
|
||||
return pressedHandle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the offset of the touch point from the precise location of the
|
||||
* specified handle.
|
||||
*
|
||||
* @return the offset as a Pair where the x-offset is the first value and
|
||||
* the y-offset is the second value; null if the handle is null
|
||||
*/
|
||||
public static Pair<Float, Float> getOffset(Handle handle,
|
||||
float x,
|
||||
float y,
|
||||
float left,
|
||||
float top,
|
||||
float right,
|
||||
float bottom) {
|
||||
|
||||
if (handle == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
float touchOffsetX = 0;
|
||||
float touchOffsetY = 0;
|
||||
|
||||
// Calculate the offset from the appropriate handle.
|
||||
switch (handle) {
|
||||
|
||||
case TOP_LEFT:
|
||||
touchOffsetX = left - x;
|
||||
touchOffsetY = top - y;
|
||||
break;
|
||||
case TOP_RIGHT:
|
||||
touchOffsetX = right - x;
|
||||
touchOffsetY = top - y;
|
||||
break;
|
||||
case BOTTOM_LEFT:
|
||||
touchOffsetX = left - x;
|
||||
touchOffsetY = bottom - y;
|
||||
break;
|
||||
case BOTTOM_RIGHT:
|
||||
touchOffsetX = right - x;
|
||||
touchOffsetY = bottom - y;
|
||||
break;
|
||||
case LEFT:
|
||||
touchOffsetX = left - x;
|
||||
touchOffsetY = 0;
|
||||
break;
|
||||
case TOP:
|
||||
touchOffsetX = 0;
|
||||
touchOffsetY = top - y;
|
||||
break;
|
||||
case RIGHT:
|
||||
touchOffsetX = right - x;
|
||||
touchOffsetY = 0;
|
||||
break;
|
||||
case BOTTOM:
|
||||
touchOffsetX = 0;
|
||||
touchOffsetY = bottom - y;
|
||||
break;
|
||||
case CENTER:
|
||||
final float centerX = (right + left) / 2;
|
||||
final float centerY = (top + bottom) / 2;
|
||||
touchOffsetX = centerX - x;
|
||||
touchOffsetY = centerY - y;
|
||||
break;
|
||||
}
|
||||
|
||||
final Pair<Float, Float> result = new Pair<Float, Float>(touchOffsetX, touchOffsetY);
|
||||
return result;
|
||||
}
|
||||
|
||||
// Private Methods /////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Determines if the specified coordinate is in the target touch zone for a
|
||||
* corner handle.
|
||||
*
|
||||
* @param x the x-coordinate of the touch point
|
||||
* @param y the y-coordinate of the touch point
|
||||
* @param handleX the x-coordinate of the corner handle
|
||||
* @param handleY the y-coordinate of the corner handle
|
||||
* @param targetRadius the target radius in pixels
|
||||
* @return true if the touch point is in the target touch zone; false
|
||||
* otherwise
|
||||
*/
|
||||
private static boolean isInCornerTargetZone(float x,
|
||||
float y,
|
||||
float handleX,
|
||||
float handleY,
|
||||
float targetRadius) {
|
||||
|
||||
if (Math.abs(x - handleX) <= targetRadius && Math.abs(y - handleY) <= targetRadius) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if the specified coordinate is in the target touch zone for a
|
||||
* horizontal bar handle.
|
||||
*
|
||||
* @param x the x-coordinate of the touch point
|
||||
* @param y the y-coordinate of the touch point
|
||||
* @param handleXStart the left x-coordinate of the horizontal bar handle
|
||||
* @param handleXEnd the right x-coordinate of the horizontal bar handle
|
||||
* @param handleY the y-coordinate of the horizontal bar handle
|
||||
* @param targetRadius the target radius in pixels
|
||||
* @return true if the touch point is in the target touch zone; false
|
||||
* otherwise
|
||||
*/
|
||||
private static boolean isInHorizontalTargetZone(float x,
|
||||
float y,
|
||||
float handleXStart,
|
||||
float handleXEnd,
|
||||
float handleY,
|
||||
float targetRadius) {
|
||||
|
||||
if (x > handleXStart && x < handleXEnd && Math.abs(y - handleY) <= targetRadius) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if the specified coordinate is in the target touch zone for a
|
||||
* vertical bar handle.
|
||||
*
|
||||
* @param x the x-coordinate of the touch point
|
||||
* @param y the y-coordinate of the touch point
|
||||
* @param handleX the x-coordinate of the vertical bar handle
|
||||
* @param handleYStart the top y-coordinate of the vertical bar handle
|
||||
* @param handleYEnd the bottom y-coordinate of the vertical bar handle
|
||||
* @param targetRadius the target radius in pixels
|
||||
* @return true if the touch point is in the target touch zone; false
|
||||
* otherwise
|
||||
*/
|
||||
private static boolean isInVerticalTargetZone(float x,
|
||||
float y,
|
||||
float handleX,
|
||||
float handleYStart,
|
||||
float handleYEnd,
|
||||
float targetRadius) {
|
||||
|
||||
if (Math.abs(x - handleX) <= targetRadius && y > handleYStart && y < handleYEnd) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if the specified coordinate falls anywhere inside the given
|
||||
* bounds.
|
||||
*
|
||||
* @param x the x-coordinate of the touch point
|
||||
* @param y the y-coordinate of the touch point
|
||||
* @param left the x-coordinate of the left bound
|
||||
* @param top the y-coordinate of the top bound
|
||||
* @param right the x-coordinate of the right bound
|
||||
* @param bottom the y-coordinate of the bottom bound
|
||||
* @return true if the touch point is inside the bounding rectangle; false
|
||||
* otherwise
|
||||
*/
|
||||
private static boolean isInCenterTargetZone(float x,
|
||||
float y,
|
||||
float left,
|
||||
float top,
|
||||
float right,
|
||||
float bottom) {
|
||||
|
||||
if (x > left && x < right && y > top && y < bottom) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if the cropper should focus on the center handle or the side
|
||||
* handles. If it is a small image, focus on the center handle so the user
|
||||
* can move it. If it is a large image, focus on the side handles so user
|
||||
* can grab them. Corresponds to the appearance of the
|
||||
* RuleOfThirdsGuidelines.
|
||||
*
|
||||
* @return true if it is small enough such that it should focus on the
|
||||
* center; less than show_guidelines limit
|
||||
*/
|
||||
private static boolean focusCenter() {
|
||||
return (!CropOverlayView.showGuidelines());
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 5.1 KiB |
|
@ -0,0 +1,108 @@
|
|||
package com.adins.mss.base.timeline;
|
||||
|
||||
import android.content.Context;
|
||||
import androidx.loader.content.AsyncTaskLoader;
|
||||
import android.util.Log;
|
||||
|
||||
import com.adins.mss.constant.Global;
|
||||
import com.adins.mss.dao.Timeline;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TimelineLoader extends AsyncTaskLoader<List<Timeline>> {
|
||||
public static final String TAG = "TIMELINE_AppListLoader";
|
||||
private List<Timeline> objects = null;
|
||||
private Context mContextLoader;
|
||||
|
||||
public TimelineLoader(Context context) {
|
||||
super(context);
|
||||
mContextLoader = context;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Timeline> loadInBackground() {
|
||||
if (Global.IS_DEV) Log.i(TAG, "+++ loadInBackground() called! +++");
|
||||
TimelineManager manager = new TimelineManager(mContextLoader);
|
||||
objects = manager.getAllTimeline(mContextLoader);
|
||||
|
||||
return objects;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deliverResult(List<Timeline> result) {
|
||||
if (isReset()) {
|
||||
if (Global.IS_DEV)
|
||||
Log.w(TAG, "+++ Warning! An async query came in while the Loader was reset! +++");
|
||||
if (result != null) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
objects = result;
|
||||
if (isStarted()) {
|
||||
if (Global.IS_DEV) Log.i(TAG, "+++ Delivering results to the LoaderManager for" +
|
||||
" the ListFragment to display! +++");
|
||||
// If the Loader is in a started state, have the superclass deliver the
|
||||
// results to the client.
|
||||
super.deliverResult(result);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStartLoading() {
|
||||
if (Global.IS_DEV) Log.i(TAG, "+++ onStartLoading() called! +++");
|
||||
if (objects != null) {
|
||||
// Deliver any previously loaded data immediately.
|
||||
if (Global.IS_DEV) Log.i(TAG, "+++ Delivering previously loaded data to the client...");
|
||||
deliverResult(objects);
|
||||
}
|
||||
if (takeContentChanged()) {
|
||||
// When the observer detects a new installed application, it will call
|
||||
// onContentChanged() on the Loader, which will cause the next call to
|
||||
// takeContentChanged() to return true. If this is ever the case (or if
|
||||
// the current data is null), we force a new load.
|
||||
if (Global.IS_DEV)
|
||||
Log.i(TAG, "+++ A content change has been detected... so force load! +++");
|
||||
forceLoad();
|
||||
} else if (objects == null) {
|
||||
// If the current data is null... then we should make it non-null! :)
|
||||
if (Global.IS_DEV)
|
||||
Log.i(TAG, "+++ The current data is data is null... so force load! +++");
|
||||
forceLoad();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStopLoading() {
|
||||
if (Global.IS_DEV) Log.i(TAG, "+++ onStopLoading() called! +++");
|
||||
cancelLoad();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onReset() {
|
||||
if (Global.IS_DEV) Log.i(TAG, "+++ onReset() called! +++");
|
||||
|
||||
// Ensure the loader is stopped.
|
||||
onStopLoading();
|
||||
|
||||
// At this point we can release the resources associated with 'apps'.
|
||||
if (objects != null) {
|
||||
objects = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCanceled(List<Timeline> apps) {
|
||||
if (Global.IS_DEV) Log.i(TAG, "+++ onCanceled() called! +++");
|
||||
|
||||
// Attempt to cancel the current asynchronous load.
|
||||
super.onCanceled(apps);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceLoad() {
|
||||
if (Global.IS_DEV) Log.i(TAG, "+++ forceLoad() called! +++");
|
||||
super.forceLoad();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package com.adins.mss.base.ktpValidation;
|
||||
|
||||
import com.adins.mss.foundation.http.MssRequestType;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
public class JsonRequestKtpValidation extends MssRequestType {
|
||||
|
||||
@SerializedName("refId")
|
||||
public String refId;
|
||||
@SerializedName("filter")
|
||||
public String filter;
|
||||
|
||||
public String getRefId() {
|
||||
return refId;
|
||||
}
|
||||
|
||||
public void setRefId(String refId) {
|
||||
this.refId = refId;
|
||||
}
|
||||
|
||||
public String getFilter() {
|
||||
return filter;
|
||||
}
|
||||
|
||||
public void setFilter(String filter) {
|
||||
this.filter = filter;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,187 @@
|
|||
<?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:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/taskListLayout"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:layout_gravity="center"
|
||||
android:id="@+id/taskItem">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:background="@color/timelineLine" />
|
||||
<ImageView
|
||||
android:id="@+id/timelineIcon"
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:src="@drawable/attendance"
|
||||
android:padding="2dp"
|
||||
android:layout_marginTop="10dp"/>
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/taskHeader"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:cardCornerRadius="10dp"
|
||||
app:contentPadding="5dp"
|
||||
app:cardElevation="@dimen/card_shadow"
|
||||
android:layout_margin="@dimen/card_margin"
|
||||
app:cardBackgroundColor="@color/fontColorWhite">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
<LinearLayout
|
||||
android:id="@+id/taskLayout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:orientation="vertical"
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
android:id="@+id/taskName"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="5dp"
|
||||
android:text="Sample Name"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:drawableLeft="@drawable/ic_person_color"
|
||||
android:drawablePadding="5dp"/>
|
||||
<TextView
|
||||
android:id="@+id/taskAddress"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="5dp"
|
||||
android:text="Sample Address"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:drawableLeft="@drawable/ic_location_color"
|
||||
android:drawablePadding="5dp"/>
|
||||
<TextView
|
||||
android:id="@+id/taskPhone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="5dp"
|
||||
android:text="Sample Phone"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:drawableLeft="@drawable/ic_phone_color"
|
||||
android:drawablePadding="5dp"/>
|
||||
<TextView
|
||||
android:id="@+id/taskForm"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Sample Form"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:drawableLeft="@drawable/ic_form_color"
|
||||
android:drawablePadding="5dp"/>
|
||||
<LinearLayout
|
||||
android:id="@+id/collectionInfo"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp">
|
||||
<TextView
|
||||
android:id="@+id/taskAgreement"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5"
|
||||
android:text="@string/lblAgreementNo"
|
||||
android:textSize="12dp"
|
||||
android:drawableLeft="@drawable/ic_form_color"
|
||||
android:drawablePadding="5dp"/>
|
||||
<TextView
|
||||
android:id="@+id/taskAmount"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5"
|
||||
android:text="Amount Due"
|
||||
android:textSize="12dp"
|
||||
android:drawableLeft="@drawable/ic_cash_color"
|
||||
android:drawablePadding="5dp"/>
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:id="@+id/taskOverdue"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5"
|
||||
android:text="Overdue"
|
||||
android:textSize="12dp"
|
||||
android:drawableLeft="@drawable/ic_date_color"
|
||||
android:drawablePadding="5dp"/>
|
||||
<TextView
|
||||
android:id="@+id/taskInst"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5"
|
||||
android:text="Installment No"
|
||||
android:textSize="12dp"
|
||||
android:drawableLeft="@drawable/ic_no_color"
|
||||
android:drawablePadding="5dp"/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
<TextView
|
||||
android:id="@+id/txtslatime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:text="TOM 11.45"
|
||||
android:textSize="11dp"
|
||||
android:drawableLeft="@drawable/ic_sla"
|
||||
android:drawablePadding="5dp"
|
||||
android:padding="5dp"
|
||||
android:background="@drawable/sla_shape_green"
|
||||
android:visibility="gone" />
|
||||
<TextView
|
||||
android:id="@+id/txtSaveDate"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_gravity="end"
|
||||
android:text="11.45"
|
||||
android:textSize="11dp"
|
||||
android:paddingRight="5dp"
|
||||
android:drawableLeft="@drawable/ic_save_color"
|
||||
android:drawablePadding="5dp"
|
||||
android:visibility="gone"/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</androidx.cardview.widget.CardView>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
|
@ -0,0 +1,88 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/tv_white"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_weight="1">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:orientation="vertical"
|
||||
android:padding="8dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/receipt_history"
|
||||
android:textSize="24sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<HorizontalScrollView
|
||||
android:id="@+id/horizontalScrollView1"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fillViewport="true">
|
||||
|
||||
<TableLayout
|
||||
android:id="@+id/tableHeaders"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:stretchColumns="3">
|
||||
|
||||
<TableRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/spinner_background"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp">
|
||||
|
||||
<TextView
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:text="@string/label_contract_number"
|
||||
android:textColor="@color/tv_white"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:text="@string/label_receipt_number"
|
||||
android:textColor="@color/tv_white"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:gravity="center_vertical"
|
||||
android:minWidth="70dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:text="@string/label_payment_date"
|
||||
android:textColor="@color/tv_white"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:text="@string/label_file"
|
||||
android:textColor="@color/tv_white"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
</TableRow>
|
||||
</TableLayout>
|
||||
</HorizontalScrollView>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
||||
</LinearLayout>
|
|
@ -0,0 +1,192 @@
|
|||
<?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"
|
||||
app:layout_collapseMode="pin"
|
||||
android:fitsSystemWindows="true" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/collActivityContainer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
app:cardCornerRadius="10dp"
|
||||
app:contentPadding="7dp"
|
||||
app:cardElevation="@dimen/card_shadow"
|
||||
android:layout_marginTop="@dimen/card_margin"
|
||||
android:layout_marginLeft="@dimen/card_margin"
|
||||
android:layout_marginRight="@dimen/card_margin"
|
||||
android:layout_marginBottom="60dp"
|
||||
app:cardBackgroundColor="@color/fontColorWhite">
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:id="@+id/agreementNo"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_agreement_number"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textStyle="bold"
|
||||
android:textColor="@color/colorMC"
|
||||
android:paddingBottom="10dp"/>
|
||||
<TextView
|
||||
android:id="@+id/agreementNumber"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textStyle="bold"
|
||||
android:textColor="@color/colorMC"
|
||||
android:paddingBottom="10dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<HorizontalScrollView
|
||||
android:id="@+id/horizontalScrollView1"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fillViewport="true">
|
||||
<TableLayout
|
||||
android:id="@+id/tableHeaders"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:stretchColumns="4">
|
||||
<TableRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<TextView
|
||||
android:gravity="center_horizontal"
|
||||
android:text="No"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"/>
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/timelineLine" />
|
||||
<TextView
|
||||
android:gravity="center_horizontal"
|
||||
android:text="@string/label_activity_date"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/timelineLine" />
|
||||
<TextView
|
||||
android:gravity="center_horizontal"
|
||||
android:minWidth="50dp"
|
||||
android:text="@string/label_action"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"/>
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/timelineLine" />
|
||||
<TextView
|
||||
android:gravity="center_horizontal"
|
||||
android:text="@string/label_collection_number"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"/>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/timelineLine"/>
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/timelineLine"/>
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/timelineLine"/>
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/timelineLine"/>
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/timelineLine"/>
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/timelineLine"/>
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/timelineLine"/>
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp">
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp" />
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/timelineLine" />
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp" />
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/timelineLine" />
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp" />
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/timelineLine" />
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp" />
|
||||
</TableRow>
|
||||
</TableLayout>
|
||||
|
||||
</HorizontalScrollView>
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/imageBtnDownload"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_margin="5dp"
|
||||
app:srcCompat="@drawable/ic_file_download"
|
||||
android:background="@drawable/round_shape" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
Loading…
Add table
Add a link
Reference in a new issue