mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-09 13:18:34 +00:00
Implement new invite screen.
This commit is contained in:
parent
49ecd9ef5d
commit
fb494c1151
@ -120,7 +120,7 @@
|
||||
android:launchMode="singleTask"/>
|
||||
|
||||
<activity android:name=".InviteActivity"
|
||||
android:theme="@style/TextSecure.HighlightTheme"
|
||||
android:theme="@style/Signal.Light.NoActionBar.Invite"
|
||||
android:windowSoftInputMode="stateHidden"
|
||||
android:parentActivityName=".MainActivity"
|
||||
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize">
|
||||
|
19
res/drawable-v21/cta_button_background.xml
Normal file
19
res/drawable-v21/cta_button_background.xml
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:color="@color/signal_primary_dark">
|
||||
|
||||
<item android:id="@android:id/mask">
|
||||
<shape android:shape="rectangle">
|
||||
<corners android:radius="4dp" />
|
||||
<solid android:color="@color/signal_primary_dark" />
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
<item android:id="@android:id/background">
|
||||
<shape android:shape="rectangle">
|
||||
<corners android:radius="4dp" />
|
||||
<solid android:color="@color/signal_primary" />
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
</ripple>
|
15
res/drawable/cta_button_background.xml
Normal file
15
res/drawable/cta_button_background.xml
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true">
|
||||
<shape android:shape="rectangle">
|
||||
<corners android:radius="4dp" />
|
||||
<solid android:color="@color/signal_primary_dark" />
|
||||
</shape>
|
||||
</item>
|
||||
<item>
|
||||
<shape android:shape="rectangle">
|
||||
<corners android:radius="4dp" />
|
||||
<solid android:color="@color/signal_primary" />
|
||||
</shape>
|
||||
</item>
|
||||
</selector>
|
9
res/drawable/ic_share_outline_24.xml
Normal file
9
res/drawable/ic_share_outline_24.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@color/signal_primary"
|
||||
android:pathData="M17,15a2.98,2.98 0,0 0,-2.184 0.955L8.9,12.728a2.726,2.726 0,0 0,0 -1.456l5.915,-3.227A3.1,3.1 0,1 0,14.1 6.728L8.184,9.955a3,3 0,1 0,0 4.09L14.1,17.272A2.995,2.995 0,1 0,17 15ZM17,4.5A1.5,1.5 0,1 1,15.5 6,1.5 1.5,0 0,1 17,4.5ZM6,13.5A1.5,1.5 0,1 1,7.5 12,1.5 1.5,0 0,1 6,13.5ZM17,19.5A1.5,1.5 0,1 1,18.5 18,1.5 1.5,0 0,1 17,19.5Z"/>
|
||||
</vector>
|
9
res/drawable/ic_share_solid_24.xml
Normal file
9
res/drawable/ic_share_solid_24.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@color/signal_primary"
|
||||
android:pathData="M17,15a2.98,2.98 0,0 0,-2.184 0.955L8.9,12.728a2.726,2.726 0,0 0,0 -1.456l5.915,-3.227A3.1,3.1 0,1 0,14.1 6.728L8.184,9.955a3,3 0,1 0,0 4.09L14.1,17.272A2.995,2.995 0,1 0,17 15Z"/>
|
||||
</vector>
|
5
res/drawable/invite_edit_text_background_dark.xml
Normal file
5
res/drawable/invite_edit_text_background_dark.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<stroke android:color="@color/core_grey_75" android:width="1dp" />
|
||||
<corners android:radius="12dp" />
|
||||
</shape>
|
5
res/drawable/invite_edit_text_background_light.xml
Normal file
5
res/drawable/invite_edit_text_background_light.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<stroke android:color="@color/core_grey_25" android:width="1dp" />
|
||||
<corners android:radius="12dp" />
|
||||
</shape>
|
@ -7,13 +7,13 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
style="@style/TextSecure.HighlightActionBar"
|
||||
android:theme="@style/TextSecure.HighlightActionBar"
|
||||
style="?actionBarStyle"
|
||||
android:theme="?actionBarStyle"
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
app:titleTextAppearance="@style/TextSecure.TitleTextStyle.Conversation"
|
||||
app:subtitleTextAppearance="@style/TextSecure.SubtitleTextStyle.Conversation"
|
||||
app:titleTextAppearance="@style/TextSecure.TitleTextStyle"
|
||||
app:subtitleTextAppearance="@style/TextSecure.SubtitleTextStyle"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@ -29,25 +29,18 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:padding="10dp"
|
||||
android:background="?attr/invite_background">
|
||||
|
||||
<ImageView android:id="@+id/heart"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:contentDescription="@string/InviteActivity_heart_content_description"
|
||||
android:src="@drawable/love_heart" />
|
||||
android:paddingTop="14dp"
|
||||
android:paddingStart="28dp"
|
||||
android:paddingEnd="28dp">
|
||||
|
||||
<TextView android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="20sp"
|
||||
android:textAppearance="@style/TextAppearance.Signal.Title2"
|
||||
android:text="@string/InviteActivity_friends_dont_let_friends_text_unencrypted"
|
||||
android:textColor="?title_text_color_primary"
|
||||
android:gravity="center_horizontal"
|
||||
android:layout_marginBottom="30dp"
|
||||
android:layout_marginTop="18dp"
|
||||
android:fontFamily="sans-serif-light"
|
||||
android:paddingStart="10dp"/>
|
||||
|
||||
<EditText android:id="@+id/invite_text"
|
||||
@ -55,45 +48,44 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:minLines="2"
|
||||
tools:text="Let's switch to Signal: https://sgnl.link/asdfdfsa"
|
||||
android:background="@drawable/message_bubble_background"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
|
||||
android:background="?attr/invite_edit_text_background"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:textColor="?title_text_color_primary"
|
||||
android:paddingStart="10dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:minHeight="@dimen/invite_edit_text_min_height"
|
||||
android:gravity="top"
|
||||
android:inputType="textShortMessage|textMultiLine"
|
||||
android:textColor="#ff333333"/>
|
||||
android:inputType="textShortMessage|textMultiLine"/>
|
||||
|
||||
<LinearLayout android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="horizontal">
|
||||
<Button android:id="@+id/sms_button"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:text="@string/InviteActivity_share_with_contacts"
|
||||
android:layout_marginTop="16dp"
|
||||
android:textColor="?conversation_title_color"
|
||||
android:background="@drawable/cta_button_background"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<Button android:id="@+id/share_button"
|
||||
android:drawablePadding="10dp"
|
||||
android:drawableStart="@drawable/ic_share_black_18dp"
|
||||
android:text="@string/InviteActivity_share"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:ignore="ButtonStyle" />
|
||||
<androidx.appcompat.widget.AppCompatButton
|
||||
android:id="@+id/share_button"
|
||||
style="@style/Button.Borderless"
|
||||
app:drawableStartCompat="?invite_share_icon"
|
||||
android:drawablePadding="4dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/InviteActivity_choose_how_to_share"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<Button android:id="@+id/sms_button"
|
||||
android:drawableStart="@drawable/ic_message_solid_24"
|
||||
android:drawablePadding="10dp"
|
||||
android:text="@string/InviteActivity_choose_contacts"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:ignore="ButtonStyle" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
||||
<LinearLayout android:id="@+id/sms_send_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:background="@color/white"
|
||||
android:background="?android:windowBackground"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
@ -104,10 +96,9 @@
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:layout_width="match_parent"
|
||||
android:minHeight="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
android:background="@color/signal_primary"
|
||||
android:elevation="4dp"
|
||||
app:searchTextStyle="@style/TextSecure.TitleTextStyle.Light"
|
||||
android:theme="@style/TextSecure.HighlightActionBar" />
|
||||
app:searchTextStyle="@style/TextSecure.TitleTextStyle.Light" />
|
||||
|
||||
<fragment android:id="@+id/contact_selection_list_fragment"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -1,10 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="TextSecure.HighlightTheme" parent="TextSecure.BaseHighlightTheme">
|
||||
<item name="android:statusBarColor">@color/signal_primary</item>
|
||||
</style>
|
||||
|
||||
<style name="TextSecure.LightTheme" parent="TextSecure.BaseLightTheme">
|
||||
<item name="android:statusBarColor">@color/core_grey_60</item>
|
||||
</style>
|
||||
|
@ -1,11 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="TextSecure.HighlightTheme" parent="TextSecure.BaseHighlightTheme">
|
||||
<item name="android:statusBarColor">@color/signal_primary</item>
|
||||
<item name="android:navigationBarColor">@color/signal_primary</item>
|
||||
</style>
|
||||
|
||||
<style name="TextSecure.LightTheme" parent="TextSecure.BaseLightTheme">
|
||||
<item name="android:windowLightStatusBar">true</item>
|
||||
<item name="android:statusBarColor">@color/white</item>
|
||||
|
@ -142,7 +142,8 @@
|
||||
<attr name="import_export_item_background_shadow_color" format="reference|color" />
|
||||
<attr name="import_export_item_card_background" format="reference" />
|
||||
|
||||
<attr name="invite_background" format="color"/>
|
||||
<attr name="invite_edit_text_background" format="reference" />
|
||||
<attr name="invite_share_icon" format="reference" />
|
||||
|
||||
<attr name="linkpreview_background_color" format="color" />
|
||||
<attr name="linkpreview_primary_text_color" format="color" />
|
||||
|
@ -102,6 +102,8 @@
|
||||
<dimen name="insights_modal_percent_text_size">28sp</dimen>
|
||||
<dimen name="insights_modal_percent_sign_text_size">20sp</dimen>
|
||||
|
||||
<dimen name="invite_edit_text_min_height">84dp</dimen>
|
||||
|
||||
<!-- RedPhone -->
|
||||
|
||||
<!-- Height of the main row of in-call buttons. -->
|
||||
|
@ -434,6 +434,9 @@
|
||||
<!-- InviteActivity -->
|
||||
<string name="InviteActivity_share">Share</string>
|
||||
<string name="InviteActivity_choose_contacts">Choose contacts</string>
|
||||
<string name="InviteActivity_share_with_contacts">Share with contacts</string>
|
||||
<string name="InviteActivity_choose_how_to_share">Choose how to share</string>
|
||||
|
||||
<string name="InviteActivity_cancel">Cancel</string>
|
||||
<string name="InviteActivity_sending">Sending…</string>
|
||||
<string name="InviteActivity_heart_content_description">Heart</string>
|
||||
|
@ -69,7 +69,6 @@
|
||||
|
||||
<style name="TextSecure.HighlightActionBar" parent="@style/TextSecure.DarkActionBar.Conversation">
|
||||
<item name="background">@color/signal_primary</item>
|
||||
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
|
||||
<item name="elevation">0dp</item>
|
||||
</style>
|
||||
|
||||
|
@ -45,6 +45,10 @@
|
||||
<item name="android:textColor">@color/core_white</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.Signal.Title2" parent="@style/TextAppearance.AppCompat.Title">
|
||||
<item name="android:textStyle">bold</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.Signal.Headline.Insights" parent="">
|
||||
<item name="android:textStyle">bold</item>
|
||||
<item name="android:textSize">28sp</item>
|
||||
|
@ -65,19 +65,19 @@
|
||||
<item name="media_overview_document_secondary">@color/core_grey_25</item>
|
||||
</style>
|
||||
|
||||
<style name="TextSecure.HighlightTheme" parent="TextSecure.BaseHighlightTheme">
|
||||
<style name="Signal.Light.NoActionBar.Invite" parent="Base.Signal.Light.NoActionBar.Invite">
|
||||
<!-- Empty for override -->
|
||||
</style>
|
||||
|
||||
<style name="TextSecure.BaseHighlightTheme" parent="@style/TextSecure.LightNoActionBar.DarkToolbar">
|
||||
<item name="actionBarStyle">@style/TextSecure.HighlightActionBar</item>
|
||||
<item name="android:actionBarStyle">@style/TextSecure.HighlightActionBar</item>
|
||||
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Dark</item>
|
||||
<item name="android:windowBackground">@color/signal_primary</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<item name="homeAsUpIndicator">@drawable/ic_arrow_left_conversation_24</item>
|
||||
<item name="android:homeAsUpIndicator">@drawable/ic_arrow_left_conversation_24</item>
|
||||
<item name="colorButtonNormal">@color/white</item>
|
||||
<style name="Base.Signal.Light.NoActionBar.Invite" parent="@style/TextSecure.LightNoActionBar">
|
||||
<item name="contact_filter_toolbar_icon_tint">?conversation_subtitle_color</item>
|
||||
</style>
|
||||
|
||||
<style name="Signal.NoActionBar.Invite" parent="Base.Signal.NoActionBar.Invite">
|
||||
<!-- Empty for override -->
|
||||
</style>
|
||||
|
||||
<style name="Base.Signal.NoActionBar.Invite" parent="@style/TextSecure.DarkNoActionBar">
|
||||
<item name="contact_filter_toolbar_icon_tint">?conversation_subtitle_color</item>
|
||||
</style>
|
||||
|
||||
@ -359,7 +359,8 @@
|
||||
|
||||
<item name="search_toolbar_background">@color/white</item>
|
||||
<item name="search_background">@color/white</item>
|
||||
<item name="invite_background">@color/signal_primary</item>
|
||||
<item name="invite_edit_text_background">@drawable/invite_edit_text_background_light</item>
|
||||
<item name="invite_share_icon">@drawable/ic_share_outline_24</item>
|
||||
|
||||
<item name="shared_contact_details_header_background">@color/grey_100</item>
|
||||
<item name="shared_contact_details_titlebar">@color/grey_400</item>
|
||||
@ -385,6 +386,9 @@
|
||||
<item name="search_view_style">@style/Signal.SearchView</item>
|
||||
<item name="search_view_style_dark">@style/Signal.SearchView.Dark</item>
|
||||
|
||||
<item name="invite_edit_text_background">@drawable/invite_edit_text_background_dark</item>
|
||||
<item name="invite_share_icon">@drawable/ic_share_solid_24</item>
|
||||
|
||||
<item name="title_text_color_primary">@color/core_grey_05</item>
|
||||
<item name="title_text_color_secondary">@color/core_grey_25</item>
|
||||
|
||||
@ -584,7 +588,6 @@
|
||||
<item name="preferenceTheme">@style/PreferenceThemeOverlay.Fix</item>
|
||||
<item name="search_toolbar_background">@color/core_grey_95</item>
|
||||
<item name="search_background">@color/black</item>
|
||||
<item name="invite_background">@color/black</item>
|
||||
|
||||
<item name="shared_contact_details_header_background">@color/grey_800</item>
|
||||
<item name="shared_contact_details_titlebar">@color/grey_900</item>
|
||||
|
@ -1,30 +1,27 @@
|
||||
package org.thoughtcrime.securesms;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Build.VERSION;
|
||||
import android.os.Build.VERSION_CODES;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.AnimRes;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.interpolator.view.animation.FastOutSlowInInterpolator;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewAnimationUtils;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewTreeObserver.OnPreDrawListener;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.AnimRes;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.interpolator.view.animation.FastOutSlowInInterpolator;
|
||||
|
||||
import org.thoughtcrime.securesms.components.ContactFilterToolbar;
|
||||
import org.thoughtcrime.securesms.components.ContactFilterToolbar.OnFilterChangedListener;
|
||||
import org.thoughtcrime.securesms.contacts.ContactsCursorLoader.DisplayMode;
|
||||
@ -33,7 +30,11 @@ import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||
import org.thoughtcrime.securesms.sms.MessageSender;
|
||||
import org.thoughtcrime.securesms.sms.OutgoingTextMessage;
|
||||
import org.thoughtcrime.securesms.util.DynamicNoActionBarInviteTheme;
|
||||
import org.thoughtcrime.securesms.util.DynamicTheme;
|
||||
import org.thoughtcrime.securesms.util.ThemeUtil;
|
||||
import org.thoughtcrime.securesms.util.ViewUtil;
|
||||
import org.thoughtcrime.securesms.util.WindowUtil;
|
||||
import org.thoughtcrime.securesms.util.concurrent.ListenableFuture.Listener;
|
||||
import org.thoughtcrime.securesms.util.task.ProgressDialogAsyncTask;
|
||||
import org.whispersystems.libsignal.util.guava.Optional;
|
||||
@ -48,7 +49,14 @@ public class InviteActivity extends PassphraseRequiredActionBarActivity implemen
|
||||
private Button smsSendButton;
|
||||
private Animation slideInAnimation;
|
||||
private Animation slideOutAnimation;
|
||||
private ImageView heart;
|
||||
private DynamicTheme dynamicTheme = new DynamicNoActionBarInviteTheme();
|
||||
private Toolbar primaryToolbar;
|
||||
|
||||
@Override
|
||||
protected void onPreCreate() {
|
||||
super.onPreCreate();
|
||||
dynamicTheme.onCreate(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState, boolean ready) {
|
||||
@ -62,9 +70,15 @@ public class InviteActivity extends PassphraseRequiredActionBarActivity implemen
|
||||
initializeResources();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
dynamicTheme.onResume(this);
|
||||
}
|
||||
|
||||
private void initializeAppBar() {
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
primaryToolbar = findViewById(R.id.toolbar);
|
||||
setSupportActionBar(primaryToolbar);
|
||||
|
||||
assert getSupportActionBar() != null;
|
||||
|
||||
@ -84,22 +98,18 @@ public class InviteActivity extends PassphraseRequiredActionBarActivity implemen
|
||||
inviteText = ViewUtil.findById(this, R.id.invite_text);
|
||||
smsSendFrame = ViewUtil.findById(this, R.id.sms_send_frame);
|
||||
smsSendButton = ViewUtil.findById(this, R.id.send_sms_button);
|
||||
heart = ViewUtil.findById(this, R.id.heart);
|
||||
contactsFragment = (ContactSelectionListFragment)getSupportFragmentManager().findFragmentById(R.id.contact_selection_list_fragment);
|
||||
|
||||
inviteText.setText(getString(R.string.InviteActivity_lets_switch_to_signal, getString(R.string.install_url)));
|
||||
updateSmsButtonText();
|
||||
|
||||
if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
|
||||
heart.getViewTreeObserver().addOnPreDrawListener(new HeartPreDrawListener());
|
||||
}
|
||||
contactsFragment.setOnContactSelectedListener(this);
|
||||
shareButton.setOnClickListener(new ShareClickListener());
|
||||
smsButton.setOnClickListener(new SmsClickListener());
|
||||
smsCancelButton.setOnClickListener(new SmsCancelClickListener());
|
||||
smsSendButton.setOnClickListener(new SmsSendClickListener());
|
||||
contactFilter.setOnFilterChangedListener(new ContactFilterChangedListener());
|
||||
contactFilter.setNavigationIcon(R.drawable.ic_search_24);
|
||||
contactFilter.setNavigationIcon(R.drawable.ic_search_conversation_24);
|
||||
}
|
||||
|
||||
private Animation loadAnimation(@AnimRes int animResId) {
|
||||
@ -141,11 +151,42 @@ public class InviteActivity extends PassphraseRequiredActionBarActivity implemen
|
||||
}
|
||||
|
||||
private void cancelSmsSelection() {
|
||||
setPrimaryColorsToolbarNormal();
|
||||
contactsFragment.reset();
|
||||
updateSmsButtonText();
|
||||
ViewUtil.animateOut(smsSendFrame, slideOutAnimation, View.GONE);
|
||||
}
|
||||
|
||||
private void setPrimaryColorsToolbarNormal() {
|
||||
primaryToolbar.setBackgroundColor(0);
|
||||
primaryToolbar.getNavigationIcon().setColorFilter(null);
|
||||
primaryToolbar.setTitleTextColor(ThemeUtil.getThemedColor(this, R.attr.title_text_color_primary));
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
getWindow().setStatusBarColor(ThemeUtil.getThemedColor(this, android.R.attr.statusBarColor));
|
||||
getWindow().setNavigationBarColor(ThemeUtil.getThemedColor(this, android.R.attr.navigationBarColor));
|
||||
WindowUtil.setLightStatusBarFromTheme(this);
|
||||
}
|
||||
|
||||
WindowUtil.setLightNavigationBarFromTheme(this);
|
||||
}
|
||||
|
||||
private void setPrimaryColorsToolbarForSms() {
|
||||
primaryToolbar.setBackgroundColor(ContextCompat.getColor(this, R.color.signal_primary));
|
||||
primaryToolbar.getNavigationIcon().setColorFilter(ThemeUtil.getThemedColor(this, R.attr.conversation_subtitle_color), PorterDuff.Mode.SRC_IN);
|
||||
primaryToolbar.setTitleTextColor(ThemeUtil.getThemedColor(this, R.attr.conversation_title_color));
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.signal_primary));
|
||||
WindowUtil.clearLightStatusBar(getWindow());
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 27) {
|
||||
getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.signal_primary));
|
||||
WindowUtil.clearLightNavigationBar(getWindow());
|
||||
}
|
||||
}
|
||||
|
||||
private class ShareClickListener implements OnClickListener {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
@ -164,6 +205,7 @@ public class InviteActivity extends PassphraseRequiredActionBarActivity implemen
|
||||
private class SmsClickListener implements OnClickListener {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
setPrimaryColorsToolbarForSms();
|
||||
ViewUtil.animateIn(smsSendFrame, slideInAnimation);
|
||||
}
|
||||
}
|
||||
@ -196,23 +238,6 @@ public class InviteActivity extends PassphraseRequiredActionBarActivity implemen
|
||||
}
|
||||
}
|
||||
|
||||
private class HeartPreDrawListener implements OnPreDrawListener {
|
||||
@Override
|
||||
@TargetApi(VERSION_CODES.LOLLIPOP)
|
||||
public boolean onPreDraw() {
|
||||
heart.getViewTreeObserver().removeOnPreDrawListener(this);
|
||||
final int w = heart.getWidth();
|
||||
final int h = heart.getHeight();
|
||||
Animator reveal = ViewAnimationUtils.createCircularReveal(heart,
|
||||
w / 2, h,
|
||||
0, (float)Math.sqrt(h*h + (w*w/4)));
|
||||
reveal.setInterpolator(new FastOutSlowInInterpolator());
|
||||
reveal.setDuration(800);
|
||||
reveal.start();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
private class SendSmsInvitesAsyncTask extends ProgressDialogAsyncTask<String,Void,Void> {
|
||||
private final String message;
|
||||
|
@ -0,0 +1,16 @@
|
||||
package org.thoughtcrime.securesms.util;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
|
||||
public class DynamicNoActionBarInviteTheme extends DynamicTheme {
|
||||
@Override
|
||||
protected int getSelectedTheme(Activity activity) {
|
||||
String theme = TextSecurePreferences.getTheme(activity);
|
||||
|
||||
if (theme.equals("dark")) return R.style.Signal_NoActionBar_Invite;
|
||||
|
||||
return R.style.Signal_Light_NoActionBar_Invite;
|
||||
}
|
||||
}
|
@ -22,6 +22,17 @@ public class ThemeUtil {
|
||||
return getAttribute(context, R.attr.theme_type, "light").equals("dark");
|
||||
}
|
||||
|
||||
public static boolean getThemedBoolean(@NonNull Context context, @AttrRes int attr) {
|
||||
TypedValue typedValue = new TypedValue();
|
||||
Resources.Theme theme = context.getTheme();
|
||||
|
||||
if (theme.resolveAttribute(attr, typedValue, true)) {
|
||||
return typedValue.data != 0;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static int getThemedColor(@NonNull Context context, @AttrRes int attr) {
|
||||
TypedValue typedValue = new TypedValue();
|
||||
Resources.Theme theme = context.getTheme();
|
||||
|
72
src/org/thoughtcrime/securesms/util/WindowUtil.java
Normal file
72
src/org/thoughtcrime/securesms/util/WindowUtil.java
Normal file
@ -0,0 +1,72 @@
|
||||
package org.thoughtcrime.securesms.util;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Build;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
public final class WindowUtil {
|
||||
|
||||
private WindowUtil() {
|
||||
}
|
||||
|
||||
public static void setLightNavigationBarFromTheme(@NonNull Activity activity) {
|
||||
if (Build.VERSION.SDK_INT < 27) return;
|
||||
|
||||
final boolean isLightNavigationBar = ThemeUtil.getThemedBoolean(activity, android.R.attr.windowLightNavigationBar);
|
||||
|
||||
if (isLightNavigationBar) setLightNavigationBar(activity.getWindow());
|
||||
else clearLightNavigationBar(activity.getWindow());
|
||||
}
|
||||
|
||||
public static void clearLightNavigationBar(@NonNull Window window) {
|
||||
if (Build.VERSION.SDK_INT < 27) return;
|
||||
|
||||
clearSystemUiFlags(window, View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||
}
|
||||
|
||||
public static void setLightNavigationBar(@NonNull Window window) {
|
||||
if (Build.VERSION.SDK_INT < 27) return;
|
||||
|
||||
setSystemUiFlags(window, View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||
}
|
||||
|
||||
public static void setLightStatusBarFromTheme(@NonNull Activity activity) {
|
||||
if (Build.VERSION.SDK_INT < 23) return;
|
||||
|
||||
final boolean isLightStatusBar = ThemeUtil.getThemedBoolean(activity, android.R.attr.windowLightStatusBar);
|
||||
|
||||
if (isLightStatusBar) setLightStatusBar(activity.getWindow());
|
||||
else clearLightStatusBar(activity.getWindow());
|
||||
}
|
||||
|
||||
public static void clearLightStatusBar(@NonNull Window window) {
|
||||
if (Build.VERSION.SDK_INT < 23) return;
|
||||
|
||||
clearSystemUiFlags(window, View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
}
|
||||
|
||||
public static void setLightStatusBar(@NonNull Window window) {
|
||||
if (Build.VERSION.SDK_INT < 23) return;
|
||||
|
||||
setSystemUiFlags(window, View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
}
|
||||
|
||||
private static void clearSystemUiFlags(@NonNull Window window, int flags) {
|
||||
View view = window.getDecorView();
|
||||
int uiFlags = view.getSystemUiVisibility();
|
||||
|
||||
uiFlags &= ~flags;
|
||||
view.setSystemUiVisibility(uiFlags);
|
||||
}
|
||||
|
||||
private static void setSystemUiFlags(@NonNull Window window, int flags) {
|
||||
View view = window.getDecorView();
|
||||
int uiFlags = view.getSystemUiVisibility();
|
||||
|
||||
uiFlags |= flags;
|
||||
view.setSystemUiVisibility(uiFlags);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user