diff --git a/Clover/app/src/main/java/org/floens/chan/core/manager/ThreadManager.java b/Clover/app/src/main/java/org/floens/chan/core/manager/ThreadManager.java index 7fe19dd9..eca7d932 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/manager/ThreadManager.java +++ b/Clover/app/src/main/java/org/floens/chan/core/manager/ThreadManager.java @@ -190,6 +190,12 @@ public class ThreadManager implements Loader.LoaderListener { lastPost = result.get(result.size() - 1).no; } + // TODO: fix hack + Pin pin = ChanApplication.getWatchManager().findPinByLoadable(loader.getLoadable()); + if (pin != null && pin.opPost == null && result.size() > 0) { + pin.opPost = result.get(0); + } + threadManagerListener.onThreadLoaded(result, append); } diff --git a/Clover/app/src/main/java/org/floens/chan/core/watch/PinWatcher.java b/Clover/app/src/main/java/org/floens/chan/core/watch/PinWatcher.java index 704d72f9..67a3ed7e 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/watch/PinWatcher.java +++ b/Clover/app/src/main/java/org/floens/chan/core/watch/PinWatcher.java @@ -129,6 +129,7 @@ public class PinWatcher implements Loader.LoaderListener { public void onData(List result, boolean append) { pin.isError = false; + // TODO: fix hack if (pin.opPost == null && result.size() > 0) { pin.opPost = result.get(0); } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/SwipeDismissListViewTouchListener.java b/Clover/app/src/main/java/org/floens/chan/ui/SwipeDismissListViewTouchListener.java index cb122ace..bf06cf50 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/SwipeDismissListViewTouchListener.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/SwipeDismissListViewTouchListener.java @@ -189,6 +189,8 @@ public class SwipeDismissListViewTouchListener implements View.OnTouchListener { mViewWidth = mListView.getWidth(); } + mListView.requestDisallowInterceptTouchEvent(true); + switch (motionEvent.getActionMasked()) { case MotionEvent.ACTION_DOWN: { if (mPaused) { diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/BaseActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/BaseActivity.java index 3cd6c57a..6d402a56 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/BaseActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/BaseActivity.java @@ -37,6 +37,7 @@ import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemLongClickListener; @@ -173,7 +174,7 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene if (post == null) return false; - changePinTitle(post); + onPinLongPress(post); return true; } @@ -195,10 +196,9 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene } ); - touchListener.setSlop((int) (touchListener.getSlop() * 0.4f)); - pinDrawerView.setOnTouchListener(touchListener); pinDrawerView.setOnScrollListener(touchListener.makeScrollListener()); + pinDrawerView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); } @Override @@ -238,32 +238,45 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene ChanApplication.getWatchManager().updatePin(pin); } - private void changePinTitle(final Pin pin) { - final EditText text = new EditText(this); - text.setSingleLine(); - text.setText(pin.loadable.title); - text.setSelectAllOnFocus(true); - - AlertDialog dialog = new AlertDialog.Builder(this) - .setPositiveButton(R.string.change, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface d, int which) { - String value = text.getText().toString(); - - if (!TextUtils.isEmpty(value)) { - pin.loadable.title = value; - updatePin(pin); - } - } - }).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface d, int which) { - } - }).setTitle(R.string.drawer_pinned_change_title).setView(text).create(); - - Utils.requestKeyboardFocus(dialog, text); - - dialog.show(); + private void onPinLongPress(final Pin pin) { + new AlertDialog.Builder(this) + .setNegativeButton(R.string.drawer_pinned_delete, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + // Delete pin + removePin(pin); + } + }).setPositiveButton(R.string.drawer_pinned_change_title, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + // Change pin title + final EditText text = new EditText(BaseActivity.this); + text.setSingleLine(); + text.setText(pin.loadable.title); + text.setSelectAllOnFocus(true); + + AlertDialog titleDialog = new AlertDialog.Builder(BaseActivity.this) + .setPositiveButton(R.string.change, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface d, int which) { + String value = text.getText().toString(); + + if (!TextUtils.isEmpty(value)) { + pin.loadable.title = value; + updatePin(pin); + } + } + }).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface d, int which) { + } + }).setTitle(R.string.drawer_pinned_change_title).setView(text).create(); + + Utils.requestKeyboardFocus(titleDialog, text); + + titleDialog.show(); + } + }).show(); } @Override diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/BoardActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/BoardActivity.java index f8ab448c..ac30861c 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/BoardActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/BoardActivity.java @@ -231,6 +231,7 @@ public class BoardActivity extends BaseActivity implements AdapterView.OnItemSel threadLoadable.generateTitle(posts.get(0)); updateActionBarState(); } + pinnedAdapter.notifyDataSetChanged(); } @Override diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/BoardEditor.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/BoardEditor.java index 4067a94f..09656a3e 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/BoardEditor.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/BoardEditor.java @@ -33,6 +33,7 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; +import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Filter; @@ -126,6 +127,28 @@ public class BoardEditor extends Activity { listView.setOnScrollListener(touchListener.makeScrollListener()); + listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { + @Override + public boolean onItemLongClick(AdapterView parent, View view, final int position, long id) { + new AlertDialog.Builder(BoardEditor.this) + .setNegativeButton(R.string.cancel, null) + .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + if (position >= 0 && position < adapter.getCount()) { + Board b = adapter.getItem(position); + adapter.remove(b); + b.saved = false; + adapter.notifyDataSetChanged(); + } + } + }) + .setMessage(R.string.board_delete) + .show(); + return true; + } + }); + setContentView(listView); } diff --git a/Clover/app/src/main/res/values/strings.xml b/Clover/app/src/main/res/values/strings.xml index 969db671..1a005065 100644 --- a/Clover/app/src/main/res/values/strings.xml +++ b/Clover/app/src/main/res/values/strings.xml @@ -69,10 +69,12 @@ along with this program. If not, see . Unknown board code The board with code CODE is not known. Press OK to add it anyway. Show filler + Remove board? Open drawer Close drawer Pinned threads + Delete pin Edit title reply