Add ShareViaAccountActivity

Marc Schink created

Change summary

src/main/AndroidManifest.xml                                         |   4 
src/main/java/eu/siacs/conversations/ui/ShareViaAccountActivity.java | 106 
src/main/res/values-de/strings.xml                                   |   1 
src/main/res/values/strings.xml                                      |   1 
4 files changed, 112 insertions(+)

Detailed changes

src/main/AndroidManifest.xml 🔗

@@ -134,6 +134,10 @@
             android:name=".ui.ManageAccountActivity"
             android:label="@string/title_activity_manage_accounts"
             android:launchMode="singleTask" />
+        <activity
+            android:name=".ui.ShareViaAccountActivity"
+            android:label="@string/title_activity_share_via_account"
+            android:launchMode="singleTop" />
         <activity
             android:name=".ui.EditAccountActivity"
             android:launchMode="singleTop"

src/main/java/eu/siacs/conversations/ui/ShareViaAccountActivity.java 🔗

@@ -0,0 +1,106 @@
+package eu.siacs.conversations.ui;
+
+import android.app.ActionBar;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.ListView;
+import android.widget.Toast;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import eu.siacs.conversations.R;
+import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.entities.Conversation;
+import eu.siacs.conversations.ui.adapter.AccountAdapter;
+import eu.siacs.conversations.xmpp.jid.InvalidJidException;
+import eu.siacs.conversations.xmpp.jid.Jid;
+
+public class ShareViaAccountActivity extends XmppActivity {
+	public static final String EXTRA_CONTACT = "contact";
+	public static final String EXTRA_BODY = "body";
+
+	protected final List<Account> accountList = new ArrayList<>();
+	protected ListView accountListView;
+	protected AccountAdapter mAccountAdapter;
+
+	@Override
+	protected void refreshUiReal() {
+		synchronized (this.accountList) {
+			accountList.clear();
+			accountList.addAll(xmppConnectionService.getAccounts());
+		}
+		ActionBar actionBar = getActionBar();
+		if (actionBar != null) {
+			actionBar.setHomeButtonEnabled(this.accountList.size() > 0);
+			actionBar.setDisplayHomeAsUpEnabled(this.accountList.size() > 0);
+		}
+		mAccountAdapter.notifyDataSetChanged();
+	}
+
+	@Override
+	protected void onCreate(Bundle savedInstanceState) {
+		super.onCreate(savedInstanceState);
+
+		setContentView(R.layout.manage_accounts);
+
+		accountListView = (ListView) findViewById(R.id.account_list);
+		this.mAccountAdapter = new AccountAdapter(this, accountList, false);
+		accountListView.setAdapter(this.mAccountAdapter);
+		accountListView.setOnItemClickListener(new OnItemClickListener() {
+
+			@Override
+			public void onItemClick(AdapterView<?> arg0, View view,
+									int position, long arg3) {
+				final Account account = accountList.get(position);
+				final String body = getIntent().getStringExtra(EXTRA_BODY);
+
+				try {
+					final Jid contact = Jid.fromString(getIntent().getStringExtra(EXTRA_CONTACT));
+					final Conversation conversation = xmppConnectionService.findOrCreateConversation(
+							account, contact, false, false);
+					switchToConversation(conversation, body, false);
+				} catch (InvalidJidException e) {
+					// ignore error
+				}
+
+				finish();
+			}
+		});
+	}
+
+	@Override
+	protected void onStart() {
+		super.onStart();
+		final int theme = findTheme();
+		if (this.mTheme != theme) {
+			recreate();
+		}
+	}
+
+	@Override
+	void onBackendConnected() {
+		final int numAccounts = xmppConnectionService.getAccounts().size();
+
+		if (numAccounts == 1) {
+			final String body = getIntent().getStringExtra(EXTRA_BODY);
+			final Account account = xmppConnectionService.getAccounts().get(0);
+
+			try {
+				final Jid contact = Jid.fromString(getIntent().getStringExtra(EXTRA_CONTACT));
+				final Conversation conversation = xmppConnectionService.findOrCreateConversation(
+						account, contact, false, false);
+				switchToConversation(conversation, body, false);
+			} catch (InvalidJidException e) {
+				// ignore error
+			}
+
+			finish();
+		} else {
+			refreshUiReal();
+		}
+	}
+}

src/main/res/values-de/strings.xml 🔗

@@ -20,6 +20,7 @@
   <string name="title_activity_sharewith">Mit Unterhaltung teilen</string>
   <string name="title_activity_start_conversation">Unterhaltung beginnen</string>
   <string name="title_activity_choose_contact">Kontakt auswählen</string>
+  <string name="title_activity_share_via_account">Über Account teilen</string>
   <string name="title_activity_block_list">Sperrliste</string>
   <string name="just_now">gerade</string>
   <string name="minute_ago">vor einer Minute</string>

src/main/res/values/strings.xml 🔗

@@ -21,6 +21,7 @@
 	<string name="title_activity_sharewith">Share with Conversation</string>
 	<string name="title_activity_start_conversation">Start Conversation</string>
 	<string name="title_activity_choose_contact">Choose Contact</string>
+	<string name="title_activity_share_via_account">Share via account</string>
 	<string name="title_activity_block_list">Block list</string>
 	<string name="just_now">just now</string>
 	<string name="minute_ago">1 min ago</string>