diff options
Diffstat (limited to 'src/main/java/eu/siacs/conversations/services/ContactChooserTargetService.java')
-rw-r--r-- | src/main/java/eu/siacs/conversations/services/ContactChooserTargetService.java | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/src/main/java/eu/siacs/conversations/services/ContactChooserTargetService.java b/src/main/java/eu/siacs/conversations/services/ContactChooserTargetService.java deleted file mode 100644 index e59c03d9..00000000 --- a/src/main/java/eu/siacs/conversations/services/ContactChooserTargetService.java +++ /dev/null @@ -1,83 +0,0 @@ -package eu.siacs.conversations.services; - -import android.annotation.TargetApi; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.ServiceConnection; -import android.graphics.drawable.Icon; -import android.os.Build; -import android.os.Bundle; -import android.os.IBinder; -import android.service.chooser.ChooserTarget; -import android.service.chooser.ChooserTargetService; - -import java.util.ArrayList; -import java.util.List; - -import eu.siacs.conversations.entities.Conversation; -import eu.siacs.conversations.ui.ShareWithActivity; - -@TargetApi(Build.VERSION_CODES.M) -public class ContactChooserTargetService extends ChooserTargetService implements ServiceConnection { - - private final Object lock = new Object(); - - private XmppConnectionService mXmppConnectionService; - - private final int MAX_TARGETS = 5; - - @Override - public List<ChooserTarget> onGetChooserTargets(ComponentName targetActivityName, IntentFilter matchedFilter) { - Intent intent = new Intent(this, XmppConnectionService.class); - intent.setAction("contact_chooser"); - startService(intent); - bindService(intent, this, Context.BIND_AUTO_CREATE); - ArrayList<ChooserTarget> chooserTargets = new ArrayList<>(); - try { - waitForService(); - final ArrayList<Conversation> conversations = new ArrayList<>(); - if (!mXmppConnectionService.areMessagesInitialized()) { - return chooserTargets; - } - mXmppConnectionService.populateWithOrderedConversations(conversations, false); - final ComponentName componentName = new ComponentName(this, ShareWithActivity.class); - final int pixel = (int) (48 * getResources().getDisplayMetrics().density); - for(int i = 0; i < Math.min(conversations.size(),MAX_TARGETS); ++i) { - final Conversation conversation = conversations.get(i); - final String name = conversation.getName(); - final Icon icon = Icon.createWithBitmap(AvatarService.getInstance().get(conversation, pixel)); - final float score = 1 - (1.0f / MAX_TARGETS) * i; - final Bundle extras = new Bundle(); - extras.putString("uuid", conversation.getUuid()); - chooserTargets.add(new ChooserTarget(name, icon, score, componentName, extras)); - } - } catch (InterruptedException e) { - } - unbindService(this); - return chooserTargets; - } - - @Override - public void onServiceConnected(ComponentName name, IBinder service) { - XmppConnectionService.XmppConnectionBinder binder = (XmppConnectionService.XmppConnectionBinder) service; - mXmppConnectionService = binder.getService(); - synchronized (this.lock) { - lock.notifyAll(); - } - } - - @Override - public void onServiceDisconnected(ComponentName name) { - mXmppConnectionService = null; - } - - private void waitForService() throws InterruptedException { - if (mXmppConnectionService == null) { - synchronized (this.lock) { - lock.wait(); - } - } - } -} |