diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/AndroidManifest.xml | 4 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/ShareViaAccountActivity.java | 104 | ||||
-rw-r--r-- | src/main/res/values/strings.xml | 1 |
3 files changed, 109 insertions, 0 deletions
diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index be2be7da6..1c09366ca 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -161,6 +161,10 @@ 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" android:windowSoftInputMode="stateHidden|adjustResize" /> diff --git a/src/main/java/de/pixart/messenger/ui/ShareViaAccountActivity.java b/src/main/java/de/pixart/messenger/ui/ShareViaAccountActivity.java new file mode 100644 index 000000000..41d22f2a5 --- /dev/null +++ b/src/main/java/de/pixart/messenger/ui/ShareViaAccountActivity.java @@ -0,0 +1,104 @@ +package de.pixart.messenger.ui; + +import android.app.ActionBar; +import android.os.Bundle; +import android.view.View; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.ListView; + +import java.util.ArrayList; +import java.util.List; + +import de.pixart.messenger.R; +import de.pixart.messenger.entities.Account; +import de.pixart.messenger.entities.Conversation; +import de.pixart.messenger.ui.adapter.AccountAdapter; +import de.pixart.messenger.xmpp.jid.InvalidJidException; +import de.pixart.messenger.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 = findViewById(R.id.account_list); + this.mAccountAdapter = new AccountAdapter(this, accountList); + 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(); + } + } +}
\ No newline at end of file diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 84e4e0d51..c9e9dd6a8 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -747,4 +747,5 @@ <string name="pref_use_bundled_emoji">Use integrated emojis</string> <string name="pref_use_bundled_emoji_summary">Use the integrated emoji library instead of using your devices ones. Changes will be available after reopening the app.</string> <string name="invalid_muc_nick">Invalid nickname</string> + <string name="title_activity_share_via_account">Share via account</string> </resources> |