Skip to content
Snippets Groups Projects
Commit ced0858e authored by Rinaldy Adin's avatar Rinaldy Adin
Browse files

Merge branch 'dev' into feat/twibbon

parents c94e2ba7 796ff2de
1 merge request!19Feat/twibbon
# IF3210-2024-Android-ABE # Bondoman
> Disusun untuk memenuhi Tugas Besar IF3210 Pengembangan Aplikasi pada Platform Khusus
> Tugas Besar 1 - Android
## Deskripsi Aplikasi
## Getting started **Bondoman** adalah sebuah aplikasi pencatatan transaksi yang dapat digunakan melalui platform Android. Aplikasi menyediakan berbagai fitur berkaitan dengan pencatatan transaksi seperti scan, graph, dan export. Pengguna harus memiliki akun untuk dapat melakukan manajemen transaksi dan memanfaatkan fitur-fitur lainnya.
To make it easy for you to get started with GitLab, here's a list of recommended next steps. ## Library
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! Berikut adalah library yang digunakan pada aplikasi
1. AndroidX Core KTX
2. AndroidX AppCompat
3. Material Components for Android
4. AndroidX ConstraintLayout
5. AndroidX Lifecycle LiveData KTX
6. AndroidX Lifecycle ViewModel KTX
7. AndroidX Navigation Fragment KTX
8. AndroidX Navigation UI KTX
9. AndroidX RecyclerView
10. AndroidX Room Runtime
11. AndroidX Room KTX
12. AndroidX Retrofit
13. AndroidX Retrofit Gson
14. Apache POI
15. Apache POI OOXML
16. CameraX Core
17. CameraX Lifecycle
18. CameraX View
19. Glide
20. Glide Compiler (for annotation processing)
21. AndroidX Activity
22. Google Play Services Location
23. OkHttp
24. Logging Interceptor
25. AndroidX Room Compiler (for annotation processing)
26. AndroidX Legacy Support v4
27. AndroidX Fragment KTX
28. JUnit (for testing)
29. AndroidX JUnit (for Android testing)
30. AndroidX Espresso Core (for UI testing)
31. MPAndroidChart
32. AndroidX DataStore Preferences
## Add your files ## Screenshot Tampilan Aplikasi
- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files ### Login
- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
``` ![Login](./screenshots/login.png)
cd existing_repo
git remote add origin https://gitlab.informatika.org/HoseaNA/if3210-2024-android-abe.git
git branch -M main
git push -uf origin main
```
## Integrate with your tools ### Halaman Daftar Transaksi
- [ ] [Set up project integrations](https://gitlab.informatika.org/HoseaNA/if3210-2024-android-abe/-/settings/integrations) ![Halaman Daftar Transaksi](./screenshots/register.png)
## Collaborate with your team ### Form Penambahan Transaksi
- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) ![Form Penambahan Transaksi](./screenshots/home.png)
- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
## Test and Deploy ### Form Pengeditan Transaksi
Use the built-in continuous integration in GitLab. ![Form Pengeditan Transaksi](./screenshots/list-album-1.png)
- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) ### Halaman Scan Nota
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
*** ![Halaman Scan Nota](./screenshots/search-sort-filter-1.png)
# Editing this README ### Halaman Graf
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template. ![Halaman Graf](./screenshots/detail-film.png)
## Suggestions for a good README ### Halaman Twibbon
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. ![Halaman Twibbon](./screenshots/detail-film.png)
## Name ### Halaman Pengaturan
Choose a self-explaining name for your project.
## Description ![Halaman Pengaturan](./screenshots/edit-film.jpg)
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
## Badges
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
## Visuals ## Pembagian Kerja
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
## Installation | Anggota | Tugas |
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. |:--------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| 13521057 | Login, Halaman settings, Halaman Scan, Accessibility testing |
| 13521094 | Setup theme and styles, Form penambahan dan pengubahan transaksi, Hapus transaksi, Background service JWT, Logout, Network Sensing, Randomize Transaksi, OWASP |
| 13521134 | Setup room database, Halaman daftar transaksi dan open in map, Penyimpanan dalam bentuk .xls .xlsx, Intent Gmail, Halaman Graf, Twibbon, Halaman Scan |
## Usage ## Jumlah Jam Pengerjaan
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
## Support | Anggota | Jumlah Jam |
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. |----------|------------|
| 13521057 | 18 |
| 13521094 | 18 |
| 13521134 | 18 |
## Roadmap ## _Completed Bonus_
If you have ideas for releases in the future, it is a good idea to list them in the README.
## Contributing ### Accessibility Testing
State if you are open to contributions and what your requirements are for accepting them. berikut adalah testing ...
### Twibbon
Twibbon diimplementasikan pada halaman twibbon
### OWASP
#### M4: Insufficient Input/Output Validation
Kerentanan ini dapat terjadi pada aplikasi jika aplikasi tidak melakukan validasi input data user. Tanpa validasi input yang baik, terdapat beberapa isu keamanan seperti injection attacks (SQL injection, command injection) dan buffer overflows. Kerentanan ini terdapat pada bagian yang membutuhkan input user untuk berhubungan dengan server maupun database aplikasi, seperti halaman login dan halaman form transaksi. Maka dari itu, dilakukan perbaikan dengan melakukan beberapa tahap validasi input sebagai berikut:
* Input Validation: Validasi sesuai dengan tipe input untuk memastikan isi input sesuai dengan yang diharapkan. Contohnya yaitu validasi email.
* Input Validation: Membatasi panjang input dengan memanfaatkan properti maxLength pada EditText
* Secure Coding Practices: menggunakan parameterized query untuk mencegah SQL injection
#### M8: Security Misconfiguration
Kerentanan ini berasal dari kesalahan konfigurasi settings pada aplikasi atau environment. Kesalahan konfigurasi ini dapat menyebabkan berbagai masalah keamanan, seperti unauthorized access dan kebocoran data. Beberapa hal yang dilakukan dalam mengurangi kerentanan yaitu:
* Least privilege principle: hanya melakukan request permission yang dibutuhkan fitur aplikasi saja. Request juga dilakukan ketika user ingin memakai fitur yang berkaitan.
* Only necessary export: Hanya melakukan export pada activity yang dibutuhkan, yaitu activity login.
* Insecure permissions: Tidak menyimpan data penting pada file dengan overly permissive permissions seperti shared preferences.
#### M9: Insecure Data Storage
Kerentanan ini dapat menyebabkan agen eksternal mendapatkan akses yang unauthorized terhadap informasi sensitif. Beberapa hal yang dilakukan dalam mengurangi kerentanan yaitu:
* Employ Proper Access Controls: dengan hanya menampilkan data aplikasi yang sesuai dengan user yang terautentikasi. Aplikasi hanya memberikan akses melihat daftar transaksi dari transaksi yang dimiliki user yang sedang login.
* Secure Data Transmission: menggunakan protokol HTTPS ketika melakukan komunikasi dengan server.
* Apply Secure Session Management: dilakukan manajemen session dengan memvalidasi expired token user setiap 30 detik. Dengan manajemen session ini, dapat dipastikan user yang sedang menggunakan aplikasi adalah user yang sudah terautentikasi dan memiliki token yang belum expired.
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
## Authors and acknowledgment
Show your appreciation to those who have contributed to the project.
## License
For open source projects, say how it is licensed.
## Project status
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="20dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="20dp"> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="20dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="20dp">
<path android:fillColor="@android:color/black" android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/> <path android:fillColor="@android:color/white" android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
</vector> </vector>
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
app:layout_constraintTop_toBottomOf="@+id/appName" app:layout_constraintTop_toBottomOf="@+id/appName"
app:layout_constraintVertical_bias="0.5" app:layout_constraintVertical_bias="0.5"
app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_chainStyle="packed"
app:boxStrokeColor="@color/black"
> >
<com.google.android.material.textfield.TextInputEditText <com.google.android.material.textfield.TextInputEditText
...@@ -40,7 +41,9 @@ ...@@ -40,7 +41,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ems="10" android:ems="10"
android:maxLength="255" android:maxLength="255"
android:hint="Email" android:hint="@string/email"
app:boxStrokeColor="@color/black"
android:textColorHint="@color/black"
android:inputType="textEmailAddress" android:inputType="textEmailAddress"
android:outlineAmbientShadowColor="#000000" android:outlineAmbientShadowColor="#000000"
android:outlineProvider="background" /> android:outlineProvider="background" />
...@@ -61,6 +64,7 @@ ...@@ -61,6 +64,7 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/formEmailContainer" app:layout_constraintTop_toBottomOf="@+id/formEmailContainer"
app:layout_constraintVertical_bias="0.5" app:layout_constraintVertical_bias="0.5"
app:boxStrokeColor="@color/black"
> >
<com.google.android.material.textfield.TextInputEditText <com.google.android.material.textfield.TextInputEditText
...@@ -69,7 +73,9 @@ ...@@ -69,7 +73,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:maxLength="255" android:maxLength="255"
android:ems="10" android:ems="10"
android:hint="Password" android:hint="@string/password"
app:boxStrokeColor="@color/black"
android:textColorHint="@color/black"
android:inputType="textPassword" android:inputType="textPassword"
/> />
...@@ -82,7 +88,7 @@ ...@@ -82,7 +88,7 @@
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="20dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="36dp" android:layout_marginTop="36dp"
android:text="Sign in" android:text="@string/sign_in"
android:textSize="20sp" android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
...@@ -97,7 +103,7 @@ ...@@ -97,7 +103,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:fontFamily="@font/roboto_medium" android:fontFamily="@font/roboto_medium"
android:text="Welcome back to" android:text="@string/greeting"
android:textColor="#000000" android:textColor="#000000"
android:textSize="20sp" android:textSize="20sp"
app:layout_constraintBottom_toTopOf="@+id/appName" app:layout_constraintBottom_toTopOf="@+id/appName"
...@@ -115,7 +121,7 @@ ...@@ -115,7 +121,7 @@
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginBottom="64dp" android:layout_marginBottom="64dp"
android:fontFamily="@font/carter_one" android:fontFamily="@font/carter_one"
android:text="Bondoman" android:text="@string/bondoman"
android:textColor="#9759C4" android:textColor="#9759C4"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
android:id="@+id/formTitleContainer" android:id="@+id/formTitleContainer"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
android:layout_width="match_parent" android:layout_width="match_parent"
app:boxStrokeColor="@color/black"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="20dp"
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
...@@ -30,6 +31,8 @@ ...@@ -30,6 +31,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:maxLength="255" android:maxLength="255"
app:boxStrokeColor="@color/black"
android:textColorHint="@color/black"
android:hint="@string/title" android:hint="@string/title"
android:text="@={viewModel.title}" android:text="@={viewModel.title}"
android:inputType="text" android:inputType="text"
...@@ -43,6 +46,7 @@ ...@@ -43,6 +46,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="20dp"
app:boxStrokeColor="@color/black"
android:layout_marginTop="5dp" android:layout_marginTop="5dp"
app:helperTextTextColor="@color/destructive" app:helperTextTextColor="@color/destructive"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
...@@ -54,6 +58,8 @@ ...@@ -54,6 +58,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:maxLength="10" android:maxLength="10"
app:boxStrokeColor="@color/black"
android:textColorHint="@color/black"
android:hint="@string/amount" android:hint="@string/amount"
android:text="@={viewModel.amount}" android:text="@={viewModel.amount}"
android:inputType="number" android:inputType="number"
...@@ -64,18 +70,29 @@ ...@@ -64,18 +70,29 @@
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/formCategoryContainer" android:id="@+id/formCategoryContainer"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
android:hint="@string/category"
android:textColorHint="@color/black"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="20dp"
android:layout_marginTop="5dp" android:layout_marginTop="5dp"
android:hint="@string/category"
app:helperTextTextColor="@color/destructive" app:helperTextTextColor="@color/destructive"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/formAmountContainer"> app:layout_constraintTop_toBottomOf="@id/formAmountContainer"
app:boxStrokeColor="@color/black"
>
<TextView
android:layout_width="0dp"
android:layout_height="0dp"
android:labelFor="@+id/categoryAutocomplete"
android:text="@string/category"
/>
<AutoCompleteTextView <AutoCompleteTextView
android:id="@+id/categoryAutocomplete" android:id="@+id/categoryAutocomplete"
app:boxStrokeColor="@color/black"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="none" android:inputType="none"
...@@ -90,7 +107,7 @@ ...@@ -90,7 +107,7 @@
android:minWidth="0dp" android:minWidth="0dp"
android:minHeight="0dp" android:minHeight="0dp"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="0dp" android:layout_height="48dp"
android:paddingTop="1dp" android:paddingTop="1dp"
android:paddingBottom="1dp" android:paddingBottom="1dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
...@@ -107,6 +124,7 @@ ...@@ -107,6 +124,7 @@
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:boxStrokeColor="@color/black"
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="20dp"
app:helperTextTextColor="@color/destructive" app:helperTextTextColor="@color/destructive"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
...@@ -117,6 +135,8 @@ ...@@ -117,6 +135,8 @@
android:id="@+id/formLocationEditText" android:id="@+id/formLocationEditText"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:boxStrokeColor="@color/black"
android:textColorHint="@color/black"
android:hint="@string/location" android:hint="@string/location"
android:inputType="none" android:inputType="none"
android:text="@={viewModel.location}" android:text="@={viewModel.location}"
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
<Button <Button
android:id="@+id/captureButton" android:id="@+id/captureButton"
android:contentDescription="@string/capture_photo"
android:layout_width="80dp" android:layout_width="80dp"
android:layout_height="80dp" android:layout_height="80dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
...@@ -57,7 +58,7 @@ ...@@ -57,7 +58,7 @@
android:layout_height="52dp" android:layout_height="52dp"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="Get Photo from Gallery" android:contentDescription="@string/get_photo_from_gallery"
android:padding="10dp" android:padding="10dp"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:src="@drawable/ic_gallery" android:src="@drawable/ic_gallery"
......
...@@ -25,9 +25,10 @@ ...@@ -25,9 +25,10 @@
android:layout_margin="16dp" android:layout_margin="16dp"
android:contentDescription="@string/add_transaction" android:contentDescription="@string/add_transaction"
android:src="@drawable/baseline_add_24" android:src="@drawable/baseline_add_24"
android:backgroundTint="@color/primary" app:backgroundTint="@color/primaryActive"
android:tint="@color/white" app:tint="@color/white"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" /> app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<item <item
android:id="@+id/navigation_transactions" android:id="@+id/navigation_transactions"
android:icon="@drawable/ic_transactions" android:icon="@drawable/ic_transactions"
android:title="Transaction" /> android:title="@string/transaction" />
<item <item
android:id="@+id/navigation_twibbon" android:id="@+id/navigation_twibbon"
...@@ -15,18 +15,18 @@ ...@@ -15,18 +15,18 @@
<item <item
android:id="@+id/navigation_scan" android:id="@+id/navigation_scan"
android:icon="@drawable/ic_scan" android:icon="@drawable/ic_scan"
android:title="Scan" /> android:title="@string/scan" />
<item <item
android:id="@+id/navigation_graph" android:id="@+id/navigation_graph"
android:icon="@drawable/ic_graph" android:icon="@drawable/ic_graph"
android:title="Graph" /> android:title="@string/graph" />
<item <item
android:id="@+id/navigation_settings" android:id="@+id/navigation_settings"
android:icon="@drawable/ic_settings" android:icon="@drawable/ic_settings"
android:title="Settings" android:title="@string/settings"
/> />
</menu> </menu>
\ No newline at end of file
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<fragment <fragment
android:id="@+id/navigation_scan" android:id="@+id/navigation_scan"
android:name="com.example.abe.ui.scanner.ScannerFragment" android:name="com.example.abe.ui.scanner.ScannerFragment"
android:label="Scan" android:label="Transaction Scan"
tools:layout="@layout/fragment_scan"> tools:layout="@layout/fragment_scan">
<action <action
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
<fragment <fragment
android:id="@+id/navigation_graph" android:id="@+id/navigation_graph"
android:label="Graph" android:label="Transaction Graph"
android:name="com.example.abe.ui.graph.GraphFragment" android:name="com.example.abe.ui.graph.GraphFragment"
tools:layout="@layout/fragment_graph" tools:layout="@layout/fragment_graph"
/> />
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
<fragment <fragment
android:id="@+id/navigation_settings" android:id="@+id/navigation_settings"
android:name="com.example.abe.ui.settings.SettingsFragment" android:name="com.example.abe.ui.settings.SettingsFragment"
android:label="Settings" android:label="Other Settings"
tools:layout="@layout/fragment_settings" > tools:layout="@layout/fragment_settings" >
<action <action
android:id="@+id/action_navigation_settings_to_navigation_transactions" android:id="@+id/action_navigation_settings_to_navigation_transactions"
......
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="capture_photo">Capture Button</string>
<string name="email">Email</string>
<string name="sign_in">Sign in</string>
<string name="greeting">Welcome back to</string>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<color name="primary">#9759C4</color> <color name="primary">#461767</color>
<color name="primaryActive">#8346AA</color> <color name="primaryActive">#5c3078</color>
<color name="secondary">#F7D047</color> <color name="secondary">#C17A30</color>
<color name="secondaryActive">#EEA035</color> <color name="secondaryActive">#F6BE00</color>
<color name="success">#59921B</color> <color name="success">#4B7D17</color>
<color name="destructive">#C81823</color> <color name="destructive">#C81823</color>
<color name="grayDark">#A9A9A9</color> <color name="grayDark">#212121</color>
<color name="grayLight">#F5F5F8</color> <color name="grayLight">#F5F5F8</color>
<color name="black">#090909</color> <color name="black">#090909</color>
<color name="white">#FFFFFFFF</color> <color name="white">#FFFFFFFF</color>
<color name="purple_700">#8346AA</color> <color name="purple_700">#461767</color>
<color name="purple_200">#9759C4</color> <color name="purple_200">#5c3078</color>
<color name="teal_200">#80CBC4</color> <color name="teal_200">#80CBC4</color>
</resources> </resources>
\ No newline at end of file
...@@ -14,6 +14,17 @@ ...@@ -14,6 +14,17 @@
<string name="location">Location</string> <string name="location">Location</string>
<string name="open_in_map">Open in Map</string> <string name="open_in_map">Open in Map</string>
<string name="category">Category</string> <string name="category">Category</string>
<string name="capture_photo">Capture Photo</string>
<string name="password">Password</string>
<string name="email">Email</string>
<string name="sign_in">Sign in</string>
<string name="greeting">Welcome back to</string>
<string name="bondoman">Bondoman</string>
<string name="get_photo_from_gallery">Get Photo from Gallery</string>
<string name="scan">Scan</string>
<string name="graph">Graph</string>
<string name="settings">Settings</string>
<string name="transaction">Transaction</string>
<string-array name="Categories"> <string-array name="Categories">
<item>Income</item> <item>Income</item>
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment