Padding now depends on screen size. Closes dev task #57.

This commit is contained in:
akwizgran
2014-01-09 12:42:19 +00:00
parent 452f8bd7e1
commit 0cebc42ddb
34 changed files with 227 additions and 96 deletions

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LightTheme" parent="android:Theme.Holo.Light" />
<integer name="horizontal_border_width">5</integer>
<integer name="spinner_padding">10</integer>
</resources>

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LightTheme" parent="android:Theme.Light" />
<integer name="horizontal_border_width">2</integer>
<integer name="spinner_padding">0</integer>
</resources>

View File

@@ -27,6 +27,8 @@ import org.briarproject.android.BriarService.BriarBinder;
import org.briarproject.android.BriarService.BriarServiceConnection;
import org.briarproject.android.contact.ContactListActivity;
import org.briarproject.android.groups.GroupListActivity;
import org.briarproject.android.util.FixedVerticalSpace;
import org.briarproject.android.util.LayoutUtils;
import org.briarproject.api.LocalAuthor;
import org.briarproject.api.android.DatabaseUiExecutor;
import org.briarproject.api.android.ReferenceManager;
@@ -198,10 +200,12 @@ public class HomeScreenActivity extends RoboActivity {
layout.setOrientation(VERTICAL);
layout.setGravity(CENTER_HORIZONTAL);
int pad = LayoutUtils.getPadding(this);
enterPassword = new TextView(this);
enterPassword.setGravity(CENTER);
enterPassword.setTextSize(18);
enterPassword.setPadding(10, 10, 10, 0);
enterPassword.setPadding(pad, pad, pad, 0);
enterPassword.setText(R.string.enter_password);
layout.addView(enterPassword);
@@ -218,6 +222,9 @@ public class HomeScreenActivity extends RoboActivity {
});
layout.addView(passwordEntry);
// Adjusting the padding of buttons and EditTexts has the wrong results
layout.addView(new FixedVerticalSpace(this));
continueButton = new Button(this);
continueButton.setLayoutParams(WRAP_WRAP);
continueButton.setText(R.string.continue_button);
@@ -230,7 +237,6 @@ public class HomeScreenActivity extends RoboActivity {
progress = new ProgressBar(this);
progress.setLayoutParams(WRAP_WRAP);
progress.setPadding(0, 10, 0, 0);
progress.setIndeterminate(true);
progress.setVisibility(GONE);
layout.addView(progress);
@@ -288,12 +294,16 @@ public class HomeScreenActivity extends RoboActivity {
LinearLayout layout = new LinearLayout(this);
layout.setLayoutParams(MATCH_MATCH);
layout.setGravity(CENTER);
int pad = LayoutUtils.getPadding(this);
TextView warning = new TextView(this);
warning.setGravity(CENTER);
warning.setTextSize(18);
warning.setPadding(10, 10, 10, 10);
warning.setPadding(pad, pad, pad, pad);
warning.setText(R.string.expiry_warning);
layout.addView(warning);
setContentView(layout);
}
@@ -359,10 +369,12 @@ public class HomeScreenActivity extends RoboActivity {
});
buttons.add(quitButton);
int pad = LayoutUtils.getPadding(this);
GridView grid = new GridView(this);
grid.setLayoutParams(matchMatch);
grid.setGravity(CENTER);
grid.setPadding(5, 5, 5, 5);
grid.setPadding(pad, pad, pad, pad);
grid.setBackgroundColor(getResources().getColor(
R.color.home_screen_background));
grid.setNumColumns(2);

View File

