diff options
Diffstat (limited to 'src/org/cyanogenmod/wallpapers/photophase/widgets/AlbumPictures.java')
-rw-r--r-- | src/org/cyanogenmod/wallpapers/photophase/widgets/AlbumPictures.java | 345 |
1 files changed, 0 insertions, 345 deletions
diff --git a/src/org/cyanogenmod/wallpapers/photophase/widgets/AlbumPictures.java b/src/org/cyanogenmod/wallpapers/photophase/widgets/AlbumPictures.java deleted file mode 100644 index 5d0c60f..0000000 --- a/src/org/cyanogenmod/wallpapers/photophase/widgets/AlbumPictures.java +++ /dev/null @@ -1,345 +0,0 @@ -/* - * Copyright (C) 2013 The CyanogenMod Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.cyanogenmod.wallpapers.photophase.widgets; - -import android.content.Context; -import android.os.Handler; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.View.OnClickListener; -import android.widget.LinearLayout; -import android.widget.PopupMenu; -import android.widget.PopupMenu.OnMenuItemClickListener; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import org.cyanogenmod.wallpapers.photophase.R; -import org.cyanogenmod.wallpapers.photophase.model.Album; - -import java.util.ArrayList; -import java.util.List; - -/** - * A view that contains the pictures of an album - */ -public class AlbumPictures extends RelativeLayout - implements OnClickListener, OnMenuItemClickListener { - - private static final int SELECTION_SELECT_ALL = 1; - private static final int SELECTION_DESELECT_ALL = 2; - private static final int SELECTION_INVERT = 3; - - /** - * A convenient listener for receive events of the AlbumPictures class - * - */ - public interface CallbacksListener { - /** - * Invoked when the user pressed the back button - */ - void onBackButtonClick(View v); - - /** - * Invoked when the selection was changed - * - * @param album The album - */ - void onSelectionChanged(Album album); - } - - private List<CallbacksListener> mCallbacks; - - private Handler mHandler; - - /*package*/ PicturesView mScroller; - /*package*/ LinearLayout mHolder; - private View mBackButton; - private View mOverflowButton; - - private boolean mInitialized; - - /*package*/ Album mAlbum; - - /** - * Constructor of <code>AlbumPictures</code>. - * - * @param context The current context - */ - public AlbumPictures(Context context) { - super(context); - init(); - } - - /** - * Constructor of <code>AlbumPictures</code>. - * - * @param context The current context - * @param attrs The attributes of the XML tag that is inflating the view. - */ - public AlbumPictures(Context context, AttributeSet attrs) { - super(context, attrs); - init(); - } - - /** - * Constructor of <code>AlbumPictures</code>. - * - * @param context The current context - * @param attrs The attributes of the XML tag that is inflating the view. - * @param defStyle The default style to apply to this view. If 0, no style - * will be applied (beyond what is included in the theme). This may - * either be an attribute resource, whose value will be retrieved - * from the current theme, or an explicit style resource. - */ - public AlbumPictures(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - init(); - } - - /** - * Method that initializes the internal references - */ - private void init() { - mCallbacks = new ArrayList<AlbumPictures.CallbacksListener>(); - mHandler = new Handler(); - mInitialized = false; - } - - /** - * {@inheritDoc} - */ - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - mScroller = (PicturesView)findViewById(R.id.album_pictures_scroller); - mHolder = (LinearLayout)findViewById(R.id.album_pictures_holder); - mBackButton = findViewById(R.id.back); - mBackButton.setOnClickListener(this); - mOverflowButton = findViewById(R.id.overflow); - mOverflowButton.setOnClickListener(this); - TextView title = (TextView)findViewById(R.id.album_pictures_title); - title.setText(mAlbum.getName()); - - updateView(mAlbum, false); - } - - /** - * Method that adds the class that will be listen for events of this class - * - * @param callback The callback class - */ - public void addCallBackListener(CallbacksListener callback) { - this.mCallbacks.add(callback); - } - - /** - * Method that removes the class from the current callbacks - * - * @param callback The callback class - */ - public void removeCallBackListener(CallbacksListener callback) { - this.mCallbacks.remove(callback); - } - - /** - * Method that set the data of the view - * - * @param album The album data - * @param recreate If the view should be recreated - */ - public void updateView(Album album, boolean recreate) { - mAlbum = album; - recreateView(false); - } - - /** - * Method that recreates the the view - * - * @param propagateShow If should propagate the show event - */ - private void recreateView(final boolean propagateShow) { - if (mHolder != null) { - mHandler.post(new Runnable() { - @Override - public void run() { - int pictures = mHolder.getChildCount(); - if (pictures != mAlbum.getItems().size()) { - // Recreate the pictures - final LayoutInflater inflater = (LayoutInflater) getContext(). - getSystemService(Context.LAYOUT_INFLATER_SERVICE); - mScroller.cancelTasks(); - mHolder.removeAllViews(); - for (final String picture : mAlbum.getItems()) { - View v = createPicture(inflater, picture, isPictureSelected(picture)); - mHolder.addView(v); - } - } else { - int i = 0; - for (final String picture : mAlbum.getItems()) { - View v = mHolder.getChildAt(i); - v.setSelected(isPictureSelected(picture)); - i++; - } - } - if (propagateShow) { - mScroller.onShow(); - } - } - }); - } - } - - /** - * {@inheritDoc} - */ - @Override - public void onClick(View v) { - // Check which is the view pressed - if (v.equals(mBackButton)) { - for (CallbacksListener callback : mCallbacks) { - callback.onBackButtonClick(v); - } - return; - } - if (v.equals(mOverflowButton)) { - PopupMenu popup = new PopupMenu(getContext(), v); - MenuInflater inflater = popup.getMenuInflater(); - inflater.inflate(R.menu.pictures_actions, popup.getMenu()); - popup.setOnMenuItemClickListener(this); - popup.show(); - return; - } - - // A picture view - v.setSelected(!v.isSelected()); - notifySelectionChanged(); - } - - /** - * Method that notifies to all the registered callbacks that the selection - * was changed - */ - private void notifySelectionChanged() { - List<String> selection = new ArrayList<String>(); - int count = mHolder.getChildCount(); - for (int i = 0; i < count; i++) { - View v = mHolder.getChildAt(i); - if (v.isSelected()) { - selection.add((String)v.getTag()); - } - } - mAlbum.setSelectedItems(selection); - mAlbum.setSelected(false); - - for (CallbacksListener callback : mCallbacks) { - callback.onSelectionChanged(mAlbum); - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.id.mnu_select_all: - doSelection(SELECTION_SELECT_ALL); - break; - - case R.id.mnu_deselect_all: - doSelection(SELECTION_DESELECT_ALL); - break; - - case R.id.mnu_invert_selection: - doSelection(SELECTION_INVERT); - break; - - default: - return false; - } - return true; - } - - /** - * Operate over the selection of the pictures of this album. - * - * @param action Takes the next values: - * <ul> - * <li>SELECTION_SELECT_ALL: select all</li> - * <li>SELECTION_DESELECT_ALL: deselect all</li> - * <li>SELECTION_INVERT: invert selection</li> - * </ul> - */ - private void doSelection(int action) { - int count = mHolder.getChildCount(); - for (int i = 0; i < count; i++) { - View v = mHolder.getChildAt(i); - - boolean selected = true; - if (action == SELECTION_DESELECT_ALL) { - selected = false; - } else if (action == SELECTION_INVERT) { - selected = !v.isSelected(); - } - v.setSelected(selected); - } - notifySelectionChanged(); - } - - /** - * Method invoked when the view is displayed - */ - public void onShow() { - if (!mInitialized) { - mInitialized = true; - recreateView(true); - } - } - - /** - * Method that creates a new picture view - * - * @param inflater The inflater of the parent view - * @param picture The path of the picture - * @param selected If the picture is selected - */ - /*package*/ View createPicture(LayoutInflater inflater, String picture, boolean selected) { - final View v = inflater.inflate(R.layout.picture_item, mHolder, false); - v.setTag(picture); - v.setSelected(selected); - v.setOnClickListener(this); - return v; - } - - /** - * Method that check if a picture is selected - * - * @param picture The picture to check - * @return boolean whether the picture is selected - */ - /*package*/ boolean isPictureSelected(String picture) { - for (String item : mAlbum.getSelectedItems()) { - if (item.compareTo(picture) == 0) { - return true; - } - } - return false; - } -} |