Skip to content
This repository was archived by the owner on Aug 31, 2022. It is now read-only.

Commit ef89dcd

Browse files
authored
Merge pull request #122 from AdrienPoupa/curfew-quarantine-march-2021
Add March 2021 curfew and quarantine new forms
2 parents 58b7578 + e74f224 commit ef89dcd

19 files changed

+627
-164
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## [Non sorti]
44

5+
## [3.6.0] - 2021-03-26
6+
### Changé
7+
- Ajout des nouveaux formulaires de couvre feu et de confinement
8+
59
## [3.5.1] - 2021-01-19
610
### Changé
711
- Mise à jour des horaires du formulaire de couvre feu

app/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ android {
88
applicationId "com.poupa.attestationdeplacement"
99
minSdkVersion 16
1010
targetSdkVersion 29
11-
versionCode 26
12-
versionName "3.5.1"
11+
versionCode 27
12+
versionName "3.6.0"
1313
multiDexEnabled true
1414
vectorDrawables.useSupportLibrary = true
1515

@@ -35,11 +35,11 @@ android {
3535
}
3636

3737
dependencies {
38-
implementation 'com.google.android.material:material:1.2.1'
38+
implementation 'com.google.android.material:material:1.3.0'
3939
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
4040
implementation "androidx.room:room-runtime:2.2.6"
4141
annotationProcessor "androidx.room:room-compiler:2.2.6"
4242
implementation 'com.itextpdf:itextg:5.5.10'
4343
implementation 'com.google.zxing:core:3.4.0'
44-
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.1'
44+
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
4545
}
-75.4 KB
Binary file not shown.
143 KB
Binary file not shown.
304 KB
Binary file not shown.

app/src/main/java/com/poupa/attestationdeplacement/CreateAttestationActivity.java

Lines changed: 57 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22

33
import android.app.TimePickerDialog;
44
import android.content.SharedPreferences;
5+
import android.os.Build;
56
import android.os.Bundle;
67
import android.view.LayoutInflater;
78
import android.view.View;
9+
import android.widget.ArrayAdapter;
810
import android.widget.AutoCompleteTextView;
911
import android.widget.CheckBox;
1012
import android.widget.ImageView;
13+
import android.widget.LinearLayout;
14+
import android.widget.ListAdapter;
1115

1216
import androidx.appcompat.app.AlertDialog;
1317
import androidx.appcompat.app.AppCompatActivity;
@@ -20,12 +24,17 @@
2024
import com.poupa.attestationdeplacement.db.ProfileEntity;
2125
import com.poupa.attestationdeplacement.db.ProfileViewModel;
2226
import com.poupa.attestationdeplacement.dto.Attestation;
27+
import com.poupa.attestationdeplacement.dto.CurfewAttestation;
28+
import com.poupa.attestationdeplacement.dto.QuarantineAttestation;
2329
import com.poupa.attestationdeplacement.dto.Reason;
2430
import com.poupa.attestationdeplacement.generator.AttestationGenerator;
31+
import com.poupa.attestationdeplacement.generator.CurfewAttestationGenerator;
32+
import com.poupa.attestationdeplacement.generator.QuarantineAttestationGenerator;
2533
import com.poupa.attestationdeplacement.tasks.GeneratePdfTask;
2634
import com.poupa.attestationdeplacement.tasks.LoadProfilesCreateAttestationTask;
2735
import com.poupa.attestationdeplacement.ui.DateTextWatcher;
2836

37+
import java.util.ArrayList;
2938
import java.util.Calendar;
3039
import java.util.Date;
3140
import java.util.List;
@@ -71,9 +80,50 @@ public void onResume() {
7180
* Initialize the input fields
7281
*/
7382
private void initFields(boolean initDate) {
74-
attestation = new Attestation();
83+
attestation = new QuarantineAttestation();
84+
attestationGenerator = new QuarantineAttestationGenerator(this, (QuarantineAttestation) attestation);
85+
86+
LinearLayout curfewLayout = (LinearLayout) findViewById(R.id.reasons_curfew_layout);
87+
LinearLayout quarantineLayout = (LinearLayout) findViewById(R.id.reasons_quarantine_layout);
88+
89+
AutoCompleteTextView autoCompleteAttestation = findViewById(R.id.attestation_type_dropdown);
90+
autoCompleteAttestation.setOnItemClickListener((parent, view, position, id) -> {
91+
attestation = (Attestation) parent.getItemAtPosition(position);
92+
93+
if (attestation instanceof CurfewAttestation) {
94+
CurfewAttestation curfewAttestation = (CurfewAttestation) attestation;
95+
attestationGenerator = new CurfewAttestationGenerator(this, curfewAttestation);
96+
curfewLayout.setVisibility(View.VISIBLE);
97+
quarantineLayout.setVisibility(View.INVISIBLE);
98+
} else {
99+
QuarantineAttestation quarantineAttestation = (QuarantineAttestation) attestation;
100+
attestationGenerator = new QuarantineAttestationGenerator(this, quarantineAttestation);
101+
curfewLayout.setVisibility(View.INVISIBLE);
102+
quarantineLayout.setVisibility(View.VISIBLE);
103+
}
104+
});
75105

76-
attestationGenerator = new AttestationGenerator(this, attestation);
106+
List<Attestation> attestations = new ArrayList<>();
107+
attestations.add(new QuarantineAttestation());
108+
attestations.add(new CurfewAttestation());
109+
110+
ArrayAdapter<Attestation> adapter =
111+
new ArrayAdapter<>(
112+
this,
113+
R.layout.dropdown_menu_popup_item,
114+
attestations);
115+
116+
autoCompleteAttestation.setAdapter(adapter);
117+
118+
// https://stackoverflow.com/a/23568337/11115846
119+
if (Build.VERSION.SDK_INT > 16) {
120+
autoCompleteAttestation.setText(attestation.toString(), false);
121+
} else {
122+
ListAdapter adapter2 = autoCompleteAttestation.getAdapter();
123+
autoCompleteAttestation.setAdapter(null);
124+
autoCompleteAttestation.setText(attestation.toString());
125+
autoCompleteAttestation.setAdapter((ArrayAdapter) adapter2);
126+
}
77127

78128
surnameInput = findViewById(R.id.surname);
79129

@@ -127,8 +177,8 @@ private void initFields(boolean initDate) {
127177
R.id.travel_hour_layout, ConstraintSet.BOTTOM);
128178
constraintSet.applyTo(constraintLayout);
129179

130-
AutoCompleteTextView autoCompleteTextView = findViewById(R.id.filled_exposed_dropdown);
131-
autoCompleteTextView.setOnItemClickListener((parent, view, position, id) -> {
180+
AutoCompleteTextView autoCompleteProfile = findViewById(R.id.filled_exposed_dropdown);
181+
autoCompleteProfile.setOnItemClickListener((parent, view, position, id) -> {
132182
ProfileEntity profileEntity = (ProfileEntity) parent.getItemAtPosition(position);
133183

134184
CreateAttestationActivity.this.fillFieldsFromProfile(profileEntity);
@@ -142,7 +192,7 @@ private void setReasonsCheckboxes() {
142192

143193
List<Reason> reasons = attestation.getReasons();
144194
for(int i = 0; i < reasons.size(); i++) {
145-
String reasonKey = "reason" + (i + 1);
195+
String reasonKey = "reason" + (i + 1) + "_" + attestation.getReasonPrefix();
146196

147197
int resId = getResources().getIdentifier(reasonKey, "id", getPackageName());
148198

@@ -238,7 +288,7 @@ public boolean checkFields() {
238288

239289
List<Reason> reasons = attestation.getReasons();
240290
for(int i = 0; i < reasons.size(); i++) {
241-
String reasonKey = "reason" + (i + 1);
291+
String reasonKey = "reason" + (i + 1) + "_" + attestation.getReasonPrefix();
242292

243293
int resId = getResources().getIdentifier(reasonKey, "id", getPackageName());
244294

@@ -311,7 +361,7 @@ public void saveFields() {
311361

312362
List<Reason> reasons = attestation.getReasons();
313363
for(int i = 0; i < reasons.size(); i++) {
314-
String reasonKey = "reason" + (i + 1);
364+
String reasonKey = "reason" + (i + 1) + "_" + attestation.getReasonPrefix();
315365

316366
int resId = getResources().getIdentifier(reasonKey, "id", getPackageName());
317367

app/src/main/java/com/poupa/attestationdeplacement/dto/Attestation.java

Lines changed: 21 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,36 @@
11
package com.poupa.attestationdeplacement.dto;
22

3-
import android.content.Context;
4-
5-
import com.poupa.attestationdeplacement.MainActivity;
6-
import com.poupa.attestationdeplacement.R;
7-
8-
import java.util.ArrayList;
93
import java.util.List;
104
import java.util.stream.Collectors;
115

126
/**
137
* Attestation Data
148
*/
15-
public class Attestation {
16-
private int id;
17-
private String surname;
18-
private String lastName;
19-
private String city;
20-
private String postalCode;
21-
private String address;
22-
private String birthPlace;
23-
private String birthDate;
24-
private String travelDate;
25-
private String travelHour;
26-
private String hour;
27-
private String minute;
28-
29-
private List<Reason> reasons;
9+
public abstract class Attestation {
10+
protected int id;
11+
protected String surname;
12+
protected String lastName;
13+
protected String city;
14+
protected String postalCode;
15+
protected String address;
16+
protected String birthPlace;
17+
protected String birthDate;
18+
protected String travelDate;
19+
protected String travelHour;
20+
protected String hour;
21+
protected String minute;
22+
23+
protected List<Reason> reasons;
3024

3125
public Attestation() {
3226
setupReasons();
3327
}
3428

35-
private void setupReasons() {
36-
Context context = MainActivity.getContext();
29+
protected abstract void setupReasons();
3730

38-
this.reasons = new ArrayList<>();
39-
this.reasons.add(new Reason(context.getString(R.string.reason1_smalltext), "travail", 73, 540));
40-
this.reasons.add(new Reason(context.getString(R.string.reason2_smalltext), "sante", 73, 508));
41-
this.reasons.add(new Reason(context.getString(R.string.reason3_smalltext), "famille", 73, 474));
42-
this.reasons.add(new Reason(context.getString(R.string.reason4_smalltext), "handicap", 73, 441));
43-
this.reasons.add(new Reason(context.getString(R.string.reason5_smalltext), "convocation", 73, 418));
44-
this.reasons.add(new Reason(context.getString(R.string.reason6_smalltext), "missions", 73, 397));
45-
this.reasons.add(new Reason(context.getString(R.string.reason7_smalltext), "transits", 73, 363));
46-
this.reasons.add(new Reason(context.getString(R.string.reason8_smalltext), "animaux", 73, 330));
47-
}
31+
public abstract String getPdfFileName();
32+
33+
public abstract String getReasonPrefix();
4834

4935
/**
5036
* Get the full address
@@ -175,4 +161,6 @@ public int getId() {
175161
public void setId(int id) {
176162
this.id = id;
177163
}
164+
165+
public abstract String toString();
178166
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
2+
package com.poupa.attestationdeplacement.dto;
3+
4+
import android.content.Context;
5+
6+
import com.poupa.attestationdeplacement.MainActivity;
7+
import com.poupa.attestationdeplacement.R;
8+
9+
import java.util.ArrayList;
10+
11+
/**
12+
* Curfew Attestation Data
13+
*/
14+
public class CurfewAttestation extends Attestation {
15+
16+
protected void setupReasons() {
17+
Context context = MainActivity.getContext();
18+
19+
this.reasons = new ArrayList<>();
20+
this.reasons.add(new Reason(context.getString(R.string.reason1_curfew_smalltext), "travail", 73, 579));
21+
this.reasons.add(new Reason(context.getString(R.string.reason2_curfew_smalltext), "sante", 73, 546));
22+
this.reasons.add(new Reason(context.getString(R.string.reason3_curfew_smalltext), "famille", 73, 512));
23+
this.reasons.add(new Reason(context.getString(R.string.reason4_curfew_smalltext), "handicap", 73, 478));
24+
this.reasons.add(new Reason(context.getString(R.string.reason5_curfew_smalltext), "convocation", 73, 458));
25+
this.reasons.add(new Reason(context.getString(R.string.reason6_curfew_smalltext), "missions", 73, 412));
26+
this.reasons.add(new Reason(context.getString(R.string.reason7_curfew_smalltext), "transits", 73, 379));
27+
this.reasons.add(new Reason(context.getString(R.string.reason8_curfew_smalltext), "animaux", 73, 345));
28+
}
29+
30+
@Override
31+
public String getPdfFileName() {
32+
return "curfew-certificate.pdf";
33+
}
34+
35+
@Override
36+
public String getReasonPrefix() {
37+
return "curfew";
38+
}
39+
40+
@Override
41+
public String toString() {
42+
Context context = MainActivity.getContext();
43+
44+
return context.getString(R.string.curfew_attestation);
45+
}
46+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.poupa.attestationdeplacement.dto;
2+
3+
import android.content.Context;
4+
5+
import com.poupa.attestationdeplacement.MainActivity;
6+
import com.poupa.attestationdeplacement.R;
7+
8+
import java.util.ArrayList;
9+
10+
/**
11+
* Curfew Attestation Data
12+
*/
13+
public class QuarantineAttestation extends Attestation {
14+
15+
protected void setupReasons() {
16+
Context context = MainActivity.getContext();
17+
18+
this.reasons = new ArrayList<>();
19+
this.reasons.add(new Reason(context.getString(R.string.reason1_quarantine_smalltext), "sport", 60, 367));
20+
this.reasons.add(new Reason(context.getString(R.string.reason2_quarantine_smalltext), "achats", 60, 244));
21+
this.reasons.add(new Reason(context.getString(R.string.reason3_quarantine_smalltext), "enfants", 60, 161));
22+
this.reasons.add(new Reason(context.getString(R.string.reason4_quarantine_smalltext), "culte_culturel", 60, 781, 2));
23+
this.reasons.add(new Reason(context.getString(R.string.reason5_quarantine_smalltext), "demarche", 60, 726, 2));
24+
this.reasons.add(new Reason(context.getString(R.string.reason6_quarantine_smalltext), "travail", 60, 629, 2));
25+
this.reasons.add(new Reason(context.getString(R.string.reason7_quarantine_smalltext), "sante", 60, 533, 2));
26+
this.reasons.add(new Reason(context.getString(R.string.reason8_quarantine_smalltext), "famille", 60, 477, 2));
27+
this.reasons.add(new Reason(context.getString(R.string.reason9_quarantine_smalltext), "handicap", 60, 422, 2));
28+
this.reasons.add(new Reason(context.getString(R.string.reason10_quarantine_smalltext), "judiciaire", 60, 380, 2));
29+
this.reasons.add(new Reason(context.getString(R.string.reason11_quarantine_smalltext), "demenagement", 60, 311, 2));
30+
this.reasons.add(new Reason(context.getString(R.string.reason12_quarantine_smalltext), "transits", 60, 243, 2));
31+
}
32+
33+
@Override
34+
public String getPdfFileName() {
35+
return "quarantine-certificate.pdf";
36+
}
37+
38+
@Override
39+
public String getReasonPrefix() {
40+
return "quarantine";
41+
}
42+
43+
@Override
44+
public String toString() {
45+
Context context = MainActivity.getContext();
46+
47+
return context.getString(R.string.quarantine_attestation);
48+
}
49+
}

app/src/main/java/com/poupa/attestationdeplacement/dto/Reason.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,22 @@ public class Reason {
66
boolean enabled = false;
77
int x;
88
int y;
9+
int page;
910

1011
public Reason(String databaseName, String qrCodeName, int x, int y) {
1112
this.databaseName = databaseName;
1213
this.qrCodeName = qrCodeName;
1314
this.x = x;
1415
this.y = y;
16+
this.page = 1;
17+
}
18+
19+
public Reason(String databaseName, String qrCodeName, int x, int y, int page) {
20+
this.databaseName = databaseName;
21+
this.qrCodeName = qrCodeName;
22+
this.x = x;
23+
this.y = y;
24+
this.page = page;
1525
}
1626

1727
public String getDatabaseName() {
@@ -53,4 +63,12 @@ public int getY() {
5363
public void setY(int y) {
5464
this.y = y;
5565
}
66+
67+
public int getPage() {
68+
return page;
69+
}
70+
71+
public void setPage(int page) {
72+
this.page = page;
73+
}
5674
}

0 commit comments

Comments
 (0)