Implement PN mode screen UI
							parent
							
								
									0b565588d8
								
							
						
					
					
						commit
						c09032900f
					
				| @ -0,0 +1,15 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <shape | ||||
|     xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     android:shape="rectangle" > | ||||
| 
 | ||||
|     <solid | ||||
|         android:color="@color/pn_option_background" /> | ||||
| 
 | ||||
|     <stroke | ||||
|         android:color="@color/pn_option_border" | ||||
|         android:width="@dimen/border_thickness" /> | ||||
| 
 | ||||
|     <corners android:radius="@dimen/pn_option_corner_radius" /> | ||||
| 
 | ||||
| </shape> | ||||
| @ -0,0 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <transition xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
|     <item android:drawable="@drawable/pn_option_background_selected" /> | ||||
|     <item android:drawable="@drawable/pn_option_background" /> | ||||
| </transition> | ||||
| @ -0,0 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <transition xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
|     <item android:drawable="@drawable/pn_option_background" /> | ||||
|     <item android:drawable="@drawable/pn_option_background_selected" /> | ||||
| </transition> | ||||
| @ -0,0 +1,15 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <shape | ||||
|     xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     android:shape="rectangle" > | ||||
| 
 | ||||
|     <solid | ||||
|         android:color="@color/pn_option_background" /> | ||||
| 
 | ||||
|     <stroke | ||||
|         android:color="@color/accent" | ||||
|         android:width="@dimen/border_thickness" /> | ||||
| 
 | ||||
|     <corners android:radius="@dimen/pn_option_corner_radius" /> | ||||
| 
 | ||||
| </shape> | ||||
| @ -0,0 +1,116 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <LinearLayout | ||||
|     xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" | ||||
|     android:background="@drawable/default_session_background" | ||||
|     android:orientation="vertical"> | ||||
| 
 | ||||
|     <View | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="0dp" | ||||
|         android:layout_weight="1"/> | ||||
| 
 | ||||
|     <TextView | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_marginLeft="@dimen/very_large_spacing" | ||||
|         android:layout_marginRight="@dimen/very_large_spacing" | ||||
|         android:textSize="@dimen/very_large_font_size" | ||||
|         android:textStyle="bold" | ||||
|         android:textColor="@color/text" | ||||
|         android:text="@string/activity_pn_mode_title" /> | ||||
| 
 | ||||
|     <TextView | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_marginLeft="@dimen/very_large_spacing" | ||||
|         android:layout_marginTop="10dp" | ||||
|         android:layout_marginRight="@dimen/very_large_spacing" | ||||
|         android:textSize="@dimen/medium_font_size" | ||||
|         android:textColor="@color/text" | ||||
|         android:text="@string/activity_pn_mode_explanation" /> | ||||
| 
 | ||||
|     <LinearLayout | ||||
|         android:id="@+id/fcmOptionView" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_marginLeft="@dimen/very_large_spacing" | ||||
|         android:layout_marginTop="@dimen/medium_spacing" | ||||
|         android:layout_marginRight="@dimen/very_large_spacing" | ||||
|         android:padding="12dp" | ||||
|         android:orientation="vertical" | ||||
|         android:background="@drawable/pn_option_background"> | ||||
| 
 | ||||
|         <TextView | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:textSize="@dimen/medium_font_size" | ||||
|             android:textColor="@color/text" | ||||
|             android:textStyle="bold" | ||||
|             android:text="@string/activity_pn_mode_fcm_option_title" /> | ||||
| 
 | ||||
|         <TextView | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_marginTop="4dp" | ||||
|             android:textSize="@dimen/very_small_font_size" | ||||
|             android:textColor="@color/text" | ||||
|             android:text="@string/activity_pn_mode_fcm_option_explanation" /> | ||||
| 
 | ||||
|         <TextView | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_marginTop="4dp" | ||||
|             android:textSize="@dimen/very_small_font_size" | ||||
|             android:textColor="@color/accent" | ||||
|             android:textStyle="bold" | ||||
|             android:text="@string/activity_pn_mode_recommended_option_tag" /> | ||||
| 
 | ||||
|     </LinearLayout> | ||||
| 
 | ||||
|     <LinearLayout | ||||
|         android:id="@+id/backgroundPollingOptionView" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_marginLeft="@dimen/very_large_spacing" | ||||
|         android:layout_marginTop="@dimen/small_spacing" | ||||
|         android:layout_marginRight="@dimen/very_large_spacing" | ||||
|         android:padding="12dp" | ||||
|         android:orientation="vertical" | ||||
|         android:background="@drawable/pn_option_background"> | ||||
| 
 | ||||
