Use popup menu to select Gmail or other provider

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

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

@ -78,19 +78,6 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/fast" /> 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 <Button
android:id="@+id/btnHelp" android:id="@+id/btnHelp"
style="?android:attr/buttonStyleSmall" style="?android:attr/buttonStyleSmall"
@ -104,7 +91,7 @@
android:textColor="@android:color/black" android:textColor="@android:color/black"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnGmail" /> app:layout_constraintTop_toBottomOf="@id/tvQuick" />
<Button <Button
android:id="@+id/btnQuick" android:id="@+id/btnQuick"
@ -116,7 +103,7 @@
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnGmail" /> app:layout_constraintTop_toBottomOf="@id/tvQuick" />
<!-- account --> <!-- account -->

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

Loading…
Cancel
Save