diff --git a/app/src/main/java/com/example/bdkipoc/MainActivity.java b/app/src/main/java/com/example/bdkipoc/MainActivity.java
index 9e0c089..1a3db64 100644
--- a/app/src/main/java/com/example/bdkipoc/MainActivity.java
+++ b/app/src/main/java/com/example/bdkipoc/MainActivity.java
@@ -21,23 +21,24 @@ import com.google.android.material.button.MaterialButton;
public class MainActivity extends AppCompatActivity {
- private boolean isExpanded = false;
- private CardView cardBantuan, cardInfoToko;
+ private boolean isExpanded = false; // False = showing only 9 main menus, True = showing all 15 menus
private MaterialButton btnLainnya;
@Override
public void onWindowFocusChanged(boolean hasFocus) {
- super.onWindowFocusChanged(hasFocus);
- if (hasFocus) {
- getWindow().getDecorView().setSystemUiVisibility(
- View.SYSTEM_UI_FLAG_LAYOUT_STABLE
- | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
- | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
- | View.SYSTEM_UI_FLAG_FULLSCREEN
- | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
+ super.onWindowFocusChanged(hasFocus);
+ if (hasFocus) {
+ getWindow().getDecorView().setSystemUiVisibility(
+ View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+ | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+ | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_FULLSCREEN
+ | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
+ }
}
-}
+
+ @Override
protected void onCreate(Bundle savedInstanceState) {
// Enable hardware acceleration for smoother scrolling
getWindow().setFlags(
@@ -56,91 +57,211 @@ public class MainActivity extends AppCompatActivity {
});
// Initialize views
- cardBantuan = findViewById(R.id.card_bantuan);
- cardInfoToko = findViewById(R.id.card_info_toko);
btnLainnya = findViewById(R.id.btn_lainnya);
+ // Check if we're returning from a completed transaction
+ checkTransactionCompletion();
+
+ // Setup initial state - 9 main menus visible, 6 dummy menus hidden
+ setupInitialMenuState();
+
// Setup menu listeners
setupMenuListeners();
}
+ private void setupInitialMenuState() {
+ // 9 main menus should always be visible
+ CardView cardBantuan = findViewById(R.id.card_bantuan);
+ CardView cardInfoToko = findViewById(R.id.card_info_toko);
+
+ if (cardBantuan != null) {
+ cardBantuan.setVisibility(View.VISIBLE);
+ }
+ if (cardInfoToko != null) {
+ cardInfoToko.setVisibility(View.VISIBLE);
+ }
+
+ // 6 dummy menus should be hidden initially
+ CardView[] dummyCards = {
+ findViewById(R.id.card_dummy_menu_1),
+ findViewById(R.id.card_dummy_menu_2),
+ findViewById(R.id.card_dummy_menu_3),
+ findViewById(R.id.card_dummy_menu_4),
+ findViewById(R.id.card_dummy_menu_5),
+ findViewById(R.id.card_dummy_menu_6)
+ };
+
+ for (CardView card : dummyCards) {
+ if (card != null) {
+ card.setVisibility(View.GONE);
+ }
+ }
+
+ // Set initial button text
+ isExpanded = false;
+ btnLainnya.setText("Lainnya");
+ }
+
+ private void checkTransactionCompletion() {
+ Intent intent = getIntent();
+ if (intent != null) {
+ boolean transactionCompleted = intent.getBooleanExtra("transaction_completed", false);
+ String transactionAmount = intent.getStringExtra("transaction_amount");
+
+ if (transactionCompleted) {
+ if (transactionAmount != null) {
+ Toast.makeText(this, "Transaksi berhasil! Jumlah: Rp " + formatCurrency(transactionAmount), Toast.LENGTH_LONG).show();
+ } else {
+ Toast.makeText(this, "Transaksi berhasil diselesaikan!", Toast.LENGTH_LONG).show();
+ }
+ }
+ }
+ }
+
+ private String formatCurrency(String amount) {
+ try {
+ long amountValue = Long.parseLong(amount);
+ return String.format("%,d", amountValue).replace(',', '.');
+ } catch (NumberFormatException e) {
+ return amount;
+ }
+ }
+
private void setupMenuListeners() {
- // Card IDs to set up listeners
+ // Card IDs to set up listeners - Total 15 menu items
int[] cardIds = {
+ // Row 1 (Always visible - 3 items)
R.id.card_kartu_kredit,
R.id.card_kartu_debit,
R.id.card_qris,
- R.id.card_transfer,
+ // Row 2 (Always visible - 3 items)
R.id.card_uang_elektronik,
R.id.card_cetak_ulang,
- R.id.card_refund,
R.id.card_settlement,
+ // Row 3 (Always visible - 3 items)
R.id.card_histori,
R.id.card_bantuan,
- R.id.card_info_toko
+ R.id.card_info_toko,
+ // Row 4 (Hidden initially - 3 items)
+ R.id.card_dummy_menu_1,
+ R.id.card_dummy_menu_2,
+ R.id.card_dummy_menu_3,
+ // Row 5 (Hidden initially - 3 items)
+ R.id.card_dummy_menu_4,
+ R.id.card_dummy_menu_5,
+ R.id.card_dummy_menu_6
};
+ // Set up click listeners for all cards
for (int cardId : cardIds) {
CardView cardView = findViewById(cardId);
- cardView.setOnClickListener(v -> {
- if (cardId == R.id.card_kartu_kredit) {
- startActivity(new Intent(MainActivity.this, PaymentActivity.class));
- } else if (cardId == R.id.card_kartu_debit) {
- startActivity(new Intent(MainActivity.this, PaymentActivity.class));
- } else if (cardId == R.id.card_qris) {
- startActivity(new Intent(MainActivity.this, QrisActivity.class));
- } else if (cardId == R.id.card_bantuan) {
- startActivity(new Intent(MainActivity.this, TransactionActivity.class));
- } else if (cardId == R.id.card_info_toko) {
- Toast.makeText(this, "Info Toko Diklik", Toast.LENGTH_SHORT).show();
- } else {
- // Simplified version - just show the card ID
- Toast.makeText(this, "Menu Diklik: " + cardId, Toast.LENGTH_SHORT).show();
- }
- });
+ if (cardView != null) {
+ cardView.setOnClickListener(v -> {
+ if (cardId == R.id.card_kartu_kredit) {
+ startActivity(new Intent(MainActivity.this, PaymentActivity.class));
+ } else if (cardId == R.id.card_kartu_debit) {
+ startActivity(new Intent(MainActivity.this, PaymentActivity.class));
+ } else if (cardId == R.id.card_qris) {
+ startActivity(new Intent(MainActivity.this, QrisActivity.class));
+ } else if (cardId == R.id.card_uang_elektronik) {
+ startActivity(new Intent(MainActivity.this, PaymentActivity.class));
+ } else if (cardId == R.id.card_cetak_ulang) {
+ startActivity(new Intent(MainActivity.this, TransactionActivity.class));
+ } else if (cardId == R.id.card_settlement) {
+ Toast.makeText(this, "Settlement - Coming Soon", Toast.LENGTH_SHORT).show();
+ } else if (cardId == R.id.card_histori) {
+ Toast.makeText(this, "Histori - Coming Soon", Toast.LENGTH_SHORT).show();
+ } else if (cardId == R.id.card_bantuan) {
+ Toast.makeText(this, "Bantuan - Coming Soon", Toast.LENGTH_SHORT).show();
+ } else if (cardId == R.id.card_info_toko) {
+ Toast.makeText(this, "Info Toko - Coming Soon", Toast.LENGTH_SHORT).show();
+ } else if (cardId == R.id.card_dummy_menu_1) {
+ Toast.makeText(this, "Dummy Menu 1 - Coming Soon", Toast.LENGTH_SHORT).show();
+ } else if (cardId == R.id.card_dummy_menu_2) {
+ Toast.makeText(this, "Dummy Menu 2 - Coming Soon", Toast.LENGTH_SHORT).show();
+ } else if (cardId == R.id.card_dummy_menu_3) {
+ Toast.makeText(this, "Dummy Menu 3 - Coming Soon", Toast.LENGTH_SHORT).show();
+ } else if (cardId == R.id.card_dummy_menu_4) {
+ Toast.makeText(this, "Dummy Menu 4 - Coming Soon", Toast.LENGTH_SHORT).show();
+ } else if (cardId == R.id.card_dummy_menu_5) {
+ Toast.makeText(this, "Dummy Menu 5 - Coming Soon", Toast.LENGTH_SHORT).show();
+ } else if (cardId == R.id.card_dummy_menu_6) {
+ Toast.makeText(this, "Dummy Menu 6 - Coming Soon", Toast.LENGTH_SHORT).show();
+ } else {
+ // Fallback for any other cards
+ Toast.makeText(this, "Menu Diklik: " + getResources().getResourceEntryName(cardId), Toast.LENGTH_SHORT).show();
+ }
+ });
+ }
}
+ // Get references to ONLY the dummy cards that need to be toggled
+ CardView[] toggleableCards = {
+ findViewById(R.id.card_dummy_menu_1),
+ findViewById(R.id.card_dummy_menu_2),
+ findViewById(R.id.card_dummy_menu_3),
+ findViewById(R.id.card_dummy_menu_4),
+ findViewById(R.id.card_dummy_menu_5),
+ findViewById(R.id.card_dummy_menu_6)
+ };
+
+ // Set up "Lainnya" button click listener
btnLainnya.setOnClickListener(v -> {
isExpanded = !isExpanded;
if (isExpanded) {
- // Show additional menus with animation
- cardBantuan.setVisibility(View.VISIBLE);
- cardInfoToko.setVisibility(View.VISIBLE);
- cardBantuan.setAlpha(0f);
- cardInfoToko.setAlpha(0f);
-
- cardBantuan.animate()
- .alpha(1f)
- .setDuration(300)
- .setInterpolator(new AccelerateDecelerateInterpolator())
- .start();
-
- cardInfoToko.animate()
- .alpha(1f)
- .setDuration(300)
- .setInterpolator(new AccelerateDecelerateInterpolator())
- .start();
-
+ // Show the 6 dummy menus with animation
+ for (CardView card : toggleableCards) {
+ if (card != null) {
+ card.setVisibility(View.VISIBLE);
+ card.setAlpha(0f);
+ card.animate()
+ .alpha(1f)
+ .setDuration(300)
+ .setInterpolator(new AccelerateDecelerateInterpolator())
+ .start();
+ }
+ }
btnLainnya.setText("Tampilkan Lebih Sedikit");
} else {
- // Hide additional menus with animation
- cardBantuan.animate()
- .alpha(0f)
- .setDuration(300)
- .setInterpolator(new AccelerateDecelerateInterpolator())
- .withEndAction(() -> cardBantuan.setVisibility(View.GONE))
- .start();
-
- cardInfoToko.animate()
- .alpha(0f)
- .setDuration(300)
- .setInterpolator(new AccelerateDecelerateInterpolator())
- .withEndAction(() -> cardInfoToko.setVisibility(View.GONE))
- .start();
-
+ // Hide the 6 dummy menus with animation
+ for (CardView card : toggleableCards) {
+ if (card != null) {
+ card.animate()
+ .alpha(0f)
+ .setDuration(300)
+ .setInterpolator(new AccelerateDecelerateInterpolator())
+ .withEndAction(() -> card.setVisibility(View.GONE))
+ .start();
+ }
+ }
btnLainnya.setText("Lainnya");
}
});
+
+ // Set up scan dan bayar card click listener
+ LinearLayout scanBayarContent = findViewById(R.id.scan_bayar_content);
+ if (scanBayarContent != null) {
+ scanBayarContent.setOnClickListener(v -> {
+ // Navigate to QRIS payment activity
+ startActivity(new Intent(MainActivity.this, QrisActivity.class));
+ });
+ }
+ }
+
+ @Override
+ protected void onNewIntent(Intent intent) {
+ super.onNewIntent(intent);
+ setIntent(intent);
+ // Check for transaction completion when returning to MainActivity
+ checkTransactionCompletion();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ // Clear any transaction completion flags to avoid repeated messages
+ getIntent().removeExtra("transaction_completed");
+ getIntent().removeExtra("transaction_amount");
}
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_help.png b/app/src/main/res/drawable/ic_help.png
new file mode 100644
index 0000000..e150607
Binary files /dev/null and b/app/src/main/res/drawable/ic_help.png differ
diff --git a/app/src/main/res/drawable/ic_store_info.png b/app/src/main/res/drawable/ic_store_info.png
new file mode 100644
index 0000000..7d825d2
Binary files /dev/null and b/app/src/main/res/drawable/ic_store_info.png differ
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 6e244f8..e48be2d 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -111,12 +111,12 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
- android:rowCount="3"
+ android:rowCount="5"
android:background="@android:color/white"
android:padding="8dp"
app:layout_constraintTop_toBottomOf="@id/merchant_card">
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
@@ -445,7 +372,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -498,7 +631,7 @@
android:id="@+id/btn_lainnya"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:text="Lainnya"
+ android:text="Tampilkan Lebih Sedikit"
android:textColor="#DE0701"
android:backgroundTint="#FFFFFF"
android:textAllCaps="false"