mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
656 lines
28 KiB
Java
656 lines
28 KiB
Java
/*******************************************************************************
|
|
*
|
|
* Messenger Android Frontend
|
|
* (C) 2017 Björn Petersen
|
|
* Contact: r10s@b44t.com, http://b44t.com
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify it under
|
|
* the terms of the GNU General Public License as published by the Free Software
|
|
* Foundation, either version 3 of the License, or (at your option) any later
|
|
* version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
* details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along with
|
|
* this program. If not, see http://www.gnu.org/licenses/ .
|
|
*
|
|
*******************************************************************************
|
|
*
|
|
* File: MrAccoutSettingsActivity.java
|
|
* Purpose: Let the user configure his name
|
|
*
|
|
******************************************************************************/
|
|
|
|
package com.b44t.ui;
|
|
|
|
import android.app.AlertDialog;
|
|
import android.app.ProgressDialog;
|
|
import android.content.Context;
|
|
import android.content.DialogInterface;
|
|
import android.os.Bundle;
|
|
import android.text.InputType;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.AdapterView;
|
|
import android.widget.FrameLayout;
|
|
import android.widget.ListView;
|
|
|
|
import com.b44t.messenger.AndroidUtilities;
|
|
import com.b44t.messenger.ApplicationLoader;
|
|
import com.b44t.messenger.LocaleController;
|
|
import com.b44t.messenger.MrMailbox;
|
|
import com.b44t.messenger.NotificationCenter;
|
|
import com.b44t.messenger.R;
|
|
import com.b44t.ui.ActionBar.ActionBar;
|
|
import com.b44t.ui.ActionBar.ActionBarMenu;
|
|
import com.b44t.ui.ActionBar.BaseFragment;
|
|
import com.b44t.ui.Adapters.BaseFragmentAdapter;
|
|
import com.b44t.ui.Cells.HeaderCell;
|
|
import com.b44t.ui.Cells.EditTextCell;
|
|
import com.b44t.ui.Cells.ShadowSectionCell;
|
|
import com.b44t.ui.Cells.TextInfoCell;
|
|
import com.b44t.ui.Cells.TextSettingsCell;
|
|
import com.b44t.ui.Components.LayoutHelper;
|
|
|
|
|
|
public class AccountSettingsActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate {
|
|
|
|
// the list
|
|
private ListView listView;
|
|
private ListAdapter listAdapter;
|
|
|
|
private int rowAddrHeadline;
|
|
private int rowAddr;
|
|
private int rowMailPwHeadline;
|
|
private int rowMailPw;
|
|
private int rowOpenAdvOpions;
|
|
|
|
private int rowMailHeadline;
|
|
private int rowMailServer;
|
|
private int rowMailPort;
|
|
private int rowMailUser;
|
|
private int rowMailSecurity;
|
|
private int rowBreak1;
|
|
|
|
private int rowSendHeadline;
|
|
private int rowSendServer;
|
|
private int rowSendPort;
|
|
private int rowSendUser;
|
|
private int rowSendPw;
|
|
private int rowSendSecurity;
|
|
|
|
private int rowInfoBelowSendPw;
|
|
private int rowCount;
|
|
|
|
private final int ROWTYPE_INFO = 0; // no gaps here!
|
|
private final int ROWTYPE_TEXT_ENTRY = 1;
|
|
private final int ROWTYPE_SHADOW_BREAK = 2;
|
|
private final int ROWTYPE_HEADLINE = 3;
|
|
private final int ROWTYPE_TEXT_FLAGS = 4;
|
|
|
|
private EditTextCell addrCell; // warning all these objects may be null!
|
|
private EditTextCell mailPwCell;
|
|
private EditTextCell mailServerCell;
|
|
private EditTextCell mailPortCell;
|
|
private EditTextCell mailUserCell;
|
|
private EditTextCell sendPwCell;
|
|
private EditTextCell sendServerCell;
|
|
private EditTextCell sendPortCell;
|
|
private EditTextCell sendUserCell;
|
|
|
|
private final int MR_IMAP_SOCKET_STARTTLS = 0x100;
|
|
private final int MR_IMAP_SOCKET_SSL = 0x200;
|
|
private final int MR_IMAP_SOCKET_PLAIN = 0x400;
|
|
private final int MR_SMTP_SOCKET_STARTTLS = 0x10000;
|
|
private final int MR_SMTP_SOCKET_SSL = 0x20000;
|
|
private final int MR_SMTP_SOCKET_PLAIN = 0x40000;
|
|
private int m_serverFlags;
|
|
|
|
// misc.
|
|
private final int ID_DONE_BUTTON = 1;
|
|
private ProgressDialog progressDialog = null;
|
|
private boolean fromIntro;
|
|
private boolean m_expanded = false;
|
|
|
|
public AccountSettingsActivity(Bundle args) {
|
|
super();
|
|
if( args!=null ) {
|
|
fromIntro = args.getBoolean("fromIntro", false);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean onFragmentCreate() {
|
|
super.onFragmentCreate();
|
|
|
|
NotificationCenter.getInstance().addObserver(this, NotificationCenter.configureEnded);
|
|
|
|
m_serverFlags = MrMailbox.getConfigInt("server_flags", 0);
|
|
|
|
m_expanded = false;
|
|
if( !MrMailbox.getConfig("mail_user", "").isEmpty()
|
|
|| !MrMailbox.getConfig("mail_server", "").isEmpty()
|
|
|| !MrMailbox.getConfig("mail_port", "").isEmpty()
|
|
|| !MrMailbox.getConfig("send_user", "").isEmpty()
|
|
|| !MrMailbox.getConfig("send_pw", "").isEmpty()
|
|
|| !MrMailbox.getConfig("send_server", "").isEmpty()
|
|
|| !MrMailbox.getConfig("send_port", "").isEmpty()
|
|
|| (m_serverFlags!=0) ) {
|
|
m_expanded = true;
|
|
}
|
|
|
|
calculateRows();
|
|
|
|
return true;
|
|
}
|
|
|
|
private void calculateRows()
|
|
{
|
|
rowCount = 0;
|
|
|
|
rowAddrHeadline = rowCount++;
|
|
rowAddr = rowCount++;
|
|
rowMailPwHeadline= rowCount++;
|
|
rowMailPw = rowCount++;
|
|
rowOpenAdvOpions = rowCount++;
|
|
|
|
if( m_expanded ) {
|
|
rowMailHeadline = rowCount++;
|
|
rowMailUser = rowCount++; // should be the first additional option, the loginname is the component, that cannot be configured automatically (if not derivable from the address)
|
|
rowMailServer = rowCount++;
|
|
rowMailPort = rowCount++;
|
|
rowMailSecurity = rowCount++;
|
|
rowBreak1 = rowCount++;
|
|
|
|
rowSendHeadline = rowCount++;
|
|
rowSendUser = rowCount++;
|
|
rowSendPw = rowCount++;
|
|
rowSendServer = rowCount++;
|
|
rowSendPort = rowCount++;
|
|
rowSendSecurity = rowCount++;
|
|
}
|
|
else {
|
|
rowMailHeadline = -1;
|
|
rowMailUser = -1;
|
|
rowMailServer = -1;
|
|
rowMailPort = -1;
|
|
rowMailSecurity = -1;
|
|
rowBreak1 = -1;
|
|
|
|
rowSendHeadline = -1;
|
|
rowSendUser = -1;
|
|
rowSendPw = -1;
|
|
rowSendServer = -1;
|
|
rowSendPort = -1;
|
|
rowSendSecurity = -1;
|
|
}
|
|
|
|
rowInfoBelowSendPw = rowCount++;
|
|
}
|
|
|
|
@Override
|
|
public void onFragmentDestroy() {
|
|
super.onFragmentDestroy();
|
|
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.configureEnded);
|
|
}
|
|
|
|
@Override
|
|
public View createView(Context context) {
|
|
|
|
// create action bar
|
|
if( !fromIntro ) {
|
|
actionBar.setBackButtonImage(R.drawable.ic_close_white);
|
|
}
|
|
|
|
actionBar.setAllowOverlayTitle(true);
|
|
actionBar.setTitle(LocaleController.getString("AccountSettings", R.string.AccountSettings));
|
|
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
|
@Override
|
|
public void onItemClick(int id) {
|
|
if (id == -1 && !fromIntro ) {
|
|
if( isModified() ) { // as we use "close/ok" buttons instead of a "back" button it is more clear what happens, however, an additional question does not disturb here
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
|
builder.setMessage(LocaleController.getString("DiscardChanges", R.string.DiscardChanges));
|
|
builder.setPositiveButton(LocaleController.getString("Yes", R.string.Yes), new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialogInterface, int i) {
|
|
finishFragment();
|
|
}
|
|
});
|
|
builder.setNegativeButton(LocaleController.getString("No", R.string.No), null);
|
|
showDialog(builder.create());
|
|
}
|
|
else {
|
|
finishFragment();
|
|
}
|
|
} else if (id == ID_DONE_BUTTON) {
|
|
saveData();
|
|
}
|
|
}
|
|
});
|
|
|
|
ActionBarMenu menu = actionBar.createMenu();
|
|
menu.addItemWithWidth(ID_DONE_BUTTON, R.drawable.ic_done, AndroidUtilities.dp(56));
|
|
|
|
// create object to hold the whole view
|
|
fragmentView = new FrameLayout(context);
|
|
FrameLayout frameLayout = (FrameLayout) fragmentView;
|
|
frameLayout.setBackgroundColor(0xfff0f0f0);
|
|
|
|
// create the main layout list
|
|
listAdapter = new ListAdapter(context);
|
|
|
|
listView = new ListView(context);
|
|
listView.setDivider(null);
|
|
listView.setDividerHeight(0);
|
|
listView.setVerticalScrollBarEnabled(false);
|
|
listView.setDrawSelectorOnTop(true);
|
|
frameLayout.addView(listView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
|
|
listView.setAdapter(listAdapter);
|
|
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
|
@Override
|
|
public void onItemClick(final AdapterView<?> adapterView, View view, final int i, long l) {
|
|
if( i==rowOpenAdvOpions )
|
|
{
|
|
m_expanded = !m_expanded;
|
|
calculateRows();
|
|
listAdapter.notifyDataSetChanged();
|
|
}
|
|
else if( i==rowMailSecurity || i==rowSendSecurity )
|
|
{
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
|
builder.setTitle(ApplicationLoader.applicationContext.getString(R.string.SecurityTitle));
|
|
builder.setItems(new CharSequence[]{
|
|
ApplicationLoader.applicationContext.getString(R.string.Automatic),
|
|
"SSL/TLS", /*1*/
|
|
"STARTTLS", /*2*/
|
|
ApplicationLoader.applicationContext.getString(R.string.Disabled) /*3*/
|
|
}, new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
if( i==rowMailSecurity ) {
|
|
m_serverFlags &= ~(MR_IMAP_SOCKET_SSL | MR_IMAP_SOCKET_STARTTLS | MR_IMAP_SOCKET_PLAIN);
|
|
switch( which ) {
|
|
case 1: m_serverFlags |= MR_IMAP_SOCKET_SSL; break;
|
|
case 2: m_serverFlags |= MR_IMAP_SOCKET_STARTTLS; break;
|
|
case 3: m_serverFlags |= MR_IMAP_SOCKET_PLAIN; break;
|
|
}
|
|
}
|
|
else if( i==rowSendSecurity ) {
|
|
m_serverFlags &= ~(MR_SMTP_SOCKET_SSL | MR_SMTP_SOCKET_STARTTLS | MR_SMTP_SOCKET_PLAIN);
|
|
switch( which ) {
|
|
case 1: m_serverFlags |= MR_SMTP_SOCKET_SSL; break;
|
|
case 2: m_serverFlags |= MR_SMTP_SOCKET_STARTTLS; break;
|
|
case 3: m_serverFlags |= MR_SMTP_SOCKET_PLAIN; break;
|
|
}
|
|
}
|
|
listView.invalidateViews();
|
|
}
|
|
});
|
|
builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null);
|
|
showDialog(builder.create());
|
|
|
|
}
|
|
}
|
|
});
|
|
|
|
return fragmentView;
|
|
}
|
|
|
|
private void saveData() {
|
|
// Warning: the widgets are created as needed and may not be present!
|
|
String v;
|
|
|
|
if( addrCell!=null) {
|
|
v = addrCell.getValue().trim();
|
|
MrMailbox.setConfig("addr", v.isEmpty() ? null : v);
|
|
}
|
|
|
|
if( mailPwCell!=null) {
|
|
v = mailPwCell.getValue().trim();
|
|
MrMailbox.setConfig("mail_pw", v.isEmpty() ? null : v);
|
|
}
|
|
|
|
if( mailServerCell!=null) {
|
|
v = mailServerCell.getValue().trim();
|
|
MrMailbox.setConfig("mail_server", v.isEmpty() ? null : v);
|
|
}
|
|
|
|
if( mailPortCell!=null ) {
|
|
v = mailPortCell.getValue().trim();
|
|
MrMailbox.setConfig("mail_port", v.isEmpty() ? null : v);
|
|
}
|
|
|
|
if( mailUserCell!=null) {
|
|
v = mailUserCell.getValue().trim();
|
|
MrMailbox.setConfig("mail_user", v.isEmpty() ? null : v);
|
|
}
|
|
|
|
if( sendServerCell!=null ) {
|
|
v = sendServerCell.getValue().trim();
|
|
MrMailbox.setConfig("send_server", v.isEmpty() ? null : v);
|
|
}
|
|
|
|
if( sendPortCell!=null ) {
|
|
v = sendPortCell.getValue().trim();
|
|
MrMailbox.setConfig("send_port", v.isEmpty() ? null : v);
|
|
}
|
|
|
|
if(sendUserCell!=null) {
|
|
v = sendUserCell.getValue().trim();
|
|
MrMailbox.setConfig("send_user", v.isEmpty() ? null : v);
|
|
}
|
|
|
|
if( sendPwCell!=null ) {
|
|
v = sendPwCell.getValue().trim();
|
|
MrMailbox.setConfig("send_pw", v.isEmpty() ? null : v);
|
|
}
|
|
|
|
MrMailbox.setConfigInt("server_flags", m_serverFlags);
|
|
|
|
// show dialog
|
|
if( progressDialog!=null ) {
|
|
progressDialog.dismiss();
|
|
progressDialog = null;
|
|
}
|
|
|
|
progressDialog = new ProgressDialog(getParentActivity());
|
|
progressDialog.setMessage(ApplicationLoader.applicationContext.getString(R.string.OneMoment));
|
|
progressDialog.setCanceledOnTouchOutside(false);
|
|
progressDialog.setCancelable(false);
|
|
progressDialog.show();
|
|
|
|
synchronized (MrMailbox.m_lastErrorLock) {
|
|
MrMailbox.m_showNextErrorAsToast = false;
|
|
}
|
|
|
|
// try to connect, this results in an MR_EVENT_CONFIGURE_ENDED resp. NotificationCenter.configureEnded event
|
|
MrMailbox.configureAndConnect();
|
|
}
|
|
|
|
@Override
|
|
public void didReceivedNotification(int id, Object... args) {
|
|
if (id == NotificationCenter.configureEnded )
|
|
{
|
|
final String errorString;
|
|
|
|
synchronized (MrMailbox.m_lastErrorLock) {
|
|
MrMailbox.m_showNextErrorAsToast = true;
|
|
errorString = MrMailbox.m_lastErrorString;
|
|
}
|
|
|
|
if( progressDialog!=null ) {
|
|
progressDialog.dismiss();
|
|
progressDialog = null;
|
|
}
|
|
|
|
if( (int)args[0]==1 ) {
|
|
if (fromIntro) {
|
|
presentFragment(new DialogsActivity(null), true);
|
|
LaunchActivity la = ((LaunchActivity) getParentActivity());
|
|
if (la != null) {
|
|
la.drawerLayoutContainer.setAllowOpenDrawer(true, false);
|
|
}
|
|
} else {
|
|
finishFragment();
|
|
}
|
|
AndroidUtilities.showDoneHint(ApplicationLoader.applicationContext);
|
|
NotificationCenter.getInstance().postNotificationName(NotificationCenter.mainUserInfoChanged);
|
|
}
|
|
else {
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
|
builder.setMessage(errorString);
|
|
builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() {
|
|
@Override
|
|
public void onClick(DialogInterface dialogInterface, int i) {
|
|
;
|
|
}
|
|
});
|
|
showDialog(builder.create());
|
|
}
|
|
}
|
|
}
|
|
|
|
private boolean isModified(){
|
|
// Warning: the widgets are created as needed and may not be present!
|
|
if( addrCell!=null && addrCell.isModified()) { return true; }
|
|
if( mailPwCell!=null && mailPwCell.isModified()) { return true; }
|
|
|
|
if( mailServerCell!=null && mailServerCell.isModified()) { return true; }
|
|
if( mailPortCell!=null && mailPortCell.isModified()) { return true; }
|
|
if( mailUserCell!=null && mailUserCell.isModified()) { return true; }
|
|
|
|
if( sendServerCell!=null && sendServerCell.isModified()) { return true; }
|
|
if( sendPortCell!=null && sendPortCell.isModified()) { return true; }
|
|
if( sendUserCell!=null && sendUserCell.isModified()) { return true; }
|
|
if( sendPwCell!=null && sendPwCell.isModified()) { return true; }
|
|
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void onTransitionAnimationEnd(boolean isOpen, boolean backward) {
|
|
if (isOpen && addrCell!=null) {
|
|
if(addrCell.getValue().isEmpty()) {
|
|
addrCell.getEditTextView().requestFocus();
|
|
AndroidUtilities.showKeyboard(addrCell.getEditTextView());
|
|
}
|
|
}
|
|
}
|
|
|
|
private class ListAdapter extends BaseFragmentAdapter {
|
|
private Context mContext;
|
|
|
|
public ListAdapter(Context context) {
|
|
mContext = context;
|
|
}
|
|
|
|
@Override
|
|
public boolean areAllItemsEnabled() {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean isEnabled(int i) {
|
|
return !(i==rowAddrHeadline || i==rowMailPwHeadline || i== rowMailHeadline || i== rowBreak1 || i== rowSendHeadline || i==rowInfoBelowSendPw);
|
|
}
|
|
|
|
@Override
|
|
public int getCount() {
|
|
return rowCount;
|
|
}
|
|
|
|
@Override
|
|
public Object getItem(int i) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public long getItemId(int i) {
|
|
return i;
|
|
}
|
|
|
|
@Override
|
|
public boolean hasStableIds() {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public View getView(int i, View view, ViewGroup viewGroup) {
|
|
int type = getItemViewType__(i);
|
|
if (type == ROWTYPE_TEXT_ENTRY) {
|
|
if (i == rowAddr) {
|
|
if( addrCell==null) {
|
|
addrCell = new EditTextCell(mContext, false);
|
|
addrCell.setValueHintAndLabel(MrMailbox.getConfig("addr", ""),
|
|
"", "", false);
|
|
addrCell.getEditTextView().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
|
|
}
|
|
view = addrCell;
|
|
}
|
|
else if (i == rowMailPw) {
|
|
if( mailPwCell==null) {
|
|
mailPwCell = new EditTextCell(mContext, false);
|
|
mailPwCell.setValueHintAndLabel(MrMailbox.getConfig("mail_pw", ""),
|
|
"", "", false);
|
|
mailPwCell.getEditTextView().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_PASSWORD);
|
|
}
|
|
view = mailPwCell;
|
|
}
|
|
else if (i == rowMailServer) {
|
|
if( mailServerCell==null) {
|
|
mailServerCell = new EditTextCell(mContext);
|
|
mailServerCell.setValueHintAndLabel(MrMailbox.getConfig("mail_server", ""),
|
|
ApplicationLoader.applicationContext.getString(R.string.Automatic), LocaleController.getString("ImapServer", R.string.ImapServer), false);
|
|
mailServerCell.getEditTextView().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI);
|
|
}
|
|
view = mailServerCell;
|
|
}
|
|
else if (i == rowMailPort) {
|
|
if( mailPortCell==null) {
|
|
mailPortCell = new EditTextCell(mContext);
|
|
mailPortCell.setValueHintAndLabel(MrMailbox.getConfig("mail_port", ""),
|
|
ApplicationLoader.applicationContext.getString(R.string.Automatic), LocaleController.getString("ImapPort", R.string.ImapPort), false);
|
|
mailPortCell.getEditTextView().setInputType(InputType.TYPE_CLASS_NUMBER);
|
|
}
|
|
view = mailPortCell;
|
|
}
|
|
else if (i == rowMailUser) {
|
|
if( mailUserCell==null) {
|
|
mailUserCell = new EditTextCell(mContext);
|
|
mailUserCell.setValueHintAndLabel(MrMailbox.getConfig("mail_user", ""),
|
|
ApplicationLoader.applicationContext.getString(R.string.Automatic), LocaleController.getString("ImapLoginname", R.string.ImapLoginname), false);
|
|
}
|
|
view = mailUserCell;
|
|
}
|
|
else if (i == rowSendServer) {
|
|
if( sendServerCell==null) {
|
|
sendServerCell = new EditTextCell(mContext);
|
|
sendServerCell.setValueHintAndLabel(MrMailbox.getConfig("send_server", ""),
|
|
ApplicationLoader.applicationContext.getString(R.string.Automatic), LocaleController.getString("SmtpServer", R.string.SmtpServer), false);
|
|
sendServerCell.getEditTextView().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI);
|
|
}
|
|
view = sendServerCell;
|
|
}
|
|
else if (i == rowSendPort) {
|
|
if( sendPortCell==null) {
|
|
sendPortCell = new EditTextCell(mContext);
|
|
sendPortCell.setValueHintAndLabel(MrMailbox.getConfig("send_port", ""),
|
|
ApplicationLoader.applicationContext.getString(R.string.Automatic), LocaleController.getString("SmtpPort", R.string.SmtpPort), false);
|
|
sendPortCell.getEditTextView().setInputType(InputType.TYPE_CLASS_NUMBER);
|
|
}
|
|
view = sendPortCell;
|
|
}
|
|
else if (i == rowSendUser) {
|
|
if( sendUserCell==null) {
|
|
sendUserCell = new EditTextCell(mContext);
|
|
sendUserCell.setValueHintAndLabel(MrMailbox.getConfig("send_user", ""),
|
|
ApplicationLoader.applicationContext.getString(R.string.Automatic), LocaleController.getString("SmtpLoginname", R.string.SmtpLoginname), false);
|
|
}
|
|
view = sendUserCell;
|
|
}
|
|
else if (i == rowSendPw) {
|
|
if( sendPwCell==null) {
|
|
sendPwCell = new EditTextCell(mContext);
|
|
sendPwCell.setValueHintAndLabel(MrMailbox.getConfig("send_pw", ""),
|
|
LocaleController.getString("FromAbove", R.string.FromAbove), LocaleController.getString("SmtpPassword", R.string.SmtpPassword), false);
|
|
sendPwCell.getEditTextView().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_PASSWORD);
|
|
}
|
|
view = sendPwCell;
|
|
}
|
|
}
|
|
else if (type ==ROWTYPE_TEXT_FLAGS) {
|
|
if (view == null) {
|
|
view = new TextSettingsCell(mContext);
|
|
view.setBackgroundColor(0xffffffff);
|
|
}
|
|
TextSettingsCell textCell = (TextSettingsCell) view;
|
|
String value = ApplicationLoader.applicationContext.getString(R.string.Automatic);
|
|
if( i == rowMailSecurity ) {
|
|
if( (m_serverFlags&MR_IMAP_SOCKET_SSL)!=0 ) { value = "SSL/TLS"; }
|
|
if( (m_serverFlags&MR_IMAP_SOCKET_STARTTLS)!=0 ) { value = "STARTTLS"; }
|
|
if( (m_serverFlags&MR_IMAP_SOCKET_PLAIN)!=0 ) { value = ApplicationLoader.applicationContext.getString(R.string.Disabled); }
|
|
}
|
|
else if( i == rowSendSecurity ) {
|
|
if( (m_serverFlags&MR_SMTP_SOCKET_SSL)!=0 ) { value = "SSL/TLS"; }
|
|
if( (m_serverFlags&MR_SMTP_SOCKET_STARTTLS)!=0 ) { value = "STARTTLS"; }
|
|
if( (m_serverFlags&MR_SMTP_SOCKET_PLAIN)!=0 ) { value = ApplicationLoader.applicationContext.getString(R.string.Disabled); }
|
|
}
|
|
textCell.setTextAndValue(ApplicationLoader.applicationContext.getString(R.string.SecurityTitle), value, false);
|
|
}
|
|
else if (type == ROWTYPE_HEADLINE) {
|
|
if (view == null) {
|
|
view = new HeaderCell(mContext);
|
|
view.setBackgroundColor(0xffffffff);
|
|
}
|
|
if (i == rowAddrHeadline) {
|
|
((HeaderCell) view).setText(ApplicationLoader.applicationContext.getString(R.string.EmailAddress));
|
|
} else if (i == rowMailPwHeadline) {
|
|
((HeaderCell) view).setText(ApplicationLoader.applicationContext.getString(R.string.Password));
|
|
} else if (i == rowMailHeadline) {
|
|
((HeaderCell) view).setText(LocaleController.getString("InboxHeadline", R.string.InboxHeadline));
|
|
} else if (i == rowSendHeadline) {
|
|
((HeaderCell) view).setText(LocaleController.getString("OutboxHeadline", R.string.OutboxHeadline));
|
|
}
|
|
}
|
|
else if (type == ROWTYPE_SHADOW_BREAK) {
|
|
if (view == null) {
|
|
view = new ShadowSectionCell(mContext);
|
|
}
|
|
}
|
|
else if (type == ROWTYPE_INFO) {
|
|
if (view == null) {
|
|
view = new TextInfoCell(mContext);
|
|
}
|
|
if( i== rowOpenAdvOpions) {
|
|
((TextInfoCell) view).setText(LocaleController.getString("MyAccoutExplain", R.string.MyAccountExplain),
|
|
m_expanded? " \u2212" /*minus-sign*/ : "+", m_expanded /*draw bottom border?*/);
|
|
view.setBackgroundResource(m_expanded? R.drawable.greydivider : R.drawable.greydivider_bottom); // has shadow top+bottom
|
|
}
|
|
else if( i==rowInfoBelowSendPw) {
|
|
((TextInfoCell) view).setText(AndroidUtilities.replaceTags(LocaleController.getString("MyAccountExplain2", R.string.MyAccountExplain2)));
|
|
if( m_expanded ) {
|
|
view.setBackgroundResource(R.drawable.greydivider_bottom);
|
|
}
|
|
}
|
|
}
|
|
return view;
|
|
}
|
|
|
|
@Override
|
|
public int getItemViewType(int i) {
|
|
return IGNORE_ITEM_VIEW_TYPE;
|
|
}
|
|
|
|
private int getItemViewType__(int i) {
|
|
if (i == rowAddr || i==rowMailPw || i==rowMailServer || i==rowMailPort|| i==rowMailUser
|
|
|| i==rowSendServer || i==rowSendPort || i==rowSendUser || i== rowSendPw ) {
|
|
return ROWTYPE_TEXT_ENTRY;
|
|
}
|
|
else if( i==rowAddrHeadline || i==rowMailPwHeadline || i== rowMailHeadline || i== rowSendHeadline ) {
|
|
return ROWTYPE_HEADLINE;
|
|
}
|
|
else if( i== rowBreak1 ) {
|
|
return ROWTYPE_SHADOW_BREAK;
|
|
}
|
|
else if( i==rowMailSecurity || i==rowSendSecurity) {
|
|
return ROWTYPE_TEXT_FLAGS;
|
|
}
|
|
return ROWTYPE_INFO;
|
|
}
|
|
|
|
@Override
|
|
public int getViewTypeCount() {
|
|
return 1; /* SIC! internally, we ingnore the type, each row has its own type--otherwise text entry stuff would not work */
|
|
}
|
|
|
|
@Override
|
|
public boolean isEmpty() {
|
|
return false;
|
|
}
|
|
}
|
|
}
|