/* * Copyright (C) 2009 The Android Open Source 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 com.cooliris.media; // //import java.util.ArrayList; //import java.util.List; // //import javax.microedition.khronos.opengles.GL11; // //import android.content.ActivityNotFoundException; //import android.content.Context; //import android.content.Intent; //import android.content.pm.PackageManager; //import android.content.pm.ResolveInfo; //import android.net.Uri; //import android.util.FloatMath; //import android.util.Log; //import android.view.MotionEvent; //import android.widget.Toast; // //public final class SelectionMenu extends Layer { // public static final int HEIGHT = 58; // // private static final int BUTTON_SHARE = 0; // private static final int BUTTON_DELETE = 1; // private static final int BUTTON_MORE = 2; // private static final int BUTTON_SELECT_ALL = 3; // private static final int BUTTON_DESELECT_ALL = 4; // // private static final int[] BUTTON_LABELS = { Res.string.Share, Res.string.Delete, // Res.string.More }; // private static final int[] BUTTON_ICONS = { Res.drawable.icon_share, // Res.drawable.icon_delete, Res.drawable.icon_more }; // private static final float BUTTON_ICON_SIZE = 34f; // // protected static final String TAG = "SelectionMenu"; // // private final Context mContext; // private final HudLayer mHud; // private final Texture mLowerBackground = ResourceTexture.get(Res.drawable.selection_lower_bg); // private final ResourceTexture mDividerImage = ResourceTexture // .get(Res.drawable.selection_menu_divider); // private final ResourceTexture mSelectionLeft = ResourceTexture // .get(Res.drawable.selection_menu_bg_pressed_left); // private final ResourceTexture mSelectionFill = ResourceTexture // .get(Res.drawable.selection_menu_bg_pressed); // private final ResourceTexture mSelectionRight = ResourceTexture // .get(Res.drawable.selection_menu_bg_pressed_right); // private final Button[] mButtons = new Button[BUTTON_LABELS.length]; // private float mDividerSpacing = 0f; // private boolean mDrawButtonIcons = true; // private int mTouchButton = -1; // private boolean mTouchOver = false; // private final PopupMenu mPopupMenu; // // SelectionMenu(HudLayer hud, Context context) { // mContext = context; // mHud = hud; // mPopupMenu = new PopupMenu(context); // // // Prepare format for the small labels. // StringTexture.Config smallLabelFormat = new StringTexture.Config(); // smallLabelFormat.fontSize = 14; // // // Prepare format for the large labels. // StringTexture.Config largeLabelFormat = new StringTexture.Config(); // largeLabelFormat.fontSize = 20f; // // // Create icon and label textures. // for (int i = 0; i < BUTTON_LABELS.length; ++i) { // Button button = new Button(); // button.icon = ResourceTexture.get(BUTTON_ICONS[i]); // button.smallLabel = new SimpleStringTexture(context.getString(BUTTON_LABELS[i]), // smallLabelFormat); // button.largeLabel = new SimpleStringTexture(context.getString(BUTTON_LABELS[i]), // largeLabelFormat); // mButtons[i] = button; // } // } // // private void layout() { // // Perform layout with icons and text labels. // final Button[] buttons = mButtons; // final float width = mWidth; // final float buttonWidth = width / buttons.length; // float dx = 0f; // boolean overflow = false; // // mDividerSpacing = buttonWidth; // // // Attempt layout with icons + labels. // for (int i = 0; i != buttons.length; ++i) { // final Button button = buttons[i]; // final float labelWidth = button.largeLabel.getWidth(); // final float iconLabelWidth = BUTTON_ICON_SIZE + labelWidth; // if (iconLabelWidth > buttonWidth) { // overflow = true; // break; // } // button.x = dx + FloatMath.floor(0.5f * (buttonWidth - iconLabelWidth)); // button.centerX = dx + FloatMath.floor(0.5f * buttonWidth); // dx += buttonWidth; // } // // /* // // In the case of overflow layout without icons. // if (overflow) { // dx = 0f; // for (int i = 0; i != buttons.length; ++i) { // final Button button = buttons[i]; // final float labelWidth = button.largeLabel.getWidth(); // button.x = dx + FloatMath.floor(0.5f * (buttonWidth - labelWidth)); // dx += buttonWidth; // } // } // mDrawButtonIcons = !overflow;*/ // mDrawButtonIcons = true; // // // Layout the popup menu. // mPopupMenu.setSize(230, 200); // } // // @Override // public void renderBlended(RenderView view, GL11 gl) { // // TODO: only recompute layout when things have changed. // layout(); // // if (view.bind(mLowerBackground)) { // final float imageHeight = mLowerBackground.getHeight(); // view.draw2D(0f, mY, 0, mWidth, imageHeight); // } // // // Draw the selection highlight if needed. // if (mTouchOver) { // final float SELECTION_FILL_INSET = 10f; // final float SELECTION_CAP_WIDTH = 21f; // final int touchButton = mTouchButton; // final float x = mDividerSpacing * touchButton + SELECTION_FILL_INSET; // final float y = mY; // final float insetWidth = mDividerSpacing + 1f - SELECTION_FILL_INSET - // SELECTION_FILL_INSET; // final float height = mSelectionFill.getHeight(); // if (view.bind(mSelectionLeft)) { // view.draw2D(x - SELECTION_CAP_WIDTH, y, 0f, SELECTION_CAP_WIDTH, height); // } // if (view.bind(mSelectionFill)) { // view.draw2D(x, y, 0f, insetWidth, height); // } // if (view.bind(mSelectionRight)) { // view.draw2D(x + insetWidth, y, 0f, SELECTION_CAP_WIDTH, height); // } // } // // // Draw the button icon + labels. // final float labelY = mY + 20f; // final Button[] buttons = mButtons; // for (int i = 0; i < buttons.length; ++i) { // final Button button = buttons[i]; // float x = button.x; // if (mDrawButtonIcons && view.bind(button.icon)) { // view.draw2D(x, labelY, 0f, BUTTON_ICON_SIZE, BUTTON_ICON_SIZE); // x += BUTTON_ICON_SIZE - 2f; // } // if (view.bind(button.largeLabel)) { // view.draw2D(x, labelY, 0f, button.largeLabel.getWidth(), button.largeLabel // .getHeight()); // } // } // // // Draw the inter-button dividers. // final float dividerY = mY + 13f; // float x = mDividerSpacing; // if (view.bind(mDividerImage)) { // for (int i = 1; i < buttons.length; ++i) { // view.draw2D(x, dividerY, 0f, 1f, 60f); // x += mDividerSpacing; // } // } // } // // private int hitTestButtons(float x) { // final Button[] buttons = mButtons; // for (int i = buttons.length - 1; i >= 0; --i) { // if (buttons[i].x < x) { // return i; // } // } // return -1; // } // // @Override // public boolean onTouchEvent(MotionEvent event) { // final float x = event.getX(); // switch (event.getAction()) { // case MotionEvent.ACTION_DOWN: // mTouchButton = hitTestButtons(x); // mTouchOver = mTouchButton != -1; // break; // case MotionEvent.ACTION_MOVE: // mTouchOver = hitTestButtons(x) == mTouchButton; // break; // case MotionEvent.ACTION_UP: // case MotionEvent.ACTION_CANCEL: // performAction(mTouchButton, event.getX(), event.getY()); // mTouchButton = -1; // mTouchOver = false; // break; // } // return true; // } // // private void performAction(final int button, float touchX, float touchY) { // // Gather the selection. // ArrayList<MediaBucket> selection = mHud.getGridLayer().getSelectedBuckets(); // // // Get the first item from the selection. TODO: support multiple items in Eclair. // MediaItem item = null; // if (!selection.isEmpty()) { // MediaBucket bucket = selection.get(0); // if (bucket.mediaItems != null && !bucket.mediaItems.isEmpty()) { // item = bucket.mediaItems.get(0); // } // } // // // Perform the action on the selection. // if (item != null) { // Gallery gallery = (Gallery)mContext; // TODO: provide better context. // final GridLayer gridLayer = mHud.getGridLayer(); // final MediaItem sharedItem = item; // if (sharedItem.mimetype == null) { // Toast.makeText(mContext, "Error: mime type is null", Toast.LENGTH_SHORT).show(); // } // if (sharedItem.contentUri == null) { // Toast.makeText(mContext, "Error: content URI is null", Toast.LENGTH_SHORT).show(); // } // if (button == BUTTON_SELECT_ALL) { // gridLayer.selectAll(); // } else if (button == BUTTON_DESELECT_ALL) { // mHud.cancelSelection(); // } else { // // Get the target button and popup focus location. // Button targetButton = mButtons[button]; // int popupX = (int)targetButton.centerX; // int popupY = (int)mY; // // // Configure the popup depending on the button pressed. // PopupMenu menu = mPopupMenu; // menu.clear(); // switch (button) { // case BUTTON_SHARE: // /* // PackageManager packageManager = mContext.getPackageManager(); // List<ResolveInfo> activities = packageManager.queryIntentActivities( // intent, // PackageManager.MATCH_DEFAULT_ONLY); // for (ResolveInfo activity: activities) { // activity.icon // PopupMenu.Option option = new PopupMenu.Option(activit, name, action) // } // menu.add(new PopupMenu.Option());*/ // mHud.cancelSelection(); // break; // case BUTTON_DELETE: // // case BUTTON_MORE: // } // // if (button != BUTTON_SHARE) { // mPopupMenu.showAtPoint(popupX, popupY, (int)mHud.getWidth(), (int)mHud.getHeight()); // } // // gallery.getHandler().post(new Runnable() { // public void run() { // switch (button) { // case BUTTON_SHARE: // Intent intent = new Intent(); // intent.setAction(Intent.ACTION_SEND); // intent.setType(sharedItem.mimetype); // intent.putExtra(Intent.EXTRA_STREAM, Uri // .parse(sharedItem.contentUri)); // try { // mContext.startActivity(Intent.createChooser(intent, // "Share via")); // } catch (ActivityNotFoundException e) { // Toast.makeText(mContext, "Unable to share", // Toast.LENGTH_SHORT).show(); // } // // break; // case BUTTON_DELETE: // gridLayer.deleteSelection(); // case BUTTON_MORE: // // Show options for Set As, Details, Slideshow. // default: // break; // } // } // }); // } // } // // // Exit selection mode. // //mHud.cancelSelection(); // } // // @Override // public void generate(RenderView view, RenderView.Lists lists) { // lists.blendedList.add(this); // lists.hitTestList.add(this); // mPopupMenu.generate(view, lists); // } // // @Override // protected void onHiddenChanged() { // if (mHidden) { // mPopupMenu.close(); // } // } // // private static final class Button { // public Texture icon; // public SimpleStringTexture smallLabel; // public SimpleStringTexture largeLabel; // public float x; // public float centerX; // } // }