rework conference and contact details

* reduce avatar size
* show big avatar on long click
* reorder elements
* show contact/muc JID in advanced mode

fixes #423
This commit is contained in:
Christian Schneppe 2019-12-23 11:02:33 +01:00
parent 07b4ea61b2
commit 99cfae2e33
No known key found for this signature in database
GPG key ID: F30B8D686B44D87E
21 changed files with 301 additions and 232 deletions

View file

@ -2,6 +2,8 @@
#### Version 2.3.5
* start removing OTR
* rework conference and contact details (big avatar is available via long click)
#### Version 2.3.4
* fixes for Jingle IBB file transfer
* fixes for repeated corrections filling up the database

View file

@ -67,7 +67,6 @@ dependencies {
implementation 'androidx.emoji:emoji:1.0.0'
gitImplementation 'androidx.emoji:emoji-appcompat:1.0.0'
gitImplementation 'androidx.emoji:emoji-bundled:1.0.0'
implementation 'androidx.exifinterface:exifinterface:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.10.0'

View file

@ -229,7 +229,7 @@
android:windowSoftInputMode="stateHidden" />
<activity
android:name=".ui.ContactDetailsActivity"
android:label="@string/title_activity_contact_details"
android:label="@string/contact_details"
android:windowSoftInputMode="stateHidden" />
<activity
android:name=".ui.PublishProfilePictureActivity"

View file

@ -3,6 +3,8 @@ package de.pixart.messenger.ui;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Point;
import android.graphics.PorterDuff;
import android.os.Bundle;
import android.text.Editable;
@ -13,6 +15,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
@ -234,6 +237,18 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
intent.putExtra("uuid", mConversation.getUuid());
startActivity(intent);
});
this.binding.detailsMucAvatar.setOnLongClickListener(v -> {
ImageView view = new ImageView(ConferenceDetailsActivity.this);
view.setAdjustViewBounds(true);
view.setMaxHeight(R.dimen.avatar_big);
view.setMaxWidth(R.dimen.avatar_big);
view.setBackgroundColor(Color.WHITE);
AvatarWorkerTask.loadAvatar(mConversation, view, R.dimen.avatar_big);
AlertDialog.Builder builder = new AlertDialog.Builder(ConferenceDetailsActivity.this);
builder.setView(view);
builder.create().show();
return true;
});
this.mAdvancedMode = getPreferences().getBoolean("advanced_muc_mode", false);
this.binding.mucInfoMore.setVisibility(this.mAdvancedMode ? View.VISIBLE : View.GONE);
this.binding.notificationStatusButton.setOnClickListener(this.mNotifyStatusClickListener);
@ -277,6 +292,17 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
binding.mediaWrapper.setVisibility(Compatibility.hasStoragePermission(this) ? View.VISIBLE : View.GONE);
}
private boolean canChangeMUCAvatar() {
final MucOptions mucOptions = mConversation.getMucOptions();
if (!mucOptions.hasVCards()) {
return false;
} else if (!mucOptions.getSelf().getAffiliation().ranks(MucOptions.Affiliation.OWNER)) {
return false;
} else {
return true;
}
}
@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
if (MenuDoubleTabUtil.shouldIgnoreTap()) {
@ -491,7 +517,7 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
this.binding.detailsAccount.setVisibility(View.GONE);
}
//todo add edit overlay to avatar and change layout
AvatarWorkerTask.loadAvatar(mConversation, binding.detailsMucAvatar, R.dimen.avatar_big);
AvatarWorkerTask.loadAvatar(mConversation, binding.detailsMucAvatar, R.dimen.avatar_on_details_screen_size, canChangeMUCAvatar());
AvatarWorkerTask.loadAvatar(mConversation.getAccount(), binding.yourPhoto, R.dimen.avatar_on_details_screen_size);
String roomName = mucOptions.getName();

View file

