/**
* The MIT License (MIT)
* Copyright (c) 2012 David Carver
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
* OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package us.nineworlds.serenity.ui.util;
import us.nineworlds.serenity.R;
import us.nineworlds.serenity.core.model.VideoContentInfo;
import us.nineworlds.serenity.core.services.UpdateProgressRequest;
import us.nineworlds.serenity.core.services.WatchedVideoAsyncTask;
import us.nineworlds.serenity.injection.BaseInjector;
import android.content.Intent;
import android.view.View;
import android.widget.BaseAdapter;
public class PlayerResultHandler extends BaseInjector {
protected BaseAdapter adapter;
protected Intent data;
public PlayerResultHandler(Intent data, BaseAdapter adapter) {
super();
this.adapter = adapter;
this.data = data;
}
public void updateVideoPlaybackPosition(VideoContentInfo video,
View selectedView) {
if (selectedView == null || video == null) {
return;
}
View watchedView = selectedView
.findViewById(R.id.posterWatchedIndicator);
updateProgress(data, video);
if (video.isWatched()) {
watchedView.setVisibility(View.VISIBLE);
toggleWatched(video);
} else if (video.isPartiallyWatched()) {
if (watchedView.isShown()) {
watchedView.setVisibility(View.INVISIBLE);
}
ImageUtils.toggleProgressIndicator(selectedView,
video.getResumeOffset(), video.getDuration());
}
adapter.notifyDataSetChanged();
}
public void updateVideoPlaybackPosition(VideoContentInfo video) {
updateProgress(data, video);
if (video.isWatched()) {
toggleWatched(video);
}
}
/**
* @param selectedView
* @param video
*/
protected void toggleWatched(VideoContentInfo video) {
if (video.isWatched()) {
new WatchedVideoAsyncTask().execute(video.id());
video.setResumeOffset(0);
video.setViewCount(video.getViewCount() + 1);
}
}
/**
* @param data
* @param video
*/
protected void updateProgress(Intent data, VideoContentInfo video) {
long position = 0;
position = data.getIntExtra("position", 0);
video.setResumeOffset(Long.valueOf(position).intValue());
if (video.isPartiallyWatched()) {
UpdateProgressRequest request = new UpdateProgressRequest(position,
video);
video.setResumeOffset(Long.valueOf(position).intValue());
request.execute();
return;
}
}
}