/******************************************************************************* * Copyright 2011 Alexandros Schillings * <p/> * 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 * <p/> * http://www.apache.org/licenses/LICENSE-2.0 * <p/> * 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 aws.apps.usbDeviceEnumerator.ui.usbinfo.fragments; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; import aws.apps.usbDeviceEnumerator.R; import aws.apps.usbDeviceEnumerator.data.DataProviderCompanyInfo; import aws.apps.usbDeviceEnumerator.data.DataProviderCompanyLogo; import aws.apps.usbDeviceEnumerator.data.DataProviderUsbInfo; /*package*/ abstract class BaseInfoFragment extends Fragment { private DataFetcher dataFetcher; @Override public void onAttach(final Context context) { super.onAttach(context); dataFetcher = new DataFetcher( new DataProviderCompanyInfo(context), new DataProviderUsbInfo(context), new DataProviderCompanyLogo(context)); } @Override public void onCreate(Bundle saved) { super.onCreate(saved); setHasOptionsMenu(true); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.frag_menu, menu); super.onCreateOptionsMenu(menu, inflater); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_export: ShareUtils.share( getActivity(), getString(R.string.app_name), getSharePayload()); return true; } return super.onOptionsItemSelected(item); } public abstract String getSharePayload(); protected void loadAsyncData(final ViewHolder viewHolder, final String vid, final String pid, final String reportedVendorName) { dataFetcher.fetchData(vid, pid, reportedVendorName, new DataFetcher.Callback() { @Override public void onSuccess(final String vendorFromDb, final String productFromDb, final Bitmap bitmap) { if (isAdded() && getActivity() != null && getView() != null) { getActivity().runOnUiThread(new Runnable() { @Override public void run() { viewHolder.getVendorFromDb().setText(vendorFromDb); viewHolder.getProductFromDb().setText(productFromDb); if (bitmap != null) { final BitmapDrawable drawable = new BitmapDrawable(getContext().getResources(), bitmap); viewHolder.getLogo().setImageDrawable(drawable); } else { viewHolder.getLogo().setImageResource(R.drawable.no_image); } } }); } } }); } protected void addDataRow(LayoutInflater inflater, TableLayout tlb, String cell1Text, String cell2Text) { final TableRow row = (TableRow) inflater.inflate(R.layout.usb_table_row_data, null); final TextView tv1 = (TextView) row.findViewById(R.id.usb_tablerow_cell1); final TextView tv2 = (TextView) row.findViewById(R.id.usb_tablerow_cell2); tv1.setText(cell1Text); tv2.setText(cell2Text); tlb.addView(row); } protected String padLeft(String string, String padding, int size) { String pad = ""; while ((pad + string).length() < size) { pad += padding + pad; } return pad + string; } }