@@ -19,6 +19,7 @@ import java.util.concurrent.Executor;
import javax.inject.Inject;
import org.briarproject.R;
import org.briarproject.android.util.LayoutUtils;
import org.briarproject.android.util.StrengthMeter;
import org.briarproject.api.AuthorFactory;
import org.briarproject.api.LocalAuthor;
@@ -70,10 +71,12 @@ public class SetupActivity extends RoboActivity implements OnClickListener {
layout.setOrientation(VERTICAL);
layout.setGravity(CENTER_HORIZONTAL);
int pad = LayoutUtils.getPadding(this);
TextView chooseNickname = new TextView(this);
chooseNickname.setGravity(CENTER);
chooseNickname.setTextSize(18);
chooseNickname.setPadding(10, 10, 10, 0);
chooseNickname.setPadding(pad, pad, pad, 0);
chooseNickname.setText(R.string.choose_nickname);
layout.addView(chooseNickname);
@@ -93,7 +96,7 @@ public class SetupActivity extends RoboActivity implements OnClickListener {
TextView choosePassword = new TextView(this);
choosePassword.setGravity(CENTER);
choosePassword.setTextSize(18);
choosePassword.setPadding(10, 10, 10, 0);
choosePassword.setPadding(pad, pad, pad, 0);
choosePassword.setText(R.string.choose_password);
layout.addView(choosePassword);
@@ -113,7 +116,7 @@ public class SetupActivity extends RoboActivity implements OnClickListener {
TextView confirmPassword = new TextView(this);
confirmPassword.setGravity(CENTER);
confirmPassword.setTextSize(18);
confirmPassword.setPadding(10, 10, 10, 0);
confirmPassword.setPadding(pad, pad, pad, 0);
confirmPassword.setText(R.string.confirm_password);
layout.addView(confirmPassword);
@@ -131,13 +134,13 @@ public class SetupActivity extends RoboActivity implements OnClickListener {
layout.addView(passwordConfirmation);
strengthMeter = new StrengthMeter(this);
strengthMeter.setPadding(30, 10, 30, 0);
strengthMeter.setPadding(5 * pad, pad, 5 * pad, 0);
layout.addView(strengthMeter);
feedback = new TextView(this);
feedback.setGravity(CENTER);
feedback.setTextSize(14);
feedback.setPadding(10, 10, 10, 10);
feedback.setPadding(pad, pad, pad, pad);
feedback.setText("");
layout.addView(feedback);
@@ -150,7 +153,6 @@ public class SetupActivity extends RoboActivity implements OnClickListener {
progress = new ProgressBar(this);
progress.setLayoutParams(WRAP_WRAP);
progress.setPadding(0, 10, 0, 0);
progress.setIndeterminate(true);
progress.setVisibility(GONE);
layout.addView(progress);

View File

@@ -7,6 +7,8 @@ import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
import java.util.ArrayList;
import org.briarproject.R;
import org.briarproject.android.util.LayoutUtils;
import android.content.Context;
import android.content.res.Resources;
import android.text.Html;
@@ -20,9 +22,12 @@ import android.widget.TextView;
class ContactListAdapter extends ArrayAdapter<ContactListItem> {
private final int pad;
ContactListAdapter(Context ctx) {
super(ctx, android.R.layout.simple_expandable_list_item_1,
new ArrayList<ContactListItem>());
pad = LayoutUtils.getPadding(ctx);
}
@Override
@@ -37,7 +42,7 @@ class ContactListAdapter extends ArrayAdapter<ContactListItem> {
layout.setBackgroundColor(res.getColor(R.color.unread_background));
ImageView bulb = new ImageView(ctx);
bulb.setPadding(5, 5, 5, 5);
bulb.setPadding(pad, pad, pad, pad);
if(item.isConnected())
bulb.setImageResource(R.drawable.contact_connected);
else bulb.setImageResource(R.drawable.contact_disconnected);
@@ -48,7 +53,7 @@ class ContactListAdapter extends ArrayAdapter<ContactListItem> {
name.setLayoutParams(WRAP_WRAP_1);
name.setTextSize(18);
name.setMaxLines(1);
name.setPadding(0, 10, 10, 10);
name.setPadding(0, pad, pad, pad);
int unread = item.getUnreadCount();
String contactName = item.getContact().getAuthor().getName();
if(unread > 0) name.setText(contactName + " (" + unread + ")");
@@ -57,7 +62,7 @@ class ContactListAdapter extends ArrayAdapter<ContactListItem> {
TextView connected = new TextView(ctx);
connected.setTextSize(14);
connected.setPadding(0, 10, 10, 10);
connected.setPadding(0, pad, pad, pad);
if(item.isConnected()) {
connected.setText(R.string.contact_connected);
} else {

View File

@@ -7,7 +7,9 @@ import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
import java.util.ArrayList;
import org.briarproject.R;
import org.briarproject.android.util.LayoutUtils;
import org.briarproject.api.db.MessageHeader;
import android.content.Context;
import android.content.res.Resources;
import android.text.format.DateUtils;
@@ -19,9 +21,12 @@ import android.widget.TextView;
class ConversationAdapter extends ArrayAdapter<ConversationItem> {
private final int pad;
ConversationAdapter(Context ctx) {
super(ctx, android.R.layout.simple_expandable_list_item_1,
new ArrayList<ConversationItem>());
pad = LayoutUtils.getPadding(ctx);
}
@Override
@@ -41,13 +46,13 @@ class ConversationAdapter extends ArrayAdapter<ConversationItem> {
name.setLayoutParams(WRAP_WRAP_1);
name.setTextSize(18);
name.setMaxLines(1);
name.setPadding(10, 10, 10, 10);
name.setPadding(pad, pad, pad, pad);
name.setText(header.getAuthor().getName());
layout.addView(name);
TextView date = new TextView(ctx);
date.setTextSize(14);
date.setPadding(0, 10, 10, 10);
date.setPadding(0, pad, pad, pad);
long then = header.getTimestamp(), now = System.currentTimeMillis();
date.setText(DateUtils.formatSameDayTime(then, now, SHORT, SHORT));
layout.addView(date);

View File

@@ -19,7 +19,8 @@ import javax.inject.Inject;
import org.briarproject.R;
import org.briarproject.android.util.HorizontalBorder;
import org.briarproject.android.util.HorizontalSpace;
import org.briarproject.android.util.ElasticHorizontalSpace;
import org.briarproject.android.util.LayoutUtils;
import org.briarproject.api.AuthorId;
import org.briarproject.api.android.DatabaseUiExecutor;
import org.briarproject.api.db.DatabaseComponent;
@@ -28,6 +29,7 @@ import org.briarproject.api.db.NoSuchMessageException;
import org.briarproject.api.lifecycle.LifecycleManager;
import org.briarproject.api.messaging.GroupId;
import org.briarproject.api.messaging.MessageId;
import roboguice.activity.RoboActivity;
import android.content.Intent;
import android.content.res.Resources;
@@ -114,18 +116,20 @@ implements OnClickListener {
header.setOrientation(HORIZONTAL);
header.setGravity(CENTER_VERTICAL);
int pad = LayoutUtils.getPadding(this);
TextView name = new TextView(this);
// Give me all the unused width
name.setLayoutParams(WRAP_WRAP_1);
name.setTextSize(18);
name.setMaxLines(1);
name.setPadding(10, 10, 10, 10);
name.setPadding(pad, pad, pad, pad);
name.setText(authorName);
header.addView(name);
TextView date = new TextView(this);
date.setTextSize(14);
date.setPadding(0, 10, 10, 10);
date.setPadding(0, pad, pad, pad);
long now = System.currentTimeMillis();
date.setText(DateUtils.formatSameDayTime(timestamp, now, SHORT, SHORT));
header.addView(date);
@@ -134,7 +138,7 @@ implements OnClickListener {
if(contentType.equals("text/plain")) {
// Load and display the message body
content = new TextView(this);
content.setPadding(10, 0, 10, 10);
content.setPadding(pad, 0, pad, pad);
message.addView(content);
loadMessageBody();
}
@@ -154,21 +158,21 @@ implements OnClickListener {
else readButton.setImageResource(R.drawable.content_read);
readButton.setOnClickListener(this);
footer.addView(readButton);
footer.addView(new HorizontalSpace(this));
footer.addView(new ElasticHorizontalSpace(this));
prevButton = new ImageButton(this);
prevButton.setBackgroundResource(0);
prevButton.setImageResource(R.drawable.navigation_previous_item);
prevButton.setOnClickListener(this);
footer.addView(prevButton);
footer.addView(new HorizontalSpace(this));
footer.addView(new ElasticHorizontalSpace(this));
nextButton = new ImageButton(this);
nextButton.setBackgroundResource(0);
nextButton.setImageResource(R.drawable.navigation_next_item);
nextButton.setOnClickListener(this);
footer.addView(nextButton);
footer.addView(new HorizontalSpace(this));
footer.addView(new ElasticHorizontalSpace(this));
replyButton = new ImageButton(this);
replyButton.setBackgroundResource(0);

View File

@@ -19,7 +19,8 @@ import java.util.logging.Logger;
import javax.inject.Inject;
import org.briarproject.R;
import org.briarproject.android.util.HorizontalSpace;
import org.briarproject.android.util.ElasticHorizontalSpace;
import org.briarproject.android.util.LayoutUtils;
import org.briarproject.api.AuthorId;
import org.briarproject.api.LocalAuthor;
import org.briarproject.api.android.DatabaseUiExecutor;
@@ -34,6 +35,7 @@ import org.briarproject.api.messaging.GroupId;
import org.briarproject.api.messaging.Message;
import org.briarproject.api.messaging.MessageFactory;
import org.briarproject.api.messaging.MessageId;
import roboguice.activity.RoboActivity;
import android.content.Intent;
import android.content.res.Resources;
@@ -97,13 +99,15 @@ implements OnClickListener {
header.setOrientation(HORIZONTAL);
header.setGravity(CENTER_VERTICAL);
int pad = LayoutUtils.getPadding(this);
from = new TextView(this);
from.setTextSize(18);
from.setPadding(10, 10, 10, 10);
from.setPadding(pad, pad, pad, pad);
from.setText(R.string.from);
header.addView(from);
header.addView(new HorizontalSpace(this));
header.addView(new ElasticHorizontalSpace(this));
sendButton = new ImageButton(this);
sendButton.setBackgroundResource(0);
@@ -115,7 +119,7 @@ implements OnClickListener {
to = new TextView(this);
to.setTextSize(18);
to.setPadding(10, 0, 10, 10);
to.setPadding(pad, 0, pad, pad);
String format = getResources().getString(R.string.format_to);
to.setText(String.format(format, contactName));
layout.addView(to);

View File

@@ -23,6 +23,7 @@ import javax.inject.Inject;
import org.briarproject.R;
import org.briarproject.android.contact.SelectContactsDialog;
import org.briarproject.android.invitation.AddContactActivity;
import org.briarproject.android.util.LayoutUtils;
import org.briarproject.api.Contact;
import org.briarproject.api.ContactId;
import org.briarproject.api.android.DatabaseUiExecutor;
@@ -31,6 +32,7 @@ import org.briarproject.api.db.DbException;
import org.briarproject.api.lifecycle.LifecycleManager;
import org.briarproject.api.messaging.Group;
import org.briarproject.api.messaging.GroupFactory;
import roboguice.activity.RoboFragmentActivity;
import android.content.Intent;
import android.os.Bundle;
@@ -79,10 +81,12 @@ SelectContactsDialog.Listener {
layout.setOrientation(VERTICAL);
layout.setGravity(CENTER_HORIZONTAL);
int pad = LayoutUtils.getPadding(this);
TextView chooseName = new TextView(this);
chooseName.setGravity(CENTER);
chooseName.setTextSize(18);
chooseName.setPadding(10, 10, 10, 0);
chooseName.setPadding(pad, pad, pad, 0);
chooseName.setText(R.string.choose_forum_name);
layout.addView(chooseName);

View File

@@ -7,8 +7,10 @@ import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
import java.util.ArrayList;
import org.briarproject.R;
import org.briarproject.android.util.LayoutUtils;
import org.briarproject.api.Author;
import org.briarproject.api.db.MessageHeader;
import android.content.Context;
import android.content.res.Resources;
import android.text.format.DateUtils;
@@ -20,9 +22,12 @@ import android.widget.TextView;
class GroupAdapter extends ArrayAdapter<MessageHeader> {
private final int pad;
GroupAdapter(Context ctx) {
super(ctx, android.R.layout.simple_expandable_list_item_1,
new ArrayList<MessageHeader>());
pad = LayoutUtils.getPadding(ctx);
}
@Override
@@ -41,7 +46,7 @@ class GroupAdapter extends ArrayAdapter<MessageHeader> {
name.setLayoutParams(WRAP_WRAP_1);
name.setTextSize(18);
name.setMaxLines(1);
name.setPadding(10, 10, 10, 10);
name.setPadding(pad, pad, pad, pad);
Author author = item.getAuthor();
if(author == null) {
name.setTextColor(res.getColor(R.color.anonymous_author));
@@ -53,7 +58,7 @@ class GroupAdapter extends ArrayAdapter<MessageHeader> {
TextView date = new TextView(ctx);
date.setTextSize(14);
date.setPadding(10, 10, 10, 10);
date.setPadding(pad, pad, pad, pad);
long then = item.getTimestamp(), now = System.currentTimeMillis();
date.setText(DateUtils.formatSameDayTime(then, now, SHORT, SHORT));
layout.addView(date);

View File

@@ -24,7 +24,7 @@ import javax.inject.Inject;
import org.briarproject.R;
import org.briarproject.android.util.HorizontalBorder;
import org.briarproject.android.util.HorizontalSpace;
import org.briarproject.android.util.ElasticHorizontalSpace;
import org.briarproject.android.util.ListLoadingProgressBar;
import org.briarproject.api.android.DatabaseUiExecutor;
import org.briarproject.api.db.DatabaseComponent;
@@ -99,21 +99,21 @@ implements EventListener, OnClickListener, OnItemClickListener {
footer.setLayoutParams(MATCH_WRAP);
footer.setOrientation(HORIZONTAL);
footer.setGravity(CENTER);
footer.addView(new HorizontalSpace(this));
footer.addView(new ElasticHorizontalSpace(this));
newGroupButton = new ImageButton(this);
newGroupButton.setBackgroundResource(0);
newGroupButton.setImageResource(R.drawable.social_new_chat);
newGroupButton.setOnClickListener(this);
footer.addView(newGroupButton);
footer.addView(new HorizontalSpace(this));
footer.addView(new ElasticHorizontalSpace(this));
manageGroupsButton = new ImageButton(this);
manageGroupsButton.setBackgroundResource(0);
manageGroupsButton.setImageResource(R.drawable.action_settings);
manageGroupsButton.setOnClickListener(this);
footer.addView(manageGroupsButton);
footer.addView(new HorizontalSpace(this));
footer.addView(new ElasticHorizontalSpace(this));
layout.addView(footer);
setContentView(layout);

View File

@@ -12,6 +12,8 @@ import java.util.Comparator;
import java.util.List;
import org.briarproject.R;
import org.briarproject.android.util.LayoutUtils;
import android.content.Context;
import android.content.res.Resources;
import android.text.format.DateUtils;
@@ -24,11 +26,13 @@ import android.widget.TextView;
class GroupListAdapter extends BaseAdapter {
private final Context ctx;
private final int pad;
private final List<GroupListItem> list = new ArrayList<GroupListItem>();
private int available = 0;
GroupListAdapter(Context ctx) {
this.ctx = ctx;
pad = LayoutUtils.getPadding(ctx);
}
public void setAvailable(int available) {
@@ -63,7 +67,7 @@ class GroupListAdapter extends BaseAdapter {
TextView manage = new TextView(ctx);
manage.setGravity(CENTER);
manage.setTextSize(18);
manage.setPadding(10, 10, 10, 10);
manage.setPadding(pad, pad, pad, pad);
String format = res.getQuantityString(R.plurals.forums_available,
available);
manage.setText(String.format(format, available));
@@ -80,7 +84,7 @@ class GroupListAdapter extends BaseAdapter {
name.setLayoutParams(WRAP_WRAP_1);
name.setTextSize(18);
name.setMaxLines(1);
name.setPadding(10, 10, 10, 10);
name.setPadding(pad, pad, pad, pad);
int unread = item.getUnreadCount();
String groupName = item.getGroup().getName();
if(unread > 0) name.setText(groupName + " (" + unread + ")");
@@ -90,14 +94,14 @@ class GroupListAdapter extends BaseAdapter {
if(item.isEmpty()) {
TextView noPosts = new TextView(ctx);
noPosts.setTextSize(14);
noPosts.setPadding(10, 0, 10, 10);
noPosts.setPadding(pad, 0, pad, pad);
noPosts.setTextColor(res.getColor(R.color.no_posts));
noPosts.setText(R.string.no_posts);
layout.addView(noPosts);
} else {
TextView date = new TextView(ctx);
date.setTextSize(14);
date.setPadding(10, 0, 10, 10);
date.setPadding(pad, 0, pad, pad);
long then = item.getTimestamp(), now = System.currentTimeMillis();
date.setText(DateUtils.formatSameDayTime(then, now, SHORT, SHORT));
layout.addView(date);

View File

@@ -12,7 +12,9 @@ import java.util.Comparator;
import java.util.List;
import org.briarproject.R;
import org.briarproject.android.util.LayoutUtils;
import org.briarproject.api.messaging.GroupStatus;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
@@ -24,11 +26,13 @@ import android.widget.TextView;
class ManageGroupsAdapter extends BaseAdapter {
private final Context ctx;
private final int pad;
private final List<ManageGroupsItem> list =
new ArrayList<ManageGroupsItem>();
ManageGroupsAdapter(Context ctx) {
this.ctx = ctx;
pad = LayoutUtils.getPadding(ctx);
}
public void add(ManageGroupsItem item) {
@@ -58,7 +62,7 @@ class ManageGroupsAdapter extends BaseAdapter {
TextView none = new TextView(ctx);
none.setGravity(CENTER);
none.setTextSize(18);
none.setPadding(10, 10, 10, 10);
none.setPadding(pad, pad, pad, pad);
none.setText(R.string.no_forums_available);
return none;
}
@@ -68,7 +72,7 @@ class ManageGroupsAdapter extends BaseAdapter {
layout.setOrientation(HORIZONTAL);
ImageView subscribed = new ImageView(ctx);
subscribed.setPadding(5, 5, 5, 5);
subscribed.setPadding(pad, pad, pad, pad);
subscribed.setImageResource(R.drawable.navigation_accept);
if(!s.isSubscribed()) subscribed.setVisibility(INVISIBLE);
layout.addView(subscribed);
@@ -79,13 +83,13 @@ class ManageGroupsAdapter extends BaseAdapter {
TextView name = new TextView(ctx);
name.setTextSize(18);
name.setMaxLines(1);
name.setPadding(0, 10, 10, 10);
name.setPadding(0, pad, pad, pad);
name.setText(s.getGroup().getName());
innerLayout.addView(name);
TextView status = new TextView(ctx);
status.setTextSize(14);
status.setPadding(0, 0, 10, 10);
status.setPadding(0, 0, pad, pad);
if(s.isSubscribed()) {
if(s.isVisibleToAll()) status.setText(R.string.subscribed_all);
else status.setText(R.string.subscribed_some);

View File

@@ -19,7 +19,8 @@ import javax.inject.Inject;
import org.briarproject.R;
import org.briarproject.android.util.HorizontalBorder;
import org.briarproject.android.util.HorizontalSpace;
import org.briarproject.android.util.ElasticHorizontalSpace;
import org.briarproject.android.util.LayoutUtils;
import org.briarproject.api.android.DatabaseUiExecutor;
import org.briarproject.api.db.DatabaseComponent;
import org.briarproject.api.db.DbException;
@@ -27,6 +28,7 @@ import org.briarproject.api.db.NoSuchMessageException;
import org.briarproject.api.lifecycle.LifecycleManager;
import org.briarproject.api.messaging.GroupId;
import org.briarproject.api.messaging.MessageId;
import roboguice.activity.RoboActivity;
import android.content.Intent;
import android.content.res.Resources;
@@ -107,12 +109,14 @@ implements OnClickListener {
header.setOrientation(HORIZONTAL);
header.setGravity(CENTER_VERTICAL);
int pad = LayoutUtils.getPadding(this);
TextView name = new TextView(this);
// Give me all the unused width
name.setLayoutParams(WRAP_WRAP_1);
name.setTextSize(18);
name.setMaxLines(1);
name.setPadding(10, 10, 10, 10);
name.setPadding(pad, pad, pad, pad);
if(authorName == null) {
name.setTextColor(res.getColor(R.color.anonymous_author));
name.setText(R.string.anonymous);
@@ -123,7 +127,7 @@ implements OnClickListener {
TextView date = new TextView(this);
date.setTextSize(14);
date.setPadding(0, 10, 10, 10);
date.setPadding(0, pad, pad, pad);
long now = System.currentTimeMillis();
date.setText(DateUtils.formatSameDayTime(timestamp, now, SHORT, SHORT));
header.addView(date);
@@ -132,7 +136,7 @@ implements OnClickListener {
if(contentType.equals("text/plain")) {
// Load and display the message body
content = new TextView(this);
content.setPadding(10, 0, 10, 10);
content.setPadding(pad, 0, pad, pad);
message.addView(content);
loadMessageBody();
}
@@ -152,21 +156,21 @@ implements OnClickListener {
else readButton.setImageResource(R.drawable.content_read);
readButton.setOnClickListener(this);
footer.addView(readButton);
footer.addView(new HorizontalSpace(this));
footer.addView(new ElasticHorizontalSpace(this));
prevButton = new ImageButton(this);
prevButton.setBackgroundResource(0);
prevButton.setImageResource(R.drawable.navigation_previous_item);
prevButton.setOnClickListener(this);
footer.addView(prevButton);
footer.addView(new HorizontalSpace(this));
footer.addView(new ElasticHorizontalSpace(this));
nextButton = new ImageButton(this);
nextButton.setBackgroundResource(0);
nextButton.setImageResource(R.drawable.navigation_next_item);
nextButton.setOnClickListener(this);
footer.addView(nextButton);
footer.addView(new HorizontalSpace(this));
footer.addView(new ElasticHorizontalSpace(this));
replyButton = new ImageButton(this);
replyButton.setBackgroundResource(0);

View File

@@ -24,7 +24,8 @@ import org.briarproject.android.identity.CreateIdentityActivity;
import org.briarproject.android.identity.LocalAuthorItem;
import org.briarproject.android.identity.LocalAuthorItemComparator;
import org.briarproject.android.identity.LocalAuthorSpinnerAdapter;
import org.briarproject.android.util.HorizontalSpace;
import org.briarproject.android.util.ElasticHorizontalSpace;
import org.briarproject.android.util.LayoutUtils;
import org.briarproject.api.AuthorId;
import org.briarproject.api.LocalAuthor;
import org.briarproject.api.android.DatabaseUiExecutor;
@@ -40,6 +41,7 @@ import org.briarproject.api.messaging.GroupId;
import org.briarproject.api.messaging.Message;
import org.briarproject.api.messaging.MessageFactory;
import org.briarproject.api.messaging.MessageId;
import roboguice.activity.RoboActivity;
import android.content.Intent;
import android.content.res.Resources;
@@ -109,9 +111,11 @@ implements OnItemSelectedListener, OnClickListener {
header.setOrientation(HORIZONTAL);
header.setGravity(CENTER_VERTICAL);
int pad = LayoutUtils.getPadding(this);
TextView from = new TextView(this);
from.setTextSize(18);
from.setPadding(10, 10, 0, 10);
from.setPadding(pad, pad, 0, pad);
from.setText(R.string.from);
header.addView(from);
@@ -121,7 +125,7 @@ implements OnItemSelectedListener, OnClickListener {
spinner.setOnItemSelectedListener(this);
header.addView(spinner);
header.addView(new HorizontalSpace(this));
header.addView(new ElasticHorizontalSpace(this));
sendButton = new ImageButton(this);
sendButton.setBackgroundResource(0);
@@ -133,7 +137,7 @@ implements OnItemSelectedListener, OnClickListener {
to = new TextView(this);
to.setTextSize(18);
to.setPadding(10, 0, 10, 10);
to.setPadding(pad, 0, pad, pad);
to.setText(R.string.to);
layout.addView(to);

View File

@@ -19,6 +19,7 @@ import java.util.logging.Logger;
import javax.inject.Inject;
import org.briarproject.R;
import org.briarproject.android.util.LayoutUtils;
import org.briarproject.api.AuthorFactory;
import org.briarproject.api.LocalAuthor;
import org.briarproject.api.android.DatabaseUiExecutor;
@@ -28,6 +29,7 @@ import org.briarproject.api.crypto.KeyPair;
import org.briarproject.api.db.DatabaseComponent;
import org.briarproject.api.db.DbException;
import org.briarproject.api.lifecycle.LifecycleManager;
import roboguice.activity.RoboActivity;
import android.os.Bundle;
import android.view.KeyEvent;
@@ -67,10 +69,12 @@ implements OnEditorActionListener, OnClickListener {
layout.setOrientation(VERTICAL);
layout.setGravity(CENTER_HORIZONTAL);
int pad = LayoutUtils.getPadding(this);
TextView chooseNickname = new TextView(this);
chooseNickname.setGravity(CENTER);
chooseNickname.setTextSize(18);
chooseNickname.setPadding(10, 10, 10, 0);
chooseNickname.setPadding(pad, pad, pad, 0);
chooseNickname.setText(R.string.choose_nickname);
layout.addView(chooseNickname);

View File

@@ -68,6 +68,7 @@ implements SpinnerAdapter {
name.setTextSize(18);
name.setMaxLines(1);
Resources res = ctx.getResources();
// FIXME: Use LayoutUtils.getPadding() here?
int pad = res.getInteger(R.integer.spinner_padding);
name.setPadding(pad, pad, pad, pad);
LocalAuthorItem item = getItem(position);

View File

@@ -2,15 +2,21 @@ package org.briarproject.android.invitation;
import static android.view.Gravity.CENTER_HORIZONTAL;
import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
import org.briarproject.android.util.LayoutUtils;
import android.content.Context;
import android.widget.LinearLayout;
abstract class AddContactView extends LinearLayout {
protected final int pad;
protected AddContactActivity container = null;
AddContactView(Context ctx) {
super(ctx);
pad = LayoutUtils.getPadding(ctx);
}
void init(AddContactActivity container) {

View File

@@ -4,7 +4,10 @@ import static android.bluetooth.BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERA
import static android.provider.Settings.ACTION_BLUETOOTH_SETTINGS;
import static android.view.Gravity.CENTER;
import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
import org.briarproject.R;
import org.briarproject.android.util.LayoutUtils;
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
@@ -17,8 +20,11 @@ import android.widget.TextView;
class BluetoothStatusView extends LinearLayout implements OnClickListener {
private final int pad;
public BluetoothStatusView(Context ctx) {
super(ctx);
pad = LayoutUtils.getPadding(ctx);
}
void init() {
@@ -33,18 +39,18 @@ class BluetoothStatusView extends LinearLayout implements OnClickListener {
TextView status = new TextView(ctx);
status.setLayoutParams(WRAP_WRAP_1);
status.setTextSize(14);
status.setPadding(10, 10, 10, 10);
status.setPadding(pad, pad, pad, pad);
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
if(adapter == null) {
ImageView warning = new ImageView(ctx);
warning.setPadding(5, 5, 5, 5);
warning.setPadding(pad, pad, pad, pad);
warning.setImageResource(R.drawable.alerts_and_states_warning);
addView(warning);
status.setText(R.string.bluetooth_not_available);
addView(status);
} else if(adapter.getScanMode() == SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
ImageView ok = new ImageView(ctx);
ok.setPadding(5, 5, 5, 5);
ok.setPadding(pad, pad, pad, pad);
ok.setImageResource(R.drawable.navigation_accept);
addView(ok);
status.setText(R.string.bluetooth_discoverable);
@@ -55,7 +61,7 @@ class BluetoothStatusView extends LinearLayout implements OnClickListener {
addView(settings);
} else if(adapter.isEnabled()) {
ImageView warning = new ImageView(ctx);
warning.setPadding(5, 5, 5, 5);
warning.setPadding(pad, pad, pad, pad);
warning.setImageResource(R.drawable.alerts_and_states_warning);
addView(warning);
status.setText(R.string.bluetooth_not_discoverable);
@@ -66,7 +72,7 @@ class BluetoothStatusView extends LinearLayout implements OnClickListener {
addView(settings);
} else {
ImageView warning = new ImageView(ctx);
warning.setPadding(5, 5, 5, 5);
warning.setPadding(pad, pad, pad, pad);
warning.setImageResource(R.drawable.alerts_and_states_warning);
addView(warning);
status.setText(R.string.bluetooth_disabled);

View File

@@ -6,7 +6,10 @@ import static android.view.Gravity.CENTER;
import static android.view.Gravity.CENTER_HORIZONTAL;
import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY;
import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP;
import org.briarproject.R;
import org.briarproject.android.util.LayoutUtils;
import android.content.Context;
import android.view.KeyEvent;
import android.view.View;
@@ -21,12 +24,15 @@ import android.widget.TextView.OnEditorActionListener;
class CodeEntryView extends LinearLayout
implements OnEditorActionListener, OnClickListener {
private final int pad;
private CodeEntryListener listener = null;
private EditText codeEntry = null;
private Button continueButton = null;
public CodeEntryView(Context ctx) {
super(ctx);
pad = LayoutUtils.getPadding(ctx);
}
void init(CodeEntryListener listener, String prompt) {
@@ -38,7 +44,7 @@ implements OnEditorActionListener, OnClickListener {
TextView enterCode = new TextView(ctx);
enterCode.setGravity(CENTER_HORIZONTAL);
enterCode.setTextSize(14);
enterCode.setPadding(10, 10, 10, 0);
enterCode.setPadding(pad, pad, pad, 0);
enterCode.setText(prompt);
addView(enterCode);

View File

@@ -2,7 +2,9 @@ package org.briarproject.android.invitation;
import static android.view.Gravity.CENTER;
import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP;
import org.briarproject.R;
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
@@ -30,14 +32,14 @@ class CodesDoNotMatchView extends AddContactView implements OnClickListener {
TextView failed = new TextView(ctx);
failed.setTextSize(22);
failed.setPadding(10, 10, 10, 10);
failed.setPadding(pad, pad, pad, pad);
failed.setText(R.string.codes_do_not_match);
innerLayout.addView(failed);
addView(innerLayout);
TextView interfering = new TextView(ctx);
interfering.setTextSize(14);
interfering.setPadding(10, 0, 10, 10);
interfering.setPadding(pad, 0, pad, pad);
interfering.setText(R.string.interfering);
addView(interfering);

View File

@@ -2,7 +2,9 @@ package org.briarproject.android.invitation;
import static android.view.Gravity.CENTER;
import static android.view.Gravity.CENTER_HORIZONTAL;
import org.briarproject.R;
import android.content.Context;
import android.content.res.Resources;
import android.widget.ImageView;
@@ -28,7 +30,7 @@ class ConfirmationCodeView extends AddContactView implements CodeEntryListener {
TextView connected = new TextView(ctx);
connected.setTextSize(22);
connected.setPadding(10, 10, 10, 10);
connected.setPadding(pad, pad, pad, pad);
connected.setText(R.string.connected_to_contact);
innerLayout.addView(connected);
addView(innerLayout);
@@ -36,14 +38,14 @@ class ConfirmationCodeView extends AddContactView implements CodeEntryListener {
TextView yourCode = new TextView(ctx);
yourCode.setGravity(CENTER_HORIZONTAL);
yourCode.setTextSize(14);
yourCode.setPadding(10, 10, 10, 10);
yourCode.setPadding(pad, pad, pad, pad);
yourCode.setText(R.string.your_confirmation_code);
addView(yourCode);
TextView code = new TextView(ctx);
code.setGravity(CENTER_HORIZONTAL);
code.setTextSize(50);
code.setPadding(10, 0, 10, 10);
code.setPadding(pad, 0, pad, pad);
int localCode = container.getLocalConfirmationCode();
code.setText(String.format("%06d", localCode));
addView(code);

View File

@@ -27,7 +27,7 @@ class ConnectedView extends AddContactView {
TextView connected = new TextView(ctx);
connected.setTextSize(22);
connected.setPadding(10, 10, 10, 10);
connected.setPadding(pad, pad, pad, pad);
connected.setText(R.string.connected_to_contact);
innerLayout.addView(connected);
addView(innerLayout);
@@ -38,7 +38,7 @@ class ConnectedView extends AddContactView {
ProgressBar progress = new ProgressBar(ctx);
progress.setIndeterminate(true);
progress.setPadding(10, 10, 10, 10);
progress.setPadding(pad, pad, pad, pad);
innerLayout.addView(progress);
TextView connecting = new TextView(ctx);

View File

@@ -2,7 +2,9 @@ package org.briarproject.android.invitation;
import static android.view.Gravity.CENTER;
import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP;
import org.briarproject.R;
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
@@ -34,14 +36,14 @@ class ConnectionFailedView extends AddContactView implements OnClickListener {
TextView failed = new TextView(ctx);
failed.setTextSize(22);
failed.setPadding(10, 10, 10, 10);
failed.setPadding(pad, pad, pad, pad);
failed.setText(R.string.connection_failed);
innerLayout.addView(failed);
addView(innerLayout);
TextView checkNetwork = new TextView(ctx);
checkNetwork.setTextSize(14);
checkNetwork.setPadding(10, 0, 10, 10);
checkNetwork.setPadding(pad, 0, pad, pad);
checkNetwork.setText(R.string.check_same_network);
addView(checkNetwork);

View File

@@ -2,7 +2,9 @@ package org.briarproject.android.invitation;
import static android.view.Gravity.CENTER;
import static android.view.Gravity.CENTER_HORIZONTAL;
import org.briarproject.R;
import android.content.Context;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
@@ -20,14 +22,14 @@ class ConnectionView extends AddContactView {
TextView yourCode = new TextView(ctx);
yourCode.setGravity(CENTER_HORIZONTAL);
yourCode.setTextSize(14);
yourCode.setPadding(10, 10, 10, 10);
yourCode.setPadding(pad, pad, pad, pad);
yourCode.setText(R.string.your_invitation_code);
addView(yourCode);
TextView code = new TextView(ctx);
code.setGravity(CENTER_HORIZONTAL);
code.setTextSize(50);
code.setPadding(10, 0, 10, 10);
code.setPadding(pad, 0, pad, pad);
int localCode = container.getLocalInvitationCode();
code.setText(String.format("%06d", localCode));
addView(code);
@@ -40,7 +42,7 @@ class ConnectionView extends AddContactView {
ProgressBar progress = new ProgressBar(ctx);
progress.setIndeterminate(true);
progress.setPadding(10, 10, 10, 10);
progress.setPadding(pad, pad, pad, pad);
innerLayout.addView(progress);
TextView connecting = new TextView(ctx);
@@ -58,7 +60,7 @@ class ConnectionView extends AddContactView {
innerLayout.setGravity(CENTER);
ProgressBar progress = new ProgressBar(ctx);
progress.setPadding(10, 10, 10, 10);
progress.setPadding(pad, pad, pad, pad);
progress.setIndeterminate(true);
innerLayout.addView(progress);

View File

@@ -28,7 +28,7 @@ class ContactDetailsView extends AddContactView {
TextView connected = new TextView(ctx);
connected.setTextSize(22);
connected.setPadding(10, 10, 10, 10);
connected.setPadding(pad, pad, pad, pad);
connected.setText(R.string.connected_to_contact);
innerLayout.addView(connected);
addView(innerLayout);
@@ -36,14 +36,14 @@ class ContactDetailsView extends AddContactView {
TextView yourCode = new TextView(ctx);
yourCode.setGravity(CENTER_HORIZONTAL);
yourCode.setTextSize(14);
yourCode.setPadding(10, 0, 10, 10);
yourCode.setPadding(pad, 0, pad, pad);
yourCode.setText(R.string.your_confirmation_code);
addView(yourCode);
TextView code = new TextView(ctx);
code.setGravity(CENTER_HORIZONTAL);
code.setTextSize(50);
code.setPadding(10, 0, 10, 10);
code.setPadding(pad, 0, pad, pad);
int localCode = container.getLocalConfirmationCode();
code.setText(String.format("%06d", localCode));
addView(code);
@@ -54,7 +54,7 @@ class ContactDetailsView extends AddContactView {
ProgressBar progress = new ProgressBar(ctx);
progress.setIndeterminate(true);
progress.setPadding(10, 10, 10, 10);
progress.setPadding(pad, pad, pad, pad);
innerLayout.addView(progress);
TextView connecting = new TextView(ctx);

View File

@@ -18,14 +18,14 @@ class InvitationCodeView extends AddContactView implements CodeEntryListener {
TextView yourCode = new TextView(ctx);
yourCode.setGravity(CENTER_HORIZONTAL);
yourCode.setTextSize(14);
yourCode.setPadding(10, 10, 10, 10);
yourCode.setPadding(pad, pad, pad, pad);
yourCode.setText(R.string.your_invitation_code);
addView(yourCode);
TextView code = new TextView(ctx);
code.setGravity(CENTER_HORIZONTAL);
code.setTextSize(50);
code.setPadding(10, 0, 10, 10);
code.setPadding(pad, 0, pad, pad);
int localCode = container.getLocalInvitationCode();
code.setText(String.format("%06d", localCode));
addView(code);

View File

@@ -44,7 +44,7 @@ implements OnItemSelectedListener, OnClickListener {
TextView yourNickname = new TextView(ctx);
yourNickname.setTextSize(18);
yourNickname.setPadding(10, 10, 10, 10);
yourNickname.setPadding(pad, pad, pad, pad);
yourNickname.setText(R.string.your_nickname);
innerLayout.addView(yourNickname);
@@ -67,7 +67,7 @@ implements OnItemSelectedListener, OnClickListener {
TextView faceToFace = new TextView(ctx);
faceToFace.setGravity(CENTER);
faceToFace.setTextSize(14);
faceToFace.setPadding(10, 10, 10, 10);
faceToFace.setPadding(pad, pad, pad, pad);
faceToFace.setText(R.string.fact_to_face);
addView(faceToFace);

View File

@@ -28,7 +28,7 @@ class WaitForContactView extends AddContactView {
TextView connected = new TextView(ctx);
connected.setTextSize(22);
connected.setPadding(10, 10, 10, 10);
connected.setPadding(pad, pad, pad, pad);
connected.setText(R.string.connected_to_contact);
innerLayout.addView(connected);
addView(innerLayout);
@@ -36,14 +36,14 @@ class WaitForContactView extends AddContactView {
TextView yourCode = new TextView(ctx);
yourCode.setGravity(CENTER_HORIZONTAL);
yourCode.setTextSize(14);
yourCode.setPadding(10, 0, 10, 10);
yourCode.setPadding(pad, 0, pad, pad);
yourCode.setText(R.string.your_confirmation_code);
addView(yourCode);
TextView code = new TextView(ctx);
code.setGravity(CENTER_HORIZONTAL);
code.setTextSize(50);
code.setPadding(10, 0, 10, 10);
code.setPadding(pad, 0, pad, pad);
int localCode = container.getLocalConfirmationCode();
code.setText(String.format("%06d", localCode));
addView(code);
@@ -54,7 +54,7 @@ class WaitForContactView extends AddContactView {
ProgressBar progress = new ProgressBar(ctx);
progress.setIndeterminate(true);
progress.setPadding(10, 10, 10, 10);
progress.setPadding(pad, pad, pad, pad);
innerLayout.addView(progress);
TextView connecting = new TextView(ctx);

View File

@@ -4,7 +4,10 @@ import static android.content.Context.WIFI_SERVICE;
import static android.provider.Settings.ACTION_WIFI_SETTINGS;
import static android.view.Gravity.CENTER;
import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
import org.briarproject.R;
import org.briarproject.android.util.LayoutUtils;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.WifiInfo;
@@ -18,8 +21,11 @@ import android.widget.TextView;
class WifiStatusView extends LinearLayout implements OnClickListener {
private final int pad;
public WifiStatusView(Context ctx) {
super(ctx);
pad = LayoutUtils.getPadding(ctx);
}
void init() {
@@ -33,12 +39,12 @@ class WifiStatusView extends LinearLayout implements OnClickListener {
Context ctx = getContext();
TextView status = new TextView(ctx);
status.setTextSize(14);
status.setPadding(10, 10, 10, 10);
status.setPadding(pad, pad, pad, pad);
status.setLayoutParams(WRAP_WRAP_1);
WifiManager wifi = (WifiManager) ctx.getSystemService(WIFI_SERVICE);
if(wifi == null) {
ImageView warning = new ImageView(ctx);
warning.setPadding(5, 5, 5, 5);
warning.setPadding(pad, pad, pad, pad);
warning.setImageResource(R.drawable.alerts_and_states_warning);
addView(warning);
status.setText(R.string.wifi_not_available);
@@ -49,7 +55,7 @@ class WifiStatusView extends LinearLayout implements OnClickListener {
int networkId = info.getNetworkId();
if(networkName == null || networkId == -1) {
ImageView warning = new ImageView(ctx);
warning.setPadding(5, 5, 5, 5);
warning.setPadding(pad, pad, pad, pad);
warning.setImageResource(R.drawable.alerts_and_states_warning);
addView(warning);
status.setText(R.string.wifi_disconnected);
@@ -60,7 +66,7 @@ class WifiStatusView extends LinearLayout implements OnClickListener {
addView(settings);
} else {
ImageView ok = new ImageView(ctx);
ok.setPadding(5, 5, 5, 5);
ok.setPadding(pad, pad, pad, pad);
ok.setImageResource(R.drawable.navigation_accept);
addView(ok);
String format = getResources().getString(
@@ -74,7 +80,7 @@ class WifiStatusView extends LinearLayout implements OnClickListener {
}
} else {
ImageView warning = new ImageView(ctx);
warning.setPadding(5, 5, 5, 5);
warning.setPadding(pad, pad, pad, pad);
warning.setImageResource(R.drawable.alerts_and_states_warning);
addView(warning);
status.setText(R.string.wifi_disabled);

View File

@@ -5,9 +5,9 @@ import android.content.Context;
import android.view.View;
import android.widget.LinearLayout.LayoutParams;
public class HorizontalSpace extends View {
public class ElasticHorizontalSpace extends View {
public HorizontalSpace(Context ctx) {
public ElasticHorizontalSpace(Context ctx) {
super(ctx);
setLayoutParams(new LayoutParams(WRAP_CONTENT, 0, 1));
}

View File

@@ -0,0 +1,15 @@
package org.briarproject.android.util;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
import android.content.Context;
import android.view.View;
import android.widget.LinearLayout.LayoutParams;
public class FixedVerticalSpace extends View {
public FixedVerticalSpace(Context ctx) {
super(ctx);
int pad = LayoutUtils.getPadding(ctx);
setLayoutParams(new LayoutParams(WRAP_CONTENT, pad));
}
}

View File

@@ -1,9 +1,10 @@
package org.briarproject.android.util;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import org.briarproject.R;
import android.content.Context;
import android.content.res.Resources;
import android.view.View;
import android.widget.LinearLayout.LayoutParams;
@@ -11,8 +12,7 @@ public class HorizontalBorder extends View {
public HorizontalBorder(Context ctx) {
super(ctx);
Resources res = ctx.getResources();
int width = res.getInteger(R.integer.horizontal_border_width);
int width = LayoutUtils.getSeparatorWidth(ctx);
setLayoutParams(new LayoutParams(MATCH_PARENT, width));
setBackgroundColor(getResources().getColor(R.color.horizontal_border));
}

View File

@@ -0,0 +1,24 @@
package org.briarproject.android.util;
import static android.content.Context.WINDOW_SERVICE;
import android.content.Context;
import android.util.DisplayMetrics;
import android.view.WindowManager;
public class LayoutUtils {
public static int getSeparatorWidth(Context ctx) {
return Math.max(2, getMaxDisplayDimension(ctx) / 100 - 6);
}
public static int getPadding(Context ctx) {
return getMaxDisplayDimension(ctx) / 100 + 7;
}
private static int getMaxDisplayDimension(Context ctx) {
DisplayMetrics metrics = new DisplayMetrics();
WindowManager wm = (WindowManager) ctx.getSystemService(WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metrics);
return Math.max(metrics.widthPixels, metrics.heightPixels);
}
}