Detailed changes
@@ -60,7 +60,7 @@
android:name="android.hardware.microphone"
android:required="false" />
- <uses-sdk tools:overrideLibrary="androidx.heifwriter"/>
+ <uses-sdk tools:overrideLibrary="androidx.heifwriter" />
<queries>
<package android:name="org.sufficientlysecure.keychain" />
@@ -365,6 +365,8 @@
<action android:name="android.intent.action.CREATE_SHORTCUT" />
</intent-filter>
</activity>
+ <activity android:name=".ui.ViewProfilePictureActivity"
+ android:theme="@style/Theme.Conversations3.Dark"/>
<activity
android:name=".ui.MucUsersActivity"
android:label="@string/group_chat_members" />
@@ -17,7 +17,14 @@ public final class Activities {
public static void setStatusAndNavigationBarColors(
final Activity activity, final View view, final boolean raisedStatusBar) {
- final var isLightMode = isLightMode(activity);
+ setStatusAndNavigationBarColors(activity, view, isLightMode(activity), raisedStatusBar);
+ }
+
+ public static void setStatusAndNavigationBarColors(
+ final Activity activity,
+ final View view,
+ final boolean isLightMode,
+ final boolean raisedStatusBar) {
final var window = activity.getWindow();
final var flags = view.getSystemUiVisibility();
// an elevation of 4 matches the MaterialToolbar elevation
@@ -1,10 +1,8 @@
package eu.siacs.conversations.ui;
import android.util.Log;
-
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
-
import eu.siacs.conversations.Conversations;
import eu.siacs.conversations.ui.util.SettingsUtils;
@@ -23,7 +21,7 @@ public abstract class BaseActivity extends AppCompatActivity {
}
@Override
- protected void onResume(){
+ protected void onResume() {
super.onResume();
SettingsUtils.applyScreenshotSetting(this);
}
@@ -637,6 +637,13 @@ public class ContactDetailsActivity extends OmemoActivity
}
private void onBadgeClick(final View view) {
+ final var intent = new Intent(this, ViewProfilePictureActivity.class);
+ intent.setData(Uri.fromParts("avatar", contact.getAvatar(), null));
+ intent.putExtra(ViewProfilePictureActivity.EXTRA_DISPLAY_NAME, contact.getDisplayName());
+ startActivity(intent);
+ }
+
+ private void onAddToAddressBookClick(final View view) {
if (QuickConversationsService.isContactListIntegration(this)) {
final Uri systemAccount = contact.getSystemAccount();
if (systemAccount == null) {
@@ -0,0 +1,49 @@
+package eu.siacs.conversations.ui;
+
+import static eu.siacs.conversations.ui.XmppActivity.configureActionBar;
+
+import android.net.Uri;
+import android.os.Bundle;
+import androidx.databinding.DataBindingUtil;
+import eu.siacs.conversations.R;
+import eu.siacs.conversations.databinding.ActivityViewProfilePictureBinding;
+import eu.siacs.conversations.persistance.FileBackend;
+
+public class ViewProfilePictureActivity extends ActionBarActivity {
+
+ public static final String EXTRA_DISPLAY_NAME = "eu.siacs.conversations.extra.DISPLAY_NAME";
+
+ private ActivityViewProfilePictureBinding binding;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ this.binding = DataBindingUtil.setContentView(this, R.layout.activity_view_profile_picture);
+ Activities.setStatusAndNavigationBarColors(this, binding.getRoot(), false, false);
+
+ setSupportActionBar(binding.toolbar);
+ configureActionBar(getSupportActionBar());
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ final var intent = getIntent();
+ if (intent == null) {
+ return;
+ }
+ final var uri = intent.getData();
+ if (uri == null) {
+ return;
+ }
+ final var avatar = uri.getSchemeSpecificPart();
+ if (avatar == null) {
+ return;
+ }
+ final var displayName = intent.getStringExtra(EXTRA_DISPLAY_NAME);
+ final var file = FileBackend.getAvatarFile(this, avatar);
+ this.binding.imageView.setImageURI(Uri.fromFile(file));
+ setTitle(displayName);
+ }
+}
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:fitsSystemWindows="true"
+ android:orientation="vertical">
+
+ <com.google.android.material.appbar.AppBarLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <com.google.android.material.appbar.MaterialToolbar
+ android:id="@+id/toolbar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="?attr/actionBarSize" />
+
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <ImageView
+ android:id="@+id/imageView"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
+ </LinearLayout>
+</layout>
@@ -1,35 +1,6 @@
<resources>
- <style name="Theme.Conversations3" parent="Theme.Material3.Dark.NoActionBar">
- <item name="windowActionModeOverlay">true</item>
- <item name="colorPrimary">@color/md_theme_dark_primary</item>
- <item name="colorOnPrimary">@color/md_theme_dark_onPrimary</item>
- <item name="colorPrimaryContainer">@color/md_theme_dark_primaryContainer</item>
- <item name="colorOnPrimaryContainer">@color/md_theme_dark_onPrimaryContainer</item>
- <item name="colorSecondary">@color/md_theme_dark_secondary</item>
- <item name="colorOnSecondary">@color/md_theme_dark_onSecondary</item>
- <item name="colorSecondaryContainer">@color/md_theme_dark_secondaryContainer</item>
- <item name="colorOnSecondaryContainer">@color/md_theme_dark_onSecondaryContainer</item>
- <item name="colorTertiary">@color/md_theme_dark_tertiary</item>
- <item name="colorOnTertiary">@color/md_theme_dark_onTertiary</item>
- <item name="colorTertiaryContainer">@color/md_theme_dark_tertiaryContainer</item>
- <item name="colorOnTertiaryContainer">@color/md_theme_dark_onTertiaryContainer</item>
- <item name="colorError">@color/md_theme_dark_error</item>
- <item name="colorErrorContainer">@color/md_theme_dark_errorContainer</item>
- <item name="colorOnError">@color/md_theme_dark_onError</item>
- <item name="colorOnErrorContainer">@color/md_theme_dark_onErrorContainer</item>
- <item name="android:colorBackground">@color/md_theme_dark_background</item>
- <item name="colorOnBackground">@color/md_theme_dark_onBackground</item>
- <item name="colorSurface">@color/md_theme_dark_surface</item>
- <item name="colorOnSurface">@color/md_theme_dark_onSurface</item>
- <item name="colorSurfaceVariant">@color/md_theme_dark_surfaceVariant</item>
- <item name="colorOnSurfaceVariant">@color/md_theme_dark_onSurfaceVariant</item>
- <item name="colorOutline">@color/md_theme_dark_outline</item>
- <item name="colorOnSurfaceInverse">@color/md_theme_dark_inverseOnSurface</item>
- <item name="colorSurfaceInverse">@color/md_theme_dark_inverseSurface</item>
- <item name="colorPrimaryInverse">@color/md_theme_dark_inversePrimary</item>
- <item name="preferenceTheme">@style/MaterialPreferenceThemeOverlay</item>
- </style>
+ <style name="Theme.Conversations3" parent="Theme.Conversations3.Dark"/>
<style name="Theme.Conversations3.SplashScreen" parent="@style/Theme.Conversations3">
<item name="android:windowBackground">@drawable/background_splash_screen</item>
@@ -54,6 +54,37 @@
<item name="preferenceTheme">@style/MaterialPreferenceThemeOverlay</item>
</style>
+ <style name="Theme.Conversations3.Dark" parent="Theme.Material3.Dark.NoActionBar">
+ <item name="windowActionModeOverlay">true</item>
+ <item name="colorPrimary">@color/md_theme_dark_primary</item>
+ <item name="colorOnPrimary">@color/md_theme_dark_onPrimary</item>
+ <item name="colorPrimaryContainer">@color/md_theme_dark_primaryContainer</item>
+ <item name="colorOnPrimaryContainer">@color/md_theme_dark_onPrimaryContainer</item>
+ <item name="colorSecondary">@color/md_theme_dark_secondary</item>
+ <item name="colorOnSecondary">@color/md_theme_dark_onSecondary</item>
+ <item name="colorSecondaryContainer">@color/md_theme_dark_secondaryContainer</item>
+ <item name="colorOnSecondaryContainer">@color/md_theme_dark_onSecondaryContainer</item>
+ <item name="colorTertiary">@color/md_theme_dark_tertiary</item>
+ <item name="colorOnTertiary">@color/md_theme_dark_onTertiary</item>
+ <item name="colorTertiaryContainer">@color/md_theme_dark_tertiaryContainer</item>
+ <item name="colorOnTertiaryContainer">@color/md_theme_dark_onTertiaryContainer</item>
+ <item name="colorError">@color/md_theme_dark_error</item>
+ <item name="colorErrorContainer">@color/md_theme_dark_errorContainer</item>
+ <item name="colorOnError">@color/md_theme_dark_onError</item>
+ <item name="colorOnErrorContainer">@color/md_theme_dark_onErrorContainer</item>
+ <item name="android:colorBackground">@color/md_theme_dark_background</item>
+ <item name="colorOnBackground">@color/md_theme_dark_onBackground</item>
+ <item name="colorSurface">@color/md_theme_dark_surface</item>
+ <item name="colorOnSurface">@color/md_theme_dark_onSurface</item>
+ <item name="colorSurfaceVariant">@color/md_theme_dark_surfaceVariant</item>
+ <item name="colorOnSurfaceVariant">@color/md_theme_dark_onSurfaceVariant</item>
+ <item name="colorOutline">@color/md_theme_dark_outline</item>
+ <item name="colorOnSurfaceInverse">@color/md_theme_dark_inverseOnSurface</item>
+ <item name="colorSurfaceInverse">@color/md_theme_dark_inverseSurface</item>
+ <item name="colorPrimaryInverse">@color/md_theme_dark_inversePrimary</item>
+ <item name="preferenceTheme">@style/MaterialPreferenceThemeOverlay</item>
+ </style>
+
<style name="MaterialPreferenceThemeOverlay" parent="@style/PreferenceThemeOverlay">
<item name="switchPreferenceCompatStyle">@style/MaterialSwitchPreference</item>
</style>