|         <TextView | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:textSize="@dimen/medium_font_size" | ||||
|             android:textColor="@color/text" | ||||
|             android:textStyle="bold" | ||||
|             android:text="@string/activity_pn_mode_background_polling_option_title" /> | ||||
| 
 | ||||
|         <TextView | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_marginTop="4dp" | ||||
|             android:textSize="@dimen/very_small_font_size" | ||||
|             android:textColor="@color/text" | ||||
|             android:text="@string/activity_pn_mode_background_polling_option_explanation" /> | ||||
| 
 | ||||
|     </LinearLayout> | ||||
|      | ||||
|     <View | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="0dp" | ||||
|         android:layout_weight="1"/> | ||||
| 
 | ||||
|     <Button | ||||
|         style="@style/MediumProminentFilledButton" | ||||
|         android:id="@+id/registerButton" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="@dimen/medium_button_height" | ||||
|         android:layout_marginLeft="@dimen/massive_spacing" | ||||
|         android:layout_marginRight="@dimen/massive_spacing" | ||||
|         android:layout_marginBottom="@dimen/medium_spacing" | ||||
|         android:text="Continue" /> | ||||
| 
 | ||||
| </LinearLayout> | ||||
| @ -0,0 +1,116 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <LinearLayout | ||||
|     xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" | ||||
|     android:background="@drawable/default_session_background" | ||||
|     android:orientation="vertical"> | ||||
| 
 | ||||
|     <View | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="0dp" | ||||
|         android:layout_weight="1"/> | ||||
| 
 | ||||
|     <TextView | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_marginLeft="@dimen/very_large_spacing" | ||||
|         android:layout_marginRight="@dimen/very_large_spacing" | ||||
|         android:textSize="@dimen/large_font_size" | ||||
|         android:textStyle="bold" | ||||
|         android:textColor="@color/text" | ||||
|         android:text="@string/activity_pn_mode_title" /> | ||||
| 
 | ||||
|     <TextView | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_marginLeft="@dimen/very_large_spacing" | ||||
|         android:layout_marginTop="6dp" | ||||
|         android:layout_marginRight="@dimen/very_large_spacing" | ||||
|         android:textSize="@dimen/small_font_size" | ||||
|         android:textColor="@color/text" | ||||
|         android:text="@string/activity_pn_mode_explanation" /> | ||||
| 
 | ||||
|     <LinearLayout | ||||
|         android:id="@+id/fcmOptionView" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_marginLeft="@dimen/very_large_spacing" | ||||
|         android:layout_marginTop="@dimen/small_spacing" | ||||
|         android:layout_marginRight="@dimen/very_large_spacing" | ||||
|         android:padding="12dp" | ||||
|         android:orientation="vertical" | ||||
|         android:background="@drawable/pn_option_background"> | ||||
| 
 | ||||
|         <TextView | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:textSize="@dimen/medium_font_size" | ||||
|             android:textColor="@color/text" | ||||
|             android:textStyle="bold" | ||||
|             android:text="@string/activity_pn_mode_fcm_option_title" /> | ||||
| 
 | ||||
|         <TextView | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_marginTop="4dp" | ||||
|             android:textSize="@dimen/very_small_font_size" | ||||
|             android:textColor="@color/text" | ||||
|             android:text="@string/activity_pn_mode_fcm_option_explanation" /> | ||||
| 
 | ||||
|         <TextView | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_marginTop="4dp" | ||||
|             android:textSize="@dimen/very_small_font_size" | ||||
|             android:textColor="@color/accent" | ||||
|             android:textStyle="bold" | ||||
|             android:text="@string/activity_pn_mode_recommended_option_tag" /> | ||||
| 
 | ||||
|     </LinearLayout> | ||||
| 
 | ||||
|     <LinearLayout | ||||
|         android:id="@+id/backgroundPollingOptionView" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_marginLeft="@dimen/very_large_spacing" | ||||
|         android:layout_marginTop="@dimen/small_spacing" | ||||
|         android:layout_marginRight="@dimen/very_large_spacing" | ||||
|         android:padding="12dp" | ||||
|         android:orientation="vertical" | ||||
|         android:background="@drawable/pn_option_background"> | ||||
| 
 | ||||
|         <TextView | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:textSize="@dimen/medium_font_size" | ||||
|             android:textColor="@color/text" | ||||
|             android:textStyle="bold" | ||||
|             android:text="@string/activity_pn_mode_background_polling_option_title" /> | ||||
| 
 | ||||
|         <TextView | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_marginTop="4dp" | ||||
|             android:textSize="@dimen/very_small_font_size" | ||||
|             android:textColor="@color/text" | ||||
|             android:text="@string/activity_pn_mode_background_polling_option_explanation" /> | ||||
| 
 | ||||
