package org.edx.mobile.view;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.view.Menu;
import android.view.View;
import org.edx.mobile.logger.Logger;
import org.edx.mobile.model.course.BlockPath;
import org.edx.mobile.model.course.CourseComponent;
import org.edx.mobile.services.LastAccessManager;
import org.edx.mobile.services.VideoDownloadHelper;
import org.edx.mobile.util.NetworkUtil;
import javax.inject.Inject;
/**
* Created by hanning on 5/15/15.
*/
public abstract class CourseVideoListActivity extends CourseBaseActivity implements
LastAccessManager.LastAccessManagerCallback ,VideoDownloadHelper.DownloadManagerCallback {
protected Logger logger = new Logger(getClass().getSimpleName());
private boolean isFetchingLastAccessed;
private Handler mHandler = new Handler();
@Inject
LastAccessManager lastAccessManager;
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
}
@Override
public boolean isFetchingLastAccessed() {
return isFetchingLastAccessed;
}
@Override
public void setFetchingLastAccessed(boolean accessed) {
this.isFetchingLastAccessed = accessed;
}
private long lastClickTime;
@Override
public void showLastAccessedView(final String lastAccessedSubSectionId, final String courseId, final View view) {
if ( isActivityStarted() ) {
if (NetworkUtil.isConnected(this)) {
if(courseId!=null && lastAccessedSubSectionId!=null){
CourseComponent lastAccessComponent = courseManager.getComponentById(courseId, lastAccessedSubSectionId);
if (lastAccessComponent != null) {
if (!lastAccessComponent.isContainer()) { // true means its a course unit
// getting subsection
if (lastAccessComponent.getParent() != null)
lastAccessComponent = lastAccessComponent.getParent();
// now getting section
if (lastAccessComponent.getParent() != null) {
lastAccessComponent = lastAccessComponent.getParent();
}
}
// Handling the border case that if the Last Accessed component turns out
// to be the course root component itself, then we don't need to show it
if (!lastAccessComponent.getId().equals(courseId)) {
final CourseComponent finalLastAccessComponent = lastAccessComponent;
super.showLastAccessedView(null, lastAccessComponent.getDisplayName(), new View.OnClickListener() {
@Override
public void onClick(View v) {
//This has been used so that if user clicks continuously on the screen,
//two activities should not be opened
long currentTime = SystemClock.elapsedRealtime();
if (currentTime - lastClickTime > 1000) {
lastClickTime = currentTime;
environment.getRouter().showCourseContainerOutline(
CourseVideoListActivity.this, courseData, finalLastAccessComponent.getId());
}
}
});
}
else {
hideLastAccessedView(view);
}
} else {
hideLastAccessedView(view);
}
}
} else {
hideLastAccessedView(view);
}
}
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
return super.onPrepareOptionsMenu(menu);
}
@Override
public void showProgressDialog(int numDownloads) {}
@Override
public void onDownloadStarted(Long result) {
updateListUI();
}
@Override
public void onDownloadFailedToStart() {
updateListUI();
}
@Override
public abstract void updateListUI();
protected boolean isOnCourseOutline(){
if (courseComponentId == null) return true;
CourseComponent outlineComp = courseManager.getComponentById(
courseData.getCourse().getId(), courseComponentId);
BlockPath outlinePath = outlineComp.getPath();
int outlinePathSize = outlinePath.getPath().size();
return outlinePathSize <= 1;
}
}