diff --git a/app/src/main/java/de/joel/zoomhelper/MainActivity.java b/app/src/main/java/de/joel/zoomhelper/MainActivity.java
index da91003..a811ecc 100644
--- a/app/src/main/java/de/joel/zoomhelper/MainActivity.java
+++ b/app/src/main/java/de/joel/zoomhelper/MainActivity.java
@@ -34,6 +34,7 @@ import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Objects;
@@ -42,6 +43,7 @@ class InstantAutoComplete extends androidx.appcompat.widget.AppCompatAutoComplet
public InstantAutoComplete(Context context) {
super(context);
}
+
public InstantAutoComplete(Context arg0, AttributeSet arg1) {
super(arg0, arg1);
}
@@ -49,6 +51,7 @@ class InstantAutoComplete extends androidx.appcompat.widget.AppCompatAutoComplet
public InstantAutoComplete(Context arg0, AttributeSet arg1, int arg2) {
super(arg0, arg1, arg2);
}
+
@Override
public boolean enoughToFilter() {
return false;
@@ -57,19 +60,45 @@ class InstantAutoComplete extends androidx.appcompat.widget.AppCompatAutoComplet
}
+
public class MainActivity extends AppCompatActivity {
+ public boolean testing;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent myIntent = getIntent(); // gets the previously created intent
- int meetingIndex = myIntent.getIntExtra("meetingIndex", -1);
+ String meetingName = myIntent.getStringExtra("meetingName");
+ boolean joinImmediately = myIntent.getBooleanExtra("joinImmediately", false);
+ testing = myIntent.getBooleanExtra("testing", false);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ScrollView scrollview = findViewById(R.id.scrollArea);
+ int meetingIndex = searchMeetingInList(getMeetings(), meetingName);
+ if (meetingIndex == -1) {
+ if (meetingName != null) {
+ AlertDialog.Builder dialog = new AlertDialog.Builder(this);
+ dialog.setMessage(R.string.shortcutLaunchFailedText);
+ dialog.setTitle(R.string.hint);
+ AlertDialog alertDialog = dialog.create();
+ alertDialog.show();
+ }
+ joinImmediately = false;
+ }
+ if (meetingIndex <= getMeetings().size() && meetingIndex != -1) {
+ setLastMeeting(meetingIndex);
+ AutoCompleteTextView textMeetingName = findViewById(R.id.TextMeetingName);
+ textMeetingName.setEnabled(false);
+ textMeetingName.setAdapter(null);
+ ImageView imageTrash = findViewById(R.id.imageTrash);
+ imageTrash.setVisibility(View.GONE);
+ TextInputLayout layoutMeetingName = findViewById(R.id.layoutMeetingName);
+ layoutMeetingName.setEndIconMode(TextInputLayout.END_ICON_NONE);
+ }
watchMeetingNameBox();
@@ -78,12 +107,11 @@ public class MainActivity extends AppCompatActivity {
try {
fillMeeting(getLastMeeting());
scrollview.post(() -> scrollview.scrollTo(0, scrollview.getChildAt(0).getHeight()));
- }
- catch (IndexOutOfBoundsException e) {
- AlertDialog.Builder dialog=new AlertDialog.Builder(this);
+ } catch (IndexOutOfBoundsException e) {
+ AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setMessage(R.string.resetDataText);
dialog.setTitle(R.string.hint);
- AlertDialog alertDialog=dialog.create();
+ AlertDialog alertDialog = dialog.create();
alertDialog.show();
setLastMeeting(-1);
saveMeetingList(new ArrayList<>());
@@ -97,41 +125,61 @@ public class MainActivity extends AppCompatActivity {
watchShortcutIcon();
- if (meetingIndex <= getMeetings().size() && meetingIndex != -1) {
- setLastMeeting(meetingIndex);
- AutoCompleteTextView textMeetingName = findViewById(R.id.TextMeetingName);
- textMeetingName.setEnabled(false);
- textMeetingName.setAdapter(null);
- ImageView imageTrash = findViewById(R.id.imageTrash);
- imageTrash.setVisibility(View.GONE);
- TextInputLayout layoutMeetingName = findViewById(R.id.layoutMeetingName);
- layoutMeetingName.setEndIconMode(TextInputLayout.END_ICON_NONE);
+
+
+ if (joinImmediately) {
+ Meeting currMeeting = getMeetings().get(meetingIndex);
+ String url = buildZoomURL(currMeeting.meetingID, currMeeting.meetingPWD, currMeeting.attendees.get(currMeeting.lastAtt).name, currMeeting.attendees.get(currMeeting.lastAtt).num);
+ launchZoomUrl(url);
+ } else {
+ AppUpdater appUpdater = new AppUpdater(this).setUpdateFrom(UpdateFrom.XML).setUpdateXML("https://baldaufwd.de/ZoomHelper/update.xml");
+
+ appUpdater.start();
}
-
- AppUpdater appUpdater = new AppUpdater(this).setUpdateFrom(UpdateFrom.XML).setUpdateXML("https://baldaufwd.de/ZoomHelper/update.xml");
-
- appUpdater.start();
-
}
+
private void watchShortcutIcon() {
ImageView ShortcutIcon = findViewById(R.id.imageCreateShortcut);
- ShortcutIcon.setOnClickListener(v -> createMeetingShortcut(searchMeetingInList(getMeetings(), createCurrMeetingFromUI().meetingName)));
+
+ ShortcutIcon.setOnClickListener(v -> {
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+
+ builder.setTitle(R.string.app_name);
+ builder.setMessage(R.string.WantToJoinImmediately);
+
+ builder.setPositiveButton(R.string.joinImmediately, (dialog, which) -> {
+ dialog.dismiss();
+ createMeetingShortcut(searchMeetingInList(getMeetings(), createCurrMeetingFromUI().meetingName), true);
+ });
+
+ builder.setNegativeButton(R.string.alwaysAsk, (dialog, which) -> {
+ dialog.dismiss();
+ createMeetingShortcut(searchMeetingInList(getMeetings(), createCurrMeetingFromUI().meetingName), false);
+ });
+
+ AlertDialog alert = builder.create();
+ alert.show();
+
+ //createMeetingShortcut(searchMeetingInList(getMeetings(), createCurrMeetingFromUI().meetingName), false);
+ });
}
- private void createMeetingShortcut(int meetingIndex) {
+ private void createMeetingShortcut(int meetingIndex, boolean joinImmediately) {
Meeting meeting = getMeetings().get(meetingIndex);
if (ShortcutManagerCompat.isRequestPinShortcutSupported(this)) {
- ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(this, "#1")
+ ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(this, meeting.meetingName)
.setShortLabel(meeting.meetingName)
.setLongLabel(meeting.meetingName)
.setIcon(IconCompat.createWithResource(this, R.mipmap.ic_launcher))
- .setIntents(new Intent[] {
+ .setIntents(new Intent[]{
new Intent(this, MainActivity.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
- .putExtra("meetingIndex", meetingIndex)
+ .putExtra("meetingName", meeting.meetingName)
+ .putExtra("joinImmediately", joinImmediately)
.setAction("LOCATION_SHORTCUT"),
})
.build();
@@ -142,7 +190,6 @@ public class MainActivity extends AppCompatActivity {
}
-
private void watchShareIcon() {
ImageView ShareIcon = findViewById(R.id.imageShare);
ShareIcon.setOnClickListener(v -> shareMeeting(createCurrMeetingFromUI()));
@@ -193,8 +240,8 @@ public class MainActivity extends AppCompatActivity {
if (meetings.size() > 1) {
fillDropdownMeetingName();
- if (getLastMeeting() > meetings.size()-1) {
- setLastMeeting(meetings.size()-1);
+ if (getLastMeeting() > meetings.size() - 1) {
+ setLastMeeting(meetings.size() - 1);
fillMeeting(getLastMeeting());
}
} else if (meetings.size() == 1) {
@@ -340,12 +387,14 @@ public class MainActivity extends AppCompatActivity {
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
- //For Debugging: Show URL in Alert
- AlertDialog.Builder dialog=new AlertDialog.Builder(this);
- dialog.setMessage(url);
- dialog.setTitle("Zoom URL (for testing)");
- AlertDialog alertDialog=dialog.create();
- alertDialog.show();
+ if (testing) {
+ //For Debugging: Show URL in Alert
+ AlertDialog.Builder dialog = new AlertDialog.Builder(this);
+ dialog.setMessage(url);
+ dialog.setTitle("Zoom URL (for testing)");
+ AlertDialog alertDialog = dialog.create();
+ alertDialog.show();
+ }
}
@@ -354,11 +403,11 @@ public class MainActivity extends AppCompatActivity {
builder.scheme("zoomus")
.authority("zoom.us")
.appendPath("join")
- .appendQueryParameter("confno",confno.replace(" ", ""))
+ .appendQueryParameter("confno", confno.replace(" ", ""))
.appendQueryParameter("pwd", pwd);
if (!Objects.equals(attendees, "")) {
- builder.appendQueryParameter("uname", name + " (" + attendees + ")");
+ builder.appendQueryParameter("uname", name + " (" + attendees + ")");
} else
builder.appendQueryParameter("uname", name);
return builder.build().toString();
@@ -498,11 +547,10 @@ public class MainActivity extends AppCompatActivity {
editID.requestFocus();
editID.setError("Meeting kann nicht ohne ID gespeichert werden!");
return;
- }
- else if (currMeetingUI.meetingName.equals("")) {
- EditText editMName = findViewById(R.id.TextMeetingName);
- editMName.setText(currMeetingUI.meetingID);
- currMeetingUI.meetingName = currMeetingUI.meetingID;
+ } else if (currMeetingUI.meetingName.equals("")) {
+ EditText editMName = findViewById(R.id.TextMeetingName);
+ editMName.setText(currMeetingUI.meetingID);
+ currMeetingUI.meetingName = currMeetingUI.meetingID;
}
@@ -526,7 +574,7 @@ public class MainActivity extends AppCompatActivity {
saveMeetingList(listMeetings);
fillDropdownMeetingName();
fillDropdownAttendeeName(getLastMeeting());
- Toast.makeText(getApplicationContext(),"Meeting gespeichert",Toast.LENGTH_SHORT).show();
+ Toast.makeText(getApplicationContext(), "Meeting gespeichert", Toast.LENGTH_SHORT).show();
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index caf27f4..ab2e89e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -22,5 +22,9 @@
Meeting ID
Direkte Verknüpfung zum gewählten Meeting erstellen
Dein Launcher unterstützt leider keine direkten Verknüpfungen
+ Das verknüpfte Meeting wurde nicht gefunden, da es zuvor gelöscht wurde
+ Wähle das Verhalten beim Öffnen der Verknüpfung aus
+ sofort beitreten
+ Dialog immer anzeigen
\ No newline at end of file