Replaced listviews by spinners

This commit is contained in:
M66B 2019-09-28 09:35:07 +02:00
parent 2d7fc092a6
commit 478cde3e0e
4 changed files with 65 additions and 61 deletions

View File

@ -82,7 +82,6 @@ import android.widget.CompoundButton;
import android.widget.EditText; import android.widget.EditText;
import android.widget.FilterQueryProvider; import android.widget.FilterQueryProvider;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.MultiAutoCompleteTextView; import android.widget.MultiAutoCompleteTextView;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
@ -146,7 +145,9 @@ import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress; import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessage;
import static android.app.Activity.RESULT_CANCELED;
import static android.app.Activity.RESULT_OK; import static android.app.Activity.RESULT_OK;
import static android.widget.AdapterView.INVALID_POSITION;
public class FragmentCompose extends FragmentBase { public class FragmentCompose extends FragmentBase {
private enum State {NONE, LOADING, LOADED} private enum State {NONE, LOADING, LOADED}
@ -3334,7 +3335,7 @@ public class FragmentCompose extends FragmentBase {
final long working = getArguments().getLong("working"); final long working = getArguments().getLong("working");
View dview = LayoutInflater.from(getContext()).inflate(R.layout.dialog_contact_group, null); View dview = LayoutInflater.from(getContext()).inflate(R.layout.dialog_contact_group, null);
final ListView lvGroup = dview.findViewById(R.id.lvGroup); final Spinner spGroup = dview.findViewById(R.id.spGroup);
final Spinner spTarget = dview.findViewById(R.id.spTarget); final Spinner spTarget = dview.findViewById(R.id.spTarget);
Cursor groups = getContext().getContentResolver().query( Cursor groups = getContext().getContentResolver().query(
@ -3350,26 +3351,23 @@ public class FragmentCompose extends FragmentBase {
ContactsContract.Groups.TITLE ContactsContract.Groups.TITLE
); );
final SimpleCursorAdapter adapter = new SimpleCursorAdapter( SimpleCursorAdapter adapter = new SimpleCursorAdapter(
getContext(), getContext(),
R.layout.spinner_item1_dropdown, R.layout.spinner_item1_dropdown,
groups, groups,
new String[]{ContactsContract.Groups.TITLE}, new String[]{ContactsContract.Groups.TITLE},
new int[]{android.R.id.text1}, new int[]{android.R.id.text1},
0); 0);
spGroup.setAdapter(adapter);
lvGroup.setAdapter(adapter); return new AlertDialog.Builder(getContext())
final AlertDialog dialog = new AlertDialog.Builder(getContext())
.setView(dview) .setView(dview)
.setNegativeButton(android.R.string.cancel, null) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
.create();
lvGroup.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { public void onClick(DialogInterface dialog, int which) {
int target = spTarget.getSelectedItemPosition(); int target = spTarget.getSelectedItemPosition();
Cursor cursor = (Cursor) adapter.getItem(position); Cursor cursor = (Cursor) spGroup.getSelectedItem();
if (target != INVALID_POSITION && cursor != null) {
long group = cursor.getLong(0); long group = cursor.getLong(0);
Bundle args = getArguments(); Bundle args = getArguments();
@ -3377,12 +3375,13 @@ public class FragmentCompose extends FragmentBase {
args.putInt("target", target); args.putInt("target", target);
args.putLong("group", group); args.putLong("group", group);
sendResult(Activity.RESULT_OK); sendResult(RESULT_OK);
dismiss(); } else
sendResult(RESULT_CANCELED);
} }
}); })
.setNegativeButton(android.R.string.cancel, null)
return dialog; .create();
} }
} }

View File

