/*
* Copyright (C) 2015 Actor LLC. <https://actor.im>
*/
package im.actor.runtime.generic.mvvm;
// Disabling Bounds checks for speeding up calculations
/*-[
#define J2OBJC_DISABLE_ARRAY_BOUND_CHECKS 1
]-*/
class DisplayWindow {
private boolean isForwardLoading = false;
private boolean isBackwardLoading = false;
private boolean isInited = false;
private boolean isBackwardLoaded = false;
private Long currentBackwardHead;
private boolean isForwardCompleted = false;
private Long currentForwardHead;
public synchronized Long getCurrentBackwardHead() {
return currentBackwardHead;
}
public synchronized Long getCurrentForwardHead() {
return currentForwardHead;
}
public synchronized boolean isInited() {
return isInited;
}
public boolean isForwardCompleted() {
return isForwardCompleted;
}
public boolean isBackwardLoaded() {
return isBackwardLoaded;
}
public synchronized boolean startForwardLoading() {
if (!isInited) {
return false;
}
if (isForwardCompleted) {
return false;
}
if (isForwardLoading) {
return false;
}
isForwardLoading = true;
return true;
}
public synchronized void completeForwardLoading() {
isForwardLoading = false;
}
public synchronized void onForwardCompleted() {
isForwardCompleted = true;
currentForwardHead = null;
}
public synchronized void onForwardSliceLoaded(Long tail) {
currentForwardHead = tail;
}
public synchronized boolean startBackwardLoading() {
if (!isInited) {
return false;
}
if (isBackwardLoaded) {
return false;
}
if (isBackwardLoading) {
return false;
}
isBackwardLoading = true;
return true;
}
public synchronized void endBackwardLoading() {
isBackwardLoading = false;
}
public synchronized void onBackwardCompleted() {
isBackwardLoaded = true;
currentBackwardHead = null;
}
public synchronized void onBackwardSliceLoaded(Long head) {
currentBackwardHead = head;
}
public synchronized void startInitCenter() {
isInited = false;
isForwardCompleted = false;
isForwardLoading = false;
isBackwardLoading = false;
isBackwardLoaded = false;
currentBackwardHead = null;
currentForwardHead = null;
}
public synchronized void completeInitCenter(Long forwardHead, Long backwardHead) {
isInited = true;
currentForwardHead = forwardHead;
currentBackwardHead = backwardHead;
}
public synchronized void emptyInit() {
isInited = true;
currentBackwardHead = null;
currentForwardHead = null;
isForwardCompleted = true;
isForwardLoading = false;
isBackwardLoaded = true;
isBackwardLoading = false;
}
public synchronized void startInitForward() {
isInited = false;
isForwardCompleted = false;
isForwardLoading = false;
isBackwardLoading = false;
isBackwardLoaded = true;
currentBackwardHead = null;
currentForwardHead = null;
}
public synchronized void completeInitForward(Long tail) {
isInited = true;
currentForwardHead = tail;
}
public synchronized void startInitBackward() {
isInited = false;
isForwardCompleted = true;
isForwardLoading = false;
isBackwardLoading = false;
isBackwardLoaded = false;
currentBackwardHead = null;
currentForwardHead = null;
}
public synchronized void completeInitBackward(Long head) {
isInited = true;
currentBackwardHead = head;
}
}