ShortcutActivity.java

 1package eu.siacs.conversations.ui;
 2
 3import android.content.ComponentName;
 4import android.content.Context;
 5import android.content.Intent;
 6import android.os.Bundle;
 7import android.support.v7.app.ActionBar;
 8import android.util.Log;
 9import android.view.View;
10import android.view.inputmethod.InputMethodManager;
11
12import java.util.Arrays;
13import java.util.Collections;
14import java.util.List;
15
16import eu.siacs.conversations.Config;
17import eu.siacs.conversations.R;
18import eu.siacs.conversations.entities.Account;
19import eu.siacs.conversations.entities.Contact;
20import eu.siacs.conversations.entities.ListItem;
21
22public class ShortcutActivity extends AbstractSearchableListItemActivity {
23
24    private static final List<String> BLACKLISTED_ACTIVITIES = Arrays.asList("com.teslacoilsw.launcher.ChooseActionIntentActivity");
25
26    @Override
27    protected void refreshUiReal() {
28
29    }
30
31    @Override
32    public void onCreate(Bundle savedInstanceState) {
33        super.onCreate(savedInstanceState);
34        getListView().setOnItemClickListener((parent, view, position, id) -> {
35
36            final ComponentName callingActivity = getCallingActivity();
37
38            final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
39            imm.hideSoftInputFromWindow(getSearchEditText().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
40
41            ListItem listItem = getListItems().get(position);
42            final boolean legacy = BLACKLISTED_ACTIVITIES.contains(callingActivity == null ? null : callingActivity.getClassName());
43            Intent shortcut = xmppConnectionService.getShortcutService().createShortcut(((Contact) listItem), legacy);
44            setResult(RESULT_OK,shortcut);
45            finish();
46        });
47    }
48
49    @Override
50    protected void onStart() {
51        super.onStart();
52        ActionBar bar = getSupportActionBar();
53        if(bar != null){
54            bar.setTitle(R.string.create_shortcut);
55        }
56    }
57
58    @Override
59    protected void filterContacts(String needle) {
60        getListItems().clear();
61        if (xmppConnectionService == null) {
62            getListItemAdapter().notifyDataSetChanged();
63            return;
64        }
65        for (final Account account : xmppConnectionService.getAccounts()) {
66            if (account.getStatus() != Account.State.DISABLED) {
67                for (final Contact contact : account.getRoster().getContacts()) {
68                    if (contact.showInContactList()
69                            && contact.match(this, needle)) {
70                        getListItems().add(contact);
71                    }
72                }
73            }
74        }
75        Collections.sort(getListItems());
76        getListItemAdapter().notifyDataSetChanged();
77    }
78}