Commit 27b25746 authored by Grigory Fedorov's avatar Grigory Fedorov

Merge branch 'release/1.0.33'

parents 3144cb3c 7666b772
......@@ -7,8 +7,8 @@ android {
defaultConfig {
minSdkVersion 14
targetSdkVersion 22
versionCode 203
versionName '1.0.31'
versionCode 206
versionName '1.0.33'
}
compileOptions {
......
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2013, Redsolution LTD. All rights reserved.
<!--
Copyright (c) 2013, Redsolution LTD. All rights reserved.
This file is part of Xabber project; you can redistribute it and/or
modify it under the terms of the GNU General Public License, Version 3.
......@@ -13,11 +14,17 @@
along with this program. If not, see http://www.gnu.org/licenses/.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xabber.android">
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
package="com.xabber.android" >
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.hardware.location"
android:required="false" />
<uses-feature
android:name="android.hardware.location.gps"
android:required="false" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.INTERNET" />
......@@ -27,57 +34,63 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:name="com.xabber.android.data.Application"
android:name=".data.Application"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/application_title_full"
android:theme="@style/Theme">
android:theme="@style/Theme" >
<activity
android:name="com.xabber.android.ui.ContactList"
android:name=".ui.ContactList"
android:label="@string/application_title_full"
android:launchMode="singleTop"
>
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="xmpp" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SENDTO" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="imto" />
<data android:host="jabber" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SENDTO" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="imto" />
<data android:host="gtalk" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="com.xabber.android.ui.LoadActivity"
/>
<activity android:name=".ui.LoadActivity" />
<activity
android:name=".ui.AboutViewer"
android:label="@string/about_viewer"
android:parentActivityName="com.xabber.android.ui.preferences.PreferenceEditor"
android:theme="@style/ThemeDark"
>
android:parentActivityName=".ui.preferences.PreferenceEditor"
android:theme="@style/ThemeDark" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
......@@ -85,44 +98,41 @@
android:value="com.xabber.android.ui.preferences.PreferenceEditor" />
</activity>
<activity
android:name="com.xabber.android.ui.preferences.AccountList"
android:name=".ui.preferences.AccountList"
android:label="@string/preference_accounts"
android:parentActivityName="com.xabber.android.ui.preferences.PreferenceEditor"
>
android:parentActivityName=".ui.preferences.PreferenceEditor" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.preferences.PreferenceEditor" />
</activity>
<activity
android:name="com.xabber.android.ui.preferences.AccountEditor"
android:name=".ui.preferences.AccountEditor"
android:label="@string/account_editor"
android:parentActivityName="com.xabber.android.ui.preferences.AccountList"
>
android:parentActivityName=".ui.preferences.AccountList" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.preferences.AccountList" />
</activity>
<activity
android:name="com.xabber.android.ui.OccupantList"
android:name=".ui.OccupantList"
android:label="@string/occupant_list"
android:parentActivityName="com.xabber.android.ui.ChatViewer"
>
android:parentActivityName=".ui.ChatViewer" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.ChatViewer" />
</activity>
<activity
android:name="com.xabber.android.ui.ChatViewer"
android:name=".ui.ChatViewer"
android:label="@string/chat_viewer"
android:launchMode="singleTop"
android:parentActivityName="com.xabber.android.ui.ContactList"
android:windowSoftInputMode="adjustResize"
>
android:parentActivityName=".ui.ContactList"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
......@@ -131,90 +141,84 @@
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.ContactList" />
</activity>
<activity
android:name="com.xabber.android.ui.GroupEditor"
android:parentActivityName="com.xabber.android.ui.ContactViewer"
>
android:name=".ui.GroupEditor"
android:parentActivityName=".ui.ContactViewer" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.ContactViewer" />
</activity>
<activity
android:name="com.xabber.android.ui.ContactAdd"
android:name=".ui.ContactAdd"
android:label="@string/contact_add"
android:parentActivityName="com.xabber.android.ui.preferences.AccountList"
>
android:parentActivityName=".ui.preferences.AccountList" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.preferences.AccountList" />
</activity>
<activity
android:name="com.xabber.android.ui.AccountAdd"
android:name=".ui.AccountAdd"
android:label="@string/account_add"
android:parentActivityName="com.xabber.android.ui.preferences.AccountList"
>
android:parentActivityName=".ui.preferences.AccountList" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.preferences.AccountList" />
</activity>
<activity
android:name="com.xabber.android.ui.OAuthActivity"
android:label="@string/account_oauth"
/>
android:name=".ui.OAuthActivity"
android:label="@string/account_oauth" />
<activity
android:name=".ui.ConferenceAdd"
android:label="@string/muc_add"
android:parentActivityName="com.xabber.android.ui.ContactList"
>
android:parentActivityName=".ui.ConferenceSelectActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.ContactList" />
android:value=".ui.ConferenceSelectActivity" />
</activity>
<activity
android:name="com.xabber.android.ui.StatusEditor"
android:name=".ui.StatusEditor"
android:label="@string/status_editor"
android:parentActivityName="com.xabber.android.ui.ContactList"
>
android:parentActivityName=".ui.ContactList" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.ContactList" />
</activity>
<activity
android:name="com.xabber.android.ui.preferences.PreferenceEditor"
android:name=".ui.preferences.PreferenceEditor"
android:label="@string/preference_editor"
android:parentActivityName="com.xabber.android.ui.ContactList"
>
android:parentActivityName=".ui.ContactList" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.ContactList" />
</activity>
<activity
android:name=".ui.preferences.ChatContactSettings"
android:label="@string/chat_settings"
android:parentActivityName="com.xabber.android.ui.ChatViewer"
>
android:parentActivityName=".ui.ChatViewer" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.ChatViewer" />
</activity>
<activity
android:name="com.xabber.android.ui.ContactViewer"
android:name=".ui.ContactViewer"
android:label="@string/contact_viewer"
android:parentActivityName="com.xabber.android.ui.ChatViewer"
>
android:parentActivityName=".ui.ChatViewer" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
......@@ -222,146 +226,142 @@
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="@string/contact_viewer_mime_type" />
<data android:scheme="content" />
<data android:host="com.android.contacts" />
</intent-filter>
</activity>
<activity
android:name="com.xabber.android.ui.ContactEditor"
android:name=".ui.ContactEditor"
android:label="@string/contact_viewer"
android:parentActivityName="com.xabber.android.ui.ChatViewer"
>
android:parentActivityName=".ui.ChatViewer" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.ChatViewer" />
</activity>
<activity
android:name="com.xabber.android.ui.FingerprintViewer"
android:name=".ui.FingerprintViewer"
android:label="@string/otr_verify_fingerprint"
android:parentActivityName="com.xabber.android.ui.ChatViewer"
>
android:parentActivityName=".ui.ChatViewer" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.ChatViewer" />
</activity>
<activity
android:name="com.xabber.android.ui.QuestionViewer"
android:name=".ui.QuestionViewer"
android:label="@string/otr_verify_fingerprint"
android:parentActivityName="com.xabber.android.ui.ChatViewer"
>
android:parentActivityName=".ui.ChatViewer" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.ChatViewer" />
</activity>
<activity
android:name="com.xabber.android.ui.ContactSubscription"
android:parentActivityName="com.xabber.android.ui.ContactList"
>
android:name=".ui.ContactSubscription"
android:parentActivityName=".ui.ContactList" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.ContactList" />
</activity>
<activity android:name=".ui.MUCInvite" />
<activity android:name=".ui.CertificateConfirmation" />
<activity android:name=".ui.PasswordRequest" />
<activity android:name=".ui.ArchiveRequest" />
<activity
android:name="com.xabber.android.ui.MUCInvite"
/>
<activity
android:name="com.xabber.android.ui.CertificateConfirmation"
/>
<activity
android:name="com.xabber.android.ui.PasswordRequest"
/>
<activity
android:name="com.xabber.android.ui.ArchiveRequest"
/>
<activity
android:name="com.xabber.android.ui.preferences.PhraseList"
android:parentActivityName="com.xabber.android.ui.preferences.NotificationsSettings">
android:name=".ui.preferences.PhraseList"
android:parentActivityName=".ui.preferences.NotificationsSettings" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.preferences.NotificationsSettings" />
</activity>
<activity
android:name="com.xabber.android.ui.preferences.PhraseEditor"
android:parentActivityName="com.xabber.android.ui.preferences.PhraseList">
android:name=".ui.preferences.PhraseEditor"
android:parentActivityName=".ui.preferences.PhraseList" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.preferences.PhraseList" />
</activity>
<activity
android:name="com.xabber.android.ui.preferences.PhraseAdder"
android:parentActivityName="com.xabber.android.ui.preferences.PhraseList">
android:name=".ui.preferences.PhraseAdder"
android:parentActivityName=".ui.preferences.PhraseList" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.preferences.PhraseList" />
</activity>
<activity
android:name="com.xabber.android.ui.ReconnectionActivity"
/>
<activity android:name=".ui.ReconnectionActivity" />
<activity
android:name="com.xabber.android.ui.ClearNotifications"
android:name=".ui.ClearNotifications"
android:excludeFromRecents="true"
android:label="ClearNotifications"
android:launchMode="singleInstance"
android:noHistory="true"
android:stateNotNeeded="true"
android:taskAffinity=""
/>
android:taskAffinity="" />
<activity
android:name="com.xabber.android.ui.preferences.ContactListSettings"
android:parentActivityName="com.xabber.android.ui.preferences.PreferenceEditor">
android:name=".ui.preferences.ContactListSettings"
android:parentActivityName=".ui.preferences.PreferenceEditor" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.preferences.PreferenceEditor" />
</activity>
<activity
android:name=".ui.preferences.ChatGlobalSettings"
android:parentActivityName="com.xabber.android.ui.preferences.PreferenceEditor">
android:parentActivityName=".ui.preferences.PreferenceEditor" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.preferences.PreferenceEditor" />
</activity>
<activity
android:name="com.xabber.android.ui.preferences.NotificationsSettings"
android:parentActivityName="com.xabber.android.ui.preferences.PreferenceEditor">
android:name=".ui.preferences.NotificationsSettings"
android:parentActivityName=".ui.preferences.PreferenceEditor" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.preferences.PreferenceEditor" />
</activity>
<activity
android:name="com.xabber.android.ui.preferences.ConnectionSettings"
android:parentActivityName="com.xabber.android.ui.preferences.PreferenceEditor">
android:name=".ui.preferences.ConnectionSettings"
android:parentActivityName=".ui.preferences.PreferenceEditor" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.preferences.PreferenceEditor" />
</activity>
<activity
android:name=".ui.preferences.SecuritySettings"
android:parentActivityName=".ui.preferences.PreferenceEditor" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.preferences.PreferenceEditor" />
</activity>
<activity
android:name="com.xabber.android.ui.preferences.SecuritySettings"
android:parentActivityName="com.xabber.android.ui.preferences.PreferenceEditor">
android:name=".ui.preferences.DebugSettings"
android:parentActivityName=".ui.preferences.PreferenceEditor" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
......@@ -369,51 +369,57 @@
</activity>
<activity
android:name="com.xabber.android.ui.preferences.DebugSettings"
android:parentActivityName="com.xabber.android.ui.preferences.PreferenceEditor">
android:name=".ui.ConferenceSelectActivity"
android:parentActivityName=".ui.ContactList" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xabber.android.ui.preferences.PreferenceEditor" />
android:value="com.xabber.android.ui.ContactList" />
</activity>
<service android:name="com.xabber.android.service.XabberService" />
<activity
android:name=".ui.ConferenceFilterActivity">
</activity>
<service android:name=".service.XabberService" />
<service
android:name="com.xabber.android.service.SyncAdapterService"
android:exported="true">
android:name=".service.SyncAdapterService"
android:exported="true" >
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter"
/>
android:resource="@xml/syncadapter" />
</service>
<service
android:name="com.xabber.android.service.AccountAuthenticatorService"
android:exported="true">
android:name=".service.AccountAuthenticatorService"
android:exported="true" >
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>
<meta-data android:name="android.accounts.AccountAuthenticator" android:resource="@xml/authenticator" />
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator" />
</service>
<receiver
android:name="com.xabber.android.receiver.BootReceiver">
<receiver android:name=".receiver.BootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver
android:name="com.xabber.android.receiver.ShutDownReceiver">
<receiver android:name=".receiver.ShutDownReceiver" >
<intent-filter>
<action android:name="android.intent.action.ACTION_SHUTDOWN"/>
<action android:name="android.intent.action.ACTION_SHUTDOWN" />
<action android:name="android.intent.action.QUICKBOOT_POWEROFF" />
</intent-filter>
</receiver>
<receiver android:name="com.xabber.android.receiver.GoAwayReceiver" />
<receiver android:name="com.xabber.android.receiver.GoXaReceiver" />
<receiver android:name="com.xabber.android.receiver.ComposingPausedReceiver" />
<receiver android:name=".receiver.GoAwayReceiver" />
<receiver android:name=".receiver.GoXaReceiver" />
<receiver android:name=".receiver.ComposingPausedReceiver" />
</application>
</manifest>
\ No newline at end of file
</manifest>
......@@ -39,6 +39,7 @@ import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smackx.muc.HostedRoom;
import org.jivesoftware.smackx.muc.MultiUserChat;
import org.jivesoftware.smackx.packet.MUCUser;
......@@ -451,4 +452,34 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
authorizationErrorProvider.add(new RoomAuthorizationError(account, room), null);
}
public interface HostedRoomsListener {
void onHostedRoomsReceived(Collection<HostedRoom> hostedRooms);
}
public static void requestHostedRooms(final String account, final String serviceName, final HostedRoomsListener listener) {
final XMPPConnection xmppConnection = AccountManager.getInstance().getAccount(account).getConnectionThread().getXMPPConnection();
final Thread thread = new Thread("Get hosted rooms on server " + serviceName + " for account " + account) {
@Override
public void run() {
Collection<HostedRoom> hostedRooms = null;
try {
hostedRooms = MultiUserChat.getHostedRooms(xmppConnection, serviceName);
} catch (XMPPException e) {
e.printStackTrace();
}
final Collection<HostedRoom> finalHostedRooms = hostedRooms;
Application.getInstance().runOnUiThread(new Runnable() {
@Override
public void run() {
listener.onHostedRoomsReceived(finalHostedRooms);
}
});
}
};
thread.start();
}
}
......@@ -18,31 +18,24 @@ import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import com.xabber.android.R;
import com.xabber.android.data.account.AccountManager;
import com.xabber.android.data.intent.AccountIntentBuilder;
import com.xabber.android.data.intent.EntityIntentBuilder;
import com.xabber.android.ui.helper.BarPainter;
import com.xabber.android.ui.helper.ManagedActivity;
import java.util.Collection;
public class ConferenceAdd extends ManagedActivity implements ConferenceAddFragment.Listener {
public class ConferenceAdd extends ManagedActivity implements Toolbar.OnMenuItemClickListener {
private static final String SAVED_ACCOUNT = "com.xabber.android.ui.MUCEditor.SAVED_ACCOUNT";
private static final String SAVED_ROOM = "com.xabber.android.ui.MUCEditor.SAVED_ROOM";
private BarPainter barPainter;
private String account;
private String room;
public static Intent createIntent(Context context) {
return ConferenceAdd.createIntent(context, null, null);
}
public static Intent createIntent(Context context, String account,
String room) {
public static Intent createIntent(Context context, String account, String room) {
return new EntityIntentBuilder(context, ConferenceAdd.class).setAccount(account).setUser(room).build();
}
......@@ -65,18 +58,20 @@ public class ConferenceAdd extends ManagedActivity implements ConferenceAddFragm
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_default);
toolbar.setNavigationIcon(R.drawable.ic_clear_white_24dp);
setTitle(null);
setSupportActionBar(toolbar);
toolbar.inflateMenu(R.menu.add_conference);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
toolbar.setOnMenuItemClickListener(this);
barPainter = new BarPainter(this, toolbar);
BarPainter barPainter = new BarPainter(this, toolbar);
barPainter.setDefaultColor();
Intent intent = getIntent();
account = null;
room = null;
if (savedInstanceState != null) {
account = savedInstanceState.getString(SAVED_ACCOUNT);
room = savedInstanceState.getString(SAVED_ROOM);
......@@ -85,16 +80,7 @@ public class ConferenceAdd extends ManagedActivity implements ConferenceAddFragm
room = getUser(intent);
}
if (account == null) {
Collection<String> accounts = AccountManager.getInstance().getAccounts();
if (accounts.size() == 1) {
account = accounts.iterator().next();
}
}
if (account != null) {
barPainter.updateWithAccountName(account);
}
barPainter.updateWithAccountName(account);
if (savedInstanceState == null) {
getFragmentManager()
......@@ -112,8 +98,14 @@ public class ConferenceAdd extends ManagedActivity implements ConferenceAddFragm
}
@Override
public void onAccountSelected(String account) {
barPainter.updateWithAccountName(account);
this.account = account;
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add_conference:
((ConferenceAddFragment)getFragmentManager().findFragmentById(R.id.fragment_container)).addConference();
return true;
default:
return false;
}
}
}
package com.xabber.android.ui;
import android.app.Activity;
import android.app.Fragment;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.xabber.android.R;
import com.xabber.android.data.account.AccountManager;
import com.xabber.android.data.extension.avatar.AvatarManager;
import com.xabber.android.data.extension.muc.MUCManager;
import com.xabber.android.data.extension.muc.RoomInvite;
import com.xabber.android.data.message.MessageManager;
import com.xabber.android.data.notification.NotificationManager;
import com.xabber.android.ui.adapter.AccountChooseAdapter;
import org.jivesoftware.smack.util.StringUtils;
public class ConferenceAddFragment extends Fragment implements AdapterView.OnItemSelectedListener {
public class ConferenceAddFragment extends Fragment {
protected static final String ARG_ACCOUNT = "com.xabber.android.ui.ConferenceAddFragment.ARG_ACCOUNT";
protected static final String ARG_ROOM = "com.xabber.android.ui.ConferenceAddFragment.ARG_ROOM";
protected static final String ARG_CONFERENCE_JID = "com.xabber.android.ui.ConferenceAddFragment.ARG_CONFERENCE_NAME";
private Spinner accountView;
private EditText serverView;
private EditText roomView;
private EditText nickView;
private EditText passwordView;
private CheckBox joinCheckBox;
private int selectedAccount;
private String account = null;
private String room = null;
private Listener listener;
private String conferenceJid = null;
public static ConferenceAddFragment newInstance(String account, String room) {
public static ConferenceAddFragment newInstance(String account, String conference) {
ConferenceAddFragment fragment = new ConferenceAddFragment();
Bundle args = new Bundle();
args.putString(ARG_ACCOUNT, account);
args.putString(ARG_ROOM, room);
args.putString(ARG_CONFERENCE_JID, conference);
fragment.setArguments(args);
return fragment;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
listener = (Listener) activity;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
account = getArguments().getString(ARG_ACCOUNT);
room = getArguments().getString(ARG_ROOM);
conferenceJid = getArguments().getString(ARG_CONFERENCE_JID);
}
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.conference_add_fragment, container, false);
accountView = (Spinner) view.findViewById(R.id.contact_account);
serverView = (EditText) view.findViewById(R.id.muc_server);
roomView = (EditText) view.findViewById(R.id.muc_room);
nickView = (EditText) view.findViewById(R.id.muc_nick);
passwordView = (EditText) view.findViewById(R.id.muc_password);
joinCheckBox = (CheckBox) view.findViewById(R.id.muc_join);
((TextView) view.findViewById(R.id.muc_conference_jid)).setText(conferenceJid);
((TextView) view.findViewById(R.id.muc_account_jid)).setText(StringUtils.parseBareAddress(account));
accountView.setAdapter(new AccountChooseAdapter(getActivity()));
accountView.setOnItemSelectedListener(this);
Drawable accountAvatar = AvatarManager.getInstance().getAccountAvatar(account);
int h = accountAvatar.getIntrinsicHeight();
int w = accountAvatar.getIntrinsicWidth();
accountAvatar.setBounds( 0, 0, w, h );
((TextView) view.findViewById(R.id.muc_account_jid)).setCompoundDrawables(accountAvatar, null, null, null);
if (room != null) {
serverView.setText(StringUtils.parseServer(room));
roomView.setText(StringUtils.parseName(room));
nickView = (EditText) view.findViewById(R.id.muc_nick);
nickView.setText(MUCManager.getInstance().getNickname(account, conferenceJid));
if ("".equals(nickView.getText().toString())) {
nickView.setText(getNickname(account));
}
if (account != null && room != null) {
MUCManager.getInstance().removeAuthorizationError(account, room);
nickView.setText(MUCManager.getInstance().getNickname(account, room));
String password;
RoomInvite roomInvite = MUCManager.getInstance().getInvite(account, room);
if (roomInvite != null) {
password = roomInvite.getPassword();
} else {
password = MUCManager.getInstance().getPassword(account, room);
}
passwordView.setText(password);
passwordView = (EditText) view.findViewById(R.id.muc_password);
String password;
RoomInvite roomInvite = MUCManager.getInstance().getInvite(account, conferenceJid);
if (roomInvite != null) {
password = roomInvite.getPassword();
} else {
password = MUCManager.getInstance().getPassword(account, conferenceJid);
}
passwordView.setText(password);
if (account != null) {
for (int position = 0; position < accountView.getCount(); position++) {
if (account.equals(accountView.getItemAtPosition(position))) {
accountView.setSelection(position);
break;
}
}
}
if ("".equals(nickView.getText().toString())) {
nickView.setText(getNickname(((String) accountView.getSelectedItem())));
}
MUCManager.getInstance().removeAuthorizationError(account, conferenceJid);
setHasOptionsMenu(true);
return view;
}
@Override
public void onResume() {
super.onResume();
selectedAccount = accountView.getSelectedItemPosition();
}
@Override
public void onDetach() {
super.onDetach();
listener = null;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String current = nickView.getText().toString();
String previous;
if (selectedAccount == AdapterView.INVALID_POSITION) {
previous = "";
} else {
previous = getNickname((String) accountView.getAdapter().getItem(selectedAccount));
}
if (current.equals(previous)) {
nickView.setText(getNickname((String) accountView.getSelectedItem()));
}
selectedAccount = accountView.getSelectedItemPosition();
listener.onAccountSelected((String) accountView.getSelectedItem());
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
selectedAccount = accountView.getSelectedItemPosition();
}
/**
* @param account
* @return Suggested nickname in the room.
* @return Suggested nickname in the conferenceJid.
*/
private String getNickname(String account) {
if (account == null) {
......@@ -173,59 +104,15 @@ public class ConferenceAddFragment extends Fragment implements AdapterView.OnIte
}
}
private void addConference() {
String account = (String) accountView.getSelectedItem();
if (account == null) {
Toast.makeText(getActivity(), getString(R.string.EMPTY_ACCOUNT), Toast.LENGTH_LONG).show();
return;
}
String server = serverView.getText().toString();
if ("".equals(server)) {
Toast.makeText(getActivity(), getString(R.string.EMPTY_SERVER_NAME), Toast.LENGTH_LONG).show();
return;
}
String room = roomView.getText().toString();
if ("".equals(room)) {
Toast.makeText(getActivity(), getString(R.string.EMPTY_ROOM_NAME), Toast.LENGTH_LONG).show();
return;
}
public void addConference() {
String nick = nickView.getText().toString();
if ("".equals(nick)) {
Toast.makeText(getActivity(), getString(R.string.EMPTY_NICK_NAME), Toast.LENGTH_LONG).show();
return;
}
String password = passwordView.getText().toString();
boolean join = joinCheckBox.isChecked();
room = room + "@" + server;
if (this.account != null && this.room != null) {
if (!account.equals(this.account) || !room.equals(this.room)) {
MUCManager.getInstance().removeRoom(this.account, this.room);
MessageManager.getInstance().closeChat(this.account, this.room);
NotificationManager.getInstance().removeMessageNotification(this.account, this.room);
}
}
MUCManager.getInstance().createRoom(account, room, nick, password, join);
final boolean join = true;
MUCManager.getInstance().createRoom(account, conferenceJid, nick, password, join);
getActivity().finish();
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.add_conference, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add_conference:
addConference();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
interface Listener {
void onAccountSelected(String account);
}
}
package com.xabber.android.ui;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
import com.xabber.android.R;
import com.xabber.android.data.intent.AccountIntentBuilder;
import com.xabber.android.data.intent.EntityIntentBuilder;
import com.xabber.android.ui.adapter.HostedConferencesAdapter;
import com.xabber.android.ui.helper.ManagedActivity;
import org.jivesoftware.smackx.muc.HostedRoom;
import org.jivesoftware.smackx.packet.DiscoverItems;
import java.util.ArrayList;
import java.util.List;
public class ConferenceFilterActivity extends ManagedActivity implements TextWatcher, View.OnClickListener,
AdapterView.OnItemClickListener, TextView.OnEditorActionListener {
public static final String ARG_CONFERENCE_NAME = "com.xabber.android.ui.ConferenceFilterActivity.ARG_CONFERENCE_NAME";
public static final String ARG_CONFERENCE_LIST_NAMES = "com.xabber.android.ui.ConferenceFilterActivity.ARG_CONFERENCE_LIST_NAMES";
public static final String ARG_CONFERENCE_LIST_JIDS = "com.xabber.android.ui.ConferenceFilterActivity.ARG_CONFERENCE_LIST_JIDS";
public static final String ARG_CONFERENCE_LIST = "com.xabber.android.ui.ConferenceFilterActivity.ARG_CONFERENCE_LIST";
public static final int REQUEST_CODE_FILTER_ROOMS = 1;
private EditText conferenceNameEditText;
private ImageButton roomClearButton;
private String account;
private HostedConferencesAdapter hostedConferencesAdapter;
public static Intent createIntent(Context context, String account) {
return new EntityIntentBuilder(context, ConferenceFilterActivity.class).setAccount(account).build();
}
private static String getAccount(Intent intent) {
return AccountIntentBuilder.getAccount(intent);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
returnResult();
return true;
}
return super.dispatchKeyEvent(event);
}
private void returnResult() {
Intent data = new Intent();
data.putExtra(ARG_CONFERENCE_NAME, conferenceNameEditText.getText().toString());
setResult(RESULT_OK, data);
finish();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.conferences_filter);
roomClearButton = (ImageButton)findViewById(R.id.room_clear_button);
roomClearButton.setOnClickListener(this);
conferenceNameEditText = (EditText)findViewById(R.id.room_name_edit_text);
conferenceNameEditText.addTextChangedListener(this);
conferenceNameEditText.setOnEditorActionListener(this);
setRoomClearButtonVisibility();
Intent intent = getIntent();
account = getAccount(intent);
hostedConferencesAdapter = new HostedConferencesAdapter(this);
ListView listView = (ListView) findViewById(R.id.hosted_rooms_list_view);
listView.setAdapter(hostedConferencesAdapter);
listView.setOnItemClickListener(this);
Bundle bundleExtra = intent.getBundleExtra(ARG_CONFERENCE_LIST);
hostedConferencesAdapter.addAll(restoreConferenceList(bundleExtra));
String room = intent.getStringExtra(ARG_CONFERENCE_NAME);
if (room != null) {
conferenceNameEditText.setText(room);
conferenceNameEditText.setSelection(room.length());
}
}
public static List<HostedRoom> restoreConferenceList(Bundle bundleExtra) {
List<String> conferencesNames = bundleExtra.getStringArrayList(ARG_CONFERENCE_LIST_NAMES);
List<String> conferencesJids = bundleExtra.getStringArrayList(ARG_CONFERENCE_LIST_JIDS);
List<HostedRoom> conferences = new ArrayList<>();
if (conferencesNames != null && conferencesJids != null && conferencesNames.size() == conferencesJids.size()) {
for (int i = 0; i < conferencesNames.size(); i++) {
DiscoverItems.Item item = new DiscoverItems.Item(conferencesJids.get(i));
item.setName(conferencesNames.get(i));
conferences.add(new HostedRoom(item));
}
}
return conferences;
}
private void setRoomClearButtonVisibility() {
if (conferenceNameEditText.getText().toString().trim().isEmpty()) {
roomClearButton.setVisibility(View.GONE);
} else {
roomClearButton.setVisibility(View.VISIBLE);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
setRoomClearButtonVisibility();
hostedConferencesAdapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.room_clear_button) {
conferenceNameEditText.getText().clear();
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
startActivity(ConferenceAdd.createIntent(this, account,
hostedConferencesAdapter.getItem(position).getJid()));
}
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_NEXT || actionId == EditorInfo.IME_ACTION_DONE) {
returnResult();
return true;
}
else {
return false;
}
}
}
package com.xabber.android.ui;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.support.v7.widget.Toolbar;
import android.view.View;
import com.xabber.android.R;
import com.xabber.android.data.intent.EntityIntentBuilder;
import com.xabber.android.ui.helper.BarPainter;
import com.xabber.android.ui.helper.ManagedActivity;
public class ConferenceSelectActivity extends ManagedActivity implements ConferenceSelectFragment.Listener {
private BarPainter barPainter;
public static Intent createIntent(Context context) {
return new EntityIntentBuilder(context, ConferenceSelectActivity.class).build();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_with_toolbar_and_container);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_default);
toolbar.setNavigationIcon(R.drawable.ic_arrow_left_white_24dp);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NavUtils.navigateUpFromSameTask(ConferenceSelectActivity.this);
}
});
toolbar.setTitle(getString(R.string.muc_choose_conference));
barPainter = new BarPainter(this, toolbar);
barPainter.setDefaultColor();
if (savedInstanceState == null) {
getFragmentManager().beginTransaction().add(R.id.fragment_container, new ConferenceSelectFragment()).commit();
}
}
@Override
public void onAccountSelected(String account) {
barPainter.updateWithAccountName(account);
}
}
package com.xabber.android.ui;
import android.app.Activity;
import android.app.ListFragment;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.Toast;
import com.xabber.android.R;
import com.xabber.android.data.account.AccountManager;
import com.xabber.android.data.extension.muc.MUCManager;
import com.xabber.android.ui.adapter.AccountChooseAdapter;
import com.xabber.android.ui.adapter.HostedConferencesAdapter;
import com.xabber.android.ui.helper.AccountPainter;
import org.jivesoftware.smackx.muc.HostedRoom;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class ConferenceSelectFragment extends ListFragment implements AdapterView.OnItemSelectedListener,
View.OnClickListener, MUCManager.HostedRoomsListener, AdapterView.OnItemClickListener {
private Spinner accountView;
private EditText serverView;
private EditText roomView;
private HostedConferencesAdapter hostedConferencesAdapter;
private View roomsProgressBar;
private String account;
Listener listener;
private AccountPainter accountPainter;
private Button nextButton;
public ConferenceSelectFragment() {
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
listener = (Listener) activity;
}
@Override
public void onDetach() {
super.onDetach();
listener = null;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.conference_select_fragment, container, false);
accountView = (Spinner) view.findViewById(R.id.contact_account);
serverView = (EditText) view.findViewById(R.id.muc_server);
roomView = (EditText) view.findViewById(R.id.muc_conference_name);
roomView.setOnClickListener(this);
roomView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
onRoomNameEditTextClick();
}
}
});
roomView.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
hostedConferencesAdapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {
}
});
roomsProgressBar = view.findViewById(R.id.muc_rooms_progress_bar);
view.findViewById(R.id.muc_get_hosted_rooms).setOnClickListener(this);
accountView.setAdapter(new AccountChooseAdapter(getActivity()));
accountView.setOnItemSelectedListener(this);
if (AccountManager.getInstance().getAccounts().size() == 1) {
accountView.setSelection(0);
}
accountPainter = new AccountPainter(getActivity());
nextButton = (Button) view.findViewById(R.id.muc_next);
nextButton.setTextColor(accountPainter.getDefaultDarkColor());
nextButton.setOnClickListener(this);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
hostedConferencesAdapter = new HostedConferencesAdapter(getActivity());
ListView listView = getListView();
listView.setAdapter(hostedConferencesAdapter);
listView.setOnItemClickListener(this);
if (savedInstanceState != null) {
hostedConferencesAdapter.clear();
hostedConferencesAdapter.addAll(ConferenceFilterActivity.restoreConferenceList(savedInstanceState));
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
storeConferenceList(outState);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
startActivity(ConferenceAdd.createIntent(getActivity(), account,
hostedConferencesAdapter.getItem(position).getJid()));
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String newAccount = (String) accountView.getSelectedItem();
if (account != null && account.equals(newAccount)) {
return;
}
if (account != null) {
hostedConferencesAdapter.clear();
}
account = newAccount;
listener.onAccountSelected(account);
nextButton.setTextColor(accountPainter.getAccountDarkColor(account));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
account = null;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.muc_get_hosted_rooms:
onRequestHostedRoomsClick();
break;
case R.id.muc_next:
onNextClick();
break;
case R.id.muc_conference_name:
onRoomNameEditTextClick();
break;
}
}
private void onRoomNameEditTextClick() {
if (hostedConferencesAdapter.isEmpty()) {
return;
}
Intent intent = ConferenceFilterActivity.createIntent(getActivity(), account);
intent.putExtra(ConferenceFilterActivity.ARG_CONFERENCE_NAME, roomView.getText().toString());
Bundle bundle = new Bundle();
storeConferenceList(bundle);
intent.putExtra(ConferenceFilterActivity.ARG_CONFERENCE_LIST, bundle);
startActivityForResult(intent, ConferenceFilterActivity.REQUEST_CODE_FILTER_ROOMS);
}
private void storeConferenceList(Bundle intent) {
List<HostedRoom> conferencesList = new ArrayList<>();
conferencesList.addAll(hostedConferencesAdapter.getConferencesList());
ArrayList<String> names = new ArrayList<>();
ArrayList<String> jids = new ArrayList<>();
for (HostedRoom hostedRoom : conferencesList) {
names.add(hostedRoom.getName());
jids.add(hostedRoom.getJid());
}
intent.putStringArrayList(ConferenceFilterActivity.ARG_CONFERENCE_LIST_NAMES, names);
intent.putStringArrayList(ConferenceFilterActivity.ARG_CONFERENCE_LIST_JIDS, jids);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ConferenceFilterActivity.REQUEST_CODE_FILTER_ROOMS) {
String stringExtra = data.getStringExtra(ConferenceFilterActivity.ARG_CONFERENCE_NAME);
if (stringExtra != null) {
onConferenceNameChanged(stringExtra);
}
}
}
private void onNextClick() {
if (account == null) {
Toast.makeText(getActivity(), getString(R.string.EMPTY_ACCOUNT), Toast.LENGTH_SHORT).show();
return;
}
String server = serverView.getText().toString();
if ("".equals(server)) {
Toast.makeText(getActivity(), getString(R.string.EMPTY_SERVER_NAME), Toast.LENGTH_SHORT).show();
return;
}
String room = roomView.getText().toString();
if ("".equals(room)) {
Toast.makeText(getActivity(), getString(R.string.EMPTY_ROOM_NAME), Toast.LENGTH_LONG).show();
return;
}
room = room + "@" + server;
startActivity(ConferenceAdd.createIntent(getActivity(), account, room));
}
private void onRequestHostedRoomsClick() {
if (account == null) {
Toast.makeText(getActivity(), getString(R.string.EMPTY_ACCOUNT), Toast.LENGTH_SHORT).show();
return;
}
String server = serverView.getText().toString();
if ("".equals(server)) {
Toast.makeText(getActivity(), getString(R.string.EMPTY_SERVER_NAME), Toast.LENGTH_SHORT).show();
return;
}
ChatViewer.hideKeyboard(getActivity());
MUCManager.requestHostedRooms(account, server, this);
hostedConferencesAdapter.clear();
roomsProgressBar.setVisibility(View.VISIBLE);
}
@Override
public void onHostedRoomsReceived(Collection<HostedRoom> hostedRooms) {
roomsProgressBar.setVisibility(View.GONE);
if (hostedRooms == null) {
Toast.makeText(getActivity(), R.string.muc_error_getting_conferences, Toast.LENGTH_SHORT).show();
return;
}
hostedConferencesAdapter.clear();
hostedConferencesAdapter.addAll(hostedRooms);
}
public void onConferenceNameChanged(String stringExtra) {
roomView.setText(stringExtra);
roomView.setSelection(stringExtra.length());
}
interface Listener {
void onAccountSelected(String account);
}
}
......@@ -429,7 +429,7 @@ public class ContactList extends ManagedActivity implements OnAccountChangedList
closeAllChats();
return true;
case R.id.action_join_conference:
startActivity(ConferenceAdd.createIntent(this));
startActivity(ConferenceSelectActivity.createIntent(this));
return true;
case R.id.action_chat_list:
startActivity(ChatViewer.createRecentChatsIntent(this));
......
package com.xabber.android.ui.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;
import org.jivesoftware.smack.util.StringUtils;
import org.jivesoftware.smackx.muc.HostedRoom;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class HostedConferencesAdapter extends BaseAdapter implements Filterable {
private List<HostedRoom> originalData = null;
private List<HostedRoom> filteredData = null;
private LayoutInflater inflater;
private HostedRoomsFilter filter = new HostedRoomsFilter();
public HostedConferencesAdapter(Context context) {
this.filteredData = new ArrayList<>();
this.originalData = new ArrayList<>();
inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return filteredData.size();
}
@Override
public HostedRoom getItem(int position) {
return filteredData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// A ViewHolder keeps references to children views to avoid unnecessary calls
// to findViewById() on each row.
ViewHolder holder;
// When convertView is not null, we can reuse it directly, there is no need
// to reinflate it. We only inflate a new View when the convertView supplied
// by ListView is null.
if (convertView == null) {
convertView = inflater.inflate(android.R.layout.simple_list_item_2, null);
// Creates a ViewHolder and store references to the two children views
// we want to bind data to.
holder = new ViewHolder();
holder.name = (TextView) convertView.findViewById(android.R.id.text1);
holder.jid = (TextView) convertView.findViewById(android.R.id.text2);
// Bind the data efficiently with the holder.
convertView.setTag(holder);
} else {
// Get the ViewHolder back to get fast access to the TextView
// and the ImageView.
holder = (ViewHolder) convertView.getTag();
}
// If weren't re-ordering this you could rely on what you set last time
HostedRoom hostedRoom = filteredData.get(position);
holder.name.setText(hostedRoom.getName());
holder.jid.setText(hostedRoom.getJid());
return convertView;
}
static class ViewHolder {
TextView name;
TextView jid;
}
public void clear() {
filteredData.clear();
originalData.clear();
notifyDataSetChanged();
}
public void addAll(Collection<HostedRoom> hostedRooms) {
filteredData.addAll(hostedRooms);
originalData.addAll(hostedRooms);
notifyDataSetChanged();
}
@Override
public Filter getFilter() {
return filter;
}
private class HostedRoomsFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
String filterString = constraint.toString().toLowerCase();
FilterResults results = new FilterResults();
final List<HostedRoom> list = originalData;
int count = list.size();
final ArrayList<HostedRoom> newList = new ArrayList<>(count);
for (int i = 0; i < count; i++) {
HostedRoom room = list.get(i);
String filterableJidName = StringUtils.parseName(room.getJid()).toLowerCase();
String filterableRoomName = room.getName().toLowerCase();
if (filterableJidName.contains(filterString) || filterableRoomName.contains(filterString)) {
newList.add(room);
}
}
results.values = newList;
results.count = newList.size();
return results;
}
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
filteredData = (List<HostedRoom>) results.values;
notifyDataSetChanged();
}
}
public List<HostedRoom> getConferencesList() {
return originalData;
}
}
......@@ -7,7 +7,6 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/toolbar_default"
android:orientation="vertical"
android:padding="16dp">
......@@ -16,34 +15,31 @@
android:layout_height="wrap_content"
android:text="@string/contact_account" />
<com.xabber.android.ui.widget.NoDefaultSpinner
android:id="@+id/contact_account"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:prompt="@string/choose_account" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/muc_server" />
<EditText
android:id="@+id/muc_server"
android:id="@+id/muc_account_jid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/conference_jabber_org"
android:inputType="textEmailAddress"
android:singleLine="true" />
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="account@jabber.org"
android:padding="8dp"
android:singleLine="true"
android:gravity="center_vertical"
android:drawablePadding="8dp"
android:drawableLeft="@drawable/ic_avatar_1"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/muc_room" />
<EditText
android:id="@+id/muc_room"
<TextView
android:id="@+id/muc_conference_jid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="room@conference.jabber.org"
android:padding="8dp"
android:singleLine="true" />
<TextView
......@@ -56,6 +52,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/muc_nick_hint"
android:paddingLeft="8dp"
android:imeOptions="flagNoExtractUi"
android:singleLine="true" />
<TextView
......@@ -69,14 +67,10 @@
android:layout_height="wrap_content"
android:hint="@string/muc_password_hint"
android:inputType="textPassword"
android:paddingLeft="8dp"
android:imeOptions="flagNoExtractUi"
android:singleLine="true" />
<CheckBox
android:id="@+id/muc_join"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/muc_join" />
</LinearLayout>
</ScrollView>
\ No newline at end of file
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.xabber.android.ui.ConferenceSelectFragment"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentTop="true"
android:paddingTop="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:id="@+id/top_panel"
>
<com.xabber.android.ui.widget.NoDefaultSpinner
android:id="@+id/contact_account"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="56dp"
android:prompt="@string/choose_account" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/muc_server" />
<EditText
android:id="@+id/muc_server"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/conference_jabber_org"
android:inputType="textEmailAddress"
android:singleLine="true" />
</LinearLayout>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_search_grey600_24dp"
android:paddingLeft="16dp"
android:paddingRight="8dp"
android:paddingTop="16dp"
android:paddingBottom="8dp"
android:background="@drawable/drawer_touch"
android:id="@+id/muc_get_hosted_rooms"
android:contentDescription="@string/muc_get_hosted_conferences"
android:layout_gravity="bottom|right"
/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/muc_room" />
<EditText
android:id="@+id/muc_conference_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/muc_type_conference_name"
android:singleLine="true" />
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/muc_rooms_progress_bar"
android:layout_gravity="center_horizontal"
android:visibility="gone"
/>
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:id="@+id/bottom_bar"
>
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/grey_400"
android:layout_alignParentTop="true"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/muc_next"
android:id="@+id/muc_next"
android:textColor="@color/green_500"
android:layout_marginRight="8dp"
android:layout_marginLeft="8dp"
android:layout_alignParentRight="true"
android:background="@drawable/drawer_touch"
/>
</RelativeLayout>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@android:id/list"
android:layout_above="@id/bottom_bar"
android:layout_below="@id/top_panel"
/>
</RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.xabber.android.ui.ConferenceFilterActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:orientation="horizontal"
android:layout_alignParentTop="true"
android:elevation="8dp"
android:background="@color/white"
android:id="@+id/linearLayout">
<EditText
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:background="@null"
android:hint="@string/muc_type_conference_name"
android:paddingLeft="16dp"
android:id="@+id/room_name_edit_text"
android:imeOptions="flagNoExtractUi"
android:singleLine="true"
/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/ic_close_circle_grey600_24dp"
android:background="@drawable/drawer_touch"
android:layout_gravity="center_vertical"
android:paddingRight="16dp"
android:paddingLeft="16dp"
android:id="@+id/room_clear_button"
/>
</LinearLayout>
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/hosted_rooms_list_view"
android:layout_below="@+id/linearLayout"
android:layout_alignLeft="@+id/linearLayout"
android:layout_alignStart="@+id/linearLayout"
android:layout_alignParentBottom="true"
/>
</RelativeLayout>
......@@ -2,7 +2,7 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/action_add_conference"
android:title="@string/muc_add"
android:title="@string/muc_join"
app:showAsAction="always"
/>
</menu>
\ No newline at end of file
......@@ -54,11 +54,11 @@
<string name="account_tls_legacy_summary">Herkömmliche SSL-Verschlüsselung für die Serververbindung verwenden</string>
<string name="account_tls_mode">TLS/SSL-Verschlüsselung</string>
<string name="account_tls_require">TLS benötigt</string>
<string name="account_tls_require_summary">Für die Verbindung zum Server wird TLS-Verschlüsselung benötigt</string>
<string name="account_use_orbot">Chatte über das anonyme Netzwerk TOR und erzwinge eine TLS Verschlüsselung\nWird für Google Talk nicht empfohlen</string>
<string name="account_tls_require_summary">TLS-Verschlüsselung für Verbindung zum Server verlangen</string>
<string name="account_use_orbot">Chatten über das anonyme Netzwerk TOR und erzwingen einer TLS Verschlüsselung\nFür Google Talk nicht empfohlen</string>
<string name="confirm_cancellation">Willst du wirklich alle Änderungen verwerfen?</string>
<string name="INCORRECT_USER_NAME">Überprüfe den Benutzernamen. Details findest du unten im Hilfetext.</string>
<string name="orbot_required_message">Für die Nutzung von TOR muss Orbot installiert sein und die Proxy-Verbindung darüber laufen. Möchtest du Orbot von Google Play herunterladen?</string>
<string name="orbot_required_message">Für die Nutzung von TOR muss Orbot installiert sein und die Proxy-Verbindung darüber laufen. Möchten Sie die App von Google Play herunterladen?</string>
<string name="orbot_required_title">Soll Orbot installiert werden?</string>
<string name="ACCOUNT_REGISTER_FAILED">Das Benutzerkonto konnte nicht auf dem Server angelegt werden.</string>
<string name="account_color">Kontofarbe</string>
......
......@@ -5,7 +5,7 @@
<string name="action_status_text_none">%1$s hat den Statustext gelöscht</string>
<string name="action_join">%1$s hat die Konferenz betreten</string>
<string name="action_kick">%1$s wurde rausgeworfen</string>
<string name="account_is_offline">Du bist offline. Gesendete Nachrichten werden erst zugestellt, sobald du wieder verbunden bist.</string>
<string name="account_is_offline">Sie sind momentan offline. Nachrichten, die Sie senden, werden erst zugestellt sobald Sie sich erneut verbinden.</string>
<string name="chat_delay">gesendet um %s</string>
<string name="chat_input_hint">Geben Sie Ihre Nachricht hier ein</string>
<string name="chat_send">Senden</string>
......@@ -13,8 +13,8 @@
<string name="contact_is_offline">Der Empfänger ist offline. Nachrichten werden erst zugestellt, sobald er wieder online ist.</string>
<string name="ENTRY_IS_NOT_AVAILABLE">Kontakt ist nicht verfügbar</string>
<string name="FILE_NOT_FOUND">Datei nicht gefunden</string>
<string name="message_copy">Nachricht kopieren</string>
<string name="message_quote">Nachricht zitieren</string>
<string name="message_copy">Kopieren</string>
<string name="message_quote">Zitieren</string>
<string name="message_remove">Nachrichten aus dem Verlauf entfernen</string>
<string name="message_repeat">Erneut senden</string>
<string name="save_history">Gesprächsverlauf speichern\nDen Gesprächsverlauf lokal speichern</string>
......@@ -54,7 +54,7 @@
<string name="chat_settings">Chateinstellungen</string>
<string name="chat_state_composing">Tippt gerade&#8230;</string>
<string name="chat_state_paused">Eingegebenen Text&#8230;</string>
<string name="chat_typed">geschrieben am %s</string>
<string name="chat_typed">geschrieben um %s</string>
<string name="export_chat">Chat exportieren</string>
<string name="export_chat_done">Verlauf wurde auf SD Karte exportiert</string>
<string name="export_chat_mask">%2$s für %1$s.html</string>
......
......@@ -5,11 +5,11 @@
<string name="contact_group">Gruppen wählen</string>
<string name="contact_name">Alias (optional)</string>
<string name="contact_subscribe_confirm">Teilen Sie Ihren Kontostatus %1$s mit dem Kontakt?</string>
<string name="contact_user">Kontakt Benutzername</string>
<string name="contact_user">Benutzername des Kontakts</string>
<string name="ENTRY_IS_NOT_FOUND">Kontakt wurde nicht gefunden</string>
<string name="group_is_empty">Gruppenname setzen</string>
<string name="group_name">Gruppename</string>
<string name="choose_account">Bitte ein Konto auswählen</string>
<string name="choose_account">Bitte ein Konto auswählen</string>
<string name="EMPTY_ACCOUNT">Bitte ein Konto auswählen</string>
<string name="add_new_group">Neue Gruppe hinzufügen&#8230;</string>
<string name="accept_contact">Autorisieren</string>
......
......@@ -10,7 +10,7 @@
<string name="invisible">Unsichtbar</string>
<string name="remove_status">Status löschen</string>
<string name="status_editor">Status setzen</string>
<string name="status_text_hint">Geben Sie die Statusmeldung ein</string>
<string name="status_text_hint">Statusmeldung eingeben</string>
<string name="unavailable">Offline</string>
<string name="unsubscribed">Nicht autorisiert</string>
<string name="xa">Abwesend für längere Zeit</string>
......
......@@ -51,17 +51,17 @@
<string name="action_subject">%1$s a changé le sujet en : %2$s</string>
<string name="ATTENTION_IS_NOT_SUPPORTED">Le contact ne supporte pas ou a désactivé la demande d\'attention</string>
<string name="call_attention">Demander l\'attention</string>
<string name="chat_settings">Préférences de la conversation</string>
<string name="chat_settings">Réglages de la conversation</string>
<string name="chat_state_composing">En train d\'écrire&#8230;</string>
<string name="chat_state_paused">A écrit un texte&#8230;</string>
<string name="chat_typed">Écrit à %s</string>
<string name="export_chat">Exporter la discussion</string>
<string name="export_chat_done">L\'historique a été exporté sur carte SD</string>
<string name="export_chat_mask">%2$s_pour_%1$s.html</string>
<string name="export_chat_mask">%2$s pour %1$s.html</string>
<string name="export_chat_send">Envoyer après avoir exporté</string>
<string name="export_chat_title">Entrer un nom de fichier</string>
<string name="muc_invite">Inviter à discuter</string>
<string name="muc_is_unavailable">Vos messages ne peuvent être délivrés. Veuillez rejoindre la discussion</string>
<string name="muc_is_unavailable">Vos messages ne peuvent être délivrés. Rejoignez la discussion s\'il vous plait.</string>
<string name="occupant_list">Liste des participants</string>
<string name="otr_encryption">Chiffrement OTR</string>
<string name="otr_end">Arrêter le chiffrement</string>
......
......@@ -15,48 +15,48 @@
<string name="account_type_helps_gtalk">Se non possiedi un account Google puoi crearne uno visitando http://mail.google.com\nÈ anche possibile utilizzare nome_utente@dominio_personale_google</string>
<string name="account_type_helps_xmpp">Se vuoi saperne di più su XMPP (Jabber) visita https://xmpp.org</string>
<string name="account_user_name">Nome utente</string>
<string name="EMPTY_SERVER_NAME">Il nome del server non è specificato</string>
<string name="EMPTY_USER_NAME">Il nome utente non è specificato</string>
<string name="EMPTY_SERVER_NAME">Il nome del server non è stato specificato</string>
<string name="EMPTY_USER_NAME">Nome utente mancante</string>
<string name="CONFIRM_PASSWORD">Le password non coincidono</string>
<string name="account_archive_mode">Memorizza la cronologia dei messaggi</string>
<string name="account_archive_mode_available">Sul server se disponibile</string>
<string name="account_archive_mode_available">Sul server se possibile</string>
<string name="account_archive_mode_dont_store">Non memorizzare</string>
<string name="account_archive_mode_local">Localmente sul dispositivo</string>
<string name="account_archive_mode_server">Sul server</string>
<string name="account_archive_mode_unread">Localmente solo per non inviati e non letti</string>
<string name="account_archive_mode_unread">Localmente solo per non inviati o non letti</string>
<string name="account_compression_summary">Seleziona per abilitare la compressione dei dati</string>
<string name="account_custom">Host personalizzato</string>
<string name="account_custom_summary">Utilizza impostazioni host personalizzate invece del record SRV</string>
<string name="account_enabled_summary">Seleziona per abilitare l\'account</string>
<string name="account_invalid_port">La porta deve essere un numero (predefinita: 5222)</string>
<string name="account_invalid_port_range">La porta deve essere compresa tra 1 e 65535 (predefinito: 5222)</string>
<string name="account_invalid_priority">Il valore della priorità deve essere un numero compreso tra -128 e 128 (predefinito: 10)</string>
<string name="account_invalid_priority">Il valore della priorità deve essere un numero compreso tra -128 e 128 (predefinito: 0)</string>
<string name="account_oauth">Autenticazione</string>
<string name="account_oauth_invalidated">Non autorizzato</string>
<string name="account_oauth_summary">Impostazioni OAuth</string>
<string name="account_proxy_host">Host del proxy</string>
<string name="account_proxy_host">Proxy: port</string>
<string name="account_proxy_invalid_port_range">La porta del proxy deve essere compresa tra 1 e 65535 (predefinito: 8080)</string>
<string name="account_proxy_invalid_port">La porta del proxy deve essere un numero (predefinito: 8080)</string>
<string name="account_proxy_password">Password del proxy</string>
<string name="account_proxy_port">Porta del proxy</string>
<string name="account_proxy_type">Tipo di proxy</string>
<string name="account_proxy_port">Proxy: porta</string>
<string name="account_proxy_type">Proxy: tipologia</string>
<string name="account_proxy_type_none">Disabilitato</string>
<string name="account_proxy_user">Utente del proxy</string>
<string name="account_proxy_user">Proxy: utente</string>
<string name="account_sasl">Usa autenticazione SASL (raccomandato)</string>
<string name="account_sasl_summary">Disabilita per server molto vecchi</string>
<string name="account_store_password">Memorizza password</string>
<string name="account_store_password_summary">Disabilita questa opzione per richiedere l\'inserimento della password ogni volta che ti connetti</string>
<string name="account_syncable">Integrazione con i contatti di sistema</string>
<string name="account_syncable">Integrare con i contatti di sistema</string>
<string name="account_syncable_summary">Mostra i contatti di questo account nella lista dei contatti del telefono</string>
<string name="account_tls_enable">Abilita TLS</string>
<string name="account_tls_enable_summary">Usa la crittografia TLS quando possibile per connettersi al server</string>
<string name="account_tls_legacy">SSL legacy</string>
<string name="account_tls_legacy_summary">Usa crittografia SSL legacy quando ti connetti al server</string>
<string name="account_tls_mode">Usa TLS/SSL</string>
<string name="account_tls_require">Richiede TLS</string>
<string name="account_tls_mode">Usatilizzo TLS/SSL</string>
<string name="account_tls_require">Richiedi TLS</string>
<string name="account_tls_require_summary">Richiedi crittografia TLS quando ti connetti al server</string>
<string name="account_use_orbot">Chatta utilizzando la rete di navigazione anonima TOR e forza il protocollo di crittografia TLS \nNon consigliato per Google Talk</string>
<string name="confirm_cancellation">Sei sicuro di voler ignorare tutte le modifiche?</string>
<string name="confirm_cancellation">Sei sicuro di voler annullare tutte le modifiche?</string>
<string name="INCORRECT_USER_NAME">Nome utente sbagliato. Controlla il testo di aiuto sottostante per maggiori dettagli.</string>
<string name="orbot_required_message">Per poter utilizzare TOR occorre installare ed attivare Orbot come proxy per il traffico. Si desidera installarlo tramite Google Play?</string>
<string name="orbot_required_title">Installare Orbot?</string>
......@@ -67,7 +67,7 @@
<string name="account_color_name_red">Rosso</string>
<string name="account_color_name_blue">Blu</string>
<string name="account_color_name_indigo">Indaco</string>
<string name="account_color_name_teal">Foglia di tè</string>
<string name="account_color_name_teal">Verdeacqua</string>
<string name="account_color_name_blue_grey">Grigio-blu</string>
<string name="account_color_name_cyan">Ciano</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="action_status_text">%1$s ha cambiato lo stato: %2$s</string>
<string name="action_status_text">%1$s ha cambiato il messaggio di stato: %2$s</string>
<string name="action_status_text_none">%1$s ha cancellato il messaggio di stato</string>
<string name="action_join">%1$s è entrato nella conferenza</string>
<string name="action_kick">%1$s è stato cacciato</string>
<string name="account_is_offline">Attualmente non sei in linea. I messaggi inviati verranno consegnati la prossima volta che sarai in linea.</string>
<string name="account_is_offline">Attualmente non sei in linea. I messaggi inviati verranno consegnati alla prossima connessione.</string>
<string name="chat_delay">inviato alle %s</string>
<string name="chat_input_hint">Scrivi il tuo messaggio qua</string>
<string name="chat_input_hint">Scrivi qui il tuo messaggio</string>
<string name="chat_send">Invia</string>
<string name="clear_history">Cancella cronologia</string>
<string name="contact_is_offline">Il destinatario non è in linea. I messaggi inviati verranno consegnati quando tornerà in linea.</string>
<string name="ENTRY_IS_NOT_AVAILABLE">Il contatto non è disponibile</string>
<string name="FILE_NOT_FOUND">File non trovato</string>
<string name="message_copy">Copia</string>
<string name="message_quote">Citazione</string>
<string name="message_quote">Cita</string>
<string name="message_remove">Rimuovi dalla cronologia</string>
<string name="message_repeat">Ritenta invio</string>
<string name="save_history">Salva cronologia in locale \nMemorizza cronologia messaggi in locale</string>
<string name="save_history">Salva cronologia in locale \nMemorizza la cronologia dei messaggi localmente</string>
<string name="show_history">Mostra la cronologia</string>
<string name="action_attention_called">La richiesta d\'attenzione è stata inviata</string>
<string name="action_attention_requested">È stata richiesta attenzione</string>
<string name="action_ban">%1$s è stato bannato</string>
<string name="action_ban_by">%1$s è stato bannato da %2$s</string>
<string name="action_attention_requested">Hai ricevuto una richiesta di attenzione</string>
<string name="action_ban">%1$s è stato bandito</string>
<string name="action_ban_by">%1$s è stato bandito da %2$s</string>
<string name="action_invite_error">L\'invito non è stato ricevuto da %s</string>
<string name="action_invite_sent">L\'invito è stato inviato da %s</string>
<string name="action_invite_sent">L\'invito è stato inviato a %s</string>
<string name="action_join_complete">Sei entrato in chat come %1$s</string>
<string name="action_join_complete_to">Sei entrato nella chat %1$s</string>
<string name="action_kick_by">%1$s è stato cacciato da %2$s</string>
<string name="action_leave">%1$s ha abbandonato la chat</string>
<string name="action_nickname">%1$s ha cambiato il nickname in %2$s</string>
<string name="action_nickname">%1$s è ora noto come %2$s</string>
<string name="action_otr_encryption">La crittografia è stata abilitata ma questo contatto non è stato verificato. Puoi verificarlo dal menu crittografia OTR.</string>
<string name="action_otr_error">Errore OTR: %1$s</string>
<string name="action_otr_finish">L\'interlocutore ha abbandonato la conversazione. Dovresti fare lo stesso oppure riavviare la conversazione.</string>
<string name="action_otr_finished_session">Il tuo messaggio non è stato inviato. Abbandona la conversazione o riavviala.</string>
<string name="action_otr_plain">Hai abbandonato una conversazione crittografata</string>
<string name="action_otr_plain">Hai abbandonato la conversazione crittografata</string>
<string name="action_otr_smp_cheated">È stato rilevato un comportamento sospetto da parte dell\'interlocutore durante la verifica</string>
<string name="action_otr_smp_failed">Verifica fallita</string>
<string name="action_otr_smp_not_approved">La risposta alla domanda segrata è stata verificata. Dovresti chiedere lo stesso anche al tuo interlocutore o controllare la chiave condivisa.</string>
<string name="action_otr_smp_not_approved">La risposta alla domanda segreta è stata verificata. Dovresti chiedere lo stesso anche al tuo interlocutore o controllare la chiave condivisa.</string>
<string name="action_otr_smp_unverified">Verifica fallita</string>
<string name="action_otr_smp_verified">Verifica superata con successo</string>
<string name="action_otr_unreadable">Il messaggio crittografato ricevuto è illeggibile</string>
<string name="action_otr_verified">Crittografia abilitata</string>
<string name="action_status_available">%1$s è ora in linea</string>
<string name="action_status_away">%1$s è ora assente</string>
<string name="action_status_chat">%1$s è libero per la chat</string>
<string name="action_status_chat">%1$s è disponibile per chattare</string>
<string name="action_status_dnd">%1$s chiede di non essere disturbato</string>
<string name="action_status_unavailable">%1$s è ora non disponibile</string>
<string name="action_status_xa">%1$s è assente per molto tempo</string>
<string name="action_status_xa">%1$s è assente da molto tempo</string>
<string name="action_subject">%1$s ha cambiato l\'oggetto in: %2$s</string>
<string name="ATTENTION_IS_NOT_SUPPORTED">Il contatto non supporta o ha disabilitato il richiamo d\'attenzione</string>
<string name="call_attention">Richiama l\'attenzione</string>
<string name="chat_settings">Impostazioni chat</string>
<string name="chat_state_composing">Sta scrivendo&#8230;</string>
<string name="chat_state_paused">Ha scritto&#8230;</string>
<string name="chat_state_paused">Ha scritto del testo&#8230;</string>
<string name="chat_typed">scritto alle %s</string>
<string name="export_chat">Esporta chat</string>
<string name="export_chat_done">La cronologia è stata esportata sulla scheda SD</string>
<string name="export_chat_mask">%2$s per %1$s.html</string>
<string name="export_chat_send">Invia dopo l\'esportazione</string>
<string name="export_chat_title">Inserisci il nome del file</string>
<string name="muc_invite">Invito per chattare</string>
<string name="muc_is_unavailable">I tuoi messaggi non possono essere consegnati. Devi entrare in chat.</string>
<string name="occupant_list">Lista degli occupanti</string>
<string name="muc_invite">Invita alla chat</string>
<string name="muc_is_unavailable">I tuoi messaggi non possono essere consegnati. Per favore, entra nella chat</string>
<string name="occupant_list">Lista degli partecipanti</string>
<string name="otr_encryption">Crittografia OTR</string>
<string name="otr_end">Ferma crittografia</string>
<string name="otr_refresh">Riavvia crittografia</string>
<string name="otr_request">È stata richiesta una conversazione privata ma tu non hai alcun plugin di supporto. Utilizza Pidgin, Gajim o Adium per PC/Mac e Xabber o ChatSecure per Android. Visita http://otr.cypherpunks.ca/ per maggiori informazioni.</string>
<string name="otr_request">È stata richiesta una conversazione privata Off-the-Record ma non è presente un plugin che la supporti. Utilizza Pidgin, Gajim o Adium per PC/Mac e Xabber o ChatSecure per Android. Visita http://otr.cypherpunks.ca/ per maggiori informazioni.</string>
<string name="otr_start">Avvia crittografia</string>
<string name="otr_unencrypted_message">Questo messaggio non è stato crittografato</string>
<string name="otr_unreadable_message">Il messaggio crittografato che hai inviato è illeggibile</string>
<string name="otr_verification">Verifica OTR</string>
<string name="otr_verify_fingerprint">Verifica con impronta digitale</string>
<string name="otr_verify_question">Verifica con domanda</string>
<string name="otr_verify_secret">Verifica con chiave condivisa</string>
<string name="otr_verify_secret">Verifica con un segreto condiviso</string>
<string name="recent_chats">Chat recenti</string>
<string name="under_construction">In costruzione</string>
<string name="under_construction_message">Questa schermata è in costruzione</string>
<string name="chat_events_show_text_global">Usa impostazioni globali</string>
<string name="chat_events_show_text_always">Mostra testo messaggio</string>
<string name="chat_events_show_text_never">Nascondi testo messaggio</string>
<string name="chat_events_show_text_always">Mostra il testo del messaggio</string>
<string name="chat_events_show_text_never">Nascondi il testo del messaggio</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="account_compression">Gebruik compressie</string>
<string name="account_enabled">Actief</string>
<string name="account_host">Host</string>
<string name="account_password">Wachtwoord</string>
<string name="confirm_password">Bevestig wachtwoord</string>
<string name="account_port">Poort</string>
<string name="account_priority">Prioriteit</string>
<string name="account_resource">Bron</string>
<string name="account_server_name">Server</string>
<string name="account_type">Account-type</string>
<string name="account_type_hints_gtalk">gebruikersnaam voor gmail.com of Google Apps domein</string>
<string name="account_type_helps_gtalk">Als u geen Google account heeft kunt u er een aanmaken op: http://mail.google.com\nU kunt ook uw gebruikersnaam@uw_google_domein gebruiken</string>
<string name="account_type_helps_xmpp">Wilt u meer weten over XMPP (Jabber) kijk hier: https://xmpp.org</string>
<string name="account_user_name">Gebruikersnaam</string>
<string name="EMPTY_SERVER_NAME">Naam server niet gespecifieerd</string>
<string name="EMPTY_USER_NAME">Gebruikersnaam niet gespecifieerd</string>
<string name="CONFIRM_PASSWORD">Wachtwoord komt niet overneen</string>
<string name="account_archive_mode">Sla geschiedenis op</string>
<string name="account_archive_mode_available">Op server indien beschikbaar</string>
<string name="account_archive_mode_dont_store">Sla niet op</string>
<string name="account_archive_mode_local">Lokaal op apparaat</string>
<string name="account_archive_mode_server">Op de server</string>
<string name="account_archive_mode_unread">Lokaal alleen ongelezen en te verzenden</string>
<string name="account_compression_summary">Kies om datacompressie in te schakelen</string>
<string name="account_custom">Aangepaste host</string>
<string name="account_custom_summary">Gebruik aangepaste hostinstellingen in plaats van SRV record</string>
<string name="account_enabled_summary">Kies om account in te schakelen</string>
<string name="account_invalid_port">Poort moet een nummer zijn (standaard: 5222)</string>
<string name="account_invalid_port_range">Poort moet tussen de 1 en 65535 zijn (standaard: 5222)</string>
<string name="account_invalid_priority">Waarde prioriteit moet een nummer zijn tussen -128 en 128 (standaard: 10)</string>
<string name="account_oauth">Autorisatie</string>
<string name="account_oauth_invalidated">Niet geautoriseerd</string>
<string name="account_oauth_summary">OAuth instellingen</string>
<string name="account_proxy_host">Proxy-host</string>
<string name="account_proxy_invalid_port_range">Proxy poort moet tussen de 1 en 65535 zijn (standaard: 8080)</string>
<string name="account_proxy_invalid_port">Proxy poort moet een nummer zijn (standaard: 8080)</string>
<string name="account_proxy_password">Proxy-wachtwoord</string>
<string name="account_proxy_port">Proxy-poort</string>
<string name="account_proxy_type">Proxy type</string>
<string name="account_proxy_type_none">Gedeactiveerd</string>
<string name="account_proxy_user">Proxy-gebruiker</string>
<string name="account_sasl">Gebruik SASL Authenticatie (aanbevolen)</string>
<string name="account_sasl_summary">Schakel uit voor oudere servers</string>
<string name="account_store_password">Sla wachtwoord op</string>
<string name="account_store_password_summary">Schakel deze optie uit om het wachtwoord telkens in te voeren bij het inloggen</string>
<string name="account_syncable">Integratie in systeem contactenlijst</string>
<string name="account_syncable_summary">Toon contacten van dit account in de contactenlijst van het toestel</string>
<string name="account_tls_enable">Schakel TLS in</string>
<string name="account_tls_enable_summary">Gebruik TLS encryptie wanneer mogelijk om te connecteren met server</string>
<string name="account_tls_legacy">Legacy SSL</string>
<string name="account_tls_legacy_summary">Gebruik Legacy SSL encryptie bij connecteren met server</string>
<string name="account_tls_mode">TLS/SSL gebruik</string>
<string name="account_tls_require">TLS vereist</string>
<string name="account_tls_require_summary">TLS encryptie vereist om te connecteren met server</string>
<string name="account_use_orbot">Chat via het anonieme TOR-netwerk en forceer het gebruik van TLS-versleuteling.\nWordt afgeraden voor Google Talk</string>
<string name="confirm_cancellation">Alle wijzigingen negeren?</string>
<string name="INCORRECT_USER_NAME">Gebruikersnaam niet correct. Raadpleeg help voor details.</string>
<string name="orbot_required_message">Om TOR te kunnen gebruiken moet Orbot geïnstalleerd zijn, en moet het verkeer hier doorheen lopen. Wil je Orbot installeren vanaf Google Play?</string>
<string name="orbot_required_title">Installeer Orbot?</string>
<string name="ACCOUNT_REGISTER_FAILED">Registratie van de account op de server is mislukt.</string>
<string name="account_color">Account kleur</string>
<string name="account_color_name_green">Groen</string>
<string name="account_color_name_orange">Oranje</string>
<string name="account_color_name_red">Rood</string>
<string name="account_color_name_blue">Blauw</string>
<string name="account_color_name_indigo">Indigo</string>
<string name="account_color_name_teal">Groenblauw</string>
<string name="account_color_name_blue_grey">Blauw grijs</string>
<string name="account_color_name_cyan">Cyaan</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="account_delete_confirm">Wilt u echt de account %s verwijderen?\n(het zal niet worden verwijderd van de server, enkel uit Xabber)</string>
<string name="account_add">Voeg account toe</string>
<string name="account_register">Nieuw Account aanmaken</string>
<string name="account_delete">Verwijder account</string>
<string name="account_editor">Bewerk account</string>
<string name="account_state_registration">Registreren</string>
<string name="account_state_authentication">Autoriseren</string>
<string name="account_state_connected">Online</string>
<string name="account_state_connecting">Verbinden</string>
<string name="account_state_disconnecting">Verbinding verbreken</string>
<string name="account_state_offline">Offline</string>
<string name="account_state_waiting">Wachten op verbinding</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="action_status_text">%1$s veranderde status: %2$s</string>
<string name="action_status_text_none">%1$s verwijderde status tekst</string>
<string name="action_join">%1$s toegevoegd aan conferentie</string>
<string name="action_kick">%1$s werd gekickt</string>
<string name="account_is_offline">Je bent offline. Berichten die je stuurt zullen afgeleverd worden wanneer je online bent.</string>
<string name="chat_delay">Verzonden op %s</string>
<string name="chat_input_hint">Schrijf hier je bericht</string>
<string name="chat_send">Verzend</string>
<string name="clear_history">Wis geschiedenis</string>
<string name="contact_is_offline">Contact is offline. Berichten worden afgeleverd wanneer hij/zij online gaat.</string>
<string name="ENTRY_IS_NOT_AVAILABLE">Contact is niet beschikbaar</string>
<string name="FILE_NOT_FOUND">Bestand niet gevonden</string>
<string name="message_copy">Kopieer</string>
<string name="message_quote">Citeer</string>
<string name="message_remove">Verwijder uit geschiedenis</string>
<string name="message_repeat">Probeer opnieuw te verzenden</string>
<string name="save_history">Bewaar lokale geschiedenis\nBewaar berichtengeschiedenis lokaal</string>
<string name="show_history">Toon geschiedenis</string>
<string name="action_attention_called">Vraag om aandacht is verzonden</string>
<string name="action_attention_requested">Aandacht gevraagd</string>
<string name="action_ban">%1$s werd verbannen</string>
<string name="action_ban_by">%1$s werd verbannen door %2$s</string>
<string name="action_invite_error">Invitatie niet ontvangen door %s</string>
<string name="action_invite_sent">Invitatie verzonden naar %s</string>
<string name="action_join_complete">Lid geworden van chat als %1$s</string>
<string name="action_join_complete_to">Lid geworden van chat %1$s</string>
<string name="action_kick_by">%1$s werd gekickt door %2$s</string>
<string name="action_leave">%1$s heeft chat verlaten</string>
<string name="action_nickname">%1$s veranderde nickname in %2$s</string>
<string name="action_otr_encryption">Encryptie is ingeschakeld maar gesprekspartner is niet geverifieerd. Je kan dit nagaan in OTR encryptie menu.</string>
<string name="action_otr_error">OTR fout: %1$s</string>
<string name="action_otr_finish">Gesprekspartner heeft conversatie verlaten. Verlaat conversatie of herbegin deze.</string>
<string name="action_otr_finished_session">Je bericht werd niet verzonden. Verlaat conversatie of herbegin deze.</string>
<string name="action_otr_plain">Geëncrypteerde conversatie verlaten</string>
<string name="action_otr_smp_cheated">Gesprekspartner probeerde bedrog te plegen tijdens verificatie</string>
<string name="action_otr_smp_failed">Verificatie mislukt</string>
<string name="action_otr_smp_not_approved">Je antwoord op de geheime vraag is geverifieerd. Stel vraag aan je gesprekspartner of gebruik gedeeld geheim.</string>
<string name="action_otr_smp_unverified">Verificatie mislukt</string>
<string name="action_otr_smp_verified">Verificatie geslaagd</string>
<string name="action_otr_unreadable">Het geëncrypteerde bericht is niet leesbaar</string>
<string name="action_otr_verified">Encryptie ingeschakeld</string>
<string name="action_status_available">%1$s is nu online</string>
<string name="action_status_away">%1$s is nu afwezig</string>
<string name="action_status_chat">%1$s vrij om te chatten</string>
<string name="action_status_dnd">%1$s vraagt om niet te storen</string>
<string name="action_status_unavailable">%1$s is nu niet beschikbaar</string>
<string name="action_status_xa">%1$s afwezig voor langere tijd</string>
<string name="action_subject">%1$s heeft het onderwerp veranderd naar: %2$s</string>
<string name="ATTENTION_IS_NOT_SUPPORTED">Contact heeft aandacht vragen uitgezet of ondersteunt het niet</string>
<string name="call_attention">Aandacht vragen</string>
<string name="chat_settings">Chatinstellingen</string>
<string name="chat_state_composing">Typen&#8230;</string>
<string name="chat_state_paused">Ingevoerde tekst&#8230;</string>
<string name="chat_typed">ingevoerd op %s</string>
<string name="export_chat">Exporteer chat</string>
<string name="export_chat_done">Geschiedenis werd geëxporteerd naar SD kaart</string>
<string name="export_chat_mask">%2$s voor %1$s.html</string>
<string name="export_chat_send">Verzend na exporteren</string>
<string name="export_chat_title">Voer bestandsnaam in</string>
<string name="muc_invite">Inviteer voor chat</string>
<string name="muc_is_unavailable">Bericht kan niet afgeleverd worden. Word lid van chat</string>
<string name="occupant_list">Deelnemerslijst</string>
<string name="otr_encryption">OTR encryptie</string>
<string name="otr_end">Stop encryptie</string>
<string name="otr_refresh">Herbegin encryptie</string>
<string name="otr_request">Off-the-Record private conversatie werd verzocht maar je hebt de vereiste plugin niet. Gebruik Pidgin, Gajim of Adium voor PC/Mac en Xabber of ChatSecure voor Android. Ga naar http://otr.cypherpunks.ca/ voor meer informatie.</string>
<string name="otr_start">Start encryptie</string>
<string name="otr_unencrypted_message">Dit bericht werd niet geëncrypteerd</string>
<string name="otr_unreadable_message">Het geëncrypteerde bericht dat je verzond is niet leesbaar</string>
<string name="otr_verification">OTR verificatie</string>
<string name="otr_verify_fingerprint">Verifieer met vingerafdruk</string>
<string name="otr_verify_question">Verifieer met vraag</string>
<string name="otr_verify_secret">Verifieer met gedeeld geheim</string>
<string name="recent_chats">Recente chats</string>
<string name="under_construction">Wordt aan gewerkt</string>
<string name="under_construction_message">Dit scherm is in ontwikkeling</string>
<string name="chat_events_show_text_global">Gebruik globale instellingen</string>
<string name="chat_events_show_text_always">Toon berichttekst</string>
<string name="chat_events_show_text_never">Verberg tekst van bericht</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="contact_account">Account</string>
<string name="contact_group">Selecteer groepen</string>
<string name="contact_name">Alias (optioneel)</string>
<string name="contact_subscribe_confirm">De status van uw %1$s account met contactpersoon delen?</string>
<string name="contact_user">Gebruikersnaam</string>
<string name="ENTRY_IS_NOT_FOUND">Contact niet gevonden</string>
<string name="group_is_empty">Groepsnaam is leeg</string>
<string name="group_name">Naam groep</string>
<string name="choose_account">Selecteer een account</string>
<string name="EMPTY_ACCOUNT">Selecteer een account</string>
<string name="add_new_group">Voeg nieuwe groep toe&#8230;</string>
<string name="accept_contact">Autoriseer</string>
<string name="decline_contact">Verwijderen</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="accept_subscription">Accepteer contact</string>
<string name="account_reconnect">Verbind opnieuw</string>
<string name="application_action_disabled">Beheer accounts</string>
<string name="application_action_empty">Voeg account toe</string>
<string name="application_action_no_contacts">Contact toevoegen</string>
<string name="application_action_no_online">Toon offline contacten</string>
<string name="application_action_offline">Ga online</string>
<string name="application_action_waiting">Opnieuw verbinden</string>
<string name="application_state_connecting">Verbinden...</string>
<string name="application_state_disabled">Accounts uitgeschakeld</string>
<string name="application_state_empty">Geen accounts ingesteld</string>
<string name="application_state_no_contacts">Je hebt geen contacten</string>
<string name="application_state_no_online">Niemand online</string>
<string name="application_state_offline">Geen accounts online</string>
<string name="application_state_roster">Verbonden.</string>
<string name="application_state_starting">Applicatie starten... </string>
<string name="application_state_waiting">Wachten op verbinding...</string>
<string name="chat_list">Chatlijst</string>
<string name="chat_list_is_empty">Geen actieve chats</string>
<string name="chat_viewer">Chat</string>
<string name="close_chat">Sluit chat</string>
<string name="CONNECTION_FAILED">Verbindingsfout</string>
<string name="contact_add">Voeg contact toe</string>
<string name="contact_delete">Verwijder</string>
<string name="contact_delete_confirm">Wil je contact %1$s verwijderen uit account %2$s?</string>
<string name="contact_list">Contactenlijst</string>
<string name="discard_subscription">Weiger contact</string>
<string name="exit">Afsluiten</string>
<string name="group_active_chat">Actieve chats</string>
<string name="group_none">Geen groepen</string>
<string name="group_remove">Verwijder groep</string>
<string name="group_remove_confirm">Wilt u de groep %s verwijderen? Contacten in deze groep blijven in de contactenlijst.</string>
<string name="group_rename">Hernoem groep</string>
<string name="NO_SUCH_ACCOUNT">Account niet gevonden</string>
<string name="NOT_CONNECTED">Verbinden mislukt</string>
<string name="request_subscription">Vraag abonnement aan</string>
<string name="XMPP_EXCEPTION">Streamfout</string>
<string name="application_state_closing">Wijzigingen opslaan...\nApplicatie wordt gesloten</string>
<string name="certificate_confirmation">%1$s.\nVertrouw je een certificaat met sha1 vingerafdruk %2$s volledig? En wil je geen melding meer krijgen over het probleem met dit certificaat?</string>
<string name="certificate_details">\n\nUitgegeven aan:\nNaam (CN): %1$s\nOrganisatie (O): %2$s\nAfdeling (OU): %3$s\nSerienummer: %4$s\n\nUitgegeven door:\nNaam (CN): %5$s\nOrganisatie (O): %6$s\nAfdeling (OU): %7$s\n\nGeldigheid:\nUitgegeven op: %8$s\nVerloopt op: %9$s.</string>
<string name="certificate_invalid_chane">Signature chain verificatie mislukt</string>
<string name="certificate_invalid_target">Doel certificaat mislukt</string>
<string name="certificate_self_signed">Zelfondertekend certificaat</string>
<string name="certificate_show_details">Meer informatie&#8230;</string>
<string name="close_chats">Sluit alle chats</string>
<string name="contact_integration_suggest">Wil je Xabber integreren in de systeem contactenlijst?\nDit kan ingestelw worden in \"Instellingen\" → \"XMPP accounts\" → je account → \"Integratie in systeem contactenlijst\".\nNB: Systeem contactenlijst kan even vertragen na het instellen.</string>
<string name="group_room">Conferenties</string>
<string name="OTR_ERROR">OTR fout</string>
<string name="select_contact">Selecteer contact</string>
<string name="show_offline_always">Altijd tonen</string>
<string name="show_offline_never">Nooit tonen</string>
<string name="show_offline_normal">Gebruik globale instellingen</string>
<string name="show_offline_settings">Toon offline contacten</string>
<string name="start_at_boot_suggest">Moet Xabber automatisch starten wanneer het toestel opstart?\nDit kan gewijzigd worden in \"Instellingen\" → \"Verbindingsinstellingen\" → \"Starten wanneer Android opstart\"</string>
<string name="contact_search_hint">Contacten zoeken</string>
<string name="sender_is_you">Jij</string>
<string name="xmpp_accounts">XMPP accounts</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="contact_viewer">Contact informatie</string>
<string name="contact_viewer_client">Client</string>
<string name="vcard_nick_name">Bijnaam</string>
<string name="vcard_formatted_name">Gerformatteerde naam</string>
<string name="vcard_prefix_name">Voorvoegsel</string>
<string name="vcard_given_name">Naam</string>
<string name="vcard_middle_name">Tussenvoegsel</string>
<string name="vcard_family_name">Achternaam</string>
<string name="vcard_suffix_name">Suffix naam</string>
<string name="vcard_birth_date">Verjaardag</string>
<string name="vcard_url">Website</string>
<string name="vcard_organization">Organisatie</string>
<string name="vcard_title">Jobtitel, functie</string>
<string name="vcard_role">Rol</string>
<string name="vcard_other">Andere informatie</string>
<string name="vcard_categories">Categorieën</string>
<string name="vcard_decsription">Beschrijving</string>
<string name="vcard_note">Notities</string>
<string name="vcard_address">Adres</string>
<string name="vcard_address_pobox">Postbus</string>
<string name="vcard_address_extadr">Uitgebreid adres</string>
<string name="vcard_address_street">Straat</string>
<string name="vcard_address_locality">Woonplaats</string>
<string name="vcard_address_region">Regio</string>
<string name="vcard_address_pcode">Postcode</string>
<string name="vcard_address_ctry">Land</string>
<string name="vcard_telephone">Telefoon</string>
<string name="vcard_email">E-mail</string>
<string name="vcard_type_home">Thuis</string>
<string name="vcard_type_work">Werk</string>
<string name="vcard_type_postal">Post</string>
<string name="vcard_type_parcel">Pakket</string>
<string name="vcard_type_dom">Binnenland</string>
<string name="vcard_type_intl">Internationaal</string>
<string name="vcard_type_pref">Voorkeur</string>
<string name="vcard_type_voice">Spraak</string>
<string name="vcard_type_fax">Fax</string>
<string name="vcard_type_pager">Semafoon</string>
<string name="vcard_type_cell">Mobiel</string>
<string name="vcard_type_video">Video</string>
<string name="vcard_type_modem">Modem</string>
<string name="vcard_type_msg">Spraakbericht</string>
<string name="vcard_type_internet">Internet</string>
<string name="please_wait">Wacht aub...</string>
<string name="unknown">Onbekend</string>
<string name="edit_alias">Bijnaam bewerken</string>
<string name="edit_contact_groups">Bewerk groepen</string>
<string name="remove_contact">Contactpersoon verwijderen</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="otr_fingerprint_description">Je gesprekspartner kan een vingerafdruk bezorgen ter controle. Gebruik XMMP chat hiervoor niet.</string>
<string name="otr_is_verified">Dit contact is vertrouwd</string>
<string name="otr_local_fingerprint">Je vingerafdruk:</string>
<string name="otr_remote_fingerprint">Vingerafdruk gesprekspartner:</string>
<string name="otr_scan_fingerprint">Scan QR code met vingerafdruk van gesprekspartner</string>
<string name="otr_show_fingerprint">Toon QR code met je vingerafdruk</string>
<string name="otr_copy_fingerprint">Kopieer je vingerafdruk naar het klembord</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="EMPTY_NICK_NAME">Bijnaam niet opgegeven</string>
<string name="EMPTY_ROOM_NAME">Conferentie niet gespecifieerd</string>
<string name="muc_join">Lid worden van conferentie</string>
<string name="muc_nick">Bijnaam</string>
<string name="muc_nick_hint">Je nick in conferentie</string>
<string name="muc_password">Wachtwoord</string>
<string name="muc_password_hint">wachtwoord is niet vereist</string>
<string name="muc_room">Conferentie</string>
<string name="muc_server">Multi User Chat server</string>
<string name="NICK_ALREADY_USED">Nick reeds in gebruik</string>
<string name="ALREADY_IN_PROGRESS">Reeds bezig</string>
<string name="ALREADY_JOINED">Reeds lid geworden</string>
<string name="muc_add">Conferentie toevoegen</string>
<string name="muc_delete">Verwijder conferentie</string>
<string name="muc_delete_confirm">Wil je de conferentie verwijderen %1$s van account %2$s?</string>
<string name="muc_edit">Autorisatie-instellingen</string>
<string name="muc_invite_confirm">%2$s inviteert je om lid te worden van conferentie %3$s. Lid worden vanop account %1$s?</string>
<string name="muc_invite_confirm_reason">%2$s inviteert je om lid te worden van conferentie %3$s: %4$s. Lid worden vanop account %1$s?</string>
<string name="muc_leave">Verlaat conferentie</string>
<string name="muc_save">Sla conferentie op</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="account_quantity_1">account</string>
<string name="account_quantity_2">accounts</string>
<string name="account_quantity_5">-</string>
<string name="account_quantity_offline_1">account</string>
<string name="account_quantity_offline_2">accounts</string>
<string name="account_quantity_offline_5">-</string>
<string name="AUTHENTICATION_FAILED">Autorisatiefout</string>
<string name="chat_contact_quantity_1">contact</string>
<string name="chat_contact_quantity_2">contacten</string>
<string name="chat_contact_quantity_5">-</string>
<string name="chat_message_quantity_1">bericht</string>
<string name="chat_message_quantity_2">berichten</string>
<string name="chat_message_quantity_5">-</string>
<string name="chat_status">%1$d %2$s van %3$d %4$s</string>
<string name="chat_messages_from_contact">%1$d %2$s van %3$s</string>
<string name="chat_contact_and_message">%1$s: %2$s</string>
<string name="connection_state_connected_1">%1$d van %2$d %3$s online</string>
<string name="connection_state_connected_2">%1$d van %2$d %3$s online</string>
<string name="connection_state_connected_5">-</string>
<string name="connection_state_connecting_1">%1$d of %2$d %3$s verbinden</string>
<string name="connection_state_connecting_2">%1$d of %2$d %3$s verbinden</string>
<string name="connection_state_connecting_5">-</string>
<string name="connection_state_waiting_1">%1$d of %2$d %3$s wachten op verbinding</string>
<string name="connection_state_waiting_2">%1$d of %2$d %3$s wachten op verbinding</string>
<string name="connection_state_waiting_5">-</string>
<string name="connection_state_offline">%1$d %2$s offline</string>
<string name="archive_available_request_message">Wil je de berichtengeschiedenis opslaan op de server?\nDaarmee kan Xabber de berichtenhistorie laden van alle apparaten die dit account gebruiken.\nDeze optie gebruikt extra dataverkeer en kan de verbindingssnelheid negatief beïnvloeden.\nWAARSCHUWING: je lokale geschiedenis zal helemaal verwijderd worden.</string>
<string name="archive_available_request_title">Berichtenarchief aanzetten?</string>
<string name="INVALID_CERTIFICATE">Ongeldig certificaat</string>
<string name="muc_invite_message">Conferentie betreden?</string>
<string name="otr_verification_in_progress">Kies om af te breken.</string>
<string name="PASSWORD_REQUIRED">Wachtwoord vereist</string>
<string name="pay_attention">Geef aandacht</string>
<string name="subscription_request_message">Aanvraag authorisatie</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="phrase_add">Voeg zin toe</string>
<string name="phrase_delete">Verwijder zin</string>
<string name="phrase_delete_confirm">Wilt u echt woordgroep verwijderen: %s?</string>
<string name="phrase_empty">&lt; Tekst &gt;</string>
<string name="phrase_group">Deel van de contacten-groep</string>
<string name="phrase_regexp">Reguliere expressie</string>
<string name="phrase_sound">Geluid\nKies meldingsgeluid</string>
<string name="phrase_text">Tekst om te zoeken</string>
<string name="phrase_user">Jabber-ID van contact</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="cache_clear">Schoon cache\n Schoon alle lokale data op. Dit kan ruimte vrijmaken.</string>
<string name="cache_clear_warning">Wil je echt de chat geschiedenis en andere lokale gegevens te verwijderen? \nAccount en rooster gegevens worden niet beïnvloed. De app zal sluiten.</string>
<string name="chats_send_by_enter">Verzenden op Enter\nBericht kan worden verzonden door op de Enter-knop te drukken</string>
<string name="connection_go_away">Auto-afwezig\nZet status automatisch op afwezig na vergrendelen scherm</string>
<string name="contacts_order">Sorteren van contacts\nStel de volgorde in hoe contactpersonen worden weergegeven</string>
<string name="contacts_order_alphabet">Alfabetisch</string>
<string name="contacts_order_status">Op status</string>
<string name="contacts_show_accounts">Groepeer op account\nGroepeer contacten op account in contactenlijst</string>
<string name="contacts_show_active_chats">Actieve chats op bovenaan\nToon actieve chats boven aan de lijst met contactpersonen</string>
<string name="contacts_show_avatars">Toon avatars\nToon avatars van contacten in contactenlijst</string>
<string name="contacts_show_empty_groups">Toon lege groepen\nToon groepen met geen online contacten</string>
<string name="contacts_show_groups">Toon groepen\nToon groepen in contactenlijst</string>
<string name="contacts_show_offline">Toon offline contacten</string>
<string name="contacts_show_panel">Toon account paneel\nToon actieknoppen met avatars in de rechter onderkant van de contact lijst</string>
<string name="contacts_stay_active_chats">Dubbele actieve chats\nActive chats weergegeven zowel boven in de lijst met contactpersonen en groepen</string>
<string name="debug_log">Log foutopsporing\nSchrijf fouten naar log (herstart applicatie om wijzigingen door te voeren)</string>
<string name="events_lightning">LED indicator\nKnipper LED bij melding</string>
<string name="events_persistent">Taakbalk icon\nToon persistente kennisgeving. Deze optie voorkomt dat Android de app uit het geheugen haalt</string>
<string name="events_sound">Geluidssignaal\nKies geluid melding</string>
<string name="events_vibro">Trillen\nTril bij melding</string>
<string name="interface_theme">Thema\nThema-instellingen</string>
<string name="interface_theme_dark">Donker</string>
<string name="interface_theme_light">Licht</string>
<string name="interface_theme_normal">Standaard</string>
<string name="interface_smiles">Emoticons\nInstellingen emoticons (voorheen smilies)</string>
<string name="interface_smiles_android">Android smilies</string>
<string name="interface_smiles_none">Geen grafische emoticons</string>
<string name="preference_connection">Verbindingsinstellingen\nVerbindingsinstellingen</string>
<string name="preference_contacts">Contactenlijst\nPas weergave contactenlijst aan</string>
<string name="preference_debug">Instellingen foutopsporing\nInstellingen die helpen om Xabber te verbeteren</string>
<string name="preference_editor">Instellingen</string>
<string name="preference_events">Meldingen\nInstellingen meldingen</string>
<string name="preference_interface">Thema-instellingen\nWeergave-instellingen</string>
<string name="about_viewer">Over</string>
<string name="chats_show_background">Toon background\nUitschakelen kan prestaties verbeteren</string>
<string name="chats_font_size">Lettertype grootte\nGrote van berichttekst</string>
<string name="chats_font_size_large">Groot</string>
<string name="chats_font_size_normal">Normaal</string>
<string name="chats_font_size_small">Klein</string>
<string name="chats_font_size_xlarge">Extra groot</string>
<string name="chats_hide_keyboard">Verberg keyboard\nVerberg software keyboard na het verzenden van een bericht</string>
<string name="chats_hide_keyboard_landscape">In landschapsmodus</string>
<string name="chats_receipt">Ontvangstbevestigingen\nVerzend en ontvang ontvangstbevestigingen</string>
<string name="chats_show_avatars">Avatars in berichten\nToon avatars in elk bericht</string>
<string name="chats_show_status_change">Toon statuswijzigingen\nToon berichten over statuswijzigingen</string>
<string name="chats_show_status_change_muc">In conferenties</string>
<string name="chats_state_notification">Verzenden typen notificaties\nInformeer de andere gebruiker die u aan het typen bent</string>
<string name="connection_adjust_priority">Verander de prioriteit\nVerander de prioriteit volgens de geselecteerde status. Account prioriteit zal worden overschreven.</string>
<string name="connection_go_away_immediately">Onmiddellijk bij schermvergrendeling</string>
<string name="connection_go_xa">\"Lang afwezig\" na schermvergrendeling\nStel \"Lang afwezig\" in na vergrendelen van het scherm</string>
<string name="connection_priority">Prioriteitsinstellingen</string>
<string name="connection_start_at_boot">Start wanneer Android start\nStart de toepassing wanneer Android opstart. Dit werkt niet wanneer Xabber op SD-kaart is geïnstalleerd.</string>
<string name="connection_wake_lock">Verhinder slaap mode\nVerhinder slapen van het apparaat. Dit zal gebruik van de batterij verhogen.</string>
<string name="connection_wifi_lock">Houd WiFi actief\nHoud WiFi actief tijdens stand-by. Dit verhoogt gebruik van de batterij</string>
<string name="contacts_reset_offline">Reset offline instellingen\nHerstel individuele instellingen voor groepen en accounts</string>
<string name="contacts_reset_offline_warning">Individuele instellingen voor groepen en accounts herstellen?</string>
<string name="events_first_only">Waarschuwen op eerste bericht\nWaarschuw alleen bij het eerste bericht in een chat</string>
<string name="events_ignore_system_vibro">Negeer trilinstellingen van het systeem.\nGebruik deze optie wanneer trillen niet werkt</string>
<string name="events_message">Notificaties instellingen\nConfigureer inkomende bericht notificaties</string>
<string name="events_message_chat">Chats</string>
<string name="events_message_chat_and_muc">Chats en conferenties</string>
<string name="events_message_none">Geen melding</string>
<string name="events_show_text">Toon bericht bij melding\nToon bericht in meldinggedeelte</string>
<string name="events_visible_chat">Melding voor actieve chat\nMelding voor berichten in huidige chat</string>
<string name="events_suppress_100">Onderdruk sommige status berichten\nKrijg geen \'Deze ruimte is niet anoniem\' berichten</string>
<string name="negative_priotiry_summary">%s (je zal geen enkel bericht ontvangen)</string>
<string name="preference_accounts">XMPP accounts\nBeheer accounts</string>
<string name="preference_security">Beveiliging\nBeveiligingsinstellingen</string>
<string name="security_check_certificate">Controleer server certificaat\nWaarschuw voor certificaat problemen op versleutelde verbindingen</string>
<string name="security_clear_certificate">Verwijder certificaten\nVerwijder lijst van genegeerde certificaten</string>
<string name="security_otr_history">History opslaan\nBerichtgeschiedenis opslaan voor OTR sessies</string>
<string name="security_otr_mode">OTR modus</string>
<string name="chats_attention">Waarschuwing\nReageer op inkomende aandacht verzoeken</string>
<string name="chats_attention_sound">Attentie geluid\nSelecteer ringtone</string>
<string name="connection_load_vcard">Laad vCard\nLaad en update persoonlijke informatie en avatar van contact. Zet uit om dataverkeer te besparen.</string>
<string name="connection_use_carbons">Carbon-copied modus\nKan instabiel zijn! Sessies voor dezelfde account op deze client delen. Uitschakelen om data verbruik te verminderen.</string>
<string name="events_phrases">Belangrijke zin\nCreëer aangepaste meldingen voor ontvangen berichten die specifieke zinnen bevatten</string>
<string name="security_clear_certificate_warning">Wilt u echt alle genegeerde certificaten verwijderen?</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="otr_answer">Geheim antwoord:</string>
<string name="otr_question">Geheime vraag:</string>
<string name="otr_question_description">Gebruik een geheime vraag om elkaar te verifiëren</string>
<string name="otr_secret">Gedeeld geheim:</string>
<string name="otr_secret_description">Gebruik een gedeeld geheim om elkaar te verifiëren</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="available">Beschikbaar</string>
<string name="away">Afwezig</string>
<string name="chat">Klaar voor chat!</string>
<string name="dnd">Niet storen</string>
<string name="edit_status">Bewerk status</string>
<string name="empty_status">&lt; leeg status &gt;</string>
<string name="invisible">Onzichtbaar</string>
<string name="remove_status">Verwijder status</string>
<string name="status_editor">Status instellen</string>
<string name="status_text_hint">Statusbericht invoeren</string>
<string name="unavailable">Offline</string>
<string name="unsubscribed">Niet geautoriseerd</string>
<string name="xa">Lang afwezig</string>
<string name="new_status">Nieuwe status</string>
<string name="saved_statuses">Opgeslagen statussen</string>
<string name="clear_status_history">Verwijder status geschiedenis</string>
<string name="status_message">Statusbericht</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="is_translated">true</bool>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="in10m">Na 10 minuten</string>
<string name="in15m">Na 15 minuten</string>
<string name="in1h">Na een uur</string>
<string name="in1m">Na een minuut</string>
<string name="in2m">Na 2 minuten</string>
<string name="in30m">Na 30 minuten</string>
<string name="in5m">Na 5 minuten</string>
<string name="always">Altijd</string>
<string name="disabled">Uitgeschakeld</string>
<string name="manual">Handmatig</string>
<string name="never">Nooit</string>
<string name="required">Vereist</string>
<string name="auto">Automatisch</string>
<string name="save">Opslaan</string>
</resources>
......@@ -20,4 +20,10 @@
<string name="muc_invite_confirm_reason">%2$s invites you to join conference %3$s: %4$s. Join from account %1$s?</string>
<string name="muc_leave">Leave conference</string>
<string name="muc_save">Save conference</string>
<string name="muc_choose_conference">Choose conference</string>
<string name="muc_next">Next</string>
<string name="muc_get_hosted_conferences">Get hosted conferences</string>
<string name="muc_error_getting_conferences">Error getting conferences</string>
<string name="muc_type_conference_name">Type conference name</string>
</resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment