/* * Copyright 2012 The Stanford MobiSocial Laboratory * * 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 mobisocial.musubi.feed.action; import java.io.IOException; import mobisocial.musubi.Helpers; import mobisocial.musubi.R; import mobisocial.musubi.feed.iface.FeedAction; import mobisocial.musubi.objects.VideoObj; import mobisocial.musubi.util.ActivityCallout; import mobisocial.musubi.util.InstrumentedActivity; import mobisocial.socialkit.Obj; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; import android.net.Uri; import android.util.Log; import android.widget.Toast; /** * Adds a VideoObj to a feed from an external Android application * such as the Gallery. * */ public class VideoGalleryAction extends FeedAction { private static final String TAG = "VideoGalleryAction"; @Override public String getName() { return "Video"; } @Override public Drawable getIcon(Context c) { return c.getResources().getDrawable(R.drawable.ic_attach_capture_video_holo_light); } @Override public void onClick(final Context context, final Uri feedUri) { ((InstrumentedActivity)context).doActivityForResult(new GalleryCallout(context, feedUri)); } @Override public boolean isActive(Context c) { return true; } class GalleryCallout implements ActivityCallout { private final Context mmContext; private final Uri mmFeedUri; private GalleryCallout(Context context, Uri feedUri) { mmContext = context; mmFeedUri = feedUri; } @Override public void handleResult(int resultCode, final Intent data) { if (resultCode == Activity.RESULT_OK) { try { // Files are uploaded to the Corral by virtue of the localUri field. Obj outboundObj = VideoObj.from(mmContext, data.getData(), data.getType()); Helpers.sendToFeed(mmContext, outboundObj, mmFeedUri); Helpers.emailUnclaimedMembers(mmContext, outboundObj, mmFeedUri); } catch (IOException e) { Toast.makeText(mmContext, "Error fetching video.", Toast.LENGTH_SHORT).show(); Log.e(TAG, "Error fetching video", e); } } } @Override public Intent getStartIntent() { Intent gallery = new Intent(Intent.ACTION_GET_CONTENT); gallery.setType("video/*"); return Intent.createChooser(gallery, null); } }; }