mirror of
https://github.com/nextcloud/android.git
synced 2024-11-23 13:45:35 +03:00
Use material 3 style for SSO dialog
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
This commit is contained in:
parent
fb52b3f2ce
commit
d0ffbe2479
3 changed files with 83 additions and 107 deletions
|
@ -38,10 +38,11 @@ import android.text.SpannableStringBuilder;
|
||||||
import android.text.style.ForegroundColorSpan;
|
import android.text.style.ForegroundColorSpan;
|
||||||
import android.text.style.StyleSpan;
|
import android.text.style.StyleSpan;
|
||||||
|
|
||||||
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
import com.nextcloud.android.sso.Constants;
|
import com.nextcloud.android.sso.Constants;
|
||||||
import com.owncloud.android.MainApp;
|
import com.owncloud.android.MainApp;
|
||||||
import com.owncloud.android.R;
|
import com.owncloud.android.R;
|
||||||
import com.owncloud.android.databinding.ActivitySsoGrantPermissionBinding;
|
import com.owncloud.android.databinding.DialogSsoGrantPermissionBinding;
|
||||||
import com.owncloud.android.lib.common.OwnCloudAccount;
|
import com.owncloud.android.lib.common.OwnCloudAccount;
|
||||||
import com.owncloud.android.lib.common.accounts.AccountUtils;
|
import com.owncloud.android.lib.common.accounts.AccountUtils;
|
||||||
import com.owncloud.android.lib.common.utils.Log_OC;
|
import com.owncloud.android.lib.common.utils.Log_OC;
|
||||||
|
@ -72,19 +73,37 @@ public class SsoGrantPermissionActivity extends BaseActivity {
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
ActivitySsoGrantPermissionBinding binding = ActivitySsoGrantPermissionBinding.inflate(getLayoutInflater());
|
DialogSsoGrantPermissionBinding binding = DialogSsoGrantPermissionBinding.inflate(getLayoutInflater());
|
||||||
setContentView(binding.getRoot());
|
|
||||||
|
|
||||||
ComponentName callingActivity = getCallingActivity();
|
ComponentName callingActivity = getCallingActivity();
|
||||||
|
|
||||||
if (callingActivity != null) {
|
if (callingActivity != null) {
|
||||||
packageName = callingActivity.getPackageName();
|
packageName = callingActivity.getPackageName();
|
||||||
String appName = getAppNameForPackage(packageName);
|
final String appName = getAppNameForPackage(packageName);
|
||||||
account = getIntent().getParcelableExtra(NEXTCLOUD_FILES_ACCOUNT);
|
account = getIntent().getParcelableExtra(NEXTCLOUD_FILES_ACCOUNT);
|
||||||
binding.permissionText.setText(makeSpecialPartsBold(
|
|
||||||
|
final SpannableStringBuilder dialogText = makeSpecialPartsBold(
|
||||||
getString(R.string.single_sign_on_request_token, appName, account.name),
|
getString(R.string.single_sign_on_request_token, appName, account.name),
|
||||||
appName,
|
appName,
|
||||||
account.name));
|
account.name);
|
||||||
|
binding.permissionText.setText(dialogText);
|
||||||
|
try {
|
||||||
|
if (packageName != null) {
|
||||||
|
Drawable appIcon = getPackageManager().getApplicationIcon(packageName);
|
||||||
|
binding.appIcon.setImageDrawable(appIcon);
|
||||||
|
}
|
||||||
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
|
Log_OC.e(TAG, "Error retrieving app icon", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
final MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this)
|
||||||
|
.setView(binding.getRoot())
|
||||||
|
.setCancelable(false)
|
||||||
|
.setPositiveButton(R.string.permission_allow, (dialog, which) -> grantPermission())
|
||||||
|
.setNegativeButton(R.string.permission_deny, (dialog, which) -> exitFailed());
|
||||||
|
|
||||||
|
builder.show();
|
||||||
|
|
||||||
Log_OC.v(TAG, "TOKEN-REQUEST: Calling Package: " + packageName);
|
Log_OC.v(TAG, "TOKEN-REQUEST: Calling Package: " + packageName);
|
||||||
Log_OC.v(TAG, "TOKEN-REQUEST: App Name: " + appName);
|
Log_OC.v(TAG, "TOKEN-REQUEST: App Name: " + appName);
|
||||||
} else {
|
} else {
|
||||||
|
@ -92,18 +111,6 @@ public class SsoGrantPermissionActivity extends BaseActivity {
|
||||||
Log_OC.e(TAG, "Calling Package is null");
|
Log_OC.e(TAG, "Calling Package is null");
|
||||||
setResultAndExit("Request was not executed properly. Use startActivityForResult()");
|
setResultAndExit("Request was not executed properly. Use startActivityForResult()");
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
|
||||||
if (packageName != null) {
|
|
||||||
Drawable appIcon = getPackageManager().getApplicationIcon(packageName);
|
|
||||||
binding.appIcon.setImageDrawable(appIcon);
|
|
||||||
}
|
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
|
||||||
Log_OC.e(TAG, "Error retrieving app icon", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.btnDecline.setOnClickListener(v -> exitFailed());
|
|
||||||
binding.btnGrant.setOnClickListener(v -> grantPermission());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private SpannableStringBuilder makeSpecialPartsBold(String text, String... toBeStyledText) {
|
private SpannableStringBuilder makeSpecialPartsBold(String text, String... toBeStyledText) {
|
||||||
|
|
|
@ -1,89 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!--
|
|
||||||
Nextcloud Android client application
|
|
||||||
|
|
||||||
Copyright (C) 2018 Andy Scherzinger
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 3 of the License, or any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Affero General Public
|
|
||||||
License along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
-->
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:padding="@dimen/standard_margin"
|
|
||||||
android:orientation="horizontal"
|
|
||||||
tools:context="com.owncloud.android.ui.activity.SsoGrantPermissionActivity">
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/appIcon"
|
|
||||||
android:layout_width="@dimen/user_icon_size"
|
|
||||||
android:layout_height="@dimen/user_icon_size"
|
|
||||||
android:layout_gravity="top|start"
|
|
||||||
android:layout_marginEnd="@dimen/standard_margin"
|
|
||||||
android:contentDescription="@null"
|
|
||||||
android:src="@drawable/background"
|
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="@+id/permissionText"/>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/permissionText"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:paddingStart="@dimen/zero"
|
|
||||||
android:paddingLeft="@dimen/zero"
|
|
||||||
android:paddingEnd="@dimen/zero"
|
|
||||||
android:paddingRight="@dimen/zero"
|
|
||||||
android:paddingBottom="@dimen/standard_padding"
|
|
||||||
android:textSize="@dimen/permission_dialog_text_size"
|
|
||||||
app:layout_constraintBottom_toTopOf="@+id/btnGrant"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
tools:text="Grant Nextcloud News access to your Nextcloud account incrediblyLong_username_with_123456789_number@Nextcloud_dummy.com?"/>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="end"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/btnDecline"
|
|
||||||
style="@style/Button.Borderless"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginEnd="@dimen/standard_half_margin"
|
|
||||||
android:text="@string/permission_deny"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/btnGrant"/>
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/btnGrant"
|
|
||||||
style="@style/Button.Borderless"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/permission_allow"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"/>
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
58
app/src/main/res/layout/dialog_sso_grant_permission.xml
Normal file
58
app/src/main/res/layout/dialog_sso_grant_permission.xml
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?><!--
|
||||||
|
Nextcloud Android client application
|
||||||
|
|
||||||
|
Copyright (C) 2018 Andy Scherzinger
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 3 of the License, or any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public
|
||||||
|
License along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
-->
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingHorizontal="@dimen/dialog_padding"
|
||||||
|
android:paddingTop="@dimen/dialog_padding"
|
||||||
|
tools:context="com.owncloud.android.ui.activity.SsoGrantPermissionActivity">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/appIcon"
|
||||||
|
android:layout_width="@dimen/user_icon_size"
|
||||||
|
android:layout_height="@dimen/user_icon_size"
|
||||||
|
android:layout_gravity="top|start"
|
||||||
|
android:layout_marginEnd="@dimen/standard_margin"
|
||||||
|
android:contentDescription="@null"
|
||||||
|
android:src="@drawable/background"
|
||||||
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="@+id/permissionText"
|
||||||
|
tools:src="@drawable/file_application" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/permissionText"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingStart="@dimen/zero"
|
||||||
|
android:paddingLeft="@dimen/zero"
|
||||||
|
android:paddingEnd="@dimen/zero"
|
||||||
|
android:paddingRight="@dimen/zero"
|
||||||
|
android:paddingBottom="@dimen/standard_padding"
|
||||||
|
android:textSize="@dimen/permission_dialog_text_size"
|
||||||
|
app:layout_constraintBottom_toTopOf="@+id/btnGrant"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
tools:text="Grant Nextcloud News access to your Nextcloud account incrediblyLong_username_with_123456789_number@Nextcloud_dummy.com?" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
Loading…
Reference in a new issue