@ -5,6 +5,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.net.Uri;
import android.os.Bundle;
@ -23,6 +24,7 @@ import android.view.View.OnClickListener;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
@ -81,6 +83,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
private Conversation mConversation;
ActivityContactDetailsBinding binding;
private MediaAdapter mMediaAdapter;
private boolean mAdvancedMode = false;
private DialogInterface.OnClickListener removeFromRoster = new DialogInterface.OnClickListener() {
@Override
@ -270,7 +273,6 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
}
}
this.messageFingerprint = getIntent().getStringExtra("fingerprint");
this.binding = DataBindingUtil.setContentView(this, R.layout.activity_contact_details);
setSupportActionBar((Toolbar) binding.toolbar);
configureActionBar(getSupportActionBar());
@ -326,43 +328,60 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
case R.id.action_share_uri:
shareLink(false);
break;
case R.id.action_edit_contact:
Uri systemAccount = contact.getSystemAccount();
if (systemAccount == null) {
quickEdit(contact.getServerName(), R.string.contact_name, value -> {
contact.setServerName(value);
ContactDetailsActivity.this.xmppConnectionService.pushContactToServer(contact);
populateView();
return null;
}, true);
} else {
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setDataAndType(systemAccount, Contacts.CONTENT_ITEM_TYPE);
intent.putExtra("finishActivityOnSaveCompleted", true);
try {
startActivity(intent);
overridePendingTransition(R.animator.fade_in, R.animator.fade_out);
} catch (ActivityNotFoundException e) {
Toast.makeText(ContactDetailsActivity.this, R.string.no_application_found_to_view_contact, Toast.LENGTH_SHORT).show();
}
}
break;
case R.id.action_block:
BlockContactDialog.show(this, contact);
break;
case R.id.action_unblock:
BlockContactDialog.show(this, contact);
break;
case R.id.action_advanced_mode:
this.mAdvancedMode = !menuItem.isChecked();
menuItem.setChecked(this.mAdvancedMode);
getPreferences().edit().putBoolean("advanced_mode", mAdvancedMode).apply();
invalidateOptionsMenu();
refreshUi();
break;
}
return super.onOptionsItemSelected(menuItem);
}
private void editContact() {
Uri systemAccount = contact.getSystemAccount();
if (systemAccount == null) {
quickEdit(contact.getServerName(), R.string.contact_name, value -> {
contact.setServerName(value);
ContactDetailsActivity.this.xmppConnectionService.pushContactToServer(contact);
populateView();
return null;
}, true);
} else {
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setDataAndType(systemAccount, Contacts.CONTENT_ITEM_TYPE);
intent.putExtra("finishActivityOnSaveCompleted", true);
try {
startActivity(intent);
overridePendingTransition(R.animator.fade_in, R.animator.fade_out);
} catch (ActivityNotFoundException e) {
Toast.makeText(ContactDetailsActivity.this, R.string.no_application_found_to_view_contact, Toast.LENGTH_SHORT).show();
}
}
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem menuItemAdvancedMode = menu.findItem(R.id.action_advanced_mode);
menuItemAdvancedMode.setChecked(mAdvancedMode);
if (mConversation == null) {
return true;
}
return true;
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
getMenuInflater().inflate(R.menu.contact_details, menu);
MenuItem block = menu.findItem(R.id.action_block);
MenuItem unblock = menu.findItem(R.id.action_unblock);
MenuItem edit = menu.findItem(R.id.action_edit_contact);
if (contact == null) {
return true;
}
@ -377,9 +396,6 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
unblock.setVisible(false);
block.setVisible(false);
}
if (!contact.showInRoster()) {
edit.setVisible(false);
}
return super.onCreateOptionsMenu(menu);
}
@ -408,7 +424,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
ab.setDisplayShowCustomEnabled(true);
TextView abtitle = findViewById(android.R.id.text1);
TextView absubtitle = findViewById(android.R.id.text2);
abtitle.setText(EmojiWrapper.transform(contact.getDisplayName()));
abtitle.setText(R.string.contact_details);
abtitle.setSelected(true);
abtitle.setClickable(false);
absubtitle.setVisibility(View.GONE);
@ -418,11 +434,8 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
invalidateOptionsMenu();
setTitle(contact.getDisplayName());
if (contact.getServer().toString().toLowerCase().equals(accountJid.getDomain().toLowerCase())) {
binding.contactDisplayName.setText(contact.getDisplayName());
} else {
binding.contactDisplayName.setText(contact.getJid().toString());
}
binding.contactDisplayName.setText(contact.getDisplayName());
this.binding.jid.setVisibility(this.mAdvancedMode ? View.VISIBLE : View.GONE);
if (contact.showInRoster()) {
binding.detailsSendPresence.setVisibility(View.VISIBLE);
binding.detailsReceivePresence.setVisibility(View.VISIBLE);
@ -431,7 +444,10 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
binding.addContactButton.getBackground().setColorFilter(getWarningButtonColor(), PorterDuff.Mode.MULTIPLY);
binding.detailsSendPresence.setOnCheckedChangeListener(null);
binding.detailsReceivePresence.setOnCheckedChangeListener(null);
binding.editContactNameButton.setVisibility(View.VISIBLE);
binding.editContactNameButton.setOnClickListener(view -> {
editContact();
});
binding.addContactButton.setOnClickListener(view -> {
final AlertDialog.Builder deleteFromRosterDialog = new AlertDialog.Builder(ContactDetailsActivity.this);
deleteFromRosterDialog.setNegativeButton(getString(R.string.cancel), null)
@ -509,6 +525,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
binding.detailsSendPresence.setOnCheckedChangeListener(this.mOnSendCheckedChange);
binding.detailsReceivePresence.setOnCheckedChangeListener(this.mOnReceiveCheckedChange);
} else {
binding.editContactNameButton.setVisibility(View.GONE);
binding.addContactButton.setVisibility(View.VISIBLE);
binding.addContactButton.setText(getString(R.string.add_contact));
binding.addContactButton.getBackground().clearColorFilter();
@ -537,7 +554,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
}
}
binding.detailsContactjid.setText(IrregularUnicodeDetector.style(this, contact.getJid()));
binding.jid.setText(IrregularUnicodeDetector.style(this, contact.getJid()));
String account;
if (Config.DOMAIN_LOCK != null) {
account = contact.getAccount().getJid().getLocal();
@ -545,9 +562,20 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
account = contact.getAccount().getJid().asBareJid().toString();
}
binding.detailsAccount.setText(getString(R.string.using_account, account));
AvatarWorkerTask.loadAvatar(contact, binding.detailsContactBadge, R.dimen.avatar_big);
AvatarWorkerTask.loadAvatar(contact, binding.detailsContactBadge, R.dimen.avatar_on_details_screen_size);
binding.detailsContactBadge.setOnClickListener(this.onBadgeClick);
binding.detailsContactBadge.setOnLongClickListener(v -> {
ImageView view = new ImageView(ContactDetailsActivity.this);
view.setAdjustViewBounds(true);
view.setMaxHeight(R.dimen.avatar_big);
view.setMaxWidth(R.dimen.avatar_big);
view.setBackgroundColor(Color.WHITE);
AvatarWorkerTask.loadAvatar(mConversation, view, R.dimen.avatar_big);
AlertDialog.Builder builder = new AlertDialog.Builder(ContactDetailsActivity.this);
builder.setView(view);
builder.create().show();
return true;
});
if (xmppConnectionService.multipleAccounts()) {
binding.detailsAccount.setVisibility(View.VISIBLE);
} else {

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/tools"
xmlns:card_view="http://schemas.android.com/apk/res-auto">
<LinearLayout
@ -38,63 +39,69 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="@dimen/card_padding_regular">
<TextView
android:id="@+id/contact_display_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.Conversations.Title" />
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="@dimen/card_padding_regular">
<QuickContactBadge
android:id="@+id/details_contact_badge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:background="?attr/color_border"
android:maxWidth="384dp"
android:maxHeight="384dp"
android:padding="1dp"
android:scaleType="centerCrop" />
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/details_jidbox"
android:layout_width="match_parent"
android:id="@+id/details_display"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_toStartOf="@+id/edit_contact_name_button"
android:layout_toLeftOf="@+id/edit_contact_name_button"
android:orientation="vertical">
<TextView
android:id="@+id/details_contactjid"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/account_settings_example_jabber_id"
android:textAppearance="@style/TextAppearance.Conversations.Title"
android:textIsSelectable="true"
android:visibility="gone" />
android:orientation="horizontal">
<QuickContactBadge
android:id="@+id/details_contact_badge"
android:layout_width="@dimen/avatar_on_details_screen_size"
android:layout_height="@dimen/avatar_on_details_screen_size"
android:layout_marginEnd="@dimen/avatar_item_distance"
android:layout_marginRight="@dimen/avatar_item_distance"
android:adjustViewBounds="true"
android:background="?attr/color_border"
android:padding="1dp"
android:scaleType="centerCrop" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/contact_display_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.Conversations.Title" />
<TextView
android:id="@+id/jid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/account_settings_example_jabber_id"
android:textAppearance="@style/TextAppearance.Conversations.Body1"
android:textIsSelectable="true"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
<com.wefika.flowlayout.FlowLayout
android:id="@+id/tags"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginStart="-2dp"
android:layout_marginLeft="-2dp"
android:layout_marginTop="4dp"
@ -105,7 +112,6 @@
android:id="@+id/details_lastseen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
android:textAppearance="@style/TextAppearance.Conversations.Subhead" />
@ -114,38 +120,51 @@
android:id="@+id/status_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
android:gravity="center_horizontal"
android:textAppearance="@style/TextAppearance.Conversations.Body1" />
android:textAppearance="@style/TextAppearance.Conversations.Subhead" />
<TextView
android:id="@+id/resource"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
android:gravity="center_horizontal"
android:textSize="?attr/TextSizeBody"
android:textStyle="italic" />
android:textAppearance="@style/TextAppearance.Conversations.Status" />
</LinearLayout>
<Button
android:id="@+id/add_contact_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
android:text="@string/add_contact" />
<ImageButton
android:id="@+id/edit_contact_name_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:alpha="?attr/icon_alpha"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/image_button_padding"
android:src="?attr/icon_edit_body" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/contact_settings"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/details_jidbox"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:orientation="vertical">
<CheckBox
android:id="@+id/details_send_presence"
style="@style/Widget.Conversations.CheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginStart="-6dp"
android:layout_marginLeft="-6dp"
android:text="@string/send_presence_updates"
android:textAppearance="@style/TextAppearance.Conversations.Body1" />
@ -154,80 +173,74 @@
style="@style/Widget.Conversations.CheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="-6dp"
android:layout_marginLeft="-6dp"
android:text="@string/receive_presence_updates"
android:textAppearance="@style/TextAppearance.Conversations.Body1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/card_padding_list">
android:layout_below="@+id/details_jidbox">
<TextView
android:id="@+id/details_account"
android:id="@+id/notification_status_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginTop="24dp"
android:text="@string/using_account"
android:textAppearance="@style/TextAppearance.Conversations.Caption"
android:visibility="visible" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_toStartOf="@+id/notification_status_button"
android:layout_toLeftOf="@+id/notification_status_button"
android:text="@string/notify_on_all_messages"
android:textSize="?attr/TextSizeBody" />
<ImageButton
android:id="@+id/notification_status_button"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_gravity="center_horizontal"
android:alpha="?attr/icon_alpha"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/image_button_padding"
android:src="@drawable/ic_notifications_black_24dp" />
</RelativeLayout>
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/card_padding_list">
<Button
android:id="@+id/add_contact_button"
style="?android:attr/buttonStyleSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp"
android:text="@string/add_to_contact_list" />
<TextView
android:id="@+id/details_account"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginTop="24dp"
android:text="@string/using_account"
android:textAppearance="@style/TextAppearance.Conversations.Caption"
android:visibility="visible" />
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/activity_horizontal_margin"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:layout_marginEnd="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:layout_marginBottom="@dimen/activity_vertical_margin"
card_view:cardBackgroundColor="?attr/color_background_secondary">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:padding="@dimen/card_padding_regular"
android:touchscreenBlocksFocus="true">
<TextView
android:id="@+id/notification_status_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_toStartOf="@+id/notification_status_button"
android:layout_toLeftOf="@+id/notification_status_button"
android:text="@string/notify_on_all_messages"
android:textSize="?attr/TextSizeBody" />
<ImageButton
android:id="@+id/notification_status_button"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_gravity="center_horizontal"
android:alpha="?attr/icon_alpha"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="@dimen/image_button_padding"
android:src="@drawable/ic_notifications_black_24dp" />
</RelativeLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/media_wrapper"
android:layout_width="fill_parent"
@ -307,8 +320,8 @@
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginTop="8dp"
android:layout_gravity="end"
android:layout_marginTop="8dp"
android:orientation="horizontal">
<Button

View file

@ -60,28 +60,51 @@
android:layout_toLeftOf="@+id/edit_muc_name_button"
android:orientation="vertical">
<TextView
android:id="@+id/muc_title"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.Conversations.Title" />
android:orientation="horizontal">
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/details_muc_avatar"
android:layout_width="@dimen/avatar_on_details_screen_size"
android:layout_height="@dimen/avatar_on_details_screen_size"
android:layout_marginEnd="@dimen/avatar_item_distance"
android:layout_marginRight="@dimen/avatar_item_distance"
android:padding="1dp"
android:scaleType="centerCrop"
app:riv_corner_radius="@dimen/rounded_image_border" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/muc_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.Conversations.Title" />
<TextView
android:id="@+id/jid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/account_settings_example_jabber_id"
android:textAppearance="@style/TextAppearance.Conversations.Body1"
android:textIsSelectable="true"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/muc_subject"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/list_padding"
android:autoLink="web"
android:textAppearance="@style/TextAppearance.Conversations.Subhead" />
<TextView
android:id="@+id/jid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/account_settings_example_jabber_id"
android:textAppearance="@style/TextAppearance.Conversations.Body1"
android:textIsSelectable="true"
android:visibility="gone" />
</LinearLayout>
<LinearLayout
@ -138,27 +161,6 @@
android:src="?attr/icon_edit_body" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingTop="@dimen/card_padding_regular">
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/details_muc_avatar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/avatar_item_distance"
android:layout_marginRight="@dimen/avatar_item_distance"
android:adjustViewBounds="true"
android:maxWidth="384dp"
android:maxHeight="384dp"
android:padding="1dp"
android:scaleType="centerCrop"
app:riv_corner_radius="@dimen/rounded_image_border" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/muc_settings"
android:layout_width="fill_parent"
@ -279,7 +281,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/card_padding_list">
android:padding="@dimen/card_padding_regular">
<Button
android:id="@+id/destroy"
@ -289,6 +291,15 @@
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp" />
<Button
android:id="@+id/add_contact_button"
style="?android:attr/buttonStyleSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp"
android:text="@string/add_to_contact_list" />
<TextView
android:id="@+id/details_account"
android:layout_width="wrap_content"
@ -332,8 +343,8 @@
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/your_photo"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_width="@dimen/avatar_on_details_screen_size"
android:layout_height="@dimen/avatar_on_details_screen_size"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentEnd="false"
@ -394,15 +405,6 @@
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp" />
<Button
android:id="@+id/add_contact_button"
style="?android:attr/buttonStyleSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp"
android:text="@string/add_to_contact_list" />
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>

View file

@ -2,19 +2,12 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_edit_contact"
android:icon="?attr/icon_edit"
android:orderInCategory="10"
app:showAsAction="always"
android:title="@string/action_edit_contact" />
<item
android:id="@+id/action_share"
android:icon="@drawable/ic_share_white_24dp"
android:orderInCategory="15"
app:showAsAction="always"
android:title="@string/share_uri_with">
android:title="@string/share_uri_with"
app:showAsAction="always">
<menu>
<item
android:id="@+id/action_share_uri"
@ -30,16 +23,22 @@
<item
android:id="@+id/action_block"
android:orderInCategory="72"
app:showAsAction="always"
android:icon="@drawable/ic_speaker_notes_off_white_24dp"
android:title="@string/action_block_contact" />
android:orderInCategory="72"
android:title="@string/action_block_contact"
app:showAsAction="always" />
<item
android:id="@+id/action_unblock"
android:orderInCategory="73"
app:showAsAction="always"
android:icon="@drawable/ic_speaker_notes_white_24dp"
android:title="@string/action_unblock_contact" />
android:orderInCategory="73"
android:title="@string/action_unblock_contact"
app:showAsAction="always" />
<item
android:id="@+id/action_advanced_mode"
android:checkable="true"
android:checked="false"
android:orderInCategory="85"
android:title="@string/advanced_mode"
app:showAsAction="never" />
</menu>

View file

@ -18,7 +18,7 @@
<string name="title_activity_manage_accounts">إدارة الحسابات</string>
<string name="title_activity_settings">الإعدادات</string>
<string name="conference_details">تفاصيل فريق المحادثة</string>
<string name="title_activity_contact_details">بيانات المُراسِل</string>
<string name="contact_details">بيانات المُراسِل</string>
<string name="title_activity_start_conversation">ابدأ محادثة</string>
<string name="title_activity_choose_contact">إختر مُراسلك</string>
<string name="title_activity_choose_contacts">اختر جهات الاتصال</string>

View file

@ -18,7 +18,7 @@
<string name="title_activity_manage_accounts">Hesabları idarә et</string>
<string name="title_activity_settings">Tənzimləmələr</string>
<string name="conference_details">Qrup söhbəti təfsilatları</string>
<string name="title_activity_contact_details">Şəxs təfsilatı</string>
<string name="contact_details">Şəxs təfsilatı</string>
<string name="title_activity_sharewith">Bu danışıqla paylaş</string>
<string name="title_activity_start_conversation">Danışığa başla</string>
<string name="title_activity_choose_contact">Şəxs seç</string>

View file

@ -18,7 +18,7 @@
<string name="title_activity_manage_accounts">Управление на профилите</string>
<string name="title_activity_settings">Настройки</string>
<string name="conference_details">Подробности за групов чат</string>
<string name="title_activity_contact_details">Данни за контакта</string>
<string name="contact_details">Данни за контакта</string>
<string name="title_activity_sharewith">Сподели със разговор</string>
<string name="title_activity_start_conversation">Започнете разговор</string>
<string name="title_activity_choose_contact">Изберете контакт</string>

View file

@ -18,7 +18,7 @@
<string name="title_activity_manage_accounts">Gestionar comptes</string>
<string name="title_activity_settings">Ajustos</string>
<string name="conference_details">Detalls del grupo de xat</string>
<string name="title_activity_contact_details">Detalls del contacte</string>
<string name="contact_details">Detalls del contacte</string>
<string name="title_activity_sharewith">Compartir una conversa</string>
<string name="title_activity_start_conversation">Iniciar conversa</string>
<string name="title_activity_choose_contact">Escollir contacte</string>

View file

@ -18,7 +18,7 @@
<string name="title_activity_manage_accounts">Profile verwalten</string>
<string name="title_activity_settings">Einstellungen</string>
<string name="conference_details">Gruppenchat-Details</string>
<string name="title_activity_contact_details">Kontakt-Details</string>
<string name="contact_details">Kontakt-Details</string>
<string name="title_activity_sharewith">Mit Unterhaltung teilen</string>
<string name="title_activity_start_conversation">Unterhaltung beginnen</string>
<string name="title_activity_choose_contact">Kontakt auswählen</string>

View file

@ -18,7 +18,7 @@
<string name="title_activity_manage_accounts">Gestionar cuentas</string>
<string name="title_activity_settings">Ajustes</string>
<string name="conference_details">Detalles del grupo de chat</string>
<string name="title_activity_contact_details">Detalles del contacto</string>
<string name="contact_details">Detalles del contacto</string>
<string name="title_activity_sharewith">Compartir con conversación</string>
<string name="title_activity_start_conversation">Iniciar conversación</string>
<string name="title_activity_choose_contact">Elegir contacto</string>

View file

@ -18,7 +18,7 @@
<string name="title_activity_manage_accounts">Gestion des comptes</string>
<string name="title_activity_settings">Paramètres</string>
<string name="conference_details">Détails du groupe de discussion</string>
<string name="title_activity_contact_details">Détails du contact</string>
<string name="contact_details">Détails du contact</string>
<string name="title_activity_sharewith">Partager avec la conversation</string>
<string name="title_activity_start_conversation">Démarrer une conversation</string>
<string name="title_activity_choose_contact">Choix du contact</string>

View file

@ -18,7 +18,7 @@
<string name="title_activity_manage_accounts">Gestisci account</string>
<string name="title_activity_settings">Impostazioni</string>
<string name="conference_details">Dettagli della conversazione di gruppo</string>
<string name="title_activity_contact_details">Dettagli del contato</string>
<string name="contact_details">Dettagli del contato</string>
<string name="title_activity_sharewith">Condividi con la conversazione</string>
<string name="title_activity_start_conversation">Inizia conversazione</string>
<string name="title_activity_choose_contact">Scegli un contatto</string>

View file

@ -18,7 +18,7 @@
<string name="title_activity_manage_accounts">Zarządzaj kontami</string>
<string name="title_activity_settings">Ustawienia</string>
<string name="conference_details">Szczegóły czatu grupowego</string>
<string name="title_activity_contact_details">Szczegóły kontaktu</string>
<string name="contact_details">Szczegóły kontaktu</string>
<string name="title_activity_sharewith">Udostępnij w konwersacji</string>
<string name="title_activity_start_conversation">Rozpocznij konwersację</string>
<string name="title_activity_choose_contact">Wybierz kontakt</string>

View file

@ -18,7 +18,7 @@
<string name="title_activity_manage_accounts">Управление аккаунтами</string>
<string name="title_activity_settings">Настройки</string>
<string name="conference_details">Информация о конференции</string>
<string name="title_activity_contact_details">Сведения о контакте</string>
<string name="contact_details">Сведения о контакте</string>
<string name="title_activity_sharewith">Поделиться с разговором</string>
<string name="title_activity_start_conversation">Начать беседу</string>
<string name="title_activity_choose_contact">Выбрать контакт</string>

View file

@ -18,7 +18,7 @@
<string name="title_activity_manage_accounts">Впорядкувати облікові записи</string>
<string name="title_activity_settings">Налаштування</string>
<string name="conference_details">Деталі групи</string>
<string name="title_activity_contact_details">Переглянути деталі контакту</string>
<string name="contact_details">Переглянути деталі контакту</string>
<string name="title_activity_sharewith">Поділитися в Розмови</string>
<string name="title_activity_start_conversation">Почати розмову</string>
<string name="title_activity_choose_contact">Вибрати контакт</string>

View file

@ -18,7 +18,7 @@
<string name="title_activity_manage_accounts">管理账户</string>
<string name="title_activity_settings">设置</string>
<string name="conference_details">群聊详情</string>
<string name="title_activity_contact_details">联系人详情</string>
<string name="contact_details">联系人详情</string>
<string name="title_activity_sharewith">分享会话</string>
<string name="title_activity_start_conversation">开始会话</string>
<string name="title_activity_choose_contact">选择联系人</string>

View file

@ -17,7 +17,7 @@
<string name="title_activity_manage_accounts">Manage accounts</string>
<string name="title_activity_settings">Settings</string>
<string name="conference_details">Group chat details</string>
<string name="title_activity_contact_details">Contact details</string>
<string name="contact_details">Contact details</string>
<string name="title_activity_sharewith">Share with conversation</string>
<string name="title_activity_start_conversation">Start conversation</string>
<string name="title_activity_choose_contact">Choose contact</string>