@ -66,14 +66,13 @@ import android.view.animation.TranslateAnimation;
import android.webkit.WebSettings; import android.webkit.WebSettings;
import android.webkit.WebView; import android.webkit.WebView;
import android.webkit.WebViewClient; import android.webkit.WebViewClient;
import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.Button; import android.widget.Button;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.CompoundButton; import android.widget.CompoundButton;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.SeekBar; import android.widget.SeekBar;
import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
@ -4642,27 +4641,12 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
@Override @Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
View dview = LayoutInflater.from(getContext()).inflate(R.layout.dialog_identity, null); View dview = LayoutInflater.from(getContext()).inflate(R.layout.dialog_identity, null);
ListView lvIdentity = dview.findViewById(R.id.lvIdentity); final Spinner spIdentity = dview.findViewById(R.id.spIdentity);
CheckBox cbNotAgain = dview.findViewById(R.id.cbNotAgain); final CheckBox cbNotAgain = dview.findViewById(R.id.cbNotAgain);
Button btnFix = dview.findViewById(R.id.btnFix); final Button btnFix = dview.findViewById(R.id.btnFix);
Group grpIdentities = dview.findViewById(R.id.grpIdentities); final Group grpIdentities = dview.findViewById(R.id.grpIdentities);
Group grpNoIdentities = dview.findViewById(R.id.grpNoIdentities); final Group grpNoIdentities = dview.findViewById(R.id.grpNoIdentities);
ContentLoadingProgressBar pbWait = dview.findViewById(R.id.pbWait); final ContentLoadingProgressBar pbWait = dview.findViewById(R.id.pbWait);
lvIdentity.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TupleIdentityEx identity = (TupleIdentityEx) lvIdentity.getAdapter().getItem(position);
startActivity(new Intent(getContext(), ActivityCompose.class)
.putExtra("action", "new")
.putExtra("account", identity.account)
.putExtra("identity", identity.id)
);
dismiss();
}
});
cbNotAgain.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { cbNotAgain.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override @Override
@ -4677,7 +4661,6 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
public void onClick(View v) { public void onClick(View v) {
startActivity(new Intent(getContext(), ActivitySetup.class)); startActivity(new Intent(getContext(), ActivitySetup.class));
getActivity().finish(); getActivity().finish();
dismiss(); dismiss();
} }
}); });
@ -4705,7 +4688,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
@Override @Override
protected void onExecuted(Bundle args, List<TupleIdentityEx> identities) { protected void onExecuted(Bundle args, List<TupleIdentityEx> identities) {
AdapterIdentitySelect iadapter = new AdapterIdentitySelect(getContext(), identities); AdapterIdentitySelect iadapter = new AdapterIdentitySelect(getContext(), identities);
lvIdentity.setAdapter(iadapter); spIdentity.setAdapter(iadapter);
grpIdentities.setVisibility(identities.size() > 0 ? View.VISIBLE : View.GONE); grpIdentities.setVisibility(identities.size() > 0 ? View.VISIBLE : View.GONE);
grpNoIdentities.setVisibility(identities.size() > 0 ? View.GONE : View.VISIBLE); grpNoIdentities.setVisibility(identities.size() > 0 ? View.GONE : View.VISIBLE);
@ -4719,6 +4702,18 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
return new AlertDialog.Builder(getContext()) return new AlertDialog.Builder(getContext())
.setView(dview) .setView(dview)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
TupleIdentityEx identity = (TupleIdentityEx) spIdentity.getSelectedItem();
if (identity != null)
startActivity(new Intent(getContext(), ActivityCompose.class)
.putExtra("action", "new")
.putExtra("account", identity.account)
.putExtra("identity", identity.id)
);
}
})
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.create(); .create();
} }

View File

@ -3,20 +3,29 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="12dp"> android:padding="24dp">
<TextView
android:id="@+id/tvGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title_insert_contact_group"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Spinner <Spinner
android:id="@+id/spTarget" android:id="@+id/spTarget"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:layout_marginTop="24dp"
android:entries="@array/targetNames" android:entries="@array/targetNames"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toBottomOf="@id/tvGroup" />
<ListView <Spinner
android:id="@+id/lvGroup" android:id="@+id/spGroup"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"

View File

@ -25,11 +25,12 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvIdentity" /> app:layout_constraintTop_toBottomOf="@id/tvIdentity" />
<ListView <Spinner
android:id="@+id/lvIdentity" android:id="@+id/spIdentity"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="180dp" android:layout_height="wrap_content"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/pbWait" /> app:layout_constraintTop_toBottomOf="@id/pbWait" />
@ -41,7 +42,7 @@
android:text="@string/title_no_ask_again" android:text="@string/title_no_ask_again"
android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/lvIdentity" /> app:layout_constraintTop_toBottomOf="@id/spIdentity" />
<TextView <TextView
android:id="@+id/tvNoIdenties" android:id="@+id/tvNoIdenties"
@ -66,7 +67,7 @@
android:id="@+id/grpIdentities" android:id="@+id/grpIdentities"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
app:constraint_referenced_ids="lvIdentity,cbNotAgain" /> app:constraint_referenced_ids="spIdentity,cbNotAgain" />
<androidx.constraintlayout.widget.Group <androidx.constraintlayout.widget.Group
android:id="@+id/grpNoIdentities" android:id="@+id/grpNoIdentities"