fixes #2336 : added an option to directly add a jid to block list from blocklist activity

This commit is contained in:
vikiCoder 2017-03-05 01:01:41 +05:30
parent 5c789b75cc
commit 72537b76c5
4 changed files with 52 additions and 2 deletions

View file

@ -2,17 +2,23 @@ package eu.siacs.conversations.ui;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.AdapterView; import android.widget.AdapterView;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List;
import eu.siacs.conversations.R;
import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.entities.Contact; import eu.siacs.conversations.entities.Contact;
import eu.siacs.conversations.xmpp.OnUpdateBlocklist; import eu.siacs.conversations.xmpp.OnUpdateBlocklist;
import eu.siacs.conversations.xmpp.jid.Jid; import eu.siacs.conversations.xmpp.jid.Jid;
public class BlocklistActivity extends AbstractSearchableListItemActivity implements OnUpdateBlocklist { public class BlocklistActivity extends AbstractSearchableListItemActivity implements OnUpdateBlocklist {
private List<String> mKnownHosts = new ArrayList<String>();
private Account account = null; private Account account = null;
@ -41,6 +47,7 @@ public class BlocklistActivity extends AbstractSearchableListItemActivity implem
} }
} }
filterContacts(); filterContacts();
this.mKnownHosts = xmppConnectionService.getKnownHosts();
} }
@Override @Override
@ -58,6 +65,42 @@ public class BlocklistActivity extends AbstractSearchableListItemActivity implem
getListItemAdapter().notifyDataSetChanged(); getListItemAdapter().notifyDataSetChanged();
} }
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
super.onCreateOptionsMenu(menu);
menu.findItem(R.id.action_add_contact).setVisible(true);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add_contact:
showEnterJidDialog();
return true;
}
return super.onOptionsItemSelected(item);
}
protected void showEnterJidDialog() {
EnterJidDialog dialog = new EnterJidDialog(
this, mKnownHosts, null,
getString(R.string.block_jabber_id), getString(R.string.block),
null, account.getJid().toBareJid().toString(), true
);
dialog.setOnEnterJidDialogPositiveListener(new EnterJidDialog.OnEnterJidDialogPositiveListener() {
@Override
public boolean onEnterJidDialogPositive(Jid accountJid, Jid contactJid) throws EnterJidDialog.JidError {
Contact contact = account.getRoster().getContact(contactJid);
xmppConnectionService.sendBlockRequest(contact, false);
return true;
}
});
dialog.show();
}
protected void refreshUiReal() { protected void refreshUiReal() {
final Editable editable = getSearchEditText().getText(); final Editable editable = getSearchEditText().getText();
if (editable != null) { if (editable != null) {

View file

@ -571,9 +571,8 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat
if (mAccount != null && mAccount.isOnlineAndConnected()) { if (mAccount != null && mAccount.isOnlineAndConnected()) {
if (!mAccount.getXmppConnection().getFeatures().blocking()) { if (!mAccount.getXmppConnection().getFeatures().blocking()) {
showBlocklist.setVisible(false); showBlocklist.setVisible(false);
} else {
showBlocklist.setEnabled(mAccount.getBlocklist().size() > 0);
} }
if (!mAccount.getXmppConnection().getFeatures().register()) { if (!mAccount.getXmppConnection().getFeatures().register()) {
changePassword.setVisible(false); changePassword.setVisible(false);
} }

View file

@ -14,4 +14,11 @@
android:showAsAction="always" android:showAsAction="always"
android:title="@string/create_contact" android:title="@string/create_contact"
android:visible="false"/> android:visible="false"/>
<item
android:id="@+id/action_add_contact"
android:icon="?attr/icon_add_person"
android:showAsAction="always"
android:title="@string/block_jabber_id"
android:visible="false"/>
</menu> </menu>

View file

@ -177,6 +177,7 @@
<string name="mgmt_account_delete_confirm_text">If you delete your account your entire conversation history will be lost</string> <string name="mgmt_account_delete_confirm_text">If you delete your account your entire conversation history will be lost</string>
<string name="attach_record_voice">Record voice</string> <string name="attach_record_voice">Record voice</string>
<string name="account_settings_jabber_id">Jabber ID</string> <string name="account_settings_jabber_id">Jabber ID</string>
<string name="block_jabber_id">Block Jabber ID</string>
<string name="account_settings_password">Password</string> <string name="account_settings_password">Password</string>
<string name="account_settings_example_jabber_id">username@example.com</string> <string name="account_settings_example_jabber_id">username@example.com</string>
<string name="account_settings_confirm_password">Confirm password</string> <string name="account_settings_confirm_password">Confirm password</string>