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}