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 #### Version 2.3.5
* start removing OTR * start removing OTR
* rework conference and contact details (big avatar is available via long click)
#### Version 2.3.4 #### Version 2.3.4
* fixes for Jingle IBB file transfer * fixes for Jingle IBB file transfer
* fixes for repeated corrections filling up the database * fixes for repeated corrections filling up the database

View file

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

View file

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

View file

@ -3,6 +3,8 @@ package de.pixart.messenger.ui;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color;
import android.graphics.Point;
import android.graphics.PorterDuff; import android.graphics.PorterDuff;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
@ -13,6 +15,7 @@ import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast; import android.widget.Toast;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
@ -234,6 +237,18 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
intent.putExtra("uuid", mConversation.getUuid()); intent.putExtra("uuid", mConversation.getUuid());
startActivity(intent); 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.mAdvancedMode = getPreferences().getBoolean("advanced_muc_mode", false);
this.binding.mucInfoMore.setVisibility(this.mAdvancedMode ? View.VISIBLE : View.GONE); this.binding.mucInfoMore.setVisibility(this.mAdvancedMode ? View.VISIBLE : View.GONE);
this.binding.notificationStatusButton.setOnClickListener(this.mNotifyStatusClickListener); 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); 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 @Override
public boolean onOptionsItemSelected(MenuItem menuItem) { public boolean onOptionsItemSelected(MenuItem menuItem) {
if (MenuDoubleTabUtil.shouldIgnoreTap()) { if (MenuDoubleTabUtil.shouldIgnoreTap()) {
@ -491,7 +517,7 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
this.binding.detailsAccount.setVisibility(View.GONE); this.binding.detailsAccount.setVisibility(View.GONE);
} }
//todo add edit overlay to avatar and change layout //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); AvatarWorkerTask.loadAvatar(mConversation.getAccount(), binding.yourPhoto, R.dimen.avatar_on_details_screen_size);
String roomName = mucOptions.getName(); String roomName = mucOptions.getName();

View file

@ -5,6 +5,7 @@ import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.PorterDuff; import android.graphics.PorterDuff;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
@ -23,6 +24,7 @@ import android.view.View.OnClickListener;
import android.widget.CompoundButton; import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
@ -81,6 +83,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
private Conversation mConversation; private Conversation mConversation;
ActivityContactDetailsBinding binding; ActivityContactDetailsBinding binding;
private MediaAdapter mMediaAdapter; private MediaAdapter mMediaAdapter;
private boolean mAdvancedMode = false;
private DialogInterface.OnClickListener removeFromRoster = new DialogInterface.OnClickListener() { private DialogInterface.OnClickListener removeFromRoster = new DialogInterface.OnClickListener() {
@Override @Override
@ -270,7 +273,6 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
} }
} }
this.messageFingerprint = getIntent().getStringExtra("fingerprint"); this.messageFingerprint = getIntent().getStringExtra("fingerprint");
this.binding = DataBindingUtil.setContentView(this, R.layout.activity_contact_details); this.binding = DataBindingUtil.setContentView(this, R.layout.activity_contact_details);
setSupportActionBar((Toolbar) binding.toolbar); setSupportActionBar((Toolbar) binding.toolbar);
configureActionBar(getSupportActionBar()); configureActionBar(getSupportActionBar());
@ -326,7 +328,24 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
case R.id.action_share_uri: case R.id.action_share_uri:
shareLink(false); shareLink(false);
break; break;
case R.id.action_edit_contact: 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(); Uri systemAccount = contact.getSystemAccount();
if (systemAccount == null) { if (systemAccount == null) {
quickEdit(contact.getServerName(), R.string.contact_name, value -> { quickEdit(contact.getServerName(), R.string.contact_name, value -> {
@ -346,15 +365,16 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
Toast.makeText(ContactDetailsActivity.this, R.string.no_application_found_to_view_contact, Toast.LENGTH_SHORT).show(); 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;
} }
return super.onOptionsItemSelected(menuItem);
@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 @Override
@ -362,7 +382,6 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
getMenuInflater().inflate(R.menu.contact_details, menu); getMenuInflater().inflate(R.menu.contact_details, menu);
MenuItem block = menu.findItem(R.id.action_block); MenuItem block = menu.findItem(R.id.action_block);
MenuItem unblock = menu.findItem(R.id.action_unblock); MenuItem unblock = menu.findItem(R.id.action_unblock);
MenuItem edit = menu.findItem(R.id.action_edit_contact);
if (contact == null) { if (contact == null) {
return true; return true;
} }
@ -377,9 +396,6 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
unblock.setVisible(false); unblock.setVisible(false);
block.setVisible(false); block.setVisible(false);
} }
if (!contact.showInRoster()) {
edit.setVisible(false);
}
return super.onCreateOptionsMenu(menu); return super.onCreateOptionsMenu(menu);
} }
@ -408,7 +424,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
ab.setDisplayShowCustomEnabled(true); ab.setDisplayShowCustomEnabled(true);
TextView abtitle = findViewById(android.R.id.text1); TextView abtitle = findViewById(android.R.id.text1);
TextView absubtitle = findViewById(android.R.id.text2); TextView absubtitle = findViewById(android.R.id.text2);
abtitle.setText(EmojiWrapper.transform(contact.getDisplayName())); abtitle.setText(R.string.contact_details);
abtitle.setSelected(true); abtitle.setSelected(true);
abtitle.setClickable(false); abtitle.setClickable(false);
absubtitle.setVisibility(View.GONE); absubtitle.setVisibility(View.GONE);
@ -418,11 +434,8 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
invalidateOptionsMenu(); invalidateOptionsMenu();
setTitle(contact.getDisplayName()); setTitle(contact.getDisplayName());
if (contact.getServer().toString().toLowerCase().equals(accountJid.getDomain().toLowerCase())) {
binding.contactDisplayName.setText(contact.getDisplayName()); binding.contactDisplayName.setText(contact.getDisplayName());
} else { this.binding.jid.setVisibility(this.mAdvancedMode ? View.VISIBLE : View.GONE);
binding.contactDisplayName.setText(contact.getJid().toString());
}
if (contact.showInRoster()) { if (contact.showInRoster()) {
binding.detailsSendPresence.setVisibility(View.VISIBLE); binding.detailsSendPresence.setVisibility(View.VISIBLE);
binding.detailsReceivePresence.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.addContactButton.getBackground().setColorFilter(getWarningButtonColor(), PorterDuff.Mode.MULTIPLY);
binding.detailsSendPresence.setOnCheckedChangeListener(null); binding.detailsSendPresence.setOnCheckedChangeListener(null);
binding.detailsReceivePresence.setOnCheckedChangeListener(null); binding.detailsReceivePresence.setOnCheckedChangeListener(null);
binding.editContactNameButton.setVisibility(View.VISIBLE);
binding.editContactNameButton.setOnClickListener(view -> {
editContact();
});
binding.addContactButton.setOnClickListener(view -> { binding.addContactButton.setOnClickListener(view -> {
final AlertDialog.Builder deleteFromRosterDialog = new AlertDialog.Builder(ContactDetailsActivity.this); final AlertDialog.Builder deleteFromRosterDialog = new AlertDialog.Builder(ContactDetailsActivity.this);
deleteFromRosterDialog.setNegativeButton(getString(R.string.cancel), null) deleteFromRosterDialog.setNegativeButton(getString(R.string.cancel), null)
@ -509,6 +525,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
binding.detailsSendPresence.setOnCheckedChangeListener(this.mOnSendCheckedChange); binding.detailsSendPresence.setOnCheckedChangeListener(this.mOnSendCheckedChange);
binding.detailsReceivePresence.setOnCheckedChangeListener(this.mOnReceiveCheckedChange); binding.detailsReceivePresence.setOnCheckedChangeListener(this.mOnReceiveCheckedChange);
} else { } else {
binding.editContactNameButton.setVisibility(View.GONE);
binding.addContactButton.setVisibility(View.VISIBLE); binding.addContactButton.setVisibility(View.VISIBLE);
binding.addContactButton.setText(getString(R.string.add_contact)); binding.addContactButton.setText(getString(R.string.add_contact));
binding.addContactButton.getBackground().clearColorFilter(); 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; String account;
if (Config.DOMAIN_LOCK != null) { if (Config.DOMAIN_LOCK != null) {
account = contact.getAccount().getJid().getLocal(); account = contact.getAccount().getJid().getLocal();
@ -545,9 +562,20 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
account = contact.getAccount().getJid().asBareJid().toString(); account = contact.getAccount().getJid().asBareJid().toString();
} }
binding.detailsAccount.setText(getString(R.string.using_account, account)); 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.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()) { if (xmppConnectionService.multipleAccounts()) {
binding.detailsAccount.setVisibility(View.VISIBLE); binding.detailsAccount.setVisibility(View.VISIBLE);
} else { } else {

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <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"> xmlns:card_view="http://schemas.android.com/apk/res-auto">
<LinearLayout <LinearLayout
@ -38,63 +39,69 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
<RelativeLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:orientation="vertical" android:orientation="vertical"
android:padding="@dimen/card_padding_regular"> android:padding="@dimen/card_padding_regular">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/details_display"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
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 <TextView
android:id="@+id/contact_display_name" android:id="@+id/contact_display_name"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.Conversations.Title" /> android:textAppearance="@style/TextAppearance.Conversations.Title" />
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout
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" />
<LinearLayout
android:id="@+id/details_jidbox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="vertical">
<TextView <TextView
android:id="@+id/details_contactjid" android:id="@+id/jid"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/account_settings_example_jabber_id" android:text="@string/account_settings_example_jabber_id"
android:textAppearance="@style/TextAppearance.Conversations.Title" android:textAppearance="@style/TextAppearance.Conversations.Body1"
android:textIsSelectable="true" android:textIsSelectable="true"
android:visibility="gone" /> android:visibility="gone" />
</LinearLayout>
</LinearLayout>
<com.wefika.flowlayout.FlowLayout <com.wefika.flowlayout.FlowLayout
android:id="@+id/tags" android:id="@+id/tags"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginStart="-2dp" android:layout_marginStart="-2dp"
android:layout_marginLeft="-2dp" android:layout_marginLeft="-2dp"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
@ -105,7 +112,6 @@
android:id="@+id/details_lastseen" android:id="@+id/details_lastseen"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp"
android:textAppearance="@style/TextAppearance.Conversations.Subhead" /> android:textAppearance="@style/TextAppearance.Conversations.Subhead" />
@ -114,38 +120,51 @@
android:id="@+id/status_message" android:id="@+id/status_message"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp"
android:gravity="center_horizontal" android:textAppearance="@style/TextAppearance.Conversations.Subhead" />
android:textAppearance="@style/TextAppearance.Conversations.Body1" />
<TextView <TextView
android:id="@+id/resource" android:id="@+id/resource"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp"
android:gravity="center_horizontal" android:textAppearance="@style/TextAppearance.Conversations.Status" />
android:textSize="?attr/TextSizeBody" </LinearLayout>
android:textStyle="italic" />
<Button <ImageButton
android:id="@+id/add_contact_button" android:id="@+id/edit_contact_name_button"
android:layout_width="match_parent" 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_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:layout_marginBottom="4dp" android:orientation="vertical">
android:text="@string/add_contact" />
<CheckBox <CheckBox
android:id="@+id/details_send_presence" android:id="@+id/details_send_presence"
style="@style/Widget.Conversations.CheckBox" style="@style/Widget.Conversations.CheckBox"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="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:text="@string/send_presence_updates"
android:textAppearance="@style/TextAppearance.Conversations.Body1" /> android:textAppearance="@style/TextAppearance.Conversations.Body1" />
@ -154,50 +173,16 @@
style="@style/Widget.Conversations.CheckBox" style="@style/Widget.Conversations.CheckBox"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="-6dp"
android:layout_marginLeft="-6dp"
android:text="@string/receive_presence_updates" android:text="@string/receive_presence_updates"
android:textAppearance="@style/TextAppearance.Conversations.Body1" /> android:textAppearance="@style/TextAppearance.Conversations.Body1" />
</LinearLayout> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/card_padding_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>
</RelativeLayout>
</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 <RelativeLayout
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentStart="true" android:layout_below="@+id/details_jidbox">
android:layout_alignParentLeft="true"
android:padding="@dimen/card_padding_regular"
android:touchscreenBlocksFocus="true">
<TextView <TextView
android:id="@+id/notification_status_text" android:id="@+id/notification_status_text"
@ -225,7 +210,35 @@
android:padding="@dimen/image_button_padding" android:padding="@dimen/image_button_padding"
android:src="@drawable/ic_notifications_black_24dp" /> android:src="@drawable/ic_notifications_black_24dp" />
</RelativeLayout> </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>
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
@ -307,8 +320,8 @@
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="8dp"
android:layout_gravity="end" android:layout_gravity="end"
android:layout_marginTop="8dp"
android:orientation="horizontal"> android:orientation="horizontal">
<Button <Button

View file

@ -60,19 +60,32 @@
android:layout_toLeftOf="@+id/edit_muc_name_button" android:layout_toLeftOf="@+id/edit_muc_name_button"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
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 <TextView
android:id="@+id/muc_title" android:id="@+id/muc_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.Conversations.Title" /> android:textAppearance="@style/TextAppearance.Conversations.Title" />
<TextView
android:id="@+id/muc_subject"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:textAppearance="@style/TextAppearance.Conversations.Subhead" />
<TextView <TextView
android:id="@+id/jid" android:id="@+id/jid"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -81,6 +94,16 @@
android:textAppearance="@style/TextAppearance.Conversations.Body1" android:textAppearance="@style/TextAppearance.Conversations.Body1"
android:textIsSelectable="true" android:textIsSelectable="true"
android:visibility="gone" /> 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" />
</LinearLayout> </LinearLayout>
@ -138,27 +161,6 @@
android:src="?attr/icon_edit_body" /> android:src="?attr/icon_edit_body" />
</RelativeLayout> </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 <RelativeLayout
android:id="@+id/muc_settings" android:id="@+id/muc_settings"
android:layout_width="fill_parent" android:layout_width="fill_parent"
@ -279,7 +281,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:padding="@dimen/card_padding_list"> android:padding="@dimen/card_padding_regular">
<Button <Button
android:id="@+id/destroy" android:id="@+id/destroy"
@ -289,6 +291,15 @@
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp" /> 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 <TextView
android:id="@+id/details_account" android:id="@+id/details_account"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -332,8 +343,8 @@
<com.makeramen.roundedimageview.RoundedImageView <com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/your_photo" android:id="@+id/your_photo"
android:layout_width="72dp" android:layout_width="@dimen/avatar_on_details_screen_size"
android:layout_height="72dp" android:layout_height="@dimen/avatar_on_details_screen_size"
android:layout_alignParentStart="true" android:layout_alignParentStart="true"
android:layout_alignParentLeft="true" android:layout_alignParentLeft="true"
android:layout_alignParentEnd="false" android:layout_alignParentEnd="false"
@ -394,15 +405,6 @@
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp" /> 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>
</LinearLayout> </LinearLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>

View file

@ -2,19 +2,12 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android" <menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"> 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 <item
android:id="@+id/action_share" android:id="@+id/action_share"
android:icon="@drawable/ic_share_white_24dp" android:icon="@drawable/ic_share_white_24dp"
android:orderInCategory="15" android:orderInCategory="15"
app:showAsAction="always" android:title="@string/share_uri_with"
android:title="@string/share_uri_with"> app:showAsAction="always">
<menu> <menu>
<item <item
android:id="@+id/action_share_uri" android:id="@+id/action_share_uri"
@ -30,16 +23,22 @@
<item <item
android:id="@+id/action_block" android:id="@+id/action_block"
android:orderInCategory="72"
app:showAsAction="always"
android:icon="@drawable/ic_speaker_notes_off_white_24dp" 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 <item
android:id="@+id/action_unblock" android:id="@+id/action_unblock"
android:orderInCategory="73"
app:showAsAction="always"
android:icon="@drawable/ic_speaker_notes_white_24dp" 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> </menu>

View file

@ -18,7 +18,7 @@
<string name="title_activity_manage_accounts">إدارة الحسابات</string> <string name="title_activity_manage_accounts">إدارة الحسابات</string>
<string name="title_activity_settings">الإعدادات</string> <string name="title_activity_settings">الإعدادات</string>
<string name="conference_details">تفاصيل فريق المحادثة</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_start_conversation">ابدأ محادثة</string>
<string name="title_activity_choose_contact">إختر مُراسلك</string> <string name="title_activity_choose_contact">إختر مُراسلك</string>
<string name="title_activity_choose_contacts">اختر جهات الاتصال</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_manage_accounts">Hesabları idarә et</string>
<string name="title_activity_settings">Tənzimləmələr</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="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_sharewith">Bu danışıqla paylaş</string>
<string name="title_activity_start_conversation">Danışığa başla</string> <string name="title_activity_start_conversation">Danışığa başla</string>
<string name="title_activity_choose_contact">Şəxs seç</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_manage_accounts">Управление на профилите</string>
<string name="title_activity_settings">Настройки</string> <string name="title_activity_settings">Настройки</string>
<string name="conference_details">Подробности за групов чат</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_sharewith">Сподели със разговор</string>
<string name="title_activity_start_conversation">Започнете разговор</string> <string name="title_activity_start_conversation">Започнете разговор</string>
<string name="title_activity_choose_contact">Изберете контакт</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_manage_accounts">Gestionar comptes</string>
<string name="title_activity_settings">Ajustos</string> <string name="title_activity_settings">Ajustos</string>
<string name="conference_details">Detalls del grupo de xat</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_sharewith">Compartir una conversa</string>
<string name="title_activity_start_conversation">Iniciar conversa</string> <string name="title_activity_start_conversation">Iniciar conversa</string>
<string name="title_activity_choose_contact">Escollir contacte</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_manage_accounts">Profile verwalten</string>
<string name="title_activity_settings">Einstellungen</string> <string name="title_activity_settings">Einstellungen</string>
<string name="conference_details">Gruppenchat-Details</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_sharewith">Mit Unterhaltung teilen</string>
<string name="title_activity_start_conversation">Unterhaltung beginnen</string> <string name="title_activity_start_conversation">Unterhaltung beginnen</string>
<string name="title_activity_choose_contact">Kontakt auswählen</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_manage_accounts">Gestionar cuentas</string>
<string name="title_activity_settings">Ajustes</string> <string name="title_activity_settings">Ajustes</string>
<string name="conference_details">Detalles del grupo de chat</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_sharewith">Compartir con conversación</string>
<string name="title_activity_start_conversation">Iniciar conversación</string> <string name="title_activity_start_conversation">Iniciar conversación</string>
<string name="title_activity_choose_contact">Elegir contacto</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_manage_accounts">Gestion des comptes</string>
<string name="title_activity_settings">Paramètres</string> <string name="title_activity_settings">Paramètres</string>
<string name="conference_details">Détails du groupe de discussion</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_sharewith">Partager avec la conversation</string>
<string name="title_activity_start_conversation">Démarrer une conversation</string> <string name="title_activity_start_conversation">Démarrer une conversation</string>
<string name="title_activity_choose_contact">Choix du contact</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_manage_accounts">Gestisci account</string>
<string name="title_activity_settings">Impostazioni</string> <string name="title_activity_settings">Impostazioni</string>
<string name="conference_details">Dettagli della conversazione di gruppo</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_sharewith">Condividi con la conversazione</string>
<string name="title_activity_start_conversation">Inizia conversazione</string> <string name="title_activity_start_conversation">Inizia conversazione</string>
<string name="title_activity_choose_contact">Scegli un contatto</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_manage_accounts">Zarządzaj kontami</string>
<string name="title_activity_settings">Ustawienia</string> <string name="title_activity_settings">Ustawienia</string>
<string name="conference_details">Szczegóły czatu grupowego</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_sharewith">Udostępnij w konwersacji</string>
<string name="title_activity_start_conversation">Rozpocznij konwersację</string> <string name="title_activity_start_conversation">Rozpocznij konwersację</string>
<string name="title_activity_choose_contact">Wybierz kontakt</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_manage_accounts">Управление аккаунтами</string>
<string name="title_activity_settings">Настройки</string> <string name="title_activity_settings">Настройки</string>
<string name="conference_details">Информация о конференции</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_sharewith">Поделиться с разговором</string>
<string name="title_activity_start_conversation">Начать беседу</string> <string name="title_activity_start_conversation">Начать беседу</string>
<string name="title_activity_choose_contact">Выбрать контакт</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_manage_accounts">Впорядкувати облікові записи</string>
<string name="title_activity_settings">Налаштування</string> <string name="title_activity_settings">Налаштування</string>
<string name="conference_details">Деталі групи</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_sharewith">Поділитися в Розмови</string>
<string name="title_activity_start_conversation">Почати розмову</string> <string name="title_activity_start_conversation">Почати розмову</string>
<string name="title_activity_choose_contact">Вибрати контакт</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_manage_accounts">管理账户</string>
<string name="title_activity_settings">设置</string> <string name="title_activity_settings">设置</string>
<string name="conference_details">群聊详情</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_sharewith">分享会话</string>
<string name="title_activity_start_conversation">开始会话</string> <string name="title_activity_start_conversation">开始会话</string>
<string name="title_activity_choose_contact">选择联系人</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_manage_accounts">Manage accounts</string>
<string name="title_activity_settings">Settings</string> <string name="title_activity_settings">Settings</string>
<string name="conference_details">Group chat details</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_sharewith">Share with conversation</string>
<string name="title_activity_start_conversation">Start conversation</string> <string name="title_activity_start_conversation">Start conversation</string>
<string name="title_activity_choose_contact">Choose contact</string> <string name="title_activity_choose_contact">Choose contact</string>