|     </LinearLayout> | ||||
| 
 | ||||
|     <View | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="0dp" | ||||
|         android:layout_weight="1"/> | ||||
| 
 | ||||
|     <Button | ||||
|         style="@style/MediumProminentFilledButton" | ||||
|         android:id="@+id/registerButton" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="@dimen/medium_button_height" | ||||
|         android:layout_marginLeft="@dimen/massive_spacing" | ||||
|         android:layout_marginRight="@dimen/massive_spacing" | ||||
|         android:layout_marginBottom="@dimen/medium_spacing" | ||||
|         android:text="Continue" /> | ||||
| 
 | ||||
| </LinearLayout> | ||||
| @ -0,0 +1,77 @@ | ||||
| package org.thoughtcrime.securesms.loki.redesign.activities | ||||
| 
 | ||||
| import android.graphics.drawable.TransitionDrawable | ||||
| import android.os.Bundle | ||||
| import android.support.annotation.DrawableRes | ||||
| import android.view.View | ||||
| import android.widget.LinearLayout | ||||
| import kotlinx.android.synthetic.main.activity_display_name.registerButton | ||||
| import kotlinx.android.synthetic.main.activity_pn_mode.* | ||||
| import network.loki.messenger.R | ||||
| import org.thoughtcrime.securesms.BaseActionBarActivity | ||||
| import org.thoughtcrime.securesms.loki.redesign.utilities.setUpActionBarSessionLogo | ||||
| 
 | ||||
| class PNModeActivity : BaseActionBarActivity() { | ||||
|     private var selectedOptionView: LinearLayout? = null | ||||
| 
 | ||||
|     // region Lifecycle | ||||
|     override fun onCreate(savedInstanceState: Bundle?) { | ||||
|         super.onCreate(savedInstanceState) | ||||
|         setUpActionBarSessionLogo() | ||||
|         setContentView(R.layout.activity_pn_mode) | ||||
|         fcmOptionView.setOnClickListener { toggleFCM() } | ||||
|         backgroundPollingOptionView.setOnClickListener { toggleBackgroundPolling() } | ||||
|         registerButton.setOnClickListener { register() } | ||||
|     } | ||||
|     // endregion | ||||
| 
 | ||||
|     // region Animation | ||||
|     private fun performTransition(@DrawableRes transitionID: Int, subject: View) { | ||||
|         val drawable = resources.getDrawable(transitionID, theme) as TransitionDrawable | ||||
|         subject.background = drawable | ||||
|         drawable.startTransition(250) | ||||
|     } | ||||
|     // endregion | ||||
| 
 | ||||
|     // region Interaction | ||||
|     private fun toggleFCM() { | ||||
|         when (selectedOptionView) { | ||||
|             null -> { | ||||
|                 performTransition(R.drawable.pn_option_background_select_transition, fcmOptionView) | ||||
|                 selectedOptionView = fcmOptionView | ||||
|             } | ||||
|             fcmOptionView -> { | ||||
|                 performTransition(R.drawable.pn_option_background_deselect_transition, fcmOptionView) | ||||
|                 selectedOptionView = null | ||||
|             } | ||||
|             backgroundPollingOptionView -> { | ||||
|                 performTransition(R.drawable.pn_option_background_select_transition, fcmOptionView) | ||||
|                 performTransition(R.drawable.pn_option_background_deselect_transition, backgroundPollingOptionView) | ||||
|                 selectedOptionView = fcmOptionView | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private fun toggleBackgroundPolling() { | ||||
|         when (selectedOptionView) { | ||||
|             null -> { | ||||
|                 performTransition(R.drawable.pn_option_background_select_transition, backgroundPollingOptionView) | ||||
|                 selectedOptionView = backgroundPollingOptionView | ||||
|             } | ||||
|             backgroundPollingOptionView -> { | ||||
|                 performTransition(R.drawable.pn_option_background_deselect_transition, backgroundPollingOptionView) | ||||
|                 selectedOptionView = null | ||||
|             } | ||||
|             fcmOptionView -> { | ||||
|                 performTransition(R.drawable.pn_option_background_select_transition, backgroundPollingOptionView) | ||||
|                 performTransition(R.drawable.pn_option_background_deselect_transition, fcmOptionView) | ||||
|                 selectedOptionView = backgroundPollingOptionView | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private fun register() { | ||||
|         // TODO: Implement | ||||
|     } | ||||
|     // endregion | ||||
| } | ||||
					Loading…
					
					
				
		Reference in New Issue