1c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu/* 2c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu * Copyright (C) 2013 The Android Open Source Project 3c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu * 4c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu * Licensed under the Apache License, Version 2.0 (the "License"); 5c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu * you may not use this file except in compliance with the License. 6c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu * You may obtain a copy of the License at 7c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu * 8c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu * http://www.apache.org/licenses/LICENSE-2.0 9c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu * 10c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu * Unless required by applicable law or agreed to in writing, software 11c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu * distributed under the License is distributed on an "AS IS" BASIS, 12c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu * See the License for the specific language governing permissions and 14c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu * limitations under the License. 15c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu */ 16c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu 17c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescupackage com.android.gallery3d.ingest.adapter; 18c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu 19c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescuimport android.content.Context; 20c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescuimport android.mtp.MtpObjectInfo; 21c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescuimport android.support.v4.view.PagerAdapter; 22c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescuimport android.view.LayoutInflater; 23c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescuimport android.view.View; 24c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescuimport android.view.ViewGroup; 25c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu 26c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescuimport com.android.gallery3d.R; 27c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescuimport com.android.gallery3d.ingest.MtpDeviceIndex; 28c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescuimport com.android.gallery3d.ingest.MtpDeviceIndex.SortOrder; 29c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescuimport com.android.gallery3d.ingest.ui.MtpFullscreenView; 30c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu 31c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescupublic class MtpPagerAdapter extends PagerAdapter { 32c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu 33c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu private LayoutInflater mInflater; 34c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu private int mGeneration = 0; 35c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu private CheckBroker mBroker; 36c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu private MtpDeviceIndex mModel; 37c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu private SortOrder mSortOrder = SortOrder.Descending; 38c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu 39c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu private MtpFullscreenView mReusableView = null; 40c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu 41c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu public MtpPagerAdapter(Context context, CheckBroker broker) { 42c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu super(); 43c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu mInflater = LayoutInflater.from(context); 44c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu mBroker = broker; 45c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu } 46c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu 47c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu public void setMtpDeviceIndex(MtpDeviceIndex index) { 48c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu mModel = index; 49c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu notifyDataSetChanged(); 50c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu } 51c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu 52c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu @Override 53c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu public int getCount() { 54c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu return mModel != null ? mModel.sizeWithoutLabels() : 0; 55c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu } 56c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu 57c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu @Override 58c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu public void notifyDataSetChanged() { 59c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu mGeneration++; 60c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu super.notifyDataSetChanged(); 61c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu } 62c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu 63c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu public int translatePositionWithLabels(int position) { 64c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu if (mModel == null) return -1; 65c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu return mModel.getPositionWithoutLabelsFromPosition(position, mSortOrder); 66c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu } 67c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu 68c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu @Override 69c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu public void finishUpdate(ViewGroup container) { 70c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu mReusableView = null; 71c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu super.finishUpdate(container); 72c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu } 73c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu 74c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu @Override 75c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu public boolean isViewFromObject(View view, Object object) { 76c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu return view == object; 77c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu } 78c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu 79c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu @Override 80c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu public void destroyItem(ViewGroup container, int position, Object object) { 81c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu MtpFullscreenView v = (MtpFullscreenView)object; 82c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu container.removeView(v); 83c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu mBroker.unregisterOnCheckedChangeListener(v); 84c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu mReusableView = v; 85c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu } 86c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu 87c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu @Override 88c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu public Object instantiateItem(ViewGroup container, int position) { 89c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu MtpFullscreenView v; 90c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu if (mReusableView != null) { 91c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu v = mReusableView; 92c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu mReusableView = null; 93c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu } else { 94c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu v = (MtpFullscreenView) mInflater.inflate(R.layout.ingest_fullsize, container, false); 95c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu } 96c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu MtpObjectInfo i = mModel.getWithoutLabels(position, mSortOrder); 97c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu v.getImageView().setMtpDeviceAndObjectInfo(mModel.getDevice(), i, mGeneration); 98c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu v.setPositionAndBroker(position, mBroker); 99c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu container.addView(v); 100c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu return v; 101c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu } 102c8a9e86919dca8938948f97efc3dcbe143e806bfBobby Georgescu} 103