mirror of
https://github.com/moparisthebest/k-9
synced 2024-11-24 02:12:15 -05:00
added code for inline delete buttons
This commit is contained in:
parent
9cac2cd5b7
commit
695aa42347
@ -25,7 +25,9 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.View.OnKeyListener;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
|
import android.view.View.OnFocusChangeListener;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
import android.view.ContextMenu.ContextMenuInfo;
|
import android.view.ContextMenu.ContextMenuInfo;
|
||||||
@ -34,6 +36,8 @@ import android.widget.ListView;
|
|||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import android.widget.ImageButton;
|
||||||
|
import android.widget.Button;
|
||||||
import android.widget.CheckBox;
|
import android.widget.CheckBox;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
import android.widget.AdapterView.AdapterContextMenuInfo;
|
import android.widget.AdapterView.AdapterContextMenuInfo;
|
||||||
@ -545,6 +549,53 @@ public class MessageList extends K9ListActivity
|
|||||||
|
|
||||||
switch (keyCode)
|
switch (keyCode)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
case KeyEvent.KEYCODE_DPAD_LEFT:
|
||||||
|
{
|
||||||
|
View v = mListView.getSelectedView();
|
||||||
|
ViewGroup vg = (ViewGroup) v;
|
||||||
|
vg.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
|
||||||
|
ImageButton delete = (ImageButton) v.findViewById(R.id.delete);
|
||||||
|
if (delete.getVisibility() == View.GONE)
|
||||||
|
{
|
||||||
|
delete.setVisibility(View.VISIBLE);
|
||||||
|
delete.setFocusable(true);
|
||||||
|
delete.setFocusableInTouchMode(true);
|
||||||
|
if (delete.requestFocus())
|
||||||
|
{
|
||||||
|
v.setFocusable(false);
|
||||||
|
Log.v(Email.LOG_TAG, "is in touch mode");
|
||||||
|
}
|
||||||
|
Button flagged = (Button) v.findViewById(R.id.flagged);
|
||||||
|
flagged.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Delete was already visible
|
||||||
|
delete.requestFocus();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case KeyEvent.KEYCODE_DPAD_RIGHT:
|
||||||
|
{
|
||||||
|
View v = mListView.getSelectedView();
|
||||||
|
Button flagged = (Button) v.findViewById(R.id.flagged);
|
||||||
|
if (flagged.getVisibility() == View.GONE)
|
||||||
|
{
|
||||||
|
ImageButton delete = (ImageButton) v.findViewById(R.id.delete);
|
||||||
|
delete.setVisibility(View.GONE);
|
||||||
|
flagged.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// flagged was already visible. give it focus
|
||||||
|
flagged.requestFocus();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
case KeyEvent.KEYCODE_C:
|
case KeyEvent.KEYCODE_C:
|
||||||
{
|
{
|
||||||
onCompose();
|
onCompose();
|
||||||
@ -585,6 +636,8 @@ public class MessageList extends K9ListActivity
|
|||||||
{
|
{
|
||||||
MessageInfoHolder message = (MessageInfoHolder) mAdapter.getItem(position);
|
MessageInfoHolder message = (MessageInfoHolder) mAdapter.getItem(position);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (message != null)
|
if (message != null)
|
||||||
{
|
{
|
||||||
switch (keyCode)
|
switch (keyCode)
|
||||||
@ -778,8 +831,8 @@ public class MessageList extends K9ListActivity
|
|||||||
}
|
}
|
||||||
|
|
||||||
mAdapter.removeMessage(holder);
|
mAdapter.removeMessage(holder);
|
||||||
mListView.setSelection(position);
|
|
||||||
MessagingController.getInstance(getApplication()).deleteMessage(mAccount, holder.message.getFolder().getName(), holder.message, null);
|
MessagingController.getInstance(getApplication()).deleteMessage(mAccount, holder.message.getFolder().getName(), holder.message, null);
|
||||||
|
mListView.setSelection(position);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1681,6 +1734,34 @@ public class MessageList extends K9ListActivity
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
holder.delete = (ImageButton) view.findViewById(R.id.delete);
|
||||||
|
holder.delete.setOnClickListener(new OnClickListener()
|
||||||
|
{
|
||||||
|
public void onClick(View v)
|
||||||
|
{
|
||||||
|
// Perform action on clicks
|
||||||
|
MessageInfoHolder message = (MessageInfoHolder) getItem((Integer)v.getTag());
|
||||||
|
onDelete(message, (Integer)v.getTag());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
holder.delete.setOnFocusChangeListener(new OnFocusChangeListener()
|
||||||
|
{
|
||||||
|
public void onFocusChange(View v, boolean x)
|
||||||
|
{
|
||||||
|
if (x)
|
||||||
|
{
|
||||||
|
Log.v(Email.LOG_TAG, "Focus! ");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Log.v(Email.LOG_TAG, "unfocus! ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (message != null)
|
if (message != null)
|
||||||
{
|
{
|
||||||
holder.chip.getBackground().setAlpha(message.read ? 0 : 255);
|
holder.chip.getBackground().setAlpha(message.read ? 0 : 255);
|
||||||
@ -1688,7 +1769,16 @@ public class MessageList extends K9ListActivity
|
|||||||
|
|
||||||
int subjectColor = holder.from.getCurrentTextColor(); // Get from another field that never changes color
|
int subjectColor = holder.from.getCurrentTextColor(); // Get from another field that never changes color
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
holder.delete.setVisibility(View.GONE);
|
||||||
|
holder.flagged.setVisibility(View.VISIBLE);
|
||||||
|
// XXX TODO there has to be some way to walk our view hierarchy and get this
|
||||||
holder.flagged.setTag((Integer)position);
|
holder.flagged.setTag((Integer)position);
|
||||||
|
holder.delete.setTag((Integer)position);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (message.flagged)
|
if (message.flagged)
|
||||||
{
|
{
|
||||||
@ -2008,6 +2098,7 @@ public class MessageList extends K9ListActivity
|
|||||||
public TextView from;
|
public TextView from;
|
||||||
public TextView date;
|
public TextView date;
|
||||||
public CheckBox flagged;
|
public CheckBox flagged;
|
||||||
|
public ImageButton delete;
|
||||||
public View chip;
|
public View chip;
|
||||||
public CheckBox selected;
|
public CheckBox selected;
|
||||||
public int position = -1;
|
public int position = -1;
|
||||||
|
Loading…
Reference in New Issue
Block a user