summaryrefslogtreecommitdiffstats
path: root/src/org/codeaurora/gallery3d/video/MovieListHooker.java
blob: 3da15b1dda4e794c7b3ff2d00789fc1edae543e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package org.codeaurora.gallery3d.video;

import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

import com.android.gallery3d.R;
import org.codeaurora.gallery3d.ext.IMovieItem;
import org.codeaurora.gallery3d.ext.IMovieList;
import org.codeaurora.gallery3d.ext.IMovieListLoader;
import org.codeaurora.gallery3d.ext.IMovieListLoader.LoaderListener;
import org.codeaurora.gallery3d.ext.MovieListLoader;

public class MovieListHooker extends MovieHooker implements LoaderListener {
    private static final String TAG = "MovieListHooker";
    private static final boolean LOG = true;
    
    private static final int MENU_NEXT = 1;
    private static final int MENU_PREVIOUS = 2;
    
    private MenuItem mMenuNext;
    private MenuItem mMenuPrevious;
    
    private IMovieListLoader mMovieLoader;
    private IMovieList mMovieList;
    
    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mMovieLoader = new MovieListLoader();
        mMovieLoader.fillVideoList(getContext(), getIntent(), this, getMovieItem());
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        mMovieLoader.cancelList();
    }
    @Override
    public boolean onCreateOptionsMenu(final Menu menu) {
        super.onCreateOptionsMenu(menu);
        if (mMovieList != null) { //list should be filled
            if (mMovieLoader != null && mMovieLoader.isEnabledVideoList(getIntent())) {
                mMenuPrevious = menu.add(0, getMenuActivityId(MENU_PREVIOUS), 0, R.string.previous);
                mMenuNext = menu.add(0, getMenuActivityId(MENU_NEXT), 0, R.string.next);
            }
        }
        return true;
    }
    @Override
    public boolean onPrepareOptionsMenu(final Menu menu) {
        super.onPrepareOptionsMenu(menu);
        updatePrevNext();
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(final MenuItem item) {
        super.onOptionsItemSelected(item);
        switch(getMenuOriginalId(item.getItemId())) {
        case MENU_PREVIOUS:
            if (mMovieList == null) {
                return false;
            }
            getPlayer().startNextVideo(mMovieList.getPrevious(getMovieItem()));
            return true;
        case MENU_NEXT:
            if (mMovieList == null) {
                return false;
            }
            getPlayer().startNextVideo(mMovieList.getNext(getMovieItem()));
            return true;
        default:
            return false;
        }
    }
    
    @Override
    public void onMovieItemChanged(final IMovieItem item) {
        super.onMovieItemChanged(item);
        updatePrevNext();
    }
    
    private void updatePrevNext() {
        if (LOG) {
            Log.v(TAG, "updatePrevNext()");
        }
        if (mMovieList != null && mMenuPrevious != null && mMenuNext != null) {
            if (mMovieList.isFirst(getMovieItem()) && mMovieList.isLast(getMovieItem())) { //only one movie
                mMenuNext.setVisible(false);
                mMenuPrevious.setVisible(false);
            } else {
                mMenuNext.setVisible(true);
                mMenuPrevious.setVisible(true);
            }
            if (mMovieList.isFirst(getMovieItem())) {
                mMenuPrevious.setEnabled(false);
            } else {
                mMenuPrevious.setEnabled(true);
            }
            if (mMovieList.isLast(getMovieItem())) {
                mMenuNext.setEnabled(false);
            } else {
                mMenuNext.setEnabled(true);
            }
        }
    }
    
    @Override
    public void onListLoaded(final IMovieList movieList) {
        mMovieList = movieList;
        getContext().invalidateOptionsMenu();
        if (LOG) {
            Log.v(TAG, "onListLoaded() " + (mMovieList != null ? mMovieList.size() : "null"));
        }
    }
}