/** * Start activity for result. * * @param intent Intent to start activity. * @param callback Result call-back. * @return Handle to this operation. */ public Handle startActivityForResult(Intent intent, ActivityResultCallback callback) { // check parameter if (intent == null) { Log.e(TAG, "startActivityForResult() - No intent"); return null; } // check state this.verifyAccess(); // generate request code int requestCode = 64; for (; requestCode > 0; --requestCode) { if (m_ActivityResultHandles.get(requestCode) == null) break; } if (requestCode <= 0) { Log.e(TAG, "startActivityForResult() - No available request code"); return null; } // create handle ActivityResultHandle handle = new ActivityResultHandle(callback); m_ActivityResultHandles.put(requestCode, handle); // start activity for result try { this.startActivityForResult(intent, requestCode); return handle; } catch (Throwable ex) { Log.e(TAG, "startActivityForResult() - Fail to start activity", ex); m_ActivityResultHandles.delete(requestCode); return null; } }
private void onItemClicked(int index, View view) { // check state if (m_MediaList == null) return; if (index < 0 || index >= m_MediaList.size()) { Log.e(TAG, "onItemClicked() - Invalid index : " + index); return; } // raise event Media media = m_MediaList.get(index); this.raise(EVENT_MEDIA_CLICKED, new ListItemEventArgs<Media>(index, media)); }
// Called when creating. @Override protected final void onCreate(Bundle savedInstanceState) { // start tracking trackInstance(this); // call super super.onCreate(savedInstanceState); // setup instance state Intent intent = this.getIntent(); String sharedGalleryId = (intent != null ? intent.getStringExtra(EXTRA_SHARED_GALLERY_ID) : null); InstanceStateFragment stateFragment = (InstanceStateFragment) this.getFragmentManager().findFragmentByTag(InstanceStateFragment.TAG); m_Gallery = Gallery.fromId(sharedGalleryId); if (m_Gallery == null) { if (stateFragment != null) { Log.w(TAG, "onCreate() - Use existent Gallery : " + stateFragment.gallery.getId()); m_Gallery = stateFragment.gallery; m_ActivityResultHandles = stateFragment.activityResultHandles; } else { Log.w(TAG, "onCreate() - Create new Gallery"); m_Gallery = GalleryApplication.current().createGallery(); m_ActivityResultHandles = new SparseArray<>(); } } else { Log.w(TAG, "onCreate() - Use shared Gallery : " + m_Gallery.getId()); m_ActivityResultHandles = new SparseArray<>(); m_IsSharedGallery = true; } // attach to gallery m_GalleryAttachHandle = m_Gallery.attachActivity(this); if (!Handle.isValid(m_GalleryAttachHandle)) { Log.e(TAG, "onCreate() - Fail to attach to Gallery"); this.finish(); return; } m_Gallery.addCallback(Gallery.PROP_IS_NAVIGATION_BAR_VISIBLE, m_NavBarVisibilityCallback); m_Gallery.addCallback(Gallery.PROP_IS_STATUS_BAR_VISIBLE, m_StatusBarVisibilityCallback); // initialize screen size this.updateScreenSize(); // create this.onCreate(savedInstanceState, stateFragment != null ? stateFragment.extras : null); }
// Set system UI visibility protected void setSystemUiVisibility(boolean visible) { // check state Gallery gallery = this.getGallery(); if (gallery == null) { Log.e(TAG, "setSystemUiVisibility() - No gallery"); return; } Log.v(TAG, "setSystemUiVisibility() - Visible: ", visible); // set visibility if (visible) { gallery.setNavigationBarVisibility(true); gallery.setStatusBarVisibility(true); } else { gallery.setNavigationBarVisibility(false); gallery.setStatusBarVisibility(false); } }
// create a new ImageView for each item referenced by the Adapter public View getView(int position, View convertView, ViewGroup parent) { final GridViewItemHolder holder; if (convertView == null) { // Log.d(TAG, "convertView == null getView position:" + position); // holder initialize convertView = m_inflater.inflate(R.layout.fragment_gridview_item, parent, false); holder = new GridViewItemHolder(convertView); } else { // recycled view holder = (GridViewItemHolder) convertView.getTag(); ((ViewGroup) holder.typeIconView.getParent()).setVisibility(View.GONE); } holder.thumbnailImageView.setImageDrawable(m_GreySquare); holder.position = position; holder.thumbDecoded = false; boolean isCameraRoll = get(PROP_IS_CAMERA_ROLL); if (m_MediaList != null) { if (holder.position == 0 && isCameraRoll) { // Set item thumbnail holder.thumbnailImageView.setImageResource(R.drawable.camera); holder.contentUri = null; holder.smallThumbDecodeHandle = null; holder.thumbDecodeHandle = null; } else { Log.e(TAG, "holder.m_ItemPosition: " + holder.position); // -1 for the first one for CameraIcon to start camera activity Media media = m_MediaList.get(isCameraRoll ? position - 1 : position); String filePath = media.getFilePath(); holder.contentUri = media.getContentUri(); holder.mimeType = media.getMimeType(); if (filePath != null) { holder.smallThumbDecodeHandle = m_SmallBitmapPool.decode( media.getFilePath(), m_GridviewItemWidth, m_GridviewItemHeight, BitmapPool.FLAG_ASYNC | BitmapPool.FLAG_URGENT, holder.smallThumbDecodeCallback, GridViewFragment.this.getHandler()); holder.thumbDecodeHandle = m_BitmapPool.decode( media.getFilePath(), m_GridviewItemWidth, m_GridviewItemHeight, BitmapPool.FLAG_ASYNC | BitmapPool.FLAG_URGENT, holder.thumbDecodeCallback, GridViewFragment.this.getHandler()); } else { int mediaType = (media instanceof VideoMedia ? BitmapPool.MEDIA_TYPE_VIDEO : BitmapPool.MEDIA_TYPE_PHOTO); holder.smallThumbDecodeHandle = m_SmallBitmapPool.decode( getActivity(), holder.contentUri, mediaType, m_GridviewItemWidth, m_GridviewItemHeight, BitmapPool.FLAG_ASYNC | BitmapPool.FLAG_URGENT, holder.smallThumbDecodeCallback, GridViewFragment.this.getHandler()); holder.thumbDecodeHandle = m_BitmapPool.decode( getActivity(), holder.contentUri, mediaType, m_GridviewItemWidth, m_GridviewItemHeight, BitmapPool.FLAG_ASYNC | BitmapPool.FLAG_URGENT, holder.thumbDecodeCallback, GridViewFragment.this.getHandler()); } if (media instanceof VideoMedia) { ((ViewGroup) holder.typeIconView.getParent()).setVisibility(View.VISIBLE); holder.typeIconView.setImageResource(R.drawable.about); holder.durationTextView.setText(getVideoTime((VideoMedia) media)); } } } return convertView; }