add project adins

This commit is contained in:
Alfrid Sanjaya Leo Putra 2024-07-25 14:44:22 +07:00
commit f8f85d679d
5299 changed files with 625430 additions and 0 deletions

View file

@ -0,0 +1,12 @@
package com.adins.mss.base.todolist.form.helper;
import com.adins.mss.dao.Scheme;
public interface TaskPlanFilterObservable<T>{
void subscribeEvent(TaskPlanFilterObserver<T> observer);
void unsubscribeEvent(TaskPlanFilterObserver<T> observer);
void emit(T filterData);
void setSearchFilterText(int schemePos,int priorityPos);
}

View file

@ -0,0 +1,40 @@
package com.adins.mss.foundation.camerainapp.helper;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import com.adins.mss.foundation.questiongenerator.QuestionViewGenerator;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* Created by angga.permadi on 7/28/2016.
*/
public class FileUtil {
public static File bitmapToFileConverter(Activity activity, Bitmap bitmap, File file) {
try {
FileOutputStream outStream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 88, outStream);
activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
return file;
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
public static File bitmapToFileConverter(Activity activity, Bitmap bitmap) {
try {
return bitmapToFileConverter(activity, bitmap, QuestionViewGenerator.createImageFile(activity.getApplicationContext()));
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}

View file

@ -0,0 +1,180 @@
<resources>
<string name="app_name">LeadIn</string>
<string name="appVersion">v2.1.0.1</string>
<string name="history_payment">Riwayat Pembayaran</string>
<string name="installment_schedule">Installment Schedule</string>
<!-- Left Menu -->
<string name="drawer_open">Open drawer</string>
<string name="drawer_close">close_drawer</string>
<!-- CHECK ORDER -->
<string name="btnLookupCMO">Lookup CMO</string>
<string name="btnLookupCMOMH">Lookup CMO / MH</string>
<string name="lblSearchBy">Pilih Filter</string>
<string name="lblStartDate">Tanggal Awal</string>
<string name="lblEndDate">Tanggal Akhir</string>
<string name="lblNomorOrder">Nomor Order</string>
<string name="btnSearchOrder">Cari</string>
<string name="menu">Main Menu</string>
<string name="cekOrder">Check Order</string>
<string name="btnOpen">Open</string>
<string name="lblSearchByStatus">Status</string>
<string name="btnOk">OK</string>
<string name="cancel_order">Cancel Order</string>
<string name="submit_all_task">Submit All Task</string>
<string name="submit_task_collection">Submit Task Collection</string>
<string name="lblAccountName">Account Name :</string>
<string name="lblProduct">Product :</string>
<string name="lblStatus">Status :</string>
<string name="allStatus">All Status</string>
<string-array name="dropdownAccountStatus">
<item>All Status</item>
<item>Lead</item>
<item>Bid</item>
<item>Qualified</item>
<item>Completed</item>
<item>Deleted</item>
</string-array>
<string-array name="cbSearchBy">
<item >Tanggal</item>
<item >Nomor Order</item>
<item >Nama Customer</item>
</string-array>
<string-array name="cbSearchByStatus">
<item >ALL</item>
<item >On Survey</item>
<item >On CA</item>
</string-array>
<string-array name="cbUpdateOrder">
<item >Open Order</item>
<item >Cancel Order</item>
</string-array>
<!-- Main Menu -->
<string name="title_mn_tasklist">Order Progress</string>
<string name="title_mn_reportsummary">Report Summary</string>
<string name="title_mn_depositreport">Deposit Report</string>
<string name="title_mn_newtask">New Order</string>
<string name="title_mn_surveyperformance">Survey Performance</string>
<string name="title_mn_surveyverification">Survey Verification</string>
<string name="title_mn_surveyapproval">Survey Approval</string>
<string name="title_mn_surveyassign">Survey Assignment</string>
<string name="title_mn_surveyreassign">Survey Re-Assignment</string>
<string name="title_mn_installmentschedule">Installment Schedule</string>
<string name="title_mn_setting">Pengaturan</string>
<string name="login_desc">Login ke Aplikasi LeadIn</string>
<string name="toast_crash">Ooooops ! MSSODR crashed, but a report has been sent to my developer to help fix the issue !</string>
<string name="password">Password :</string>
<string name="user_id">User ID :</string>
<string name="news_desc">TextView</string>
<string name="title_news_parent">Medium Text</string>
<string name="data_not_found">Data tidak tersedia.</string>
<string name="dummy_no_order">1234567</string>
<string name="notes">Notes</string>
<string name="medium_text">Medium Text</string>
<string name="title_activity_developer_option">Dev Options</string>
<string name="msgNoNewVersion">Versi saat ini adalah versi terakhir</string>
<string name="msgNoTaskList">Anda tidak memiliki daftar task</string>
<string name="changelog_v230"><![CDATA[Perbaikan: <br/>
1. Support Multilingual <br/>
2. Update compatibility untuk Android M <br/>
3. Support refresh lokasi dengan mengetuk GPS Icon <br/>
4. Peningkatan performa <br/>
5. Perbaikan managemen memory <br/>
6. Menampilkan radius accuracy di tampilan peta<br/>
7. Menampilkan pertanyaan tidak relevan secara otomatis<br/>
8. Mendukung menyalin jawaban dari pertanyaan lain <br/>
9. Mendukung validasi pertanyaan tingkat lanjut <br/>
10. Minor Bug fixes]]>\n</string>
<string name="changelog_v2310"><![CDATA[Perbaikan: <br/> 1. Mendukung menyalin jawaban dengan kondisi tertentu]]></string>
<string name="changelog_v2320"><![CDATA[Perbaikan: <br/>
1. perbaikan gambar profile dan gambar cover
]]></string>
<string name="changelog_v200"><![CDATA[Perbaikan: <br/>
1. Mendukung fitur linimasa tugas<br/>
2. Mendukung menu navigasi]]></string>
<string name="changelog_v210"><![CDATA[Perbaikan: <br/>
1. Mendukung fitur Promo]]></string>
<string name="changelog_v220"><![CDATA[Perbaikan: <br/>
1. Mendukung fitur Oauth]]></string>
<string name="changelog_v2330"><![CDATA[Perbaikan: <br/>
1. Perbaikan Sinkronisasi<br/>
2. Perbaikan Linimasa untuk Absensi<br/>
3. Perbaikan memuat jawaban pertanyaan<br/>
4. Menambahkan pengecekan root device]]></string>
<string name="changelog_v2340"><![CDATA[Perbaikan: <br/>
1. Alphanumeric pada Password]]></string>
<string name="changelog_v2350"><![CDATA[Perbaikan: <br/>
1. Perbaikan bug<br/>
2. Menghilangkan Form tidak aktif]]></string>
<string name="changelog_v2360"><![CDATA[Perbaikan: <br/>
1. Perbaikan bug]]></string>
<string name="changelog_v2370"><![CDATA[Perbaikan: <br/>
1. Perbaikan bug
2. Perbaikan eror pada GPS]]></string>
<string name="changelog_v2380"><![CDATA[Perbaikan: <br/>
1. Perbaikan bug]]></string>
<string name="changelog_v2390"><![CDATA[Perbaikan: <br/>
1. Perbaikan bug]]></string>
<string name="changelog_v23100"><![CDATA[Perbaikan: <br/>
1. Perbaikan bug]]></string>
<string name="changelog_v23110"><![CDATA[Perbaikan: <br/>
1. Perbaikan bug]]></string>
<string name="changelog_v23120"><![CDATA[Perbaikan: <br/>
1. Perbaikan bug]]></string>
<string name="changelog_v23130"><![CDATA[Perbaikan: <br/>
1. Perbaikan bug]]></string>
<string name="changelog_v23140"><![CDATA[Perbaikan: <br/>
1. Perbaikan bug]]></string>
<string name="changelog_v23150"><![CDATA[Perbaikan: <br/>
1. Perbaikan bug]]></string>
<string name="changelog_v23160"><![CDATA[Perbaikan: <br/>
1. Perbaikan bug]]></string>
<string name="changelog_v23170"><![CDATA[Perbaikan: <br/>
1. Perbaikan bug]]></string>
<string name="changelog_v23180"><![CDATA[Perbaikan: <br/>
1. Perbaikan bug]]></string>
<string name="changelog_v23190"><![CDATA[Perbaikan: <br/>
1. Perbaikan bug]]></string>
<string name="changelog_v2400"><![CDATA[Perbaikan: <br/>
1. Penambahan informasi terkait device di menu about<br/>
2. Mendukung tipe jawaban online lookup<br/>
3. Tampilan task list dapat berupa box atau list]]></string>
<string name="changelog_v3110"><![CDATA[Changes: <br/>
1. Penambahan status TaskH FailedDraft ketika mendapatkan response code tertentu saat submit task dari web.<br/>
2. Penambahan user help .<br/>
3. Pembetulan take picture failed di android 10 .<br/>
4. App lemot saat Login-Logout-Login .<br/>
5. Penyempurnaan answer type LuOnline .<br/>
6. Pembetulan bug uploading task di timeline tidak muncul.<br/>
7. Penambahan support untuk Android 10]]></string>
<string name="changelog_v3120">
<![CDATA[ Changes: <br/>
1. Pembetulan Cloud CSV tidak dapat diimport .<br/>
2. Pembetulan service berhenti ketika keluar aplikasi.<br/>
3. Pembetulan crash saat sinkronisasi .<br/>
4. Pembetulan crash saat is_emergency mati .<br/>
5. Hapus search by priority . <br/>
6. Pembetulan force stop tidak menuju timeline . ]]>
</string>
<string name="changelog_v3130">
<![CDATA[ Changes: <br/>
1. Perbaikan issue user help.<br/>
2. Perbaikan perilaku logout otomatis ketika menekan tombol kembali.<br/>
3. Tambah aksi panggil nomor telepon customer pada customer form.<br/>
4. Perbaikan validasi tidak berjalan pada form dikarenakan regex.<br/>
5. Tambahkan teks contoh pada user help data dinamis.<br/>
]]>
</string>
<string name="changelog_v3140">
<![CDATA[ Changes: <br/>
1. Refactor beberapa kode.<br/>
2. Perbaikan bug.<br/>]]>
</string>
</resources>

View file

@ -0,0 +1,60 @@
/*
* Copyright 2010 Kevin Gaudin
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License 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 org.acra.util;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;
/**
* Accepts any certificate, ideal for self-signed certificates.
*/
class NaiveTrustManager implements X509TrustManager {
/*
* (non-Javadoc)
*
* @see javax.net.ssl.X509TrustManager#getAcceptedIssuers()
*/
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
/*
* (non-Javadoc)
*
* @see
* javax.net.ssl.X509TrustManager#checkClientTrusted(java.security.cert.
* X509Certificate[], java.lang.String)
*/
@Override
public void checkClientTrusted(X509Certificate[] x509CertificateArray,
String string) throws CertificateException {
}
/*
* (non-Javadoc)
*
* @see
* javax.net.ssl.X509TrustManager#checkServerTrusted(java.security.cert.
* X509Certificate[], java.lang.String)
*/
@Override
public void checkServerTrusted(X509Certificate[] x509CertificateArray,
String string) throws CertificateException {
}
}

View file

@ -0,0 +1,108 @@
/**
*
*/
package com.adins.mss.foundation.db;
import android.content.Context;
import android.util.Log;
import com.adins.mss.base.crashlytics.FireCrash;
import com.adins.mss.constant.Global;
import com.adins.mss.dao.DaoMaster;
import com.adins.mss.dao.DaoMaster.DevOpenHelper;
import com.adins.mss.dao.DaoSession;
import com.adins.mss.foundation.formatter.Tool;
import com.adins.mss.foundation.security.storepreferences.ObscuredSharedPreferences;
import de.greenrobot.dao.database.Database;
/**
* @author michael.bw
*/
public class DaoOpenHelper {
private static DaoMaster daoMaster;
private static DaoSession daoSession;
private static Database db;
public DaoOpenHelper(Context context) {
try {
String key = null;
String storedKey = null;
ObscuredSharedPreferences sharedPref =
ObscuredSharedPreferences.getPrefs(context, "GlobalData", Context.MODE_PRIVATE);
if (sharedPref.getString("DB_SECRET_KEY", null) == null) {
key = Tool.generateKey();
ObscuredSharedPreferences.Editor sharedPrefEditor = sharedPref.edit();
sharedPrefEditor.putString("DB_SECRET_KEY", key);
sharedPrefEditor.commit();
}
storedKey = sharedPref.getString("DB_SECRET_KEY", null);
Log.d("storedkey",storedKey);
if (Global.IS_DBENCRYPT) {
DaoMaster.EncryptedDevOpenHelper helper = new DaoMaster.EncryptedDevOpenHelper(context, Global.MSMDB);
db = helper.getWritableDatabase(storedKey);
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
} else {
DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, Global.MSMDB);
db = helper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
}
} catch (Exception e) {
e.printStackTrace();
FireCrash.log(e);
}
}
/**
* you can use DaoSession.clear(). However, it will clear all all objects from the session.
* If you want to avoid that, you have to execute a regular query and delete the result entities
* (for example with deleteInTx).
*/
public static void clear() {
if (daoSession != null)
daoSession.clear();
}
public static DaoSession getDaoSession(Context context) {
if (daoSession == null) {
new DaoOpenHelper(context);
}
return daoSession;
}
public static void closeAll() {
if (daoSession != null) {
daoSession.clear();
db.close();
daoSession = null;
}
}
public static Database getDb(Context context) {
if (daoMaster == null) {
new DaoOpenHelper(context);
}
if(daoMaster == null){
return null;
}
return daoMaster.getDatabase();
}
public static DaoMaster getDaoMaster(Context context) {
if (daoMaster == null) {
new DaoOpenHelper(context);
}
if(daoMaster == null)
return null;
return daoMaster;
}
}

View file

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.5">
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:fillViewport="true">
<TableLayout
android:id="@+id/orderDetailTable"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:stretchColumns="1">
</TableLayout>
</ScrollView>
</RelativeLayout>
<RelativeLayout
android:id="@+id/Bottomlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.5">
<Button
android:id="@+id/btnLookupCMO"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:onClick="doLookupCMO"
android:text="@string/btnLookupCMO"/>
<Button
android:id="@+id/btnSubmit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:onClick="doSubmit"
android:text="@string/btnSubmit"/>
<EditText
android:id="@+id/txtNotes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/btnSubmit"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/txtCMO"
android:ems="10"
android:hint="@string/customer_notes_hint"
android:inputType="textMultiLine"/>
<TextView
android:id="@+id/txtCMO"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/btnLookupCMO"
android:visibility="gone"
android:text="@string/dummy_text_3"
android:textAppearance="?android:attr/textAppearanceMedium"/>
</RelativeLayout>
</LinearLayout>

View file

@ -0,0 +1,190 @@
package com.adins.mss.foundation.audio;
import android.content.Context;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.view.View;
import android.widget.Toast;
import com.adins.mss.base.crashlytics.FireCrash;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @author gigin.ginanjar
*/
public class AudioRecord {
public static MediaPlayer myPlayer;
private MediaRecorder myRecorder;
private String outputFile = null;
private Context context;
public AudioRecord(Context context) {
this.context = context;
}
public static void stopPlay(View view) {
try {
if (myPlayer != null) {
myPlayer.stop();
myPlayer.release();
myPlayer = null;
}
} catch (Exception e) {
FireCrash.log(e);
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void playAudio(Context context, byte[] soundByteArray) {
FileOutputStream fos = null;
try {
// create temp file that will hold byte array
File tempAudio = File.createTempFile("voiceNotes", "m4a", context.getCacheDir());
tempAudio.deleteOnExit();
fos = new FileOutputStream(tempAudio);
fos.write(soundByteArray);
// Tried reusing instance of media player
// but that resulted in system crashes...
myPlayer = new MediaPlayer();
// Tried passing path directly, but kept getting
// "Prepare failed.: status=0x1"
// so using file descriptor instead
try(FileInputStream fis = new FileInputStream(tempAudio)){
myPlayer.setDataSource(fis.getFD());
myPlayer.prepare();
myPlayer.start();
}
catch(IOException e){
e.printStackTrace();
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
if (fos != null)
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* // * Start Recording. <br/>
* File Always Save in /data/data/files/audio/voiceNotes.m4a
*
* @param view
*/
public void startRecording(View view) {
File file = context.getFilesDir();
File newfile = new File(file.getAbsolutePath() + "/audio"); // audio is the directory 2 create
newfile.mkdir();
outputFile = newfile + "/voiceNotes.m4a";
myRecorder = new MediaRecorder();
myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
myRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
myRecorder.setOutputFile(outputFile);
myRecorder.setAudioEncodingBitRate(8000);
start(view);
}
public void start(View view) {
try {
myRecorder.prepare();
myRecorder.start();
} catch (IllegalStateException e) {
// start:it is called before prepare()
// prepare: it is called after start() or before setOutputFormat()
e.printStackTrace();
} catch (IOException e) {
// prepare() fails
e.printStackTrace();
}
System.out.print("Recording Point: Recording");
Toast.makeText(context, "Start recording...",
Toast.LENGTH_SHORT).show();
}
/**
* Stop Recording Audio
*/
public void stop(View view) {
try {
myRecorder.stop();
myRecorder.release();
myRecorder = null;
} catch (IllegalStateException e) {
// it is called before start()
e.printStackTrace();
} catch (RuntimeException e) {
// no valid audio/video data has been received
e.printStackTrace();
}
}
public void play(View view) {
try {
myPlayer = new MediaPlayer();
myPlayer.setDataSource(outputFile);
myPlayer.prepare();
myPlayer.start();
} catch (Exception e) {
FireCrash.log(e);
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* Gets Bytes of audioNotes
*
* @return byte[]
*/
public byte[] saveAudioToByte() {
byte[] files = null;
FileInputStream fis = null;
try {
fis = new FileInputStream(outputFile);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
File file = new File(outputFile);
long lengthFile = file.length();
byte[] buff = new byte[(int) lengthFile];
int i = Integer.MAX_VALUE;
try {
while ((i = fis.read(buff, 0, buff.length)) > 0) {
baos.write(buff, 0, i);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
files = baos.toByteArray();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (fis != null)
fis.close();
}catch (IOException e){
e.printStackTrace();
}
}
return files;
}
}

View file

@ -0,0 +1,10 @@
package com.adins.mss.coll.networks;
/**
* Created by angga.permadi on 6/6/2016.
*/
public interface ClosingTaskListener {
void onClosingTaskSuccess();
}

View file

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="dialog_padding">25dp</dimen>
<dimen name="card_padding_openSource">12dp</dimen>
<dimen name="aboutImage_openSource">72dp</dimen>
<dimen name="textSizeLarge_openSource">20sp</dimen>
<dimen name="textSizeSmall_openSource">14sp</dimen>
<dimen name="textSizeExtraSmall_openSource">12sp</dimen>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="control_right_margin">8dp</dimen>
<dimen name="ptr_progress_bar_stroke_width">4dp</dimen>
<dimen name="crop__bar_height">48dp</dimen>
<dimen name="line_height">2dp</dimen>
<dimen name="padding_small">4dp</dimen>
<dimen name="padding_medium">8dp</dimen>
<dimen name="padding_large">16dp</dimen>
<dimen name="text_margin">16dp</dimen>
<dimen name="exr_listItemHeight">48dp</dimen>
<dimen name="exr_mediumListItemHeight">64dp</dimen>
<dimen name="exr_largeListItemHeight">72dp</dimen>
<dimen name="exr_margin">16dp</dimen>
<dimen name="exr_iconSize">24dp</dimen>
<dimen name="card_margin">3dp</dimen>
<dimen name="card_shadow">5dp</dimen>
</resources>