Save the order of pins

filtering
Floens 10 years ago
parent 20ca6af6d1
commit 35a37ab09d
  1. 10
      Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java
  2. 3
      Clover/app/src/main/java/org/floens/chan/core/model/Pin.java
  3. 10
      Clover/app/src/main/java/org/floens/chan/database/DatabaseHelper.java
  4. 17
      Clover/app/src/main/java/org/floens/chan/ui/adapter/PinAdapter.java
  5. 3
      docs/database.txt

@ -31,6 +31,7 @@ import org.floens.chan.utils.Logger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@ -43,6 +44,13 @@ public class WatchManager {
private static final String TAG = "WatchManager";
private static final int FOREGROUND_TIME = 5;
private static final Comparator<Pin> SORT_PINS = new Comparator<Pin>() {
@Override
public int compare(Pin lhs, Pin rhs) {
return lhs.order - rhs.order;
}
};
private final Context context;
private final List<Pin> pins;
private ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
@ -52,6 +60,7 @@ public class WatchManager {
this.context = context;
pins = Chan.getDatabaseManager().getPinned();
Collections.sort(pins, SORT_PINS);
EventBus.getDefault().register(this);
@ -121,6 +130,7 @@ public class WatchManager {
}
}
pin.order = pins.size();
pins.add(pin);
Chan.getDatabaseManager().addPin(pin);

@ -51,6 +51,9 @@ public class Pin {
@DatabaseField
public String thumbnailUrl = null;
@DatabaseField
public int order = -1;
private PinWatcher pinWatcher;
public int getNewPostCount() {

@ -40,7 +40,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String TAG = "DatabaseHelper";
private static final String DATABASE_NAME = "ChanDB";
private static final int DATABASE_VERSION = 13;
private static final int DATABASE_VERSION = 14;
public Dao<Pin, Integer> pinDao;
public Dao<Loadable, Integer> loadableDao;
@ -127,6 +127,14 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
e.printStackTrace();
}
}
if (oldVersion < 14) {
try {
pinDao.executeRawNoArgs("ALTER TABLE pin ADD COLUMN \"order\" INTEGER;");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void reset() {

@ -134,19 +134,12 @@ public class PinAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> im
public void onPinAdded(Pin pin) {
pins.add(pin);
notifyItemInserted(pins.size() - 1 + PIN_OFFSET);
notifyDataSetChanged();
}
public void onPinRemoved(Pin pin) {
// TODO: this is a workaround for recyclerview crashing when the last item is removed, remove this when it is fixed
if (pins.size() == 1) {
pins.remove(pin);
notifyDataSetChanged();
} else {
int location = pins.indexOf(pin);
pins.remove(pin);
notifyItemRemoved(location + PIN_OFFSET);
}
pins.remove(pin);
notifyDataSetChanged();
}
public void onPinChanged(RecyclerView recyclerView, Pin pin) {
@ -189,6 +182,10 @@ public class PinAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> im
@Override
public void movingDone() {
for (int i = 0; i < pins.size(); i++) {
Pin pin = pins.get(i);
pin.order = i;
}
}
public void updatePinViewHolder(PinViewHolder holder, Pin pin) {

@ -33,3 +33,6 @@ Changes in version 13:
ALTER TABLE pin ADD COLUMN isError SMALLINT;
ALTER TABLE board ADD COLUMN thumbnailUrl VARCHAR;
Changes in version 14:
ALTER TABLE pin ADD COLUMN order INTEGER;

Loading…
Cancel
Save