aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoriNPUTmice <daniel@gultsch.de>2014-07-31 15:09:34 +0200
committeriNPUTmice <daniel@gultsch.de>2014-07-31 15:09:34 +0200
commit990f0f6d73b1c63dd61c824a6b73ba056e2de75c (patch)
tree8cede5df931e5d335eebc34e95c780dbc3ce9ac1
parent27b306444bf11ca214e3fed7b54745bb323b31a9 (diff)
refactored account array adapter into seperate class. added account image
-rw-r--r--res/layout/account_row.xml61
-rw-r--r--res/values/colors.xml2
-rw-r--r--src/eu/siacs/conversations/entities/Account.java6
-rw-r--r--src/eu/siacs/conversations/ui/ManageAccountActivity.java475
-rw-r--r--src/eu/siacs/conversations/ui/XmppActivity.java12
-rw-r--r--src/eu/siacs/conversations/ui/adapter/AccountAdapter.java101
6 files changed, 313 insertions, 344 deletions
diff --git a/res/layout/account_row.xml b/res/layout/account_row.xml
index 0c18d9b2f..5494e4365 100644
--- a/res/layout/account_row.xml
+++ b/res/layout/account_row.xml
@@ -2,55 +2,42 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:padding="8dp"
- android:background="?android:attr/activatedBackgroundIndicator">
+ android:background="?android:attr/activatedBackgroundIndicator"
+ android:padding="8dp" >
-
+ <ImageView
+ android:id="@+id/account_image"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:layout_alignParentLeft="true"
+ android:src="@drawable/ic_profile" >
+ </ImageView>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"
- android:orientation="vertical">
+ android:layout_toRightOf="@+id/account_image"
+ android:layout_centerVertical="true"
+ android:orientation="vertical"
+ android:paddingLeft="8dp" >
<TextView
android:id="@+id/account_jid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textSize="18sp"
- android:textColor="@color/primarytext"
+ android:scrollHorizontally="false"
android:singleLine="true"
- android:scrollHorizontally="false"/>
+ android:textColor="@color/primarytext"
+ android:textSize="18sp" />
- <LinearLayout
- android:layout_width="match_parent"
+ <TextView
+ android:id="@+id/account_status"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:paddingTop="3dp">
-
- <TextView
- android:id="@+id/textView2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/account_status"
- android:textStyle="bold"
- android:textSize="14sp"
- android:textColor="@color/primarytext"/>
-
- <TextView
- android:id="@+id/account_status"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingLeft="4dp"
- android:text="@string/account_status_unknown"
- android:textStyle="bold"
- android:textSize="14sp"/>
-
- </LinearLayout>
-
+ android:text="@string/account_status_unknown"
+ android:textSize="14sp"
+ android:textColor="@color/secondarytext"
+ android:textStyle="bold"/>
</LinearLayout>
-
-</RelativeLayout>
+</RelativeLayout> \ No newline at end of file
diff --git a/res/values/colors.xml b/res/values/colors.xml
index b64779391..ed0a0ffbf 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -9,5 +9,5 @@
<color name="secondarybackground" type="color">#ffeeeeee</color>
<color name="darkbackground" type="color">#ff323232</color>
<color name="divider">#1f000000</color>
- <color name="red">#ffe51c23</color>
+ <color name="warningtext">#ffe51c23</color>
</resources> \ No newline at end of file
diff --git a/src/eu/siacs/conversations/entities/Account.java b/src/eu/siacs/conversations/entities/Account.java
index 5883788ff..2be03ab19 100644
--- a/src/eu/siacs/conversations/entities/Account.java
+++ b/src/eu/siacs/conversations/entities/Account.java
@@ -12,10 +12,12 @@ import org.json.JSONException;
import org.json.JSONObject;
import eu.siacs.conversations.crypto.OtrEngine;
+import eu.siacs.conversations.utils.UIHelper;
import eu.siacs.conversations.xmpp.XmppConnection;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
+import android.graphics.Bitmap;
public class Account extends AbstractEntity{
@@ -318,4 +320,8 @@ public class Account extends AbstractEntity{
}
return false;
}
+
+ public Bitmap getImage(Context context, int size) {
+ return UIHelper.getContactPicture(getJid(), size, context, false);
+ }
}
diff --git a/src/eu/siacs/conversations/ui/ManageAccountActivity.java b/src/eu/siacs/conversations/ui/ManageAccountActivity.java
index e56e2db9f..15f904c39 100644
--- a/src/eu/siacs/conversations/ui/ManageAccountActivity.java
+++ b/src/eu/siacs/conversations/ui/ManageAccountActivity.java
@@ -7,26 +7,23 @@ import eu.siacs.conversations.R;
import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.services.XmppConnectionService.OnAccountUpdate;
import eu.siacs.conversations.ui.EditAccountDialog.EditAccountListener;
+import eu.siacs.conversations.ui.adapter.AccountAdapter;
import eu.siacs.conversations.xmpp.XmppConnection;
import android.app.Activity;
import android.app.AlertDialog;
-import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.ActionMode;
-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.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
-import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
@@ -41,7 +38,7 @@ public class ManageAccountActivity extends XmppActivity {
protected List<Account> accountList = new ArrayList<Account>();
protected ListView accountListView;
- protected ArrayAdapter<Account> accountListViewAdapter;
+ protected AccountAdapter mAccountAdapter;
protected OnAccountUpdate accountChanged = new OnAccountUpdate() {
@Override
@@ -52,12 +49,172 @@ public class ManageAccountActivity extends XmppActivity {
@Override
public void run() {
- accountListViewAdapter.notifyDataSetChanged();
+ mAccountAdapter.notifyDataSetChanged();
}
});
}
};
+ protected ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
+
+ @Override
+ public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+ if (selectedAccountForActionMode
+ .isOptionSet(Account.OPTION_DISABLED)) {
+ menu.findItem(R.id.mgmt_account_enable).setVisible(true);
+ menu.findItem(R.id.mgmt_account_disable).setVisible(false);
+ } else {
+ menu.findItem(R.id.mgmt_account_disable).setVisible(true);
+ menu.findItem(R.id.mgmt_account_enable).setVisible(false);
+ }
+ return true;
+ }
+
+ @Override
+ public void onDestroyActionMode(ActionMode mode) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+ MenuInflater inflater = mode.getMenuInflater();
+ inflater.inflate(R.menu.manageaccounts_context, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onActionItemClicked(final ActionMode mode, MenuItem item) {
+ if (item.getItemId() == R.id.mgmt_account_edit) {
+ editAccount(selectedAccountForActionMode);
+ } else if (item.getItemId() == R.id.mgmt_account_disable) {
+ selectedAccountForActionMode.setOption(Account.OPTION_DISABLED,
+ true);
+ xmppConnectionService
+ .updateAccount(selectedAccountForActionMode);
+ mode.finish();
+ } else if (item.getItemId() == R.id.mgmt_account_enable) {
+ selectedAccountForActionMode.setOption(Account.OPTION_DISABLED,
+ false);
+ xmppConnectionService
+ .updateAccount(selectedAccountForActionMode);
+ mode.finish();
+ } else if (item.getItemId() == R.id.mgmt_account_delete) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+ builder.setTitle(getString(R.string.mgmt_account_are_you_sure));
+ builder.setIconAttribute(android.R.attr.alertDialogIcon);
+ builder.setMessage(getString(R.string.mgmt_account_delete_confirm_text));
+ builder.setPositiveButton(getString(R.string.delete),
+ new OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog,
+ int which) {
+ xmppConnectionService
+ .deleteAccount(selectedAccountForActionMode);
+ selectedAccountForActionMode = null;
+ mode.finish();
+ }
+ });
+ builder.setNegativeButton(getString(R.string.cancel), null);
+ builder.create().show();
+ } else if (item.getItemId() == R.id.mgmt_account_announce_pgp) {
+ if (activity.hasPgp()) {
+ mode.finish();
+ announcePgp(selectedAccountForActionMode, null);
+ } else {
+ activity.showInstallPgpDialog();
+ }
+ } else if (item.getItemId() == R.id.mgmt_otr_key) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+ builder.setTitle("OTR Fingerprint");
+ String fingerprintTxt = selectedAccountForActionMode
+ .getOtrFingerprint(getApplicationContext());
+ View view = (View) getLayoutInflater().inflate(
+ R.layout.otr_fingerprint, null);
+ if (fingerprintTxt != null) {
+ TextView fingerprint = (TextView) view
+ .findViewById(R.id.otr_fingerprint);
+ TextView noFingerprintView = (TextView) view
+ .findViewById(R.id.otr_no_fingerprint);
+ fingerprint.setText(fingerprintTxt);
+ fingerprint.setVisibility(View.VISIBLE);
+ noFingerprintView.setVisibility(View.GONE);
+ }
+ builder.setView(view);
+ builder.setPositiveButton(getString(R.string.done), null);
+ builder.create().show();
+ } else if (item.getItemId() == R.id.mgmt_account_info) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+ builder.setTitle(getString(R.string.account_info));
+ if (selectedAccountForActionMode.getStatus() == Account.STATUS_ONLINE) {
+ XmppConnection xmpp = selectedAccountForActionMode
+ .getXmppConnection();
+ long connectionAge = (SystemClock.elapsedRealtime() - xmpp.lastConnect) / 60000;
+ long sessionAge = (SystemClock.elapsedRealtime() - xmpp.lastSessionStarted) / 60000;
+ long connectionAgeHours = connectionAge / 60;
+ long sessionAgeHours = sessionAge / 60;
+ View view = (View) getLayoutInflater().inflate(
+ R.layout.server_info, null);
+ TextView connection = (TextView) view
+ .findViewById(R.id.connection);
+ TextView session = (TextView) view
+ .findViewById(R.id.session);
+ TextView pcks_sent = (TextView) view
+ .findViewById(R.id.pcks_sent);
+ TextView pcks_received = (TextView) view
+ .findViewById(R.id.pcks_received);
+ TextView carbon = (TextView) view.findViewById(R.id.carbon);
+ TextView stream = (TextView) view.findViewById(R.id.stream);
+ TextView roster = (TextView) view.findViewById(R.id.roster);
+ TextView presences = (TextView) view
+ .findViewById(R.id.number_presences);
+ presences.setText(selectedAccountForActionMode
+ .countPresences() + "");
+ pcks_received.setText("" + xmpp.getReceivedStanzas());
+ pcks_sent.setText("" + xmpp.getSentStanzas());
+ if (connectionAgeHours >= 2) {
+ connection.setText(connectionAgeHours + " "
+ + getString(R.string.hours));
+ } else {
+ connection.setText(connectionAge + " "
+ + getString(R.string.mins));
+ }
+ if (xmpp.hasFeatureStreamManagment()) {
+ if (sessionAgeHours >= 2) {
+ session.setText(sessionAgeHours + " "
+ + getString(R.string.hours));
+ } else {
+ session.setText(sessionAge + " "
+ + getString(R.string.mins));
+ }
+ stream.setText(getString(R.string.yes));
+ } else {
+ stream.setText(getString(R.string.no));
+ session.setText(connection.getText());
+ }
+ if (xmpp.hasFeaturesCarbon()) {
+ carbon.setText(getString(R.string.yes));
+ } else {
+ carbon.setText(getString(R.string.no));
+ }
+ if (xmpp.hasFeatureRosterManagment()) {
+ roster.setText(getString(R.string.yes));
+ } else {
+ roster.setText(getString(R.string.no));
+ }
+ builder.setView(view);
+ } else {
+ builder.setMessage(getString(R.string.mgmt_account_account_offline));
+ }
+ builder.setPositiveButton(getString(R.string.hide), null);
+ builder.create().show();
+ }
+ return true;
+ }
+
+ };
+
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -66,90 +223,9 @@ public class ManageAccountActivity extends XmppActivity {
setContentView(R.layout.manage_accounts);
accountListView = (ListView) findViewById(R.id.account_list);
- accountListViewAdapter = new ArrayAdapter<Account>(
- getApplicationContext(), R.layout.account_row, this.accountList) {
- @Override
- public View getView(int position, View view, ViewGroup parent) {
- Account account = getItem(position);
- if (view == null) {
- LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- view = (View) inflater.inflate(R.layout.account_row, null);
- }
- ((TextView) view.findViewById(R.id.account_jid))
- .setText(account.getJid());
- TextView statusView = (TextView) view
- .findViewById(R.id.account_status);
- switch (account.getStatus()) {
- case Account.STATUS_DISABLED:
- statusView
- .setText(getString(R.string.account_status_disabled));
- statusView.setTextColor(0xFF1da9da);
- break;
- case Account.STATUS_ONLINE:
- statusView
- .setText(getString(R.string.account_status_online));
- statusView.setTextColor(0xFF83b600);
- break;
- case Account.STATUS_CONNECTING:
- statusView
- .setText(getString(R.string.account_status_connecting));
- statusView.setTextColor(0xFF1da9da);
- break;
- case Account.STATUS_OFFLINE:
- statusView
- .setText(getString(R.string.account_status_offline));
- statusView.setTextColor(0xFFe92727);
- break;
- case Account.STATUS_UNAUTHORIZED:
- statusView
- .setText(getString(R.string.account_status_unauthorized));
- statusView.setTextColor(0xFFe92727);
- break;
- case Account.STATUS_SERVER_NOT_FOUND:
- statusView
- .setText(getString(R.string.account_status_not_found));
- statusView.setTextColor(0xFFe92727);
- break;
- case Account.STATUS_NO_INTERNET:
- statusView
- .setText(getString(R.string.account_status_no_internet));
- statusView.setTextColor(0xFFe92727);
- break;
- case Account.STATUS_SERVER_REQUIRES_TLS:
- statusView
- .setText(getString(R.string.account_status_requires_tls));
- statusView.setTextColor(0xFFe92727);
- break;
- case Account.STATUS_REGISTRATION_FAILED:
- statusView
- .setText(getString(R.string.account_status_regis_fail));
- statusView.setTextColor(0xFFe92727);
- break;
- case Account.STATUS_REGISTRATION_CONFLICT:
- statusView
- .setText(getString(R.string.account_status_regis_conflict));
- statusView.setTextColor(0xFFe92727);
- break;
- case Account.STATUS_REGISTRATION_SUCCESSFULL:
- statusView
- .setText(getString(R.string.account_status_regis_success));
- statusView.setTextColor(0xFF83b600);
- break;
- case Account.STATUS_REGISTRATION_NOT_SUPPORTED:
- statusView
- .setText(getString(R.string.account_status_regis_not_sup));
- statusView.setTextColor(0xFFe92727);
- break;
- default:
- statusView.setText("");
- break;
- }
-
- return view;
- }
- };
final XmppActivity activity = this;
- accountListView.setAdapter(this.accountListViewAdapter);
+ this.mAccountAdapter = new AccountAdapter(this, accountList);
+ accountListView.setAdapter(this.mAccountAdapter);
accountListView.setOnItemClickListener(new OnItemClickListener() {
@Override
@@ -186,221 +262,7 @@ public class ManageAccountActivity extends XmppActivity {
selectedAccountForActionMode = accountList
.get(position);
actionMode = activity
- .startActionMode((new ActionMode.Callback() {
-
- @Override
- public boolean onPrepareActionMode(
- ActionMode mode, Menu menu) {
- if (selectedAccountForActionMode
- .isOptionSet(Account.OPTION_DISABLED)) {
- menu.findItem(
- R.id.mgmt_account_enable)
- .setVisible(true);
- menu.findItem(
- R.id.mgmt_account_disable)
- .setVisible(false);
- } else {
- menu.findItem(
- R.id.mgmt_account_disable)
- .setVisible(true);
- menu.findItem(
- R.id.mgmt_account_enable)
- .setVisible(false);
- }
- return true;
- }
-
- @Override
- public void onDestroyActionMode(
- ActionMode mode) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public boolean onCreateActionMode(
- ActionMode mode, Menu menu) {
- MenuInflater inflater = mode
- .getMenuInflater();
- inflater.inflate(
- R.menu.manageaccounts_context,
- menu);
- return true;
- }
-
- @Override
- public boolean onActionItemClicked(
- final ActionMode mode,
- MenuItem item) {
- if (item.getItemId() == R.id.mgmt_account_edit) {
- editAccount(selectedAccountForActionMode);
- } else if (item.getItemId() == R.id.mgmt_account_disable) {
- selectedAccountForActionMode
- .setOption(
- Account.OPTION_DISABLED,
- true);
- xmppConnectionService
- .updateAccount(selectedAccountForActionMode);
- mode.finish();
- } else if (item.getItemId() == R.id.mgmt_account_enable) {
- selectedAccountForActionMode
- .setOption(
- Account.OPTION_DISABLED,
- false);
- xmppConnectionService
- .updateAccount(selectedAccountForActionMode);
- mode.finish();
- } else if (item.getItemId() == R.id.mgmt_account_delete) {
- AlertDialog.Builder builder = new AlertDialog.Builder(
- activity);
- builder.setTitle(getString(R.string.mgmt_account_are_you_sure));
- builder.setIconAttribute(android.R.attr.alertDialogIcon);
- builder.setMessage(getString(R.string.mgmt_account_delete_confirm_text));
- builder.setPositiveButton(
- getString(R.string.delete),
- new OnClickListener() {
-
- @Override
- public void onClick(
- DialogInterface dialog,
- int which) {
- xmppConnectionService
- .deleteAccount(selectedAccountForActionMode);
- selectedAccountForActionMode = null;
- mode.finish();
- }
- });
- builder.setNegativeButton(
- getString(R.string.cancel),
- null);
- builder.create().show();
- } else if (item.getItemId() == R.id.mgmt_account_announce_pgp) {
- if (activity.hasPgp()) {
- mode.finish();
- announcePgp(
- selectedAccountForActionMode,
- null);
- } else {
- activity.showInstallPgpDialog();
- }
- } else if (item.getItemId() == R.id.mgmt_otr_key) {
- AlertDialog.Builder builder = new AlertDialog.Builder(
- activity);
- builder.setTitle("OTR Fingerprint");
- String fingerprintTxt = selectedAccountForActionMode
- .getOtrFingerprint(getApplicationContext());
- View view = (View) getLayoutInflater()
- .inflate(
- R.layout.otr_fingerprint,
- null);
- if (fingerprintTxt != null) {
- TextView fingerprint = (TextView) view
- .findViewById(R.id.otr_fingerprint);
- TextView noFingerprintView = (TextView) view
- .findViewById(R.id.otr_no_fingerprint);
- fingerprint
- .setText(fingerprintTxt);
- fingerprint
- .setVisibility(View.VISIBLE);
- noFingerprintView
- .setVisibility(View.GONE);
- }
- builder.setView(view);
- builder.setPositiveButton(
- getString(R.string.done),
- null);
- builder.create().show();
- } else if (item.getItemId() == R.id.mgmt_account_info) {
- AlertDialog.Builder builder = new AlertDialog.Builder(
- activity);
- builder.setTitle(getString(R.string.account_info));
- if (selectedAccountForActionMode
- .getStatus() == Account.STATUS_ONLINE) {
- XmppConnection xmpp = selectedAccountForActionMode
- .getXmppConnection();
- long connectionAge = (SystemClock
- .elapsedRealtime() - xmpp.lastConnect) / 60000;
- long sessionAge = (SystemClock
- .elapsedRealtime() - xmpp.lastSessionStarted) / 60000;
- long connectionAgeHours = connectionAge / 60;
- long sessionAgeHours = sessionAge / 60;
- View view = (View) getLayoutInflater()
- .inflate(
- R.layout.server_info,
- null);
- TextView connection = (TextView) view
- .findViewById(R.id.connection);
- TextView session = (TextView) view
- .findViewById(R.id.session);
- TextView pcks_sent = (TextView) view
- .findViewById(R.id.pcks_sent);
- TextView pcks_received = (TextView) view
- .findViewById(R.id.pcks_received);
- TextView carbon = (TextView) view
- .findViewById(R.id.carbon);
- TextView stream = (TextView) view
- .findViewById(R.id.stream);
- TextView roster = (TextView) view
- .findViewById(R.id.roster);
- TextView presences = (TextView) view
- .findViewById(R.id.number_presences);
- presences.setText(selectedAccountForActionMode
- .countPresences()
- + "");
- pcks_received.setText(""
- + xmpp.getReceivedStanzas());
- pcks_sent.setText(""
- + xmpp.getSentStanzas());
- if (connectionAgeHours >= 2) {
- connection
- .setText(connectionAgeHours
- + " "
- + getString(R.string.hours));
- } else {
- connection
- .setText(connectionAge
- + " "
- + getString(R.string.mins));
- }
- if (xmpp.hasFeatureStreamManagment()) {
- if (sessionAgeHours >= 2) {
- session.setText(sessionAgeHours
- + " "
- + getString(R.string.hours));
- } else {
- session.setText(sessionAge
- + " "
- + getString(R.string.mins));
- }
- stream.setText(getString(R.string.yes));
- } else {
- stream.setText(getString(R.string.no));
- session.setText(connection
- .getText());
- }
- if (xmpp.hasFeaturesCarbon()) {
- carbon.setText(getString(R.string.yes));
- } else {
- carbon.setText(getString(R.string.no));
- }
- if (xmpp.hasFeatureRosterManagment()) {
- roster.setText(getString(R.string.yes));
- } else {
- roster.setText(getString(R.string.no));
- }
- builder.setView(view);
- } else {
- builder.setMessage(getString(R.string.mgmt_account_account_offline));
- }
- builder.setPositiveButton(
- getString(R.string.hide),
- null);
- builder.create().show();
- }
- return true;
- }
-
- }));
+ .startActionMode(mActionModeCallback);
return true;
} else {
return false;
@@ -422,7 +284,7 @@ public class ManageAccountActivity extends XmppActivity {
xmppConnectionService.setOnAccountListChangedListener(accountChanged);
this.accountList.clear();
this.accountList.addAll(xmppConnectionService.getAccounts());
- accountListViewAdapter.notifyDataSetChanged();
+ mAccountAdapter.notifyDataSetChanged();
if ((this.accountList.size() == 0) && (this.firstrun)) {
getActionBar().setDisplayHomeAsUpEnabled(false);
getActionBar().setHomeButtonEnabled(false);
@@ -452,7 +314,8 @@ public class ManageAccountActivity extends XmppActivity {
@Override
public boolean onNavigateUp() {
if (xmppConnectionService.getConversations().size() == 0) {
- Intent contactsIntent = new Intent(this, StartConversationActivity.class);
+ Intent contactsIntent = new Intent(this,
+ StartConversationActivity.class);
contactsIntent.setFlags(
// if activity exists in stack, pop the stack and go back to it
Intent.FLAG_ACTIVITY_CLEAR_TOP |
diff --git a/src/eu/siacs/conversations/ui/XmppActivity.java b/src/eu/siacs/conversations/ui/XmppActivity.java
index fad4d026f..3bac32e2b 100644
--- a/src/eu/siacs/conversations/ui/XmppActivity.java
+++ b/src/eu/siacs/conversations/ui/XmppActivity.java
@@ -42,6 +42,8 @@ public abstract class XmppActivity extends Activity {
protected int mPrimaryTextColor;
protected int mSecondaryTextColor;
+ protected int mWarningTextColor;
+ protected int mPrimaryColor;
protected interface OnValueEdited {
public void onValueEdited(String value);
@@ -162,6 +164,8 @@ public abstract class XmppActivity extends Activity {
ExceptionHelper.init(getApplicationContext());
mPrimaryTextColor = getResources().getColor(R.color.primarytext);
mSecondaryTextColor = getResources().getColor(R.color.secondarytext);
+ mWarningTextColor = getResources().getColor(R.color.warningtext);
+ mPrimaryColor = getResources().getColor(R.color.primary);
}
public void switchToConversation(Conversation conversation) {
@@ -368,4 +372,12 @@ public abstract class XmppActivity extends Activity {
public int getPrimaryTextColor() {
return this.mPrimaryTextColor;
}
+
+ public int getWarningTextColor() {
+ return this.mWarningTextColor;
+ }
+
+ public int getPrimaryColor() {
+ return this.mPrimaryColor;
+ }
}
diff --git a/src/eu/siacs/conversations/ui/adapter/AccountAdapter.java b/src/eu/siacs/conversations/ui/adapter/AccountAdapter.java
new file mode 100644
index 000000000..cd8b376fc
--- /dev/null
+++ b/src/eu/siacs/conversations/ui/adapter/AccountAdapter.java
@@ -0,0 +1,101 @@
+package eu.siacs.conversations.ui.adapter;
+
+import java.util.List;
+
+import eu.siacs.conversations.R;
+import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.ui.XmppActivity;
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+public class AccountAdapter extends ArrayAdapter<Account> {
+
+ private XmppActivity activity;
+
+ public AccountAdapter(XmppActivity activity, List<Account> objects) {
+ super(activity, 0, objects);
+ this.activity = activity;
+ }
+
+ @Override
+ public View getView(int position, View view, ViewGroup parent) {
+ Account account = getItem(position);
+ if (view == null) {
+ LayoutInflater inflater = (LayoutInflater) getContext()
+ .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ view = (View) inflater.inflate(R.layout.account_row, parent, false);
+ }
+ TextView jid = (TextView) view.findViewById(R.id.account_jid);
+ jid.setText(account.getJid());
+ TextView statusView = (TextView) view.findViewById(R.id.account_status);
+ ImageView imageView = (ImageView) view.findViewById(R.id.account_image);
+ imageView.setImageBitmap(account.getImage(activity,48));
+ switch (account.getStatus()) {
+ case Account.STATUS_DISABLED:
+ statusView.setText(getContext().getString(
+ R.string.account_status_disabled));
+ statusView.setTextColor(activity.getSecondaryTextColor());
+ break;
+ case Account.STATUS_ONLINE:
+ statusView.setText(getContext().getString(
+ R.string.account_status_online));
+ statusView.setTextColor(activity.getPrimaryColor());
+ break;
+ case Account.STATUS_CONNECTING:
+ statusView.setText(getContext().getString(
+ R.string.account_status_connecting));
+ statusView.setTextColor(activity.getSecondaryTextColor());
+ break;
+ case Account.STATUS_OFFLINE:
+ statusView.setText(getContext().getString(
+ R.string.account_status_offline));
+ statusView.setTextColor(activity.getWarningTextColor());
+ break;
+ case Account.STATUS_UNAUTHORIZED:
+ statusView.setText(getContext().getString(
+ R.string.account_status_unauthorized));
+ statusView.setTextColor(activity.getWarningTextColor());
+ break;
+ case Account.STATUS_SERVER_NOT_FOUND:
+ statusView.setText(getContext().getString(
+ R.string.account_status_not_found));
+ statusView.setTextColor(activity.getWarningTextColor());
+ break;
+ case Account.STATUS_NO_INTERNET:
+ statusView.setText(getContext().getString(
+ R.string.account_status_no_internet));
+ statusView.setTextColor(activity.getWarningTextColor());
+ break;
+ case Account.STATUS_REGISTRATION_FAILED:
+ statusView.setText(getContext().getString(
+ R.string.account_status_regis_fail));
+ statusView.setTextColor(activity.getWarningTextColor());
+ break;
+ case Account.STATUS_REGISTRATION_CONFLICT:
+ statusView.setText(getContext().getString(
+ R.string.account_status_regis_conflict));
+ statusView.setTextColor(activity.getWarningTextColor());
+ break;
+ case Account.STATUS_REGISTRATION_SUCCESSFULL:
+ statusView.setText(getContext().getString(
+ R.string.account_status_regis_success));
+ statusView.setTextColor(activity.getSecondaryTextColor());
+ break;
+ case Account.STATUS_REGISTRATION_NOT_SUPPORTED:
+ statusView.setText(getContext().getString(
+ R.string.account_status_regis_not_sup));
+ statusView.setTextColor(activity.getWarningTextColor());
+ break;
+ default:
+ statusView.setText("");
+ break;
+ }
+
+ return view;
+ }
+}