diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..aa724b7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
+local.properties
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..fc30a5c
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+My E-Loading
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..fb7f4a8
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..a0de2a1
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..0380d8d
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..2fe1f63
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/.gitignore b/app/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
new file mode 100644
index 0000000..c2a5e30
--- /dev/null
+++ b/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.aqp.mye_loading"
+ minSdkVersion 21
+ targetSdkVersion 30
+ versionCode 1
+ versionName '1.5.8'
+
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.0'
+ implementation 'com.google.android.material:material:1.3.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ implementation 'androidx.cardview:cardview:1.0.0'
+ testImplementation 'junit:junit:4.13.2'
+ androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+}
\ No newline at end of file
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
new file mode 100644
index 0000000..481bb43
--- /dev/null
+++ b/app/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/app/release/app-release.apk b/app/release/app-release.apk
new file mode 100644
index 0000000..06753e5
Binary files /dev/null and b/app/release/app-release.apk differ
diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json
new file mode 100644
index 0000000..2808706
--- /dev/null
+++ b/app/release/output-metadata.json
@@ -0,0 +1,20 @@
+{
+ "version": 3,
+ "artifactType": {
+ "type": "APK",
+ "kind": "Directory"
+ },
+ "applicationId": "com.aqp.mye_loading",
+ "variantName": "release",
+ "elements": [
+ {
+ "type": "SINGLE",
+ "filters": [],
+ "attributes": [],
+ "versionCode": 1,
+ "versionName": "1.0.1-AlphaBert",
+ "outputFile": "app-release.apk"
+ }
+ ],
+ "elementType": "File"
+}
\ No newline at end of file
diff --git a/app/src/androidTest/java/com/aqp/mye_loading/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/aqp/mye_loading/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..0d3cfaf
--- /dev/null
+++ b/app/src/androidTest/java/com/aqp/mye_loading/ExampleInstrumentedTest.java
@@ -0,0 +1,25 @@
+package com.aqp.mye_loading;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.aqp.mye_loading", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..f73d84b
--- /dev/null
+++ b/app/src/main/AndroidManifest.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png
new file mode 100644
index 0000000..c611671
Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ
diff --git a/app/src/main/java/com/aqp/mye_loading/AddPromoActivity.java b/app/src/main/java/com/aqp/mye_loading/AddPromoActivity.java
new file mode 100644
index 0000000..69ca02e
--- /dev/null
+++ b/app/src/main/java/com/aqp/mye_loading/AddPromoActivity.java
@@ -0,0 +1,91 @@
+package com.aqp.mye_loading;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.os.Build;
+import android.os.Bundle;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.aqp.mye_loading.other.DBHandler;
+
+import java.util.Objects;
+
+public class AddPromoActivity extends AppCompatActivity {
+
+ EditText edtPromoCode, edtSMS, edtCall, edtData, edtValidity, edtPrice;
+ Button btnAddPromo, btnClose;
+ TextView tvTelecomName;
+ private DBHandler dbHandler;
+ String telecom;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ requestWindowFeature(Window.FEATURE_NO_TITLE); //will hide the title
+ Objects.requireNonNull(getSupportActionBar()).hide(); // hide the title bar
+ setContentView(R.layout.activity_add_promo);
+
+ if (Build.VERSION.SDK_INT >= 23) {
+ Window window = this.getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+ window.setStatusBarColor(this.getResources().getColor(R.color.white_smoke));
+ window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+ }
+
+ edtCall = findViewById(R.id.idEdtCall);
+ edtData = findViewById(R.id.idEdtData);
+ edtPrice = findViewById(R.id.idEdtPrice);
+ edtPromoCode = findViewById(R.id.idEdtPromoCode);
+ edtSMS = findViewById(R.id.idEdtSMS);
+ edtValidity = findViewById(R.id.idEdtValidity);
+ btnAddPromo = findViewById(R.id.btn_Add);
+ btnClose = findViewById(R.id.btn_Close);
+ tvTelecomName = findViewById(R.id.textView_telecomName);
+
+ dbHandler = new DBHandler(AddPromoActivity.this);
+
+ Intent intent = getIntent();
+ telecom = intent.getStringExtra("telecom");
+ tvTelecomName.setText("Add Promo For: "+telecom);
+
+ btnAddPromo.setOnClickListener(view -> {
+ String promoCode = edtPromoCode.getText().toString().trim();
+ String SMS = edtSMS.getText().toString().trim();
+ String Call = edtCall.getText().toString().trim();
+ String Data = edtData.getText().toString().trim();
+ String Validity = edtValidity.getText().toString().trim();
+ String Price = edtPrice.getText().toString().trim();
+
+ if (promoCode.isEmpty() && SMS.isEmpty() && Call.isEmpty() &&
+ Data.isEmpty() && Validity.isEmpty() && Price.isEmpty()) {
+ Toast.makeText(AddPromoActivity.this, "Please enter all the data..", Toast.LENGTH_SHORT).show();
+ return;
+ }
+
+ dbHandler.addNewPromo(telecom, promoCode, SMS, Call, Data, Validity, Price);
+
+ Toast.makeText(AddPromoActivity.this, "Promo has been added!", Toast.LENGTH_SHORT).show();
+
+ edtCall.setText("");
+ edtData.setText("");
+ edtPrice.setText("");
+ edtPromoCode.setText("");
+ edtSMS.setText("");
+ edtValidity.setText("");
+ });
+
+ btnClose.setOnClickListener(view -> {
+ Intent intent1 = new Intent(AddPromoActivity.this, MainActivity.class);
+ startActivity(intent1);
+ finish();
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/aqp/mye_loading/GlobeTMProcessActivity.java b/app/src/main/java/com/aqp/mye_loading/GlobeTMProcessActivity.java
new file mode 100644
index 0000000..fb782e6
--- /dev/null
+++ b/app/src/main/java/com/aqp/mye_loading/GlobeTMProcessActivity.java
@@ -0,0 +1,259 @@
+package com.aqp.mye_loading;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.coordinatorlayout.widget.CoordinatorLayout;
+import androidx.recyclerview.widget.DefaultItemAnimator;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.app.Activity;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.res.ColorStateList;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Handler;
+import android.telephony.SmsManager;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.aqp.mye_loading.adapter.AdapterPromoList;
+import com.aqp.mye_loading.model.PromoList;
+import com.aqp.mye_loading.other.DBHandler;
+
+import java.util.ArrayList;
+import java.util.Objects;
+
+public class GlobeTMProcessActivity extends AppCompatActivity {
+ private ArrayList promoLists;
+ private DBHandler dbHandler;
+ RecyclerView recyclerViewPromoList;
+
+ LinearLayout layoutProcess, layoutFinalizing;
+ TextView textViewNumber, textViewNumberFinal, textViewPromo;
+ Button btnBack, btnNextToSend, btnSend, btnClose;
+ Button btn5,btn10,btn20,btn25,btn30,btn50,btn100;
+ String Number, Promo, telecom;
+ String ServerNumber = "8724";
+ EditText edtAmount;
+
+ CoordinatorLayout coordinatorLayoutRegular;
+ TextView selectTask1, itemRegular, itemPromo;
+ ColorStateList def;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ requestWindowFeature(Window.FEATURE_NO_TITLE); //will hide the title
+ Objects.requireNonNull(getSupportActionBar()).hide(); // hide the title bar
+ setContentView(R.layout.activity_process);
+
+ if (Build.VERSION.SDK_INT >= 23) {
+ Window window = this.getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+ window.setStatusBarColor(this.getResources().getColor(R.color.white_smoke));
+ window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+ }
+
+ recyclerViewPromoList = findViewById(R.id.recycleViewPromoList);
+ layoutProcess = findViewById(R.id.layoutProcess);
+ layoutFinalizing = findViewById(R.id.layoutFinalizing);
+ textViewNumber = findViewById(R.id.textView_Number);
+ textViewNumberFinal = findViewById(R.id.textView_NumberFinal);
+ textViewPromo = findViewById(R.id.textView_Promo);
+ btnBack = findViewById(R.id.backButton);
+ btnNextToSend = findViewById(R.id.btn_nextToSend);
+ btnSend = findViewById(R.id.btn_send);
+ btnClose = findViewById(R.id.btn_close);
+
+ btn5 = findViewById(R.id.btn_5);
+ btn10 = findViewById(R.id.btn_10);
+ btn20 = findViewById(R.id.btn_20);
+ btn25 = findViewById(R.id.btn_25);
+ btn30 = findViewById(R.id.btn_30);
+ btn50 = findViewById(R.id.btn_50);
+ btn100 = findViewById(R.id.btn_100);
+ edtAmount = findViewById(R.id.editTextAmount);
+
+ coordinatorLayoutRegular = findViewById(R.id.coordinatorRegular);
+ selectTask1 = findViewById(R.id.selectTask1);
+ itemRegular = findViewById(R.id.itemRegular);
+ itemPromo = findViewById(R.id.itemPromo);
+
+ def = itemPromo.getTextColors();
+ dbHandler = new DBHandler(GlobeTMProcessActivity.this);
+
+ itemRegular.setOnClickListener(v -> {
+ selectTask1.animate().x(0).setDuration(100);
+ itemRegular.setTextColor(getResources().getColor(R.color.black));
+ itemPromo.setTextColor(def);
+ clearData();
+ coordinatorLayoutRegular.setVisibility(View.VISIBLE);
+ recyclerViewPromoList.setVisibility(View.GONE);
+ });
+ itemPromo.setOnClickListener(v -> {
+ recyclerViewPromoList.setVisibility(View.VISIBLE);
+ setAdapter();
+ itemPromo.setTextColor(getResources().getColor(R.color.black));
+ itemRegular.setTextColor(def);
+ int size = itemPromo.getWidth();
+ selectTask1.animate().x(size).setDuration(100);
+ coordinatorLayoutRegular.setVisibility(View.GONE);
+ });
+
+ promoLists = new ArrayList<>();
+
+ Intent intent = getIntent();
+ Number = intent.getStringExtra("number");
+ telecom = intent.getStringExtra("telecom");
+
+ textViewNumber.setText(Number);
+
+ btn5.setOnClickListener(v -> edtAmount.setText(btn5.getText().toString().trim()));
+ btn10.setOnClickListener(v -> edtAmount.setText(btn10.getText().toString().trim()));
+ btn20.setOnClickListener(v -> edtAmount.setText(btn20.getText().toString().trim()));
+ btn25.setOnClickListener(v -> edtAmount.setText(btn25.getText().toString().trim()));
+ btn30.setOnClickListener(v -> edtAmount.setText(btn30.getText().toString().trim()));
+ btn50.setOnClickListener(v -> edtAmount.setText(btn50.getText().toString().trim()));
+ btn100.setOnClickListener(v -> edtAmount.setText(btn100.getText().toString().trim()));
+ btnBack.setOnClickListener(v -> finish());
+
+ btnNextToSend.setOnClickListener(v -> {
+ InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
+ inputMethodManager.hideSoftInputFromWindow(v.getApplicationWindowToken(),0);
+ ProcessLoad();
+ });
+
+ btnClose.setOnClickListener(v -> {
+ layoutProcess.setVisibility(View.VISIBLE);
+ layoutFinalizing.setVisibility(View.GONE);
+ });
+
+ btnSend.setOnClickListener(v -> Send());
+ }
+
+ private void ProcessLoad(){
+ Promo = "Regular Load "+edtAmount.getText().toString().trim();
+
+ if (TextUtils.isEmpty(edtAmount.getText())){
+ Toast.makeText(GlobeTMProcessActivity.this, "Input or Choose Amount", Toast.LENGTH_SHORT).show();
+ } else {
+ textViewNumberFinal.setText(Number);
+ textViewPromo.setText(Promo);
+ layoutProcess.setVisibility(View.GONE);
+ layoutFinalizing.setVisibility(View.VISIBLE);
+ }
+ }
+
+ private void Send(){
+ Toast.makeText(getBaseContext(), "Processing...!",
+ Toast.LENGTH_SHORT).show();
+ btnSend.setVisibility(View.GONE);
+
+ String SMS = Number+" "+edtAmount.getText().toString().trim();
+
+ String SENT = "SMS_SENT";
+ String DELIVERED = "SMS_DELIVERED";
+
+ PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
+ new Intent(SENT), 0);
+
+ registerReceiver(new BroadcastReceiver(){
+ @Override
+ public void onReceive(Context arg0, Intent arg1) {
+ switch (getResultCode())
+ {
+ case Activity.RESULT_OK:
+ Toast.makeText(getBaseContext(), "Message Sent!",
+ Toast.LENGTH_SHORT).show();
+ new Handler().postDelayed(() -> finish(), 1000);
+ break;
+ case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
+ Toast.makeText(getBaseContext(), "Generic Failure",
+ Toast.LENGTH_SHORT).show();
+ layoutProcess.setVisibility(View.VISIBLE);
+ layoutFinalizing.setVisibility(View.GONE);
+ btnSend.setVisibility(View.VISIBLE);
+ break;
+ case SmsManager.RESULT_ERROR_NO_SERVICE:
+ Toast.makeText(getBaseContext(), "No Service!",
+ Toast.LENGTH_SHORT).show();
+ layoutProcess.setVisibility(View.VISIBLE);
+ layoutFinalizing.setVisibility(View.GONE);
+ btnSend.setVisibility(View.VISIBLE);
+ break;
+ case SmsManager.RESULT_ERROR_NULL_PDU:
+ Toast.makeText(getBaseContext(), "Null PDU",
+ Toast.LENGTH_SHORT).show();
+ layoutProcess.setVisibility(View.VISIBLE);
+ layoutFinalizing.setVisibility(View.GONE);
+ btnSend.setVisibility(View.VISIBLE);
+ break;
+ case SmsManager.RESULT_ERROR_RADIO_OFF:
+ Toast.makeText(getBaseContext(), "Radio Off!",
+ Toast.LENGTH_SHORT).show();
+ layoutProcess.setVisibility(View.VISIBLE);
+ layoutFinalizing.setVisibility(View.GONE);
+ btnSend.setVisibility(View.VISIBLE);
+ break;
+ }
+ }
+ }, new IntentFilter(SENT));
+
+ PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
+ new Intent(DELIVERED), 0);
+
+ registerReceiver(new BroadcastReceiver(){
+ @Override
+ public void onReceive(Context arg0, Intent arg1) {
+ switch (getResultCode())
+ {
+ case Activity.RESULT_OK:
+ Toast.makeText(getBaseContext(), "SMS Delivered!",
+ Toast.LENGTH_SHORT).show();
+ break;
+ case Activity.RESULT_CANCELED:
+ Toast.makeText(getBaseContext(), "SMS Not Delivered!",
+ Toast.LENGTH_SHORT).show();
+ break;
+ }
+ }
+ }, new IntentFilter(DELIVERED));
+
+ SmsManager sms = SmsManager.getDefault();
+ sms.sendTextMessage(ServerNumber, null, SMS, sentPI, deliveredPI);
+ }
+
+ private void setAdapter(){
+ promoLists = dbHandler.readPromo(telecom);
+
+ AdapterPromoList adapter = new AdapterPromoList(promoLists);
+ RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
+ recyclerViewPromoList.setLayoutManager(layoutManager);
+ recyclerViewPromoList.setItemAnimator(new DefaultItemAnimator());
+ recyclerViewPromoList.setAdapter(adapter);
+ }
+
+ public void clearData() {
+ AdapterPromoList adapter = new AdapterPromoList(promoLists);
+ promoLists.clear(); // clear list
+ adapter.notifyDataSetChanged(); // let your adapter know about the changes and reload view.
+ }
+
+ @Override
+ public void onBackPressed() {
+ finish();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/aqp/mye_loading/MainActivity.java b/app/src/main/java/com/aqp/mye_loading/MainActivity.java
new file mode 100644
index 0000000..c1252a9
--- /dev/null
+++ b/app/src/main/java/com/aqp/mye_loading/MainActivity.java
@@ -0,0 +1,354 @@
+package com.aqp.mye_loading;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+
+import android.Manifest;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Bundle;
+import android.provider.ContactsContract;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class MainActivity extends AppCompatActivity {
+ private static final int MY_PERMISSIONS_REQUEST_SEND_SMS = 1 ;
+ private static final int CONTACT_PICKER_RESULT = 111;
+ Button btnExit, btnNextToProcess, btnContacts, btnNextToProcessContact, btnClose, btnAddPromo, btnClosePromo, btnCloseTelecom,
+ btnGlobe, btnSmart, btnTM, btnTNT, btnGlobeT, btnSmartT, btnTMT, btnTNTT;
+ EditText eTNumber, eTContactNumber;
+ TextView tvContactName, tvBalance, tvVersion;
+ String Number, ContactNumber;
+ LinearLayout layoutContact, layoutMain, layoutAddPromo, layoutTelecom;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ requestWindowFeature(Window.FEATURE_NO_TITLE); //will hide the title
+ Objects.requireNonNull(getSupportActionBar()).hide(); // hide the title bar
+ setContentView(R.layout.activity_main);
+
+ if (Build.VERSION.SDK_INT >= 23) {
+ Window window = this.getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+ window.setStatusBarColor(this.getResources().getColor(R.color.white_smoke));
+ window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+ }
+
+ btnExit = findViewById(R.id.btn_Exit);
+ btnNextToProcess = findViewById(R.id.btn_nextToProcess);
+ btnContacts = findViewById(R.id.btn_savedContact);
+ eTNumber = findViewById(R.id.editTextNumber);
+ btnNextToProcessContact = findViewById(R.id.btn_nextToProcessContact);
+ btnClose = findViewById(R.id.btn_close);
+ btnAddPromo = findViewById(R.id.btn_addPromo);
+ btnClosePromo = findViewById(R.id.btn_closePromo);
+ btnGlobe = findViewById(R.id.btn_Globe);
+ btnSmart = findViewById(R.id.btn_Smart);
+ btnTM = findViewById(R.id.btn_TM);
+ btnTNT = findViewById(R.id.btn_TNT);
+ btnGlobeT = findViewById(R.id.btn_GlobeT);
+ btnSmartT = findViewById(R.id.btn_SmartT);
+ btnTMT = findViewById(R.id.btn_TMT);
+ btnTNTT = findViewById(R.id.btn_TNTT);
+ btnCloseTelecom = findViewById(R.id.btn_closeTelecom);
+ eTContactNumber = findViewById(R.id.editTextContactNumber);
+ tvContactName = findViewById(R.id.textView_ContactName);
+ layoutContact = findViewById(R.id.layoutContacts);
+ layoutMain = findViewById(R.id.layoutMain);
+ layoutAddPromo = findViewById(R.id.layoutAddPromo);
+ layoutTelecom = findViewById(R.id.layoutTelecom);
+ tvBalance = findViewById(R.id.textViewBalance);
+ tvVersion = findViewById(R.id.tv_Version);
+
+ if((ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) & ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)) != PackageManager.PERMISSION_GRANTED){
+ checkPermission();
+ } else {
+ GetBalanceSMS();
+ }
+
+ btnContacts.setOnClickListener(v -> {
+ layoutMain.setVisibility(View.GONE);
+ layoutContact.setVisibility(View.VISIBLE);
+ doLaunchContactPicker(v);
+ });
+ tvContactName.setOnClickListener(this::doLaunchContactPicker);
+
+ btnNextToProcess.setOnClickListener(v -> validateNumber());
+ btnNextToProcessContact.setOnClickListener(v -> validateNumberContact());
+
+ btnAddPromo.setOnClickListener(view -> {
+ layoutMain.setVisibility(View.GONE);
+ layoutAddPromo.setVisibility(View.VISIBLE);
+ AddPromo();
+ });
+ //Close and Exit
+ btnClosePromo.setOnClickListener(view -> {
+ layoutMain.setVisibility(View.VISIBLE);
+ layoutAddPromo.setVisibility(View.GONE);
+ });
+ btnClose.setOnClickListener(v -> {
+ layoutMain.setVisibility(View.VISIBLE);
+ layoutContact.setVisibility(View.GONE);
+ });
+ btnCloseTelecom.setOnClickListener(v -> {
+ layoutMain.setVisibility(View.VISIBLE);
+ layoutTelecom.setVisibility(View.GONE);
+ });
+ btnExit.setOnClickListener(v -> {
+ finishAffinity();
+ System.exit(0);
+ });
+ String version = "App Version: "+BuildConfig.VERSION_NAME;
+ tvVersion.setText(version);
+ }
+
+ private void validateNumber(){
+ Number = eTNumber.getText().toString().trim();
+
+ if (TextUtils.isEmpty(Number)) {
+ Toast.makeText(MainActivity.this, "Input the Numbers", Toast.LENGTH_SHORT).show();
+ return;
+ }
+ if (Number.length() < 11){
+ Toast.makeText(MainActivity.this, "Numbers should be 11 digits", Toast.LENGTH_SHORT).show();
+ return;
+ }
+
+ layoutMain.setVisibility(View.GONE);
+ layoutTelecom.setVisibility(View.VISIBLE);
+
+ btnTNTT.setOnClickListener(view -> {
+ Intent intent = new Intent(MainActivity.this, SmartTNTActivity.class);
+ intent.putExtra("number", Number.replace(" ", ""));
+ intent.putExtra("telecom", "TNT");
+ startActivity(intent);
+ layoutTelecom.setVisibility(View.GONE);
+ layoutMain.setVisibility(View.VISIBLE);
+ });
+ btnTMT.setOnClickListener(view -> {
+ Intent intent = new Intent(MainActivity.this, GlobeTMProcessActivity.class);
+ intent.putExtra("number", Number.replace(" ", ""));
+ intent.putExtra("telecom", "TM");
+ startActivity(intent);
+ layoutTelecom.setVisibility(View.GONE);
+ layoutMain.setVisibility(View.VISIBLE);
+ });
+ btnSmartT.setOnClickListener(view -> {
+ Intent intent = new Intent(MainActivity.this, SmartTNTActivity.class);
+ intent.putExtra("number", Number.replace(" ", ""));
+ intent.putExtra("telecom", "Smart");
+ startActivity(intent);
+ layoutTelecom.setVisibility(View.GONE);
+ layoutMain.setVisibility(View.VISIBLE);
+ });
+ btnGlobeT.setOnClickListener(view -> {
+ Intent intent = new Intent(MainActivity.this, GlobeTMProcessActivity.class);
+ intent.putExtra("number", Number.replace(" ", ""));
+ intent.putExtra("telecom", "Globe");
+ startActivity(intent);
+ layoutTelecom.setVisibility(View.GONE);
+ layoutMain.setVisibility(View.VISIBLE);
+ });
+ }
+ private void validateNumberContact(){
+ ContactNumber = eTContactNumber.getText().toString().trim().replace("+63","0");
+
+ if (TextUtils.isEmpty(ContactNumber)) {
+ Toast.makeText(MainActivity.this, "Input the Numbers", Toast.LENGTH_SHORT).show();
+ return;
+ }
+ if (ContactNumber.length() < 11){
+ Toast.makeText(MainActivity.this, "Numbers should be 11 digits", Toast.LENGTH_SHORT).show();
+ return;
+ }
+
+ layoutMain.setVisibility(View.GONE);
+ layoutTelecom.setVisibility(View.VISIBLE);
+ layoutContact.setVisibility(View.GONE);
+
+ btnTNTT.setOnClickListener(view -> {
+ Intent intent = new Intent(MainActivity.this, SmartTNTActivity.class);
+ intent.putExtra("number", ContactNumber.replace(" ", ""));
+ intent.putExtra("telecom", "TNT");
+ startActivity(intent);
+ layoutTelecom.setVisibility(View.GONE);
+ layoutMain.setVisibility(View.VISIBLE);
+ });
+ btnTMT.setOnClickListener(view -> {
+ Intent intent = new Intent(MainActivity.this, GlobeTMProcessActivity.class);
+ intent.putExtra("number", ContactNumber.replace(" ", ""));
+ intent.putExtra("telecom", "TM");
+ startActivity(intent);
+ layoutTelecom.setVisibility(View.GONE);
+ layoutMain.setVisibility(View.VISIBLE);
+ });
+ btnSmartT.setOnClickListener(view -> {
+ Intent intent = new Intent(MainActivity.this, SmartTNTActivity.class);
+ intent.putExtra("number", ContactNumber.replace(" ", ""));
+ intent.putExtra("telecom", "Smart");
+ startActivity(intent);
+ layoutTelecom.setVisibility(View.GONE);
+ layoutMain.setVisibility(View.VISIBLE);
+ });
+ btnGlobeT.setOnClickListener(view -> {
+ Intent intent = new Intent(MainActivity.this, GlobeTMProcessActivity.class);
+ intent.putExtra("number", ContactNumber.replace(" ", ""));
+ intent.putExtra("telecom", "Globe");
+ startActivity(intent);
+ layoutTelecom.setVisibility(View.GONE);
+ layoutMain.setVisibility(View.VISIBLE);
+ });
+ }
+
+ private void AddPromo(){
+ btnTNT.setOnClickListener(view -> {
+ Intent intent = new Intent(MainActivity.this, AddPromoActivity.class);
+ intent.putExtra("telecom", "TNT");
+ startActivity(intent);
+ layoutAddPromo.setVisibility(View.GONE);
+ layoutMain.setVisibility(View.VISIBLE);
+ });
+ btnTM.setOnClickListener(view -> {
+ Intent intent = new Intent(MainActivity.this, AddPromoActivity.class);
+ intent.putExtra("telecom", "TM");
+ startActivity(intent);
+ layoutAddPromo.setVisibility(View.GONE);
+ layoutMain.setVisibility(View.VISIBLE);
+ });
+ btnSmart.setOnClickListener(view -> {
+ Intent intent = new Intent(MainActivity.this, AddPromoActivity.class);
+ intent.putExtra("telecom", "Smart");
+ startActivity(intent);
+ layoutAddPromo.setVisibility(View.GONE);
+ layoutMain.setVisibility(View.VISIBLE);
+ });
+ btnGlobe.setOnClickListener(view -> {
+ Intent intent = new Intent(MainActivity.this, AddPromoActivity.class);
+ intent.putExtra("telecom", "Globe");
+ startActivity(intent);
+ layoutAddPromo.setVisibility(View.GONE);
+ layoutMain.setVisibility(View.VISIBLE);
+ });
+ }
+
+ public void doLaunchContactPicker(View view) {
+ Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
+ ContactsContract.Contacts.CONTENT_URI);
+ startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);
+ }
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if ((requestCode == CONTACT_PICKER_RESULT) && (resultCode == RESULT_OK)) {
+ if (data != null) {
+ Uri contactData = data.getData();
+
+ try {
+
+ String id = contactData.getLastPathSegment();
+ String[] columns = {ContactsContract.CommonDataKinds.Phone.DATA, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME};
+ Cursor phoneCur = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, columns,
+ ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ + " = ?", new String[]{id},
+ null);
+
+ final ArrayList phonesList = new ArrayList<>();
+ String Name = null;
+ if (phoneCur.moveToFirst()) {
+ do {
+ Name = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
+ String phone = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
+ phonesList.add(phone);
+ } while (phoneCur.moveToNext());
+ tvContactName.setText(Name);
+ }
+
+ phoneCur.close();
+
+ if (phonesList.size() == 0) {
+ Toast.makeText(
+ this, "This contact does not contain any number",
+ Toast.LENGTH_LONG).show();
+ } else if (phonesList.size() == 1) {
+ eTContactNumber.setText(phonesList.get(0));
+ } else {
+
+ final String[] phonesArr = new String[phonesList
+ .size()];
+ for (int i = 0; i < phonesList.size(); i++) {
+ phonesArr[i] = phonesList.get(i);
+ }
+
+ AlertDialog.Builder dialog = new AlertDialog.Builder(
+ MainActivity.this);
+ dialog.setTitle("Name : " + Name);
+ ((AlertDialog.Builder) dialog).setItems(phonesArr,
+ (dialog1, which) -> {
+ String selectedEmail = phonesArr[which];
+ eTContactNumber.setText(selectedEmail);
+ }).create();
+ dialog.show();
+ }
+ } catch (Exception e) {
+ Log.e("FILES", "Failed to get phone data", e);
+ }
+ }
+
+ }
+ }
+
+ private void GetBalanceSMS(){
+ Uri uriSMSURI = Uri.parse("content://sms/inbox");
+ Cursor cur = getContentResolver().query(uriSMSURI, null, "address='8724'", null,null);
+
+ if (cur.moveToFirst()) {
+ Pattern pattern = Pattern.compile("P(.*?)T");
+ Matcher matcher = pattern.matcher(cur.getString(12));
+ if (matcher.find())
+ {
+ tvBalance.setText(Objects.requireNonNull(matcher.group(1)).trim());
+ }
+ }else {
+ Toast.makeText(MainActivity.this, "No SMS Found on 8724", Toast.LENGTH_SHORT).show();
+ }
+
+ }
+
+ private void checkPermission() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.SEND_SMS,Manifest.permission.READ_SMS,Manifest.permission.RECEIVE_SMS,Manifest.permission.READ_CONTACTS},MY_PERMISSIONS_REQUEST_SEND_SMS);
+ }
+ }
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (requestCode == MY_PERMISSIONS_REQUEST_SEND_SMS && grantResults.length > 0 ){
+ if(grantResults[0] == PackageManager.PERMISSION_GRANTED)
+ Toast.makeText(this,"Permission Granted",Toast.LENGTH_SHORT).show();
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/aqp/mye_loading/PromoProcessActivity.java b/app/src/main/java/com/aqp/mye_loading/PromoProcessActivity.java
new file mode 100644
index 0000000..44c2dd2
--- /dev/null
+++ b/app/src/main/java/com/aqp/mye_loading/PromoProcessActivity.java
@@ -0,0 +1,151 @@
+package com.aqp.mye_loading;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Handler;
+import android.telephony.SmsManager;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import java.util.Objects;
+
+public class PromoProcessActivity extends AppCompatActivity {
+ String Number, PromoCode, telecom, Descriptions, Price;
+ String ServerNumber = "8724";
+
+ TextView textViewNumber, textViewPromo, textViewPrice, textViewPromoCode;
+ Button btnSend, btnClose;
+ ImageView imageViewTelecom;
+
+ @SuppressLint("ResourceType")
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ requestWindowFeature(Window.FEATURE_NO_TITLE); //will hide the title
+ Objects.requireNonNull(getSupportActionBar()).hide(); // hide the title bar
+ setContentView(R.layout.activity_promo_process);
+
+ if (Build.VERSION.SDK_INT >= 23) {
+ Window window = this.getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+ window.setStatusBarColor(this.getResources().getColor(R.color.white_smoke));
+ window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+ }
+
+ textViewNumber = findViewById(R.id.textView_NumberFinal);
+ textViewPromo = findViewById(R.id.textView_Promo);
+ textViewPrice = findViewById(R.id.textView_Price);
+ textViewPromoCode = findViewById(R.id.textView_PromoCode);
+ btnSend = findViewById(R.id.btn_send);
+ btnClose = findViewById(R.id.btn_close);
+ imageViewTelecom = findViewById(R.id.imageViewTelecom);
+
+ Intent intent = getIntent();
+ Number = intent.getStringExtra("number");
+ telecom = intent.getStringExtra("telecom");
+ PromoCode = intent.getStringExtra("promoCode");
+ Descriptions = intent.getStringExtra("description");
+ Price = "Total Price: "+intent.getStringExtra("price");
+
+ if (Objects.equals(telecom, "TNT") || Objects.equals(telecom, "Smart")){
+ imageViewTelecom.setImageResource(R.raw.smart_tnt);
+ }
+
+ textViewNumber.setText(Number);
+ textViewPromo.setText(Descriptions);
+ textViewPrice.setText(Price);
+ textViewPromoCode.setText(PromoCode);
+
+ btnClose.setOnClickListener(v -> finish());
+
+ btnSend.setOnClickListener(v -> Send());
+ }
+
+ private void Send(){
+ Toast.makeText(getBaseContext(), "Processing...!",
+ Toast.LENGTH_SHORT).show();
+ btnSend.setVisibility(View.GONE);
+
+ String SMS = Number+" "+PromoCode;
+
+ String SENT = "SMS_SENT";
+ String DELIVERED = "SMS_DELIVERED";
+
+ PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
+ new Intent(SENT), 0);
+
+ registerReceiver(new BroadcastReceiver(){
+ @Override
+ public void onReceive(Context arg0, Intent arg1) {
+ switch (getResultCode())
+ {
+ case Activity.RESULT_OK:
+ Toast.makeText(getBaseContext(), "Message Sent!",
+ Toast.LENGTH_LONG).show();
+ new Handler().postDelayed(() -> finish(), 2000);
+ break;
+ case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
+ Toast.makeText(getBaseContext(), "Generic Failure",
+ Toast.LENGTH_LONG).show();
+ new Handler().postDelayed(() -> finish(), 2000);
+ break;
+ case SmsManager.RESULT_ERROR_NO_SERVICE:
+ Toast.makeText(getBaseContext(), "No Service!",
+ Toast.LENGTH_LONG).show();
+ new Handler().postDelayed(() -> finish(), 2000);
+ break;
+ case SmsManager.RESULT_ERROR_NULL_PDU:
+ Toast.makeText(getBaseContext(), "Null PDU",
+ Toast.LENGTH_LONG).show();
+ new Handler().postDelayed(() -> finish(), 2000);
+ break;
+ case SmsManager.RESULT_ERROR_RADIO_OFF:
+ Toast.makeText(getBaseContext(), "Radio Off!",
+ Toast.LENGTH_LONG).show();
+ new Handler().postDelayed(() -> finish(), 2000);
+ break;
+ }
+ }
+ }, new IntentFilter(SENT));
+
+ PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
+ new Intent(DELIVERED), 0);
+
+ registerReceiver(new BroadcastReceiver(){
+ @Override
+ public void onReceive(Context arg0, Intent arg1) {
+ switch (getResultCode())
+ {
+ case Activity.RESULT_OK:
+ Toast.makeText(getBaseContext(), "SMS Delivered!",
+ Toast.LENGTH_LONG).show();
+ new Handler().postDelayed(() -> finish(), 2000);
+ break;
+ case Activity.RESULT_CANCELED:
+ Toast.makeText(getBaseContext(), "SMS Not Delivered!",
+ Toast.LENGTH_LONG).show();
+ new Handler().postDelayed(() -> finish(), 2000);
+ break;
+ }
+ }
+ }, new IntentFilter(DELIVERED));
+
+ SmsManager sms = SmsManager.getDefault();
+ sms.sendTextMessage(ServerNumber, null, SMS, sentPI, deliveredPI);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/aqp/mye_loading/SmartTNTActivity.java b/app/src/main/java/com/aqp/mye_loading/SmartTNTActivity.java
new file mode 100644
index 0000000..2bd6dbb
--- /dev/null
+++ b/app/src/main/java/com/aqp/mye_loading/SmartTNTActivity.java
@@ -0,0 +1,246 @@
+package com.aqp.mye_loading;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.coordinatorlayout.widget.CoordinatorLayout;
+import androidx.recyclerview.widget.DefaultItemAnimator;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.app.Activity;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.res.ColorStateList;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Handler;
+import android.telephony.SmsManager;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.aqp.mye_loading.adapter.AdapterPromoList;
+import com.aqp.mye_loading.model.PromoList;
+import com.aqp.mye_loading.other.DBHandler;
+
+import java.util.ArrayList;
+import java.util.Objects;
+
+public class SmartTNTActivity extends AppCompatActivity {
+ private ArrayList promoLists;
+ private DBHandler dbHandler;
+ RecyclerView recyclerViewPromoList;
+
+ LinearLayout layoutProcess, layoutFinalizing;
+ TextView textViewNumber, textViewNumberFinal, textViewPromo;
+ Button btnBack, btnNextToSend, btnSend, btnClose;
+ Button btn5,btn10,btn20,btn25,btn30,btn50,btn100;
+ String Number, Promo, telecom;
+ String ServerNumber = "8724";
+ EditText edtAmount;
+
+ CoordinatorLayout coordinatorLayoutRegular;
+ TextView selectTask1, itemRegular, itemPromo;
+ ColorStateList def;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ requestWindowFeature(Window.FEATURE_NO_TITLE); //will hide the title
+ Objects.requireNonNull(getSupportActionBar()).hide(); // hide the title bar
+ setContentView(R.layout.activity_smart_tntactivity);
+
+ if (Build.VERSION.SDK_INT >= 23) {
+ Window window = this.getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+ window.setStatusBarColor(this.getResources().getColor(R.color.white_smoke));
+ window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+ }
+
+ recyclerViewPromoList = findViewById(R.id.recycleViewPromoList);
+ layoutProcess = findViewById(R.id.layoutProcess);
+ layoutFinalizing = findViewById(R.id.layoutFinalizing);
+ textViewNumber = findViewById(R.id.textView_Number);
+ textViewNumberFinal = findViewById(R.id.textView_NumberFinal);
+ textViewPromo = findViewById(R.id.textView_Promo);
+ btnBack = findViewById(R.id.backButton);
+ btnNextToSend = findViewById(R.id.btn_nextToSend);
+ btnSend = findViewById(R.id.btn_send);
+ btnClose = findViewById(R.id.btn_close);
+
+ btn5 = findViewById(R.id.btn_5);
+ btn10 = findViewById(R.id.btn_10);
+ btn20 = findViewById(R.id.btn_20);
+ btn25 = findViewById(R.id.btn_25);
+ btn30 = findViewById(R.id.btn_30);
+ btn50 = findViewById(R.id.btn_50);
+ btn100 = findViewById(R.id.btn_100);
+ edtAmount = findViewById(R.id.editTextAmount);
+
+ coordinatorLayoutRegular = findViewById(R.id.coordinatorRegular);
+ selectTask1 = findViewById(R.id.selectTask1);
+ itemRegular = findViewById(R.id.itemRegular);
+ itemPromo = findViewById(R.id.itemPromo);
+
+ def = itemPromo.getTextColors();
+ dbHandler = new DBHandler(SmartTNTActivity.this);
+
+ itemRegular.setOnClickListener(v -> {
+ selectTask1.animate().x(0).setDuration(100);
+ itemRegular.setTextColor(getResources().getColor(R.color.black));
+ itemPromo.setTextColor(def);
+ clearData();
+ coordinatorLayoutRegular.setVisibility(View.VISIBLE);
+ recyclerViewPromoList.setVisibility(View.GONE);
+ });
+ itemPromo.setOnClickListener(v -> {
+ recyclerViewPromoList.setVisibility(View.VISIBLE);
+ setAdapter();
+ itemPromo.setTextColor(getResources().getColor(R.color.black));
+ itemRegular.setTextColor(def);
+ int size = itemPromo.getWidth();
+ selectTask1.animate().x(size).setDuration(100);
+ coordinatorLayoutRegular.setVisibility(View.GONE);
+ });
+
+ promoLists = new ArrayList<>();
+
+ Intent intent = getIntent();
+ Number = intent.getStringExtra("number");
+ telecom = intent.getStringExtra("telecom");
+
+ textViewNumber.setText(Number);
+
+ btn5.setOnClickListener(v -> edtAmount.setText(btn5.getText().toString().trim()));
+ btn10.setOnClickListener(v -> edtAmount.setText(btn10.getText().toString().trim()));
+ btn20.setOnClickListener(v -> edtAmount.setText(btn20.getText().toString().trim()));
+ btn25.setOnClickListener(v -> edtAmount.setText(btn25.getText().toString().trim()));
+ btn30.setOnClickListener(v -> edtAmount.setText(btn30.getText().toString().trim()));
+ btn50.setOnClickListener(v -> edtAmount.setText(btn50.getText().toString().trim()));
+ btn100.setOnClickListener(v -> edtAmount.setText(btn100.getText().toString().trim()));
+ btnBack.setOnClickListener(v -> finish());
+
+ btnNextToSend.setOnClickListener(v -> {
+ InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
+ inputMethodManager.hideSoftInputFromWindow(v.getApplicationWindowToken(),0);
+ ProcessLoad();
+ });
+
+ btnClose.setOnClickListener(v -> {
+ layoutProcess.setVisibility(View.VISIBLE);
+ layoutFinalizing.setVisibility(View.GONE);
+ });
+
+ btnSend.setOnClickListener(v -> Send());
+ }
+ private void ProcessLoad(){
+ Promo = "Regular Load "+edtAmount.getText().toString().trim();
+
+ if (TextUtils.isEmpty(edtAmount.getText())){
+ Toast.makeText(SmartTNTActivity.this, "Input or Choose Amount", Toast.LENGTH_SHORT).show();
+ } else {
+ textViewNumberFinal.setText(Number);
+ textViewPromo.setText(Promo);
+
+ layoutProcess.setVisibility(View.GONE);
+ layoutFinalizing.setVisibility(View.VISIBLE);
+ }
+
+
+ }
+
+ private void Send(){
+ String SMS = Number+" "+edtAmount.getText().toString().trim();
+
+ String SENT = "SMS_SENT";
+ String DELIVERED = "SMS_DELIVERED";
+
+ PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
+ new Intent(SENT), 0);
+
+ registerReceiver(new BroadcastReceiver(){
+ @Override
+ public void onReceive(Context arg0, Intent arg1) {
+ switch (getResultCode())
+ {
+ case Activity.RESULT_OK:
+ Toast.makeText(getBaseContext(), "Message Sent!",
+ Toast.LENGTH_SHORT).show();
+ new Handler().postDelayed(() -> finish(), 1000);
+ break;
+ case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
+ Toast.makeText(getBaseContext(), "Generic Failure",
+ Toast.LENGTH_SHORT).show();
+ break;
+ case SmsManager.RESULT_ERROR_NO_SERVICE:
+ Toast.makeText(getBaseContext(), "No Service!",
+ Toast.LENGTH_SHORT).show();
+ break;
+ case SmsManager.RESULT_ERROR_NULL_PDU:
+ Toast.makeText(getBaseContext(), "Null PDU",
+ Toast.LENGTH_SHORT).show();
+ break;
+ case SmsManager.RESULT_ERROR_RADIO_OFF:
+ Toast.makeText(getBaseContext(), "Radio Off!",
+ Toast.LENGTH_SHORT).show();
+ break;
+ }
+ }
+ }, new IntentFilter(SENT));
+
+ PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
+ new Intent(DELIVERED), 0);
+
+ registerReceiver(new BroadcastReceiver(){
+ @Override
+ public void onReceive(Context arg0, Intent arg1) {
+ switch (getResultCode())
+ {
+ case Activity.RESULT_OK:
+ Toast.makeText(getBaseContext(), "SMS Delivered!",
+ Toast.LENGTH_SHORT).show();
+ break;
+ case Activity.RESULT_CANCELED:
+ Toast.makeText(getBaseContext(), "SMS Not Delivered!",
+ Toast.LENGTH_SHORT).show();
+ break;
+ }
+ }
+ }, new IntentFilter(DELIVERED));
+
+ SmsManager sms = SmsManager.getDefault();
+ sms.sendTextMessage(ServerNumber, null, SMS, sentPI, deliveredPI);
+
+ }
+
+ private void setAdapter(){
+ promoLists = dbHandler.readPromo(telecom);
+
+ AdapterPromoList adapter = new AdapterPromoList(promoLists);
+ RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
+ recyclerViewPromoList.setLayoutManager(layoutManager);
+ recyclerViewPromoList.setItemAnimator(new DefaultItemAnimator());
+ recyclerViewPromoList.setAdapter(adapter);
+ }
+
+ public void clearData() {
+ AdapterPromoList adapter = new AdapterPromoList(promoLists);
+ promoLists.clear(); // clear list
+ adapter.notifyDataSetChanged(); // let your adapter know about the changes and reload view.
+ }
+
+ @Override
+ public void onBackPressed() {
+ finish();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/aqp/mye_loading/adapter/AdapterPromoList.java b/app/src/main/java/com/aqp/mye_loading/adapter/AdapterPromoList.java
new file mode 100644
index 0000000..9db2be9
--- /dev/null
+++ b/app/src/main/java/com/aqp/mye_loading/adapter/AdapterPromoList.java
@@ -0,0 +1,120 @@
+package com.aqp.mye_loading.adapter;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.Intent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.aqp.mye_loading.other.DBHandler;
+import com.aqp.mye_loading.model.PromoList;
+import com.aqp.mye_loading.PromoProcessActivity;
+import com.aqp.mye_loading.R;
+
+import java.util.ArrayList;
+
+public class AdapterPromoList extends RecyclerView.Adapter {
+ ArrayList promoLists;
+ DBHandler dbHandler;
+ String Number, telecom;
+ Intent intent;
+
+ public AdapterPromoList(ArrayList promoLists) {
+ this.promoLists = promoLists;
+ }
+
+ @NonNull
+ @Override
+ public AdapterPromoList.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_promo, parent,false);
+ return new MyViewHolder(view);
+ }
+ @Override
+ public void onBindViewHolder(@NonNull AdapterPromoList.MyViewHolder holder, int position) {
+
+ String promocode = promoLists.get(position).getPromocode();
+ String price = promoLists.get(position).getPrice();
+ String sms = promoLists.get(position).getSms();
+ String call = promoLists.get(position).getCall();
+ String data = promoLists.get(position).getData();
+ String validity = promoLists.get(position).getValidity();
+
+ holder.tvPromoCode.setText(promocode);
+ holder.tvPrice.setText(price);
+ holder.tvSms.setText(sms);
+ holder.tvCall.setText(call);
+ holder.tvData.setText(data);
+ holder.tvValidity.setText(validity);
+
+ holder.btnDelete.setOnClickListener(view -> {
+ AlertDialog.Builder alertExit = new AlertDialog.Builder(holder.btnDelete.getContext());
+ alertExit.setTitle("Delete Promo")
+ .setMessage("Are you sure, want to delete this promo? " + promoLists.get(position).getPromocode())
+ .setCancelable(false)
+ .setPositiveButton("Yes", (dialog, which) -> {
+ dbHandler.deleteHandler(promoLists.get(position).getId());
+ removeItem(position);
+ Toast.makeText(holder.btnDelete.getContext(), "Successfully Deleted!", Toast.LENGTH_SHORT).show();
+ })
+ .setNegativeButton("No", (dialog, which) -> {
+
+ });
+ AlertDialog dialog = alertExit.create();
+ dialog.show();
+ });
+
+ holder.layoutPromos.setOnClickListener(view -> {
+
+ String SMS = "SMS: " + promoLists.get(position).getSms() +
+ "\nCall: " + promoLists.get(position).getCall() +
+ "\nInternet Data: " + promoLists.get(position).getData() +
+ "\nValidity: "+ promoLists.get(position).getValidity();
+
+ intent = new Intent(holder.layoutPromos.getContext(), PromoProcessActivity.class);
+ intent.putExtra("number", Number);
+ intent.putExtra("telecom", telecom);
+ intent.putExtra("promoCode", promoLists.get(position).getPromocode());
+ intent.putExtra("price", promoLists.get(position).getPrice());
+ intent.putExtra("description", SMS);
+ holder.layoutPromos.getContext().startActivity(intent);
+ });
+ }
+ public void removeItem(int position) {
+ promoLists.remove(position);
+ notifyItemRemoved(position);
+ }
+ @Override
+ public int getItemCount() {
+ return promoLists.size();
+ }
+ public class MyViewHolder extends RecyclerView.ViewHolder {
+ TextView tvPromoCode, tvPrice, tvSms, tvCall, tvData, tvValidity;
+ LinearLayout layoutPromos;
+ Button btnDelete;
+ public MyViewHolder(final View itemView) {
+ super(itemView);
+ layoutPromos = itemView.findViewById(R.id.layoutPromos);
+ tvPromoCode = itemView.findViewById(R.id.textViewPromoCode);
+ tvPrice = itemView.findViewById(R.id.textViewPrice);
+ tvSms = itemView.findViewById(R.id.textViewText);
+ tvCall = itemView.findViewById(R.id.textViewCall);
+ tvData = itemView.findViewById(R.id.textViewData);
+ tvValidity = itemView.findViewById(R.id.textViewValidity);
+ btnDelete = itemView.findViewById(R.id.btn_delete);
+
+ dbHandler = new DBHandler(itemView.getContext());
+ Intent intent = ((Activity) itemView.getContext()).getIntent();
+ Number = intent.getStringExtra("number");
+ telecom = intent.getStringExtra("telecom");
+ }
+ }
+
+}
diff --git a/app/src/main/java/com/aqp/mye_loading/model/PromoList.java b/app/src/main/java/com/aqp/mye_loading/model/PromoList.java
new file mode 100644
index 0000000..e8a96ed
--- /dev/null
+++ b/app/src/main/java/com/aqp/mye_loading/model/PromoList.java
@@ -0,0 +1,76 @@
+package com.aqp.mye_loading.model;
+
+public class PromoList {
+ private String promocode, price, sms, call, data, validity;
+ public int id;
+
+ public PromoList(int id, String promocode, String price, String sms, String call, String data, String validity) {
+ this.id = id;
+ this.promocode = promocode;
+ this.price = price;
+ this.sms = sms;
+ this.call = call;
+ this.data = data;
+ this.validity = validity;
+ }
+
+ public PromoList() {
+
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getPromocode() {
+ return promocode;
+ }
+
+ public void setPromocode(String promocode) {
+ this.promocode = promocode;
+ }
+
+ public String getPrice() {
+ return price;
+ }
+
+ public void setPrice(String price) {
+ this.price = price;
+ }
+
+ public String getSms() {
+ return sms;
+ }
+
+ public void setSms(String sms) {
+ this.sms = sms;
+ }
+
+ public String getCall() {
+ return call;
+ }
+
+ public void setCall(String call) {
+ this.call = call;
+ }
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public String getValidity() {
+ return validity;
+ }
+
+ public void setValidity(String validity) {
+ this.validity = validity;
+ }
+}
diff --git a/app/src/main/java/com/aqp/mye_loading/other/DBHandler.java b/app/src/main/java/com/aqp/mye_loading/other/DBHandler.java
new file mode 100644
index 0000000..38633ca
--- /dev/null
+++ b/app/src/main/java/com/aqp/mye_loading/other/DBHandler.java
@@ -0,0 +1,156 @@
+package com.aqp.mye_loading.other;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+
+import com.aqp.mye_loading.model.PromoList;
+
+import java.util.ArrayList;
+import java.util.Objects;
+
+public class DBHandler extends SQLiteOpenHelper {
+
+ // creating a constant variables for our database.
+ // below variable is for our database name.
+ private static final String DB_NAME = "promodb";
+
+ // below int is our database version
+ private static final int DB_VERSION = 1;
+
+ // below variable is for our table name.
+ private static final String TABLE_NAME = "mypromo";
+
+ // below variable is for our id column.
+ private static final String ID_COL = "id";
+
+ // below variable is for our name column
+ private static final String TELCO_COL = "telecom";
+ private static final String PROMO_COL = "promocode";
+ private static final String SMS_COL = "sms";
+ private static final String CALL_COL = "call";
+ private static final String DATA_COL = "data";
+ private static final String VALIDITY_COL = "validity";
+ private static final String PRICE_COL = "price";
+
+ // creating a constructor for our database handler.
+ public DBHandler(Context context) {
+ super(context, DB_NAME, null, DB_VERSION);
+ }
+
+ // below method is for creating a database by running a sqlite query
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+ // on below line we are creating
+ // an sqlite query and we are
+ // setting our column names
+ // along with their data types.
+ String query = "CREATE TABLE " + TABLE_NAME + " ("
+ + ID_COL + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ + TELCO_COL + " TEXT,"
+ + PROMO_COL + " TEXT,"
+ + SMS_COL + " TEXT,"
+ + CALL_COL + " TEXT,"
+ + DATA_COL + " TEXT,"
+ + VALIDITY_COL + " TEXT,"
+ + PRICE_COL + " TEXT)";
+
+ // at last we are calling a exec sql
+ // method to execute above sql query
+ db.execSQL(query);
+ }
+
+ // this method is use to add new course to our sqlite database.
+ public void addNewPromo(String telecom, String promoCode, String SMS, String Call, String Data, String Validity, String Price) {
+
+ // on below line we are creating a variable for
+ // our sqlite database and calling writable method
+ // as we are writing data in our database.
+ SQLiteDatabase db = this.getWritableDatabase();
+
+ // on below line we are creating a
+ // variable for content values.
+ ContentValues values = new ContentValues();
+
+ // on below line we are passing all values
+ // along with its key and value pair.
+ values.put(TELCO_COL, telecom);
+ values.put(PROMO_COL, promoCode);
+ values.put(SMS_COL, SMS);
+ values.put(CALL_COL, Call);
+ values.put(DATA_COL, Data);
+ values.put(VALIDITY_COL, Validity);
+ values.put(PRICE_COL, Price);
+
+ // after adding all values we are passing
+ // content values to our table.
+ db.insert(TABLE_NAME, null, values);
+
+ // at last we are closing our
+ // database after adding database.
+ db.close();
+ }
+
+ public ArrayList readPromo(String telco) {
+
+ SQLiteDatabase db = this.getReadableDatabase();
+
+ Cursor cursorPromo;
+ ArrayList courseModalArrayList = new ArrayList<>();
+
+ if (Objects.equals(telco, "TM")){
+ cursorPromo = db.rawQuery("SELECT * FROM " + TABLE_NAME + " WHERE telecom = 'TM'", null);
+ } else if (Objects.equals(telco, "Globe")){
+ cursorPromo = db.rawQuery("SELECT * FROM " + TABLE_NAME + " WHERE telecom = 'Globe'", null);
+ } else if (Objects.equals(telco, "TNT")){
+ cursorPromo = db.rawQuery("SELECT * FROM " + TABLE_NAME + " WHERE telecom = 'TNT'", null);
+ } else if (Objects.equals(telco, "Smart")){
+ cursorPromo = db.rawQuery("SELECT * FROM " + TABLE_NAME + " WHERE telecom = 'Smart'", null);
+ } else {
+ cursorPromo = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
+ }
+
+ if (cursorPromo.moveToFirst()) {
+ do {
+ courseModalArrayList.add(new PromoList(cursorPromo.getInt(0),
+ cursorPromo.getString(2),
+ cursorPromo.getString(7),
+ cursorPromo.getString(3),
+ cursorPromo.getString(4),
+ cursorPromo.getString(5),
+ cursorPromo.getString(6)));
+ } while (cursorPromo.moveToNext());
+ }
+
+ cursorPromo.close();
+ return courseModalArrayList;
+ }
+
+ public void deleteHandler(int ID) {
+
+ String query = "Select*FROM " + TABLE_NAME + " WHERE " + ID_COL + " = '" + ID + "'";
+ SQLiteDatabase db = this.getWritableDatabase();
+ Cursor cursor = db.rawQuery(query, null);
+ PromoList promo = new PromoList();
+ if (cursor.moveToFirst()) {
+ promo.setId(Integer.parseInt(cursor.getString(0)));
+ db.delete(TABLE_NAME, ID_COL + "=?",
+ new String[] {
+ String.valueOf(promo.getId())
+ });
+ System.out.println("DELETED!!");
+ cursor.close();
+ }
+ System.out.println("TEST!!"+query);
+ db.close();
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ // this method is called to check if the table exists already.
+ db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
+ onCreate(db);
+ }
+}
diff --git a/app/src/main/java/com/aqp/mye_loading/other/MessageListener.java b/app/src/main/java/com/aqp/mye_loading/other/MessageListener.java
new file mode 100644
index 0000000..cdc9f88
--- /dev/null
+++ b/app/src/main/java/com/aqp/mye_loading/other/MessageListener.java
@@ -0,0 +1,9 @@
+package com.aqp.mye_loading.other;
+
+public interface MessageListener {
+ /**
+ * To call this method when new message received and send back
+ * @param message Message
+ */
+ void messageReceived(String message);
+}
diff --git a/app/src/main/java/com/aqp/mye_loading/other/MessageReceiver.java b/app/src/main/java/com/aqp/mye_loading/other/MessageReceiver.java
new file mode 100644
index 0000000..246fe7c
--- /dev/null
+++ b/app/src/main/java/com/aqp/mye_loading/other/MessageReceiver.java
@@ -0,0 +1,29 @@
+package com.aqp.mye_loading.other;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.telephony.SmsMessage;
+
+import com.aqp.mye_loading.other.MessageListener;
+
+public class MessageReceiver extends BroadcastReceiver {
+
+ private static MessageListener mListener;
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Bundle data = intent.getExtras();
+ Object[] pdus = (Object[]) data.get("pdus");
+ for(int i=0; i
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/back_select.xml b/app/src/main/res/drawable/back_select.xml
new file mode 100644
index 0000000..cc2f9c9
--- /dev/null
+++ b/app/src/main/res/drawable/back_select.xml
@@ -0,0 +1,10 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/back_tabs.xml b/app/src/main/res/drawable/back_tabs.xml
new file mode 100644
index 0000000..41c66b6
--- /dev/null
+++ b/app/src/main/res/drawable/back_tabs.xml
@@ -0,0 +1,13 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/container.xml b/app/src/main/res/drawable/container.xml
new file mode 100644
index 0000000..cd9ad4e
--- /dev/null
+++ b/app/src/main/res/drawable/container.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add.xml b/app/src/main/res/drawable/ic_add.xml
new file mode 100644
index 0000000..0f3a211
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_back.xml b/app/src/main/res/drawable/ic_back.xml
new file mode 100644
index 0000000..05099f7
--- /dev/null
+++ b/app/src/main/res/drawable/ic_back.xml
@@ -0,0 +1,12 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_call.xml b/app/src/main/res/drawable/ic_call.xml
new file mode 100644
index 0000000..b072beb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_call.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_code.xml b/app/src/main/res/drawable/ic_code.xml
new file mode 100644
index 0000000..79e180c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_code.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_delete.xml b/app/src/main/res/drawable/ic_delete.xml
new file mode 100644
index 0000000..c922063
--- /dev/null
+++ b/app/src/main/res/drawable/ic_delete.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_exit.xml b/app/src/main/res/drawable/ic_exit.xml
new file mode 100644
index 0000000..c9027f0
--- /dev/null
+++ b/app/src/main/res/drawable/ic_exit.xml
@@ -0,0 +1,11 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_number.xml b/app/src/main/res/drawable/ic_number.xml
new file mode 100644
index 0000000..891f805
--- /dev/null
+++ b/app/src/main/res/drawable/ic_number.xml
@@ -0,0 +1,11 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_person.xml b/app/src/main/res/drawable/ic_person.xml
new file mode 100644
index 0000000..b1ff6a8
--- /dev/null
+++ b/app/src/main/res/drawable/ic_person.xml
@@ -0,0 +1,11 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_price.xml b/app/src/main/res/drawable/ic_price.xml
new file mode 100644
index 0000000..d61dd52
--- /dev/null
+++ b/app/src/main/res/drawable/ic_price.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_sell.xml b/app/src/main/res/drawable/ic_sell.xml
new file mode 100644
index 0000000..d61dd52
--- /dev/null
+++ b/app/src/main/res/drawable/ic_sell.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_signal.xml b/app/src/main/res/drawable/ic_signal.xml
new file mode 100644
index 0000000..41965e4
--- /dev/null
+++ b/app/src/main/res/drawable/ic_signal.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_sms.xml b/app/src/main/res/drawable/ic_sms.xml
new file mode 100644
index 0000000..818b48f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_sms.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_time.xml b/app/src/main/res/drawable/ic_time.xml
new file mode 100644
index 0000000..136a3db
--- /dev/null
+++ b/app/src/main/res/drawable/ic_time.xml
@@ -0,0 +1,13 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/rounded_btn.xml b/app/src/main/res/drawable/rounded_btn.xml
new file mode 100644
index 0000000..09bda38
--- /dev/null
+++ b/app/src/main/res/drawable/rounded_btn.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_add_promo.xml b/app/src/main/res/layout/activity_add_promo.xml
new file mode 100644
index 0000000..7615ff8
--- /dev/null
+++ b/app/src/main/res/layout/activity_add_promo.xml
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..eaa22f6
--- /dev/null
+++ b/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,577 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_process.xml b/app/src/main/res/layout/activity_process.xml
new file mode 100644
index 0000000..6490fe4
--- /dev/null
+++ b/app/src/main/res/layout/activity_process.xml
@@ -0,0 +1,182 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_promo_process.xml b/app/src/main/res/layout/activity_promo_process.xml
new file mode 100644
index 0000000..c0d4fe2
--- /dev/null
+++ b/app/src/main/res/layout/activity_promo_process.xml
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_smart_tntactivity.xml b/app/src/main/res/layout/activity_smart_tntactivity.xml
new file mode 100644
index 0000000..742d526
--- /dev/null
+++ b/app/src/main/res/layout/activity_smart_tntactivity.xml
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/content_promo_load.xml b/app/src/main/res/layout/content_promo_load.xml
new file mode 100644
index 0000000..e1b4781
--- /dev/null
+++ b/app/src/main/res/layout/content_promo_load.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/content_regular_load.xml b/app/src/main/res/layout/content_regular_load.xml
new file mode 100644
index 0000000..cc9ce03
--- /dev/null
+++ b/app/src/main/res/layout/content_regular_load.xml
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/list_promo.xml b/app/src/main/res/layout/list_promo.xml
new file mode 100644
index 0000000..c868c5b
--- /dev/null
+++ b/app/src/main/res/layout/list_promo.xml
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..036d09b
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..036d09b
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..3c770d9
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..2f22e12
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..30be373
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..d7ed860
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..d22243a
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..1af52e1
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..39b9055
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..4c5064b
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..10c9fe5
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..6ba52c2
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/raw/globe_tm_logo.png b/app/src/main/res/raw/globe_tm_logo.png
new file mode 100644
index 0000000..1d6f5f8
Binary files /dev/null and b/app/src/main/res/raw/globe_tm_logo.png differ
diff --git a/app/src/main/res/raw/smart_tnt.png b/app/src/main/res/raw/smart_tnt.png
new file mode 100644
index 0000000..40a1534
Binary files /dev/null and b/app/src/main/res/raw/smart_tnt.png differ
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..c881495
--- /dev/null
+++ b/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..4408752
--- /dev/null
+++ b/app/src/main/res/values/colors.xml
@@ -0,0 +1,155 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #ffdde1
+ #FFFFF0
+ #FFFFE0
+ #FFFF00
+ #FFFAFA
+ #FFFAF0
+ #FFFACD
+ #FFF8DC
+ #FFF5EE
+ #FFF0F5
+ #FFEFD5
+ #FFEBCD
+ #FFE4E1
+ #FFE4C4
+ #FFE4B5
+ #FFDEAD
+ #FFDAB9
+ #FFD700
+ #FFC0CB
+ #FFB6C1
+ #FFA500
+ #FFA07A
+ #FF8C00
+ #FF7F50
+ #FF69B4
+ #FF6347
+ #FF4500
+ #FF1493
+ #FF00FF
+ #FF00FF
+ #FF0000
+ #FDF5E6
+ #FAFAD2
+ #FAF0E6
+ #FAEBD7
+ #FA8072
+ #F8F8FF
+ #F5FFFA
+ #F5F5F5
+ #F5F5DC
+ #F5DEB3
+ #F4A460
+ #F0FFFF
+ #F0FFF0
+ #F0F8FF
+ #F0E68C
+ #F08080
+ #EEE8AA
+ #EE82EE
+ #E9967A
+ #E6E6FA
+ #E0FFFF
+ #DEB887
+ #DDA0DD
+ #DCDCDC
+ #DC143C
+ #DB7093
+ #DAA520
+ #DA70D6
+ #D8BFD8
+ #D3D3D3
+ #D2B48C
+ #D2691E
+ #CD853F
+ #CD5C5C
+ #C71585
+ #C0C0C0
+ #BDB76B
+ #BC8F8F
+ #BA55D3
+ #B8860B
+ #B22222
+ #B0E0E6
+ #B0C4DE
+ #AFEEEE
+ #ADFF2F
+ #ADD8E6
+ #A9A9A9
+ #A52A2A
+ #A0522D
+ #9ACD32
+ #9932CC
+ #98FB98
+ #9400D3
+ #9370DB
+ #90EE90
+ #8FBC8F
+ #8B4513
+ #8B008B
+ #8B0000
+ #8A2BE2
+ #87CEFA
+ #87CEEB
+ #808080
+ #808000
+ #800080
+ #800000
+ #7FFFD4
+ #7FFF00
+ #7CFC00
+ #7B68EE
+ #778899
+ #708090
+ #6B8E23
+ #6A5ACD
+ #696969
+ #66CDAA
+ #6495ED
+ #5F9EA0
+ #556B2F
+ #4B0082
+ #48D1CC
+ #483D8B
+ #4682B4
+ #4169E1
+ #40E0D0
+ #3CB371
+ #32CD32
+ #2F4F4F
+ #2E8B57
+ #228B22
+ #20B2AA
+ #1E90FF
+ #191970
+ #00FFFF
+ #00FFFF
+ #00FF7F
+ #00FF00
+ #00FA9A
+ #00CED1
+ #00BFFF
+ #008B8B
+ #008080
+ #008000
+ #006400
+ #0000FF
+ #0000CD
+ #00008B
+ #000080
+ #202030
+ #2b2b3b
+ #a2abdc
+ #363644
+ #D6D9EA
+ #202030
+
\ No newline at end of file
diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml
new file mode 100644
index 0000000..c5d5899
--- /dev/null
+++ b/app/src/main/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #FFFFFF
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..b622368
--- /dev/null
+++ b/app/src/main/res/values/strings.xml
@@ -0,0 +1,26 @@
+
+ My E-Loading
+ Sim Number
+ Next
+ Select Contact
+ Regular Load
+ Mobile Data
+ Amount:
+ Close
+ Send
+ Promo Load
+
+
+ Globe
+ TM
+ Telco Name
+ Buy Load For:
+ Customer Number
+ Name Promo
+ Network Logo
+ My E-Loading
+ Current Balance:
+ Loading...
+ 09
+ Add Promo
+
\ No newline at end of file
diff --git a/app/src/main/res/values/tasks_mission.xml b/app/src/main/res/values/tasks_mission.xml
new file mode 100644
index 0000000..a6b3dae
--- /dev/null
+++ b/app/src/main/res/values/tasks_mission.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
new file mode 100644
index 0000000..d94b891
--- /dev/null
+++ b/app/src/main/res/values/themes.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/test/java/com/aqp/mye_loading/ExampleUnitTest.java b/app/src/test/java/com/aqp/mye_loading/ExampleUnitTest.java
new file mode 100644
index 0000000..6454ae8
--- /dev/null
+++ b/app/src/test/java/com/aqp/mye_loading/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.aqp.mye_loading;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..f75f176
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,24 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+ repositories {
+ google()
+ mavenCentral()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:7.2.1'
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..9ed6cc7
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,14 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+android.useAndroidX=true
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..f6b961f
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..ebd4282
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Mon Jan 31 18:19:15 SGT 2022
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
new file mode 100644
index 0000000..cccdd3d
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..f955316
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..53094e2
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "My E-Loading"
+include ':app'