mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
forward selected messages #74
This commit is contained in:
@@ -84,6 +84,7 @@ public class ContactSelectionListFragment extends Fragment
|
||||
public static final String REFRESHABLE = "refreshable";
|
||||
public static final String RECENTS = "recents";
|
||||
public static final String SELECT_VERIFIED_EXTRA = "select_verified";
|
||||
public static final String FROM_SHARE_ACTIVITY_EXTRA = "from_share_activity";
|
||||
|
||||
private ApplicationDcContext dcContext;
|
||||
|
||||
@@ -233,6 +234,10 @@ public class ContactSelectionListFragment extends Fragment
|
||||
return getActivity().getIntent().getBooleanExtra(SELECT_VERIFIED_EXTRA, false);
|
||||
}
|
||||
|
||||
private boolean isFromShareActivity() {
|
||||
return getActivity().getIntent().getBooleanExtra(FROM_SHARE_ACTIVITY_EXTRA, false);
|
||||
}
|
||||
|
||||
private void initializeCursor() {
|
||||
ContactSelectionListAdapter adapter = new ContactSelectionListAdapter(getActivity(),
|
||||
GlideApp.with(this),
|
||||
@@ -267,11 +272,12 @@ public class ContactSelectionListFragment extends Fragment
|
||||
|
||||
@Override
|
||||
public Loader<DcContactsLoader.Ret> onCreateLoader(int id, Bundle args) {
|
||||
boolean addCreateGroupLinks = !isMulti();
|
||||
boolean addCreateGroupLinks = isFromShareActivity() ? false : !isMulti();
|
||||
int listflags = DcContext.DC_GCL_ADD_SELF;
|
||||
if(isSelectVerfied()) {
|
||||
listflags = DcContext.DC_GCL_VERIFIED_ONLY;
|
||||
}
|
||||
|
||||
return new DcContactsLoader(getActivity(), listflags, cursorFilter, addCreateGroupLinks);
|
||||
}
|
||||
|
||||
|
||||
@@ -83,6 +83,7 @@ import org.thoughtcrime.securesms.util.StickyHeaderDecoration;
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
import org.thoughtcrime.securesms.util.ViewUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedList;
|
||||
@@ -90,6 +91,8 @@ import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.thoughtcrime.securesms.ShareActivity.EXTRA_MSG_IDS;
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
public class ConversationFragment extends Fragment
|
||||
implements LoaderManager.LoaderCallbacks<int[]>,
|
||||
@@ -284,7 +287,7 @@ public class ConversationFragment extends Fragment
|
||||
}
|
||||
|
||||
if (messageRecords.size() > 1) {
|
||||
menu.findItem(R.id.menu_context_forward).setVisible(false);
|
||||
// menu.findItem(R.id.menu_context_forward).setVisible(false);
|
||||
menu.findItem(R.id.menu_context_reply).setVisible(false);
|
||||
menu.findItem(R.id.menu_context_details).setVisible(false);
|
||||
menu.findItem(R.id.menu_context_save_attachment).setVisible(false);
|
||||
@@ -425,9 +428,11 @@ public class ConversationFragment extends Fragment
|
||||
.show();
|
||||
}
|
||||
|
||||
private void handleForwardMessage(DcMsg message) {
|
||||
private void handleForwardMessage(final Set<DcMsg> messageRecords) {
|
||||
Intent composeIntent = new Intent(getActivity(), ShareActivity.class);
|
||||
composeIntent.putExtra(Intent.EXTRA_TEXT, message.getDisplayBody().toString());
|
||||
int[] msgIds = DcMsg.msgSetToIds(messageRecords);
|
||||
composeIntent.putExtra(EXTRA_MSG_IDS, msgIds);
|
||||
// composeIntent.putExtra(Intent.EXTRA_TEXT, messageRecords.getDisplayBody().toString());
|
||||
/* TODO: handle fowarding media
|
||||
if (message.isMms()) {
|
||||
MmsMessageRecord mediaMessage = (MmsMessageRecord) message;
|
||||
@@ -933,7 +938,8 @@ public class ConversationFragment extends Fragment
|
||||
actionMode.finish();
|
||||
return true;
|
||||
case R.id.menu_context_forward:
|
||||
handleForwardMessage(getSelectedMessageRecord());
|
||||
// handleForwardMessage(getSelectedMessageRecord());
|
||||
handleForwardMessage(getListAdapter().getSelectedItems());
|
||||
actionMode.finish();
|
||||
return true;
|
||||
case R.id.menu_context_resend:
|
||||
|
||||
@@ -38,6 +38,8 @@ import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import org.thoughtcrime.securesms.components.SearchToolbar;
|
||||
import org.thoughtcrime.securesms.connect.ApplicationDcContext;
|
||||
import org.thoughtcrime.securesms.connect.DcHelper;
|
||||
import org.thoughtcrime.securesms.contacts.ContactsCursorLoader;
|
||||
import org.thoughtcrime.securesms.contacts.ContactsCursorLoader.DisplayMode;
|
||||
import org.thoughtcrime.securesms.database.Address;
|
||||
@@ -46,6 +48,7 @@ import org.thoughtcrime.securesms.database.ThreadDatabase;
|
||||
import org.thoughtcrime.securesms.mms.PartAuthority;
|
||||
import org.thoughtcrime.securesms.providers.PersistentBlobProvider;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.util.Dialogs;
|
||||
import org.thoughtcrime.securesms.util.DynamicLanguage;
|
||||
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
|
||||
import org.thoughtcrime.securesms.util.DynamicTheme;
|
||||
@@ -57,6 +60,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* An activity to quickly share content with contacts
|
||||
@@ -71,6 +75,7 @@ public class ShareActivity extends PassphraseRequiredActionBarActivity
|
||||
public static final String EXTRA_THREAD_ID = "thread_id";
|
||||
public static final String EXTRA_ADDRESS_MARSHALLED = "address_marshalled";
|
||||
public static final String EXTRA_DISTRIBUTION_TYPE = "distribution_type";
|
||||
public static final String EXTRA_MSG_IDS = "message_ids";
|
||||
|
||||
private final DynamicTheme dynamicTheme = new DynamicNoActionBarTheme();
|
||||
private final DynamicLanguage dynamicLanguage = new DynamicLanguage();
|
||||
@@ -82,6 +87,7 @@ public class ShareActivity extends PassphraseRequiredActionBarActivity
|
||||
private Uri resolvedExtra;
|
||||
private String mimeType;
|
||||
private boolean isPassingAlongMedia;
|
||||
private ApplicationDcContext dcContext;
|
||||
|
||||
@Override
|
||||
protected void onPreCreate() {
|
||||
@@ -100,6 +106,12 @@ public class ShareActivity extends PassphraseRequiredActionBarActivity
|
||||
|
||||
getIntent().putExtra(ContactSelectionListFragment.REFRESHABLE, false);
|
||||
getIntent().putExtra(ContactSelectionListFragment.RECENTS, true);
|
||||
getIntent().putExtra(ContactSelectionListFragment.MULTI_SELECT, false);
|
||||
getIntent().putExtra(ContactSelectionListFragment.FROM_SHARE_ACTIVITY_EXTRA, true);
|
||||
|
||||
|
||||
|
||||
dcContext = DcHelper.getContext(this);
|
||||
|
||||
setContentView(R.layout.share_activity);
|
||||
|
||||
@@ -247,7 +259,7 @@ public class ShareActivity extends PassphraseRequiredActionBarActivity
|
||||
private void createConversation(int threadId) {
|
||||
final Intent intent = getBaseShareIntent(ConversationActivity.class);
|
||||
intent.putExtra(ConversationActivity.THREAD_ID_EXTRA, threadId);
|
||||
|
||||
intent.putExtra(ConversationActivity.DISTRIBUTION_TYPE_EXTRA, distributionType);
|
||||
isPassingAlongMedia = true;
|
||||
startActivity(intent);
|
||||
}
|
||||
@@ -271,9 +283,16 @@ public class ShareActivity extends PassphraseRequiredActionBarActivity
|
||||
|
||||
@Override
|
||||
public void onContactSelected(int specialId, String number) {
|
||||
Recipient recipient = Recipient.from(this, Address.fromExternal(this, number), true);
|
||||
int existingThread = recipient.getAddress().getDcChatId();
|
||||
createConversation(existingThread);
|
||||
Recipient recipient = dcContext.getRecipient(ApplicationDcContext.RECIPIENT_TYPE_CONTACT, specialId);
|
||||
Dialogs.showResponseDialog(this, "", getString(R.string.ShareActivity_forward_message_to_user_info, dcContext.getContact(specialId).getDisplayName()), (dialogInterface, i) -> {
|
||||
int chatId = dcContext.getChatIdByContactId(specialId);
|
||||
if(chatId == 0){
|
||||
chatId = dcContext.createChatByContactId(specialId);
|
||||
}
|
||||
int[] value = getIntent().getIntArrayExtra(EXTRA_MSG_IDS);
|
||||
dcContext.forwardMsgs(value, chatId);
|
||||
createConversation(chatId, recipient.getAddress(), ThreadDatabase.DistributionTypes.DEFAULT);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user