Use popup menu to select Gmail or other provider

pull/162/head
M66B 5 years ago
parent 689900a188
commit 306d6539cc

@ -43,6 +43,8 @@ import android.os.PowerManager;
import android.provider.ContactsContract;
import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
@ -52,6 +54,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.PopupMenu;
import androidx.constraintlayout.widget.Group;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.Observer;
@ -75,7 +78,6 @@ public class FragmentSetup extends FragmentBase {
private Button btnHelp;
private Button btnQuick;
private Button btnGmail;
private TextView tvAccountDone;
private Button btnAccount;
@ -120,7 +122,6 @@ public class FragmentSetup extends FragmentBase {
btnHelp = view.findViewById(R.id.btnHelp);
btnQuick = view.findViewById(R.id.btnQuick);
btnGmail = view.findViewById(R.id.btnGmail);
tvAccountDone = view.findViewById(R.id.tvAccountDone);
btnAccount = view.findViewById(R.id.btnAccount);
@ -174,30 +175,30 @@ public class FragmentSetup extends FragmentBase {
btnQuick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext());
lbm.sendBroadcast(new Intent(ActivitySetup.ACTION_QUICK_SETUP));
}
});
btnGmail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<String> permissions = new ArrayList<>();
permissions.add(Manifest.permission.READ_CONTACTS); // profile
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O)
permissions.add(Manifest.permission.GET_ACCOUNTS);
boolean granted = true;
for (String permission : permissions)
if (!hasPermission(permission)) {
granted = false;
break;
PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(getContext(), getViewLifecycleOwner(), btnQuick);
popupMenu.getMenu().add(Menu.NONE, R.string.title_setup_gmail, 1, R.string.title_setup_gmail)
.setEnabled(Helper.hasValidFingerprint(getContext()));
popupMenu.getMenu().add(Menu.NONE, R.string.title_setup_other, 2, R.string.title_setup_other);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.string.title_setup_gmail:
onGmail();
return true;
case R.string.title_setup_other:
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext());
lbm.sendBroadcast(new Intent(ActivitySetup.ACTION_QUICK_SETUP));
return true;
default:
return false;
}
}
});
if (granted)
selectAccount();
else
requestPermissions(permissions.toArray(new String[0]), ActivitySetup.REQUEST_CHOOSE_ACCOUNT);
popupMenu.show();
}
});
@ -262,8 +263,6 @@ public class FragmentSetup extends FragmentBase {
});
// Initialize
btnGmail.setVisibility(Helper.hasValidFingerprint(getContext()) ? View.VISIBLE : View.GONE);
tvAccountDone.setText(null);
tvAccountDone.setCompoundDrawables(null, null, null, null);
tvNoPrimaryDrafts.setVisibility(View.GONE);
@ -449,6 +448,25 @@ public class FragmentSetup extends FragmentBase {
btnPermissions.setEnabled(!granted);
}
private void onGmail() {
List<String> permissions = new ArrayList<>();
permissions.add(Manifest.permission.READ_CONTACTS); // profile
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O)
permissions.add(Manifest.permission.GET_ACCOUNTS);
boolean granted = true;
for (String permission : permissions)
if (!hasPermission(permission)) {
granted = false;
break;
}
if (granted)
selectAccount();
else
requestPermissions(permissions.toArray(new String[0]), ActivitySetup.REQUEST_CHOOSE_ACCOUNT);
}
private void selectAccount() {
Log.i("Select account");
startActivityForResult(

@ -78,19 +78,6 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/fast" />
<Button
android:id="@+id/btnGmail"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="0dp"
android:minHeight="0dp"
android:text="@string/title_setup_gmail"
android:textColor="?android:attr/textColorPrimary"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvQuick" />
<Button
android:id="@+id/btnHelp"
style="?android:attr/buttonStyleSmall"
@ -104,7 +91,7 @@
android:textColor="@android:color/black"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnGmail" />
app:layout_constraintTop_toBottomOf="@id/tvQuick" />
<Button
android:id="@+id/btnQuick"
@ -116,7 +103,7 @@
android:textColor="@android:color/white"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnGmail" />
app:layout_constraintTop_toBottomOf="@id/tvQuick" />
<!-- account -->

@ -136,6 +136,7 @@
<string name="title_setup_go">Go</string>
<string name="title_setup_wizard">Wizard</string>
<string name="title_setup_gmail" translatable="false">Gmail</string>
<string name="title_setup_other">Other provider</string>
<string name="title_authorizing">Authorizing &#8230;</string>
<string name="title_setup_instructions">Setup instructions</string>
<string name="title_setup_no_settings">No settings found for domain \'%1$s\'</string>

Loading…
Cancel
Save