added ability to import meetings from text

bump version to 0.4.9
This commit is contained in:
2021-04-02 19:30:16 +02:00
parent 680ba1c331
commit 3809293afd
4 changed files with 153 additions and 40 deletions
@@ -34,8 +34,9 @@ import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class InstantAutoComplete extends androidx.appcompat.widget.AppCompatAutoCompleteTextView {
@@ -60,7 +61,6 @@ class InstantAutoComplete extends androidx.appcompat.widget.AppCompatAutoComplet
}
public class MainActivity extends AppCompatActivity {
public boolean testing;
@@ -69,6 +69,10 @@ public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
Intent myIntent = getIntent(); // gets the previously created intent
String action = myIntent.getAction();
String type = myIntent.getType();
String meetingName = myIntent.getStringExtra("meetingName");
boolean joinImmediately = myIntent.getBooleanExtra("joinImmediately", false);
testing = myIntent.getBooleanExtra("testing", false);
@@ -77,6 +81,7 @@ public class MainActivity extends AppCompatActivity {
setContentView(R.layout.activity_main);
final ScrollView scrollview = findViewById(R.id.scrollArea);
int meetingIndex = searchMeetingInList(getMeetings(), meetingName);
if (meetingIndex == -1) {
if (meetingName != null) {
@@ -101,7 +106,7 @@ public class MainActivity extends AppCompatActivity {
}
watchMeetingNameBox();
//watchMeetingNameBox();
fillDropdownMeetingName();
if (getLastMeeting() != -1) {
try {
@@ -125,7 +130,11 @@ public class MainActivity extends AppCompatActivity {
watchShortcutIcon();
if (Intent.ACTION_SEND.equals(action) && type != null) {
if ("text/plain".equals(type)) {
handleSendText(myIntent); // Handle text being sent
}
}
if (joinImmediately) {
Meeting currMeeting = getMeetings().get(meetingIndex);
@@ -139,6 +148,88 @@ public class MainActivity extends AppCompatActivity {
}
private void handleSendText(Intent intent) {
String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
String meetingID = "";
String meetingPWD = "";
String meetingName = "";
if (sharedText != null) {
Matcher matcher = Pattern.compile("(?i)(?<=(Meeting-ID:)|(Meeting\\sID:)|(ID:)).+").matcher(sharedText);
if (matcher.find()) {
meetingID = matcher.group(0).trim();
}
matcher = Pattern.compile("(?i)(?<=(Kenncode:)|(Passwort:)|(Passcode:)|(Password:)).+").matcher(sharedText);
if (matcher.find()) {
meetingPWD = matcher.group(0).trim();
}
matcher = Pattern.compile("(?i)(?<=(Thema:)|(Meeting\\sName:)|(Topic:)).+").matcher(sharedText);
if (matcher.find()) {
meetingName = matcher.group(0).trim();
}
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.app_name);
builder.setMessage(R.string.meetingAlreadyExists);
if (meetingID.equals("")) {
builder.setMessage(R.string.importError);
builder.setPositiveButton(R.string.ok, (dialog, which) -> {
dialog.dismiss();
});
AlertDialog alert = builder.create();
alert.show();
} else {
Meeting mtgToImport = new Meeting(meetingName, meetingID, meetingPWD, "", "");
if (searchMeetingInList(getMeetings(), mtgToImport.meetingName) == -1) {
fillMeeting(mtgToImport);
} else {
builder.setPositiveButton(R.string.override, (dialog, which) -> {
int found = searchMeetingInList(getMeetings(), mtgToImport.meetingName);
importMeeting(mtgToImport, false);
fillMeeting(found);
dialog.dismiss();
});
builder.setNegativeButton(R.string.rename, (dialog, which) -> {
mtgToImport.meetingName = "";
fillMeeting(mtgToImport);
dialog.dismiss();
});
AlertDialog alert = builder.create();
alert.show();
}
}
/* AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.app_name);
if (meetingID.equals("")) {
builder.setMessage(R.string.importError);
builder.setPositiveButton(R.string.ok, (dialog, which) -> {
dialog.dismiss();
});
} else {
builder.setMessage(getString(R.string.wantToimportMeeting) + "\n" + mtgToImport.info());
builder.setPositiveButton(R.string.yes, (dialog, which) -> {
dialog.dismiss();
importMeetingToUI(mtgToImport);
});
builder.setNegativeButton(R.string.no, (dialog, which) -> {
dialog.dismiss();
});
}
AlertDialog alert = builder.create();
alert.show();*/
}
}
private void watchShortcutIcon() {
ImageView ShortcutIcon = findViewById(R.id.imageCreateShortcut);
@@ -281,7 +372,7 @@ public class MainActivity extends AppCompatActivity {
private void watchSaveIcon() {
ImageView saveIcon = findViewById(R.id.imageSave);
saveIcon.setOnClickListener(v -> saveAllMeetings());
saveIcon.setOnClickListener(v -> saveMeetingFromUI());
}
public void watchMeetingNameBox() {
@@ -360,9 +451,8 @@ public class MainActivity extends AppCompatActivity {
editAtt.setText(getMeetings().get(meetingIndex).attendees.get(found).num);
}
public void fillMeeting(int id) {
ArrayList<Meeting> meetings = getMeetings();
public void fillMeeting(Meeting meeting) {
EditText editMeetingName = findViewById(R.id.TextMeetingName);
EditText editID = findViewById(R.id.textBoxID);
EditText editPW = findViewById(R.id.editTextTextPassword2);
@@ -372,12 +462,16 @@ public class MainActivity extends AppCompatActivity {
editID.setError(null);
editID.clearFocus();
editMeetingName.setText(meetings.get(id).meetingName);
editID.setText(meetings.get(id).meetingID);
editPW.setText(meetings.get(id).meetingPWD);
editName.setText(meetings.get(id).attendees.get(meetings.get(id).lastAtt).name);
editAtt.setText(meetings.get(id).attendees.get(meetings.get(id).lastAtt).num);
editMeetingName.setText(meeting.meetingName);
editID.setText(meeting.meetingID);
editPW.setText(meeting.meetingPWD);
editName.setText(meeting.attendees.get(meeting.lastAtt).name);
editAtt.setText(meeting.attendees.get(meeting.lastAtt).num);
}
public void fillMeeting(int id) {
fillMeeting(getMeetings().get(id));
fillDropdownAttendeeName(id);
}
@@ -517,12 +611,12 @@ public class MainActivity extends AppCompatActivity {
}
public void btnSave_onClick(View view) {
saveAllMeetings();
saveMeetingFromUI();
}
public void btnJoin_onClick(View view) {
saveAllMeetings();
saveMeetingFromUI();
Meeting currMeeting = createCurrMeetingFromUI();
String url = buildZoomURL(currMeeting.meetingID, currMeeting.meetingPWD, currMeeting.attendees.get(currMeeting.lastAtt).name, currMeeting.attendees.get(currMeeting.lastAtt).num);
launchZoomUrl(url);
@@ -538,8 +632,38 @@ public class MainActivity extends AppCompatActivity {
return new Meeting(editMeetingName.getText().toString(), editID.getText().toString(), editPW.getText().toString(), editName.getText().toString(), editAtt.getText().toString());
}
public void saveAllMeetings() {
public void importMeeting(Meeting meeting, boolean updateAttendee) {
ArrayList<Meeting> listMeetings = getMeetings();
int foundCurr = searchMeetingInList(listMeetings, meeting.meetingName);
if (foundCurr == -1) {
listMeetings.add(meeting);
if (listMeetings.size() == 1) {
setLastMeeting(0);
} else {
setLastMeeting(listMeetings.size() - 1);
}
} else {
Meeting currMeeting = getMeetings().get(foundCurr);
currMeeting.meetingID = meeting.meetingID;
currMeeting.meetingPWD = meeting.meetingPWD;
if (updateAttendee)
currMeeting.updateAttendee(meeting.attendees.get(0).name, meeting.attendees.get(0).num);
listMeetings.set(foundCurr, currMeeting);
setLastMeeting(foundCurr);
}
saveMeetingList(listMeetings);
fillDropdownMeetingName();
fillDropdownAttendeeName(getLastMeeting());
Toast.makeText(getApplicationContext(), "Meeting gespeichert", Toast.LENGTH_SHORT).show();
}
public void importMeeting(Meeting meeting) {
importMeeting(meeting, true);
}
public void saveMeetingFromUI() {
Meeting currMeetingUI = createCurrMeetingFromUI();
if (currMeetingUI.meetingID.equals("")) {
@@ -552,29 +676,7 @@ public class MainActivity extends AppCompatActivity {
editMName.setText(currMeetingUI.meetingID);
currMeetingUI.meetingName = currMeetingUI.meetingID;
}
int foundCurr = searchMeetingInList(listMeetings, currMeetingUI.meetingName);
if (foundCurr == -1) {
listMeetings.add(currMeetingUI);
if (listMeetings.size() == 1) {
setLastMeeting(0);
} else {
setLastMeeting(listMeetings.size() - 1);
}
} else {
Meeting currMeeting = getMeetings().get(foundCurr);
currMeeting.meetingID = currMeetingUI.meetingID;
currMeeting.meetingPWD = currMeetingUI.meetingPWD;
currMeeting.updateAttendee(currMeetingUI.attendees.get(0).name, currMeetingUI.attendees.get(0).num);
listMeetings.set(foundCurr, currMeeting);
setLastMeeting(foundCurr);
}
saveMeetingList(listMeetings);
fillDropdownMeetingName();
fillDropdownAttendeeName(getLastMeeting());
Toast.makeText(getApplicationContext(), "Meeting gespeichert", Toast.LENGTH_SHORT).show();
importMeeting(currMeetingUI);
}
}