added interface to edit nick
This commit is contained in:
		
							parent
							
								
									aca4ba981f
								
							
						
					
					
						commit
						5012ff3545
					
				| @ -2,6 +2,7 @@ package eu.siacs.conversations.entities; | ||||
| 
 | ||||
| import android.support.annotation.NonNull; | ||||
| import android.support.annotation.Nullable; | ||||
| import android.text.TextUtils; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.Collections; | ||||
| @ -380,7 +381,12 @@ public class MucOptions { | ||||
|         } else if (!conversation.getJid().isBareJid()) { | ||||
|             return conversation.getJid().getResource(); | ||||
|         } else { | ||||
|             return JidHelper.localPartOrFallback(account.getJid()); | ||||
|             final String displayName = account.getDisplayName(); | ||||
|             if (TextUtils.isEmpty(displayName)) { | ||||
|                 return JidHelper.localPartOrFallback(account.getJid()); | ||||
|             } else { | ||||
|                 return displayName; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -35,7 +35,7 @@ public abstract class AbstractGenerator { | ||||
| 			"http://jabber.org/protocol/caps", | ||||
| 			"http://jabber.org/protocol/disco#info", | ||||
| 			"urn:xmpp:avatar:metadata+notify", | ||||
| 			"http://jabber.org/protocol/nick+notify", | ||||
| 			Namespace.NICK+"+notify", | ||||
| 			Namespace.BOOKMARKS+"+notify", | ||||
| 			"urn:xmpp:ping", | ||||
| 			"jabber:iq:version", | ||||
|  | ||||
| @ -127,8 +127,15 @@ public class IqGenerator extends AbstractGenerator { | ||||
| 
 | ||||
| 	public IqPacket publishNick(String nick) { | ||||
| 		final Element item = new Element("item"); | ||||
| 		item.addChild("nick", "http://jabber.org/protocol/nick").setContent(nick); | ||||
| 		return publish("http://jabber.org/protocol/nick", item); | ||||
| 		item.addChild("nick", Namespace.NICK).setContent(nick); | ||||
| 		return publish(Namespace.NICK, item); | ||||
| 	} | ||||
| 
 | ||||
| 	public IqPacket deleteNode(String node) { | ||||
| 		IqPacket packet = new IqPacket(IqPacket.TYPE.SET); | ||||
| 		final Element pubsub = packet.addChild("pubsub", Namespace.PUBSUB_OWNER); | ||||
| 		pubsub.addChild("delete").setAttribute("node",node); | ||||
| 		return packet; | ||||
| 	} | ||||
| 
 | ||||
| 	public IqPacket publishAvatar(Avatar avatar) { | ||||
|  | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -285,11 +285,19 @@ public class XmppConnectionService extends Service { | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             boolean needsUpdating = account.setOption(Account.OPTION_LOGGED_IN_SUCCESSFULLY, true); | ||||
|             needsUpdating |= account.setOption(Account.OPTION_HTTP_UPLOAD_AVAILABLE, account.getXmppConnection().getFeatures().httpUpload(0)); | ||||
|             if (needsUpdating) { | ||||
|             boolean loggedInSuccessfully = account.setOption(Account.OPTION_LOGGED_IN_SUCCESSFULLY, true); | ||||
|             boolean gainedFeature = account.setOption(Account.OPTION_HTTP_UPLOAD_AVAILABLE, account.getXmppConnection().getFeatures().httpUpload(0)); | ||||
|             if (loggedInSuccessfully || gainedFeature) { | ||||
|                 databaseBackend.updateAccount(account); | ||||
|             } | ||||
| 
 | ||||
|             if (loggedInSuccessfully) { | ||||
|                 if (!TextUtils.isEmpty(account.getDisplayName())) { | ||||
|                     Log.d(Config.LOGTAG,account.getJid().asBareJid()+": display name wasn't empty on first log in. publishing"); | ||||
|                     publishDisplayName(account); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             account.getRoster().clearPresences(); | ||||
|             mJingleConnectionManager.cancelInTransmission(); | ||||
|             mQuickConversationsService.considerSyncBackground(false); | ||||
| @ -3828,14 +3836,17 @@ public class XmppConnectionService extends Service { | ||||
| 
 | ||||
| 	public void publishDisplayName(Account account) { | ||||
| 		String displayName = account.getDisplayName(); | ||||
| 		if (displayName != null && !displayName.isEmpty()) { | ||||
| 			IqPacket publish = mIqGenerator.publishNick(displayName); | ||||
| 			sendIqPacket(account, publish, (account1, packet) -> { | ||||
| 				if (packet.getType() == IqPacket.TYPE.ERROR) { | ||||
| 					Log.d(Config.LOGTAG, account1.getJid().asBareJid() + ": could not publish nick"); | ||||
| 				} | ||||
| 			}); | ||||
| 		} | ||||
| 		final IqPacket request; | ||||
| 		if (TextUtils.isEmpty(displayName)) { | ||||
|             request = mIqGenerator.deleteNode(Namespace.NICK); | ||||
| 		} else { | ||||
|             request = mIqGenerator.publishNick(displayName); | ||||
|         } | ||||
|         sendIqPacket(account, request, (account1, packet) -> { | ||||
|             if (packet.getType() == IqPacket.TYPE.ERROR) { | ||||
|                 Log.d(Config.LOGTAG, account1.getJid().asBareJid() + ": unable to modify nick name "+packet.toString()); | ||||
|             } | ||||
|         }); | ||||
| 	} | ||||
| 
 | ||||
| 	public ServiceDiscoveryResult getCachedServiceDiscoveryResult(Pair<String, String> key) { | ||||
|  | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -16,6 +16,7 @@ public final class Namespace { | ||||
| 	public static final String PUBSUB = "http://jabber.org/protocol/pubsub"; | ||||
| 	public static final String PUBSUB_PUBLISH_OPTIONS = PUBSUB+"#publish-options"; | ||||
| 	public static final String PUBSUB_ERROR = PUBSUB+"#errors"; | ||||
| 	public static final String PUBSUB_OWNER = PUBSUB+"#owner"; | ||||
| 	public static final String NICK = "http://jabber.org/protocol/nick"; | ||||
| 	public static final String FLEXIBLE_OFFLINE_MESSAGE_RETRIEVAL = "http://jabber.org/protocol/offline"; | ||||
| 	public static final String BIND = "urn:ietf:params:xml:ns:xmpp-bind"; | ||||
|  | ||||
| @ -470,11 +470,53 @@ | ||||
|                         </TableLayout> | ||||
| 
 | ||||
|                         <RelativeLayout | ||||
|                             android:id="@+id/pgp_fingerprint_box" | ||||
|                             android:id="@+id/your_name_box" | ||||
|                             android:layout_width="wrap_content" | ||||
|                             android:layout_height="match_parent" | ||||
|                             android:layout_marginTop="32dp"> | ||||
| 
 | ||||
|                             <LinearLayout | ||||
|                                 android:layout_width="wrap_content" | ||||
|                                 android:layout_height="wrap_content" | ||||
|                                 android:layout_alignParentLeft="true" | ||||
|                                 android:layout_centerVertical="true" | ||||
|                                 android:layout_toLeftOf="@+id/action_edit_your_name" | ||||
|                                 android:orientation="vertical"> | ||||
| 
 | ||||
|                                 <TextView | ||||
|                                     android:id="@+id/your_name" | ||||
|                                     android:layout_width="wrap_content" | ||||
|                                     android:layout_height="wrap_content" | ||||
|                                     android:text="@string/no_name_set_instructions" | ||||
|                                     android:textAppearance="@style/TextAppearance.Conversations.Body1.Tertiary"/> | ||||
| 
 | ||||
|                                 <TextView | ||||
|                                     android:id="@+id/your_name_desc" | ||||
|                                     android:layout_width="wrap_content" | ||||
|                                     android:layout_height="wrap_content" | ||||
|                                     android:text="@string/your_name" | ||||
|                                     android:textAppearance="@style/TextAppearance.Conversations.Caption"/> | ||||
|                             </LinearLayout> | ||||
| 
 | ||||
|                             <ImageButton | ||||
|                                 android:id="@+id/action_edit_your_name" | ||||
|                                 android:layout_width="wrap_content" | ||||
|                                 android:layout_height="wrap_content" | ||||
|                                 android:layout_alignParentRight="true" | ||||
|                                 android:layout_centerVertical="true" | ||||
|                                 android:alpha="?attr/icon_alpha" | ||||
|                                 android:background="?attr/selectableItemBackgroundBorderless" | ||||
|                                 android:padding="@dimen/image_button_padding" | ||||
|                                 android:src="?attr/icon_edit_body" | ||||
|                                 android:visibility="visible"/> | ||||
|                         </RelativeLayout> | ||||
| 
 | ||||
|                         <RelativeLayout | ||||
|                             android:id="@+id/pgp_fingerprint_box" | ||||
|                             android:layout_width="wrap_content" | ||||
|                             android:layout_height="match_parent" | ||||
|                             android:layout_marginTop="16dp"> | ||||
| 
 | ||||
|                             <LinearLayout | ||||
|                                 android:layout_width="wrap_content" | ||||
|                                 android:layout_height="wrap_content" | ||||
| @ -514,7 +556,7 @@ | ||||
|                             android:id="@+id/axolotl_fingerprint_box" | ||||
|                             android:layout_width="wrap_content" | ||||
|                             android:layout_height="match_parent" | ||||
|                             android:layout_marginTop="24dp"> | ||||
|                             android:layout_marginTop="16dp"> | ||||
| 
 | ||||
|                             <LinearLayout | ||||
|                                 android:layout_width="wrap_content" | ||||
|  | ||||
| @ -515,6 +515,9 @@ | ||||
|     <string name="share_uri_with">Share URI with…</string> | ||||
|     <string name="welcome_header" translatable="false">Join the Conversation</string> | ||||
|     <string name="welcome_text">Jabber is a provider independent instant messaging network. You can use this client with what ever Jabber server you choose.\nHowever for your convenience we made it easy to create an account on conversations.im¹; a provider specially suited for the use with Conversations.</string> | ||||
|     <string name="welcome_header_quicksy" translatable="false">Have some Quick Conversations</string> | ||||
|     <string name="welcome_text_quicksy"><![CDATA[Quicksy is a spin off of the popular Jabber/XMPP client Conversations with automatic contact discovery.<br><br>You sign up with your phone number and Quicksy will automatically—based on the phone numbers in your address book—suggest possible contacts to you.<br><br>By signing up you agree to our <a href="https://quicksy.im/#privacy">privacy policy</a>.]]></string> | ||||
|     <string name="agree_and_continue">Agree & continue</string> | ||||
|     <string name="magic_create_text">We will guide you through the process of creating an account on conversations.im.¹\nWhen picking conversations.im as a provider you will be able to communicate with users of other providers by giving them your full Jabber ID.</string> | ||||
|     <string name="your_full_jid_will_be">Your full Jabber ID will be: %s</string> | ||||
|     <string name="create_account">Create Account</string> | ||||
| @ -789,4 +792,9 @@ | ||||
|     <string name="too_many_attempts">Too many attempts</string> | ||||
|     <string name="the_app_is_out_of_date">You are using an out of date version of this app.</string> | ||||
|     <string name="update">Update</string> | ||||
|     <string name="logged_in_with_another_device">This phone number is currently logged in with another device.</string> | ||||
|     <string name="enter_your_name_instructions">Please enter your name to let people, who don’t have you in their address books, know who you are.</string> | ||||
|     <string name="your_name">Your name</string> | ||||
|     <string name="enter_your_name">Enter your name</string> | ||||
|     <string name="no_name_set_instructions">Use the edit button to set your name.</string> | ||||
| </resources> | ||||
|  | ||||
| @ -80,6 +80,10 @@ | ||||
|         <item name="android:textColor">?android:textColorSecondary</item> | ||||
|     </style> | ||||
| 
 | ||||
|     <style name="TextAppearance.Conversations.Body1.Tertiary" parent="TextAppearance.Conversations.Body1"> | ||||
|         <item name="android:textColor">?android:textColorTertiary</item> | ||||
|     </style> | ||||
| 
 | ||||
|     <style name="TextAppearance.Conversations.Fingerprint" parent="TextAppearance.Conversations.Body1"> | ||||
|         <item name="android:fontFamily" tools:targetApi="jelly_bean">monospace</item> | ||||
|         <item name="android:typeface">monospace</item> | ||||
|  | ||||
| @ -19,5 +19,15 @@ | ||||
|             android:launchMode="singleTask" | ||||
|             android:label="@string/verify_your_phone_number"/> | ||||
| 
 | ||||
|         <activity | ||||
|             android:name=".ui.TosActivity" | ||||
|             android:launchMode="singleTask" | ||||
|             android:label="@string/app_name"/> | ||||
| 
 | ||||
|         <activity | ||||
|             android:name=".ui.EnterNameActivity" | ||||
|             android:launchMode="singleTask" | ||||
|             android:label="@string/enter_your_name"/> | ||||
| 
 | ||||
|     </application> | ||||
| </manifest> | ||||
|  | ||||
| @ -0,0 +1,54 @@ | ||||
| package eu.siacs.conversations.ui; | ||||
| 
 | ||||
| import android.content.Intent; | ||||
| import android.databinding.DataBindingUtil; | ||||
| import android.os.Bundle; | ||||
| import android.support.v7.widget.Toolbar; | ||||
| import android.view.View; | ||||
| 
 | ||||
| import eu.siacs.conversations.R; | ||||
| import eu.siacs.conversations.databinding.ActivityEnterNameBinding; | ||||
| import eu.siacs.conversations.entities.Account; | ||||
| import eu.siacs.conversations.utils.AccountUtils; | ||||
| 
 | ||||
| public class EnterNameActivity extends XmppActivity { | ||||
| 
 | ||||
|     private ActivityEnterNameBinding binding; | ||||
| 
 | ||||
|     private Account account; | ||||
| 
 | ||||
|     @Override | ||||
|     protected void onCreate(final Bundle savedInstanceState) { | ||||
|         super.onCreate(savedInstanceState); | ||||
|         this.binding = DataBindingUtil.setContentView(this, R.layout.activity_enter_name); | ||||
|         setSupportActionBar((Toolbar) this.binding.toolbar); | ||||
|         this.binding.next.setOnClickListener(this::next); | ||||
|     } | ||||
| 
 | ||||
|     private void next(View view) { | ||||
|         if (account != null) { | ||||
| 
 | ||||
|             String name = this.binding.name.getText().toString().trim(); | ||||
| 
 | ||||
|             account.setDisplayName(name); | ||||
| 
 | ||||
|             xmppConnectionService.publishDisplayName(account); | ||||
| 
 | ||||
|             Intent intent = new Intent(this, PublishProfilePictureActivity.class); | ||||
|             intent.putExtra(PublishProfilePictureActivity.EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString()); | ||||
|             intent.putExtra("setup", true); | ||||
|             startActivity(intent); | ||||
|         } | ||||
|         finish(); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     protected void refreshUiReal() { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     void onBackendConnected() { | ||||
|         this.account = AccountUtils.getFirst(xmppConnectionService); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										80
									
								
								src/quicksy/java/eu/siacs/conversations/ui/TosActivity.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								src/quicksy/java/eu/siacs/conversations/ui/TosActivity.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,80 @@ | ||||
| package eu.siacs.conversations.ui; | ||||
| 
 | ||||
| import android.content.Intent; | ||||
| import android.content.SharedPreferences; | ||||
| import android.content.pm.ActivityInfo; | ||||
| import android.os.Bundle; | ||||
| import android.preference.PreferenceManager; | ||||
| import android.support.v7.app.ActionBar; | ||||
| import android.support.v7.app.AppCompatActivity; | ||||
| import android.text.Html; | ||||
| import android.text.method.LinkMovementMethod; | ||||
| import android.widget.Button; | ||||
| import android.widget.TextView; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| import eu.siacs.conversations.R; | ||||
| import eu.siacs.conversations.entities.Account; | ||||
| import eu.siacs.conversations.utils.XmppUri; | ||||
| 
 | ||||
| public class TosActivity extends XmppActivity { | ||||
| 
 | ||||
|     @Override | ||||
|     protected void refreshUiReal() { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     void onBackendConnected() { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void onStart() { | ||||
|         super.onStart(); | ||||
|         final int theme = findTheme(); | ||||
|         if (this.mTheme != theme) { | ||||
|             recreate(); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void onNewIntent(Intent intent) { | ||||
|         if (intent != null) { | ||||
|             setIntent(intent); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     protected void onCreate(final Bundle savedInstanceState) { | ||||
|         if (getResources().getBoolean(R.bool.portrait_only)) { | ||||
|             setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); | ||||
|         } | ||||
|         super.onCreate(savedInstanceState); | ||||
|         setContentView(R.layout.activity_tos); | ||||
|         setSupportActionBar(findViewById(R.id.toolbar)); | ||||
|         final ActionBar ab = getSupportActionBar(); | ||||
|         if (ab != null) { | ||||
|             ab.setDisplayShowHomeEnabled(false); | ||||
|             ab.setDisplayHomeAsUpEnabled(false); | ||||
|         } | ||||
|         final Button agreeButton = findViewById(R.id.agree); | ||||
|         final TextView welcomeText = findViewById(R.id.welcome_text); | ||||
|         agreeButton.setOnClickListener(v -> { | ||||
|             final Intent intent = new Intent(this, EnterPhoneNumberActivity.class); | ||||
|             SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); | ||||
|             preferences.edit().putBoolean("tos", true).apply(); | ||||
|             addInviteUri(intent); | ||||
|             startActivity(intent); | ||||
|             finish(); | ||||
|         }); | ||||
|         welcomeText.setText(Html.fromHtml(getString(R.string.welcome_text_quicksy))); | ||||
|         welcomeText.setMovementMethod(LinkMovementMethod.getInstance()); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     public void addInviteUri(Intent intent) { | ||||
|         StartConversationActivity.addInviteUri(intent, getIntent()); | ||||
|     } | ||||
| } | ||||
| @ -269,9 +269,7 @@ public class VerifyActivity extends XmppActivity implements ClipboardManager.OnP | ||||
| 
 | ||||
|     private void performPostVerificationRedirect() { | ||||
|         if (redirectInProgress.compareAndSet(false, true)) { | ||||
|             Intent intent = new Intent(this, PublishProfilePictureActivity.class); | ||||
|             intent.putExtra(PublishProfilePictureActivity.EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString()); | ||||
|             intent.putExtra("setup", true); | ||||
|             Intent intent = new Intent(this, EnterNameActivity.class); | ||||
|             startActivity(intent); | ||||
|             finish(); | ||||
|         } | ||||
|  | ||||
| @ -39,6 +39,9 @@ public class ApiDialogHelper { | ||||
|             case 403: | ||||
|                 res = R.string.the_app_is_out_of_date; | ||||
|                 break; | ||||
|             case 409: | ||||
|                 res = R.string.logged_in_with_another_device; | ||||
|                 break; | ||||
|             case 500: | ||||
|                 res = R.string.something_went_wrong_processing_your_request; | ||||
|                 break; | ||||
|  | ||||
| @ -2,6 +2,8 @@ package eu.siacs.conversations.utils; | ||||
| 
 | ||||
| import android.app.Activity; | ||||
| import android.content.Intent; | ||||
| import android.content.SharedPreferences; | ||||
| import android.preference.PreferenceManager; | ||||
| import android.util.Log; | ||||
| 
 | ||||
| import eu.siacs.conversations.Config; | ||||
| @ -9,6 +11,7 @@ import eu.siacs.conversations.entities.Account; | ||||
| import eu.siacs.conversations.ui.ConversationsActivity; | ||||
| import eu.siacs.conversations.ui.EnterPhoneNumberActivity; | ||||
| import eu.siacs.conversations.ui.StartConversationActivity; | ||||
| import eu.siacs.conversations.ui.TosActivity; | ||||
| import eu.siacs.conversations.ui.VerifyActivity; | ||||
| 
 | ||||
| public class SignupUtils { | ||||
| @ -28,7 +31,12 @@ public class SignupUtils { | ||||
|                 intent = new Intent(activity, StartConversationActivity.class); | ||||
|             } | ||||
|         } else { | ||||
|             intent = getSignUpIntent(activity); | ||||
|             SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity); | ||||
|             if (preferences.getBoolean("tos",false)) { | ||||
|                 intent = getSignUpIntent(activity); | ||||
|             } else { | ||||
|                 intent = new Intent(activity, TosActivity.class); | ||||
|             } | ||||
| 
 | ||||
|         } | ||||
|         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); | ||||
|  | ||||
							
								
								
									
										60
									
								
								src/quicksy/res/layout/activity_enter_name.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								src/quicksy/res/layout/activity_enter_name.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,60 @@ | ||||
| <?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:orientation="vertical"> | ||||
| 
 | ||||
|         <include android:id="@+id/toolbar" layout="@layout/toolbar" /> | ||||
| 
 | ||||
|         <ScrollView | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="match_parent" | ||||
|             android:fillViewport="true"> | ||||
| 
 | ||||
|             <RelativeLayout | ||||
|                 android:layout_width="match_parent" | ||||
|                 android:layout_height="wrap_content"> | ||||
| 
 | ||||
|                 <TextView | ||||
|                     android:id="@+id/instructions" | ||||
|                     android:layout_width="wrap_content" | ||||
|                     android:layout_height="wrap_content" | ||||
|                     android:padding="16dp" | ||||
|                     android:gravity="center_horizontal" | ||||
|                     android:textAppearance="@style/TextAppearance.Conversations.Body1" | ||||
|                     android:text="@string/enter_your_name_instructions"/> | ||||
| 
 | ||||
|                 <LinearLayout | ||||
|                     android:id="@+id/name_box" | ||||
|                     android:layout_width="256dp" | ||||
|                     android:layout_height="wrap_content" | ||||
|                     android:layout_above="@+id/next" | ||||
|                     android:layout_below="@+id/instructions" | ||||
|                     android:layout_centerHorizontal="true" | ||||
|                     android:orientation="vertical"> | ||||
| 
 | ||||
|                     <EditText | ||||
|                         android:imeOptions="flagNoExtractUi" | ||||
|                         android:id="@+id/name" | ||||
|                         style="@style/Widget.Conversations.EditText" | ||||
|                         android:layout_width="match_parent" | ||||
|                         android:layout_height="wrap_content" | ||||
|                         android:hint="@string/your_name" | ||||
|                         android:longClickable="false" /> | ||||
| 
 | ||||
|                 </LinearLayout> | ||||
|                 <Button | ||||
|                     android:id="@+id/next" | ||||
|                     android:layout_alignParentBottom="true" | ||||
|                     android:layout_alignParentEnd="true" | ||||
|                     style="@style/Widget.Conversations.Button.Borderless" | ||||
|                     android:layout_width="wrap_content" | ||||
|                     android:layout_height="wrap_content" | ||||
|                     android:text="@string/next" | ||||
|                     android:textColor="?colorAccent"/> | ||||
|             </RelativeLayout> | ||||
|         </ScrollView> | ||||
|     </LinearLayout> | ||||
| </layout> | ||||
							
								
								
									
										77
									
								
								src/quicksy/res/layout/activity_tos.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								src/quicksy/res/layout/activity_tos.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,77 @@ | ||||
| <?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:orientation="vertical"> | ||||
| 
 | ||||
|     <include layout="@layout/toolbar" /> | ||||
| 
 | ||||
|     <ScrollView android:layout_width="match_parent" | ||||
|         android:layout_height="match_parent" | ||||
|         android:fillViewport="true"> | ||||
|         <RelativeLayout | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:background="?attr/color_background_primary"> | ||||
| 
 | ||||
|             <LinearLayout | ||||
|                 android:id="@+id/linearLayout" | ||||
|                 android:layout_width="match_parent" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_alignParentBottom="true" | ||||
|                 android:layout_alignParentLeft="true" | ||||
|                 android:layout_alignParentStart="true" | ||||
|                 android:minHeight="256dp" | ||||
|                 android:orientation="vertical"> | ||||
|                 <Space | ||||
|                     android:layout_width="match_parent" | ||||
|                     android:layout_height="0dp" | ||||
|                     android:layout_weight="1"/> | ||||
|                 <LinearLayout | ||||
|                     android:layout_width="match_parent" | ||||
|                     android:layout_height="match_parent" | ||||
|                     android:paddingLeft="16dp" | ||||
|                     android:paddingRight="16dp" | ||||
|                     android:paddingBottom="16dp" | ||||
|                     android:orientation="vertical"> | ||||
| 
 | ||||
|                 <TextView | ||||
|                     android:layout_width="wrap_content" | ||||
|                     android:layout_height="wrap_content" | ||||
|                     android:text="@string/welcome_header_quicksy" | ||||
|                     android:textAppearance="@style/TextAppearance.Conversations.Title"/> | ||||
|                 <TextView | ||||
|                     android:id="@+id/welcome_text" | ||||
|                     android:layout_width="wrap_content" | ||||
|                     android:layout_height="wrap_content" | ||||
|                     android:layout_marginTop="8dp" | ||||
|                     android:text="@string/welcome_text_quicksy" | ||||
|                     android:textAppearance="@style/TextAppearance.Conversations.Body1"/> | ||||
|                 </LinearLayout> | ||||
|                 <Button | ||||
|                     android:id="@+id/agree" | ||||
|                     style="@style/Widget.Conversations.Button.Borderless" | ||||
|                     android:layout_width="wrap_content" | ||||
|                     android:layout_height="wrap_content" | ||||
|                     android:layout_gravity="end" | ||||
|                     android:text="@string/agree_and_continue" | ||||
|                     android:textColor="?colorAccent"/> | ||||
|             </LinearLayout> | ||||
|             <RelativeLayout | ||||
|                 android:layout_width="match_parent" | ||||
|                 android:layout_height="match_parent" | ||||
|                 android:layout_above="@+id/linearLayout" | ||||
|                 android:layout_alignParentLeft="true" | ||||
|                 android:layout_alignParentStart="true"> | ||||
|                 <ImageView | ||||
|                     android:layout_width="wrap_content" | ||||
|                     android:layout_height="wrap_content" | ||||
|                     android:layout_centerHorizontal="true" | ||||
|                     android:layout_centerVertical="true" | ||||
|                     android:padding="8dp" | ||||
|                     android:src="@drawable/main_logo"/> | ||||
|             </RelativeLayout> | ||||
|         </RelativeLayout> | ||||
|     </ScrollView> | ||||
| </LinearLayout> | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch