updateProgress(picture, STATE_SKIPPING);
updateProgress(picture, STATE_SKIPPING, false);
	public boolean previous(boolean user) {		if (loader.pictureShowWant != null && wantDownloaded.contains(loader.pictureShowWant) && (loader.pictureShowWant != userPicture || user)) {			// we no longer want the current picture			wantDownloaded.remove(loader.pictureShowWant);		}		Picture picture;		synchronized (this) {			wantIndex--;			if (wantIndex < 0) {				if (GalleryRemote._().properties.getBooleanProperty(SLIDESHOW_LOOP)) {					wantIndex = pictures.size() - 1;				} else {					wantIndex = 0;					return false;				}			}			// display previous picture			picture = (Picture) pictures.get(wantIndex);		}		Log.log(Log.LEVEL_TRACE, MODULE, "Previous picture: " + picture);		if (user) {			userPicture = picture;			updateProgress(picture, STATE_SKIPPING);			try {				Thread.sleep(skipTime);			} catch (InterruptedException e) {}			// if user moved to a different picture in the meantime, cancel			if (userPicture != picture) {				Log.log(Log.LEVEL_TRACE, MODULE, "User skipped again, not even loading " + picture);				return true;			}		} else if (userPicture != null && userPicture != picture) {			// automatic move trying to move away from user-chosen picture			return true;		}		wantDownloaded.add(picture);		updateProgress(picture, STATE_PREPARING);		loader.preparePicture(picture, false, true);		// and cache the one after it		if (wantIndex - 1 > 0 && (loader.images.get(picture = (Picture) pictures.get(wantIndex - 1))) == null) {			wantDownloaded.add(picture);			loader.imageLoader.loadPicture(picture, false);		}		return true;	}