mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 10:49:06 +01:00
Show text input permanently in threaded conversations
This commit is contained in:
@@ -116,9 +116,6 @@ public class ForumActivity extends
|
||||
public boolean onOptionsItemSelected(final MenuItem item) {
|
||||
// Handle presses on the action bar items
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_forum_compose_post:
|
||||
showTextInput(null);
|
||||
return true;
|
||||
case R.id.action_forum_share:
|
||||
Intent i2 = new Intent(this, ShareForumActivity.class);
|
||||
i2.setFlags(FLAG_ACTIVITY_CLEAR_TOP);
|
||||
|
||||
@@ -37,6 +37,7 @@ import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.VISIBLE;
|
||||
import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_GROUP_INVITE;
|
||||
import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_POST_BODY_LENGTH;
|
||||
|
||||
@@ -50,8 +51,8 @@ public class GroupActivity extends
|
||||
GroupController controller;
|
||||
|
||||
private boolean isCreator, isDissolved = false;
|
||||
private MenuItem writeMenuItem, revealMenuItem, inviteMenuItem,
|
||||
leaveMenuItem, dissolveMenuItem;
|
||||
private MenuItem revealMenuItem, inviteMenuItem, leaveMenuItem,
|
||||
dissolveMenuItem;
|
||||
|
||||
@Override
|
||||
public void injectActivity(ActivityComponent component) {
|
||||
@@ -139,7 +140,6 @@ public class GroupActivity extends
|
||||
MenuInflater inflater = getMenuInflater();
|
||||
inflater.inflate(R.menu.group_actions, menu);
|
||||
|
||||
writeMenuItem = menu.findItem(R.id.action_group_compose_message);
|
||||
revealMenuItem = menu.findItem(R.id.action_group_reveal);
|
||||
inviteMenuItem = menu.findItem(R.id.action_group_invite);
|
||||
leaveMenuItem = menu.findItem(R.id.action_group_leave);
|
||||
@@ -152,9 +152,6 @@ public class GroupActivity extends
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(final MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_group_compose_message:
|
||||
showTextInput(null);
|
||||
return true;
|
||||
case R.id.action_group_member_list:
|
||||
Intent i1 = new Intent(this, GroupMemberListActivity.class);
|
||||
i1.putExtra(GROUP_ID, groupId.getBytes());
|
||||
@@ -205,7 +202,6 @@ public class GroupActivity extends
|
||||
|
||||
private void setGroupEnabled(boolean enabled) {
|
||||
isDissolved = !enabled;
|
||||
if (writeMenuItem != null) writeMenuItem.setVisible(enabled);
|
||||
textInput.setSendButtonEnabled(enabled);
|
||||
list.getRecyclerView().setAlpha(enabled ? 1f : 0.5f);
|
||||
|
||||
@@ -213,6 +209,8 @@ public class GroupActivity extends
|
||||
textInput.setVisibility(GONE);
|
||||
if (textInput.isKeyboardOpen()) textInput.hideSoftKeyboard();
|
||||
if (textInput.isEmojiDrawerOpen()) textInput.hideEmojiDrawer();
|
||||
} else {
|
||||
textInput.setVisibility(VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -229,7 +227,6 @@ public class GroupActivity extends
|
||||
leaveMenuItem.setVisible(true);
|
||||
dissolveMenuItem.setVisible(false);
|
||||
}
|
||||
writeMenuItem.setVisible(!isDissolved);
|
||||
}
|
||||
|
||||
private void showLeaveGroupDialog() {
|
||||
|
||||
@@ -43,8 +43,6 @@ import javax.inject.Inject;
|
||||
import static android.support.design.widget.Snackbar.make;
|
||||
import static android.support.v7.widget.RecyclerView.NO_POSITION;
|
||||
import static android.support.v7.widget.RecyclerView.SCROLL_STATE_IDLE;
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.VISIBLE;
|
||||
import static java.util.logging.Level.INFO;
|
||||
import static org.briarproject.briar.android.threaded.ThreadItemAdapter.UnreadCount;
|
||||
|
||||
@@ -55,7 +53,6 @@ public abstract class ThreadListActivity<G extends NamedGroup, A extends ThreadI
|
||||
implements ThreadListListener<H>, TextInputListener, SharingListener,
|
||||
ThreadItemListener<I> {
|
||||
|
||||
protected static final String KEY_INPUT_VISIBILITY = "inputVisibility";
|
||||
protected static final String KEY_REPLY_ID = "replyId";
|
||||
|
||||
private static final Logger LOG =
|
||||
@@ -89,7 +86,6 @@ public abstract class ThreadListActivity<G extends NamedGroup, A extends ThreadI
|
||||
getController().setGroupId(groupId);
|
||||
|
||||
textInput = (TextInputView) findViewById(R.id.text_input_container);
|
||||
textInput.setVisibility(GONE);
|
||||
textInput.setListener(this);
|
||||
list = (BriarRecyclerView) findViewById(R.id.list);
|
||||
layoutManager = new LinearLayoutManager(this);
|
||||
@@ -181,8 +177,7 @@ public abstract class ThreadListActivity<G extends NamedGroup, A extends ThreadI
|
||||
} else {
|
||||
adapter.setItems(items);
|
||||
list.showData();
|
||||
if (replyId != null)
|
||||
adapter.setHighlightedItem(replyId);
|
||||
updateTextInput(replyId);
|
||||
}
|
||||
} else {
|
||||
LOG.info("Concurrent update, reloading");
|
||||
@@ -231,18 +226,9 @@ public abstract class ThreadListActivity<G extends NamedGroup, A extends ThreadI
|
||||
list.stopPeriodicUpdate();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onRestoreInstanceState(Bundle savedInstanceState) {
|
||||
super.onRestoreInstanceState(savedInstanceState);
|
||||
boolean visible = savedInstanceState.getBoolean(KEY_INPUT_VISIBILITY);
|
||||
textInput.setVisibility(visible ? VISIBLE : GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
boolean visible = textInput.getVisibility() == VISIBLE;
|
||||
outState.putBoolean(KEY_INPUT_VISIBILITY, visible);
|
||||
ThreadItem replyItem = adapter.getHighlightedItem();
|
||||
if (replyItem != null) {
|
||||
outState.putByteArray(KEY_REPLY_ID, replyItem.getId().getBytes());
|
||||
@@ -262,9 +248,8 @@ public abstract class ThreadListActivity<G extends NamedGroup, A extends ThreadI
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (textInput.getVisibility() == VISIBLE) {
|
||||
textInput.setVisibility(GONE);
|
||||
adapter.setHighlightedItem(null);
|
||||
if (adapter.getHighlightedItem() != null) {
|
||||
updateTextInput(null);
|
||||
} else {
|
||||
super.onBackPressed();
|
||||
}
|
||||
@@ -280,7 +265,7 @@ public abstract class ThreadListActivity<G extends NamedGroup, A extends ThreadI
|
||||
|
||||
@Override
|
||||
public void onReplyClick(final I item) {
|
||||
showTextInput(item);
|
||||
updateTextInput(item.getId());
|
||||
if (textInput.isKeyboardOpen()) {
|
||||
scrollToItemAtTop(item);
|
||||
} else {
|
||||
@@ -330,20 +315,15 @@ public abstract class ThreadListActivity<G extends NamedGroup, A extends ThreadI
|
||||
snackbar.show();
|
||||
}
|
||||
|
||||
protected void showTextInput(@Nullable I replyItem) {
|
||||
// An animation here would be an overkill because of the keyboard
|
||||
// popping up.
|
||||
// only clear the text when the input container was not visible
|
||||
if (textInput.getVisibility() != VISIBLE) {
|
||||
textInput.setVisibility(VISIBLE);
|
||||
textInput.setText("");
|
||||
private void updateTextInput(@Nullable MessageId replyItemId) {
|
||||
if (replyItemId != null) {
|
||||
textInput.setHint(R.string.forum_message_reply_hint);
|
||||
textInput.requestFocus();
|
||||
textInput.showSoftKeyboard();
|
||||
} else {
|
||||
textInput.setHint(R.string.forum_new_message_hint);
|
||||
}
|
||||
textInput.requestFocus();
|
||||
textInput.showSoftKeyboard();
|
||||
textInput.setHint(replyItem == null ? R.string.forum_new_message_hint :
|
||||
R.string.forum_message_reply_hint);
|
||||
adapter.setHighlightedItem(
|
||||
replyItem == null ? null : replyItem.getId());
|
||||
adapter.setHighlightedItem(replyItemId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -369,9 +349,8 @@ public abstract class ThreadListActivity<G extends NamedGroup, A extends ThreadI
|
||||
};
|
||||
getController().createAndStoreMessage(text, replyItem, handler);
|
||||
textInput.hideSoftKeyboard();
|
||||
textInput.setVisibility(GONE);
|
||||
textInput.setText("");
|
||||
adapter.setHighlightedItem(null);
|
||||
updateTextInput(null);
|
||||
}
|
||||
|
||||
protected abstract int getMaxBodyLength();
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportHeight="48.0"
|
||||
android:viewportWidth="48.0">
|
||||
<path
|
||||
android:fillColor="#06b9ff"
|
||||
android:pathData="M9.1,19.3l14.9,11.8l14.9,-11.8l-1.9,-2.4l-13,10.4l-13,-10.4z"/>
|
||||
</vector>
|
||||
@@ -1,9 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportHeight="48.0"
|
||||
android:viewportWidth="48.0">
|
||||
<path
|
||||
android:fillColor="#06b9ff"
|
||||
android:pathData="M38.9,28.7l-14.9,-11.8l-14.9,11.8l1.9,2.4l13,-10.4l13,10.4z"/>
|
||||
</vector>
|
||||
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@drawable/chevron48dp_down" android:state_selected="true"/>
|
||||
<item android:drawable="@drawable/chevron48dp_up"/>
|
||||
</selector>
|
||||
@@ -3,12 +3,6 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_forum_compose_post"
|
||||
android:icon="@drawable/forum_item_create_white"
|
||||
android:title="@string/forum_compose_post"
|
||||
app:showAsAction="always"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/action_forum_share"
|
||||
android:icon="@drawable/social_share_white"
|
||||
|
||||
@@ -3,12 +3,6 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_group_compose_message"
|
||||
android:icon="@drawable/forum_item_create_white"
|
||||
android:title="@string/groups_compose_message"
|
||||
app:showAsAction="always"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/action_group_member_list"
|
||||
android:icon="@drawable/ic_group_white"
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
<!-- this is needed as preference_category_material layout uses this color as the text color -->
|
||||
<color name="preference_fallback_accent_color">@color/briar_accent</color>
|
||||
<color name="divider">#c1c1c1</color>
|
||||
<color name="default_separator_inverted">#ffffff</color>
|
||||
<color name="menu_background">#FFFFFF</color>
|
||||
|
||||
<color name="spinner_border">#61000000</color> <!-- 38% Black -->
|
||||
|
||||
@@ -162,7 +162,6 @@
|
||||
<string name="groups_create_group_invitation_button">Send Invitation</string>
|
||||
<string name="groups_create_group_hint">Add a name for your private group</string>
|
||||
<string name="groups_invitation_sent">Group invitation has been sent</string>
|
||||
<string name="groups_compose_message">Compose Message</string>
|
||||
<string name="groups_message_sent">Message sent</string>
|
||||
<string name="groups_member_list">Member List</string>
|
||||
<string name="groups_invite_members">Invite Members</string>
|
||||
@@ -216,15 +215,10 @@
|
||||
<item quantity="one">%d post</item>
|
||||
<item quantity="other">%d posts</item>
|
||||
</plurals>
|
||||
<string name="forum_compose_post">New Forum Post</string>
|
||||
<string name="forum_new_entry_posted">Forum entry posted</string>
|
||||
<string name="forum_new_message_hint">New Entry</string>
|
||||
<string name="forum_message_reply_hint">New Reply</string>
|
||||
<string name="btn_reply">Reply</string>
|
||||
<plurals name="message_replies">
|
||||
<item quantity="one">%1$d reply</item>
|
||||
<item quantity="other">%1$d replies</item>
|
||||
</plurals>
|
||||
<string name="forum_leave">Leave Forum</string>
|
||||
<string name="dialog_title_leave_forum">Confirm Leaving Forum</string>
|
||||
<string name="dialog_message_leave_forum">Are you sure that you want to leave this forum? Contacts you have shared this forum with might get cut off from receiving updates for this forum.</string>
|
||||
|
||||
Reference in New Issue
Block a user