Android Open Source - caddisfly-app-camera Gallery List Adapter






From Project

Back to project page caddisfly-app-camera.

License

The source code is released under:

GNU General Public License

If you think the Android project caddisfly-app-camera listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) TernUp Research Labs//from www .j  a v  a2 s .c  o  m
 *
 * This file is part of Caddisfly
 *
 * Caddisfly is free software: you can redistribute it and modify it under the terms of
 * the GNU Affero General Public License (AGPL) as published by the Free Software Foundation,
 * either version 3 of the License or any later version.
 *
 * Caddisfly is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Affero General Public License included below for more details.
 *
 * The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>.
 */

package com.ternup.caddisfly.adapter;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.ternup.caddisfly.R;
import com.ternup.caddisfly.util.ColorUtils;
import com.ternup.caddisfly.util.ImageUtils;
import com.ternup.caddisfly.util.PreferencesUtils;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class GalleryListAdapter extends BaseAdapter {

    private final LayoutInflater mInflater;

    private final Activity mActivity;

    private final Context mContext;

    private final long mTestId;

    private final int mTestType;

    private final boolean mShowResult;

    private ArrayList<String> mFilePaths = new ArrayList<String>();

    public GalleryListAdapter(Activity activity, int testType, long testId,
                              ArrayList<String> filePaths, boolean showResult) {
        mContext = activity;
        mInflater = activity.getLayoutInflater();
        mFilePaths = filePaths;
        mActivity = activity;
        mTestId = testId;
        mTestType = testType;
        mShowResult = showResult;
    }

    /*
     * Resizing image size
     */
    private static Bitmap decodeFile(String filePath) {
        return ImageUtils.decodeFile(filePath);
    }

    @Override
    public int getCount() {
        return Math.max(1, this.mFilePaths.size());
    }

    @Override
    public Object getItem(int position) {
        return this.mFilePaths.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public boolean isEnabled(int position) {
        return false;
    }

    @Override
    public View getView(final int position, View view, ViewGroup parent) {

        if (mFilePaths.size() <= position) {
            if (view == null) {
                view = new View(mContext);
            }
            return view;
        }
        ViewHolder holder;
        final String file = mFilePaths.get(position);

        if (view == null) {
            view = mInflater.inflate(R.layout.row_gallery, parent, false);
            holder = new ViewHolder();
            holder.serialNumber = (TextView) view.findViewById(R.id.serialNumberText);
            holder.icon = (ImageView) view.findViewById(R.id.photoImageView);
            holder.timestamp = (TextView) view.findViewById(R.id.dateText);
            holder.result = (TextView) view.findViewById(R.id.resultText);
            holder.brightness = (TextView) view.findViewById(R.id.brightnessText);
            holder.progress = (ProgressBar) view.findViewById(R.id.imageProgressBar);

            view.setTag(holder);

        } else {
            holder = (ViewHolder) view.getTag();
        }

        holder.position = position;

        // Using an AsyncTask to load the slow images in a background thread
        (new AsyncTask<ViewHolder, Void, Bitmap>() {
            private ViewHolder v;

            @Override
            protected Bitmap doInBackground(ViewHolder... params) {
                v = params[0];

                if (!file.isEmpty()) {
                    return decodeFile(file);
                }
                return null;
            }

            @SuppressLint("SimpleDateFormat") // Using SimpleDateFormat to display seconds also
            @Override
            protected void onPostExecute(Bitmap bitmap) {
                super.onPostExecute(bitmap);
                if (v.position == position) {
                    v.serialNumber.setText(String.valueOf(position + 1));
                    v.progress.setVisibility(View.GONE);
                    v.icon.setVisibility(View.VISIBLE);
                    v.icon.setImageBitmap(bitmap);
                    //v.icon.setScaleType(ImageView.ScaleType.CENTER_CROP);

                    Pattern pattern = Pattern
                            .compile("pic-(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})-s");
                    Matcher matcher = pattern.matcher(file);
                    if (matcher.find()) {
                        int year = Integer.parseInt(matcher.group(1));
                        int month = Integer.parseInt(matcher.group(2)) - 1;
                        int day = Integer.parseInt(matcher.group(3));
                        int hour = Integer.parseInt(matcher.group(4));
                        int minute = Integer.parseInt(matcher.group(5));
                        int second = Integer.parseInt(matcher.group(6));

                        Calendar cal = Calendar.getInstance();

                        //noinspection MagicConstant
                        cal.set(year, month, day, hour, minute, second);
                        boolean is24HourFormat = android.text.format.DateFormat
                                .is24HourFormat(mActivity);
                        String timePattern = mActivity.getString(
                                is24HourFormat ? R.string.twentyFourHourTime
                                        : R.string.twelveHourTime
                        );
                        DateFormat tf = new SimpleDateFormat(timePattern);
                        v.timestamp.setText(tf.format(cal.getTime()));

                        double result;
                        result = PreferencesUtils.getDouble(mContext,
                                String.format(mContext.getString(R.string.resultValueKey),
                                        mTestType, mTestId, position)
                        );
                        int color = PreferencesUtils.getInt(mContext,
                                String.format(mContext.getString(R.string.resultColorKey),
                                        mTestType, mTestId,
                                        position), -2
                        );

                        if (color != -2) {
                            v.brightness.setText(String.format("Brightness: %d", ColorUtils.getBrightness(color)));
                        }

                        int quality = PreferencesUtils.getInt(mContext,
                                String.format(mContext.getString(R.string.resultQualityKey),
                                        mTestType, mTestId,
                                        position), 0
                        );
                        if (color == -2) {
                            v.result.setText("");
                        } else if (color == -1) {
                            v.result.setText(R.string.error);
                        } else {
                            if (mShowResult) {
                                if (result < 0) {
                                    v.result.setText(R.string.outOfRange);
                                } else {
                                    v.result.setText(
                                            String.format("%.1f (%d%%) rgb:%s", result, quality,
                                                    ColorUtils.getColorRgbString(color))
                                    );
                                }
                            } else {
                                v.result.setText(
                                        String.format("(%d%%) rgb:%s", quality,
                                                ColorUtils.getColorRgbString(color))
                                );
                            }
                        }

/*
                        if (result < 0) {
                            v.color.setText(R.string.error);
                        } else {
                            v.color.setText(String.format("rgb: %s", ColorUtils.getColorRgbString(color)));
                        }


                        if (quality < 0) {
                            v.quality.setText(R.string.error);
                        } else {
                            v.quality.setText(String.format("quality: %d%%", quality));
                        }
*/

                    }
                }
            }
        }).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, holder);
        return view;
    }

    static class ViewHolder {

        TextView serialNumber;

        TextView timestamp;

        TextView result;

        TextView brightness;

        //TextView quality;

        ImageView icon;

        ProgressBar progress;

        int position;

    }
}




Java Source Code List

com.ternup.caddisfly.activity.MainActivityBase.java
com.ternup.caddisfly.activity.MainActivity.java
com.ternup.caddisfly.activity.PhotoIntentActivity.java
com.ternup.caddisfly.activity.ProgressActivityBase.java
com.ternup.caddisfly.activity.ProgressActivity.java
com.ternup.caddisfly.activity.ProgressActivity.java
com.ternup.caddisfly.activity.SurveyActivity.java
com.ternup.caddisfly.activity.VideoActivity.java
com.ternup.caddisfly.adapter.CalibrateListAdapter.java
com.ternup.caddisfly.adapter.CheckboxSimpleCursorAdapter.java
com.ternup.caddisfly.adapter.GalleryListAdapter.java
com.ternup.caddisfly.adapter.NavDrawerListAdapter.java
com.ternup.caddisfly.adapter.SwatchesAdapter.java
com.ternup.caddisfly.app.GlobalsBase.java
com.ternup.caddisfly.app.Globals.java
com.ternup.caddisfly.app.Globals.java
com.ternup.caddisfly.app.MainApp.java
com.ternup.caddisfly.component.CameraZoomPreference.java
com.ternup.caddisfly.component.ConfirmCheckBoxPreference.java
com.ternup.caddisfly.component.ConfirmPreference.java
com.ternup.caddisfly.component.NothingSelectedSpinnerAdapter.java
com.ternup.caddisfly.component.NumberPickerPreference.java
com.ternup.caddisfly.database.DataStorage.java
com.ternup.caddisfly.database.DataStorage.java
com.ternup.caddisfly.database.LocationTable.java
com.ternup.caddisfly.database.TestDatabaseHelper.java
com.ternup.caddisfly.database.TestTable.java
com.ternup.caddisfly.fragment.AboutFragment.java
com.ternup.caddisfly.fragment.AboutItFragment.java
com.ternup.caddisfly.fragment.BaseFragment.java
com.ternup.caddisfly.fragment.CalibrateFragmentBase.java
com.ternup.caddisfly.fragment.CalibrateFragment.java
com.ternup.caddisfly.fragment.CalibrateItemFragmentBase.java
com.ternup.caddisfly.fragment.CalibrateItemFragment.java
com.ternup.caddisfly.fragment.CameraFragment.java
com.ternup.caddisfly.fragment.DetailsFragment.java
com.ternup.caddisfly.fragment.FormFragment.java
com.ternup.caddisfly.fragment.HelpFragment.java
com.ternup.caddisfly.fragment.HomeFragment.java
com.ternup.caddisfly.fragment.LocationDetailsFragment.java
com.ternup.caddisfly.fragment.LocationFragment.java
com.ternup.caddisfly.fragment.LocationListFragment.java
com.ternup.caddisfly.fragment.NavigationDrawerFragment.java
com.ternup.caddisfly.fragment.NotesFragment.java
com.ternup.caddisfly.fragment.PhotoFragment.java
com.ternup.caddisfly.fragment.ResultFragment.java
com.ternup.caddisfly.fragment.ResultListFragment.java
com.ternup.caddisfly.fragment.SettingsFragment.java
com.ternup.caddisfly.fragment.SwatchFragment.java
com.ternup.caddisfly.model.ColorInfo.java
com.ternup.caddisfly.model.Dynamics.java
com.ternup.caddisfly.model.NavigationDrawerItem.java
com.ternup.caddisfly.provider.LocationContentProvider.java
com.ternup.caddisfly.provider.TestContentProvider.java
com.ternup.caddisfly.service.CameraServiceReceiver.java
com.ternup.caddisfly.service.CameraService.java
com.ternup.caddisfly.util.AlertUtils.java
com.ternup.caddisfly.util.AudioUtils.java
com.ternup.caddisfly.util.ColorUtils.java
com.ternup.caddisfly.util.DataHelper.java
com.ternup.caddisfly.util.DateUtils.java
com.ternup.caddisfly.util.DownloadManager.java
com.ternup.caddisfly.util.FileUtils.java
com.ternup.caddisfly.util.ImageUtils.java
com.ternup.caddisfly.util.LocationUtils.java
com.ternup.caddisfly.util.NetworkUtils.java
com.ternup.caddisfly.util.PhotoHandler.java
com.ternup.caddisfly.util.PreferencesHelper.java
com.ternup.caddisfly.util.PreferencesUtils.java
com.ternup.caddisfly.util.ShakeDetector.java
com.ternup.caddisfly.util.ShowCamera.java
com.ternup.caddisfly.util.TextJustifyUtils.java
com.ternup.caddisfly.util.TimeUtils.java
com.ternup.caddisfly.util.UpdateCheckTask.java
com.ternup.caddisfly.util.UpdateChecker.java
com.ternup.caddisfly.util.UpgradeCheckTask.java
com.ternup.caddisfly.util.WebClient.java
com.ternup.caddisfly.view.LineChartView.java
com.ternup.caddisfly.view.SlidingTabLayout.java
com.ternup.caddisfly.view.SlidingTabStrip.java
com.ternup.caddisfly.widget.FormEditText.java
com.ternup.caddisfly.widget.FormSpinner.java
com.ternup.caddisfly.widget.FormWidget.java
com.ternup.caddisfly.widget.MultiLineEditText.java
com.ternup.caddisfly.widget.TextViewEx.java
org.akvo.mobile.caddisfly.activity.MainActivity.java
org.akvo.mobile.caddisfly.component.CalibratePreference.java
org.akvo.mobile.caddisfly.fragment.CalibrateFragment.java
org.akvo.mobile.caddisfly.fragment.CalibrateItemFragment.java
org.akvo.mobile.caddisfly.fragment.CalibrateMessageFragment.java
org.akvo.mobile.caddisfly.fragment.HelpFragment.java
org.akvo.mobile.caddisfly.fragment.ItemFragment.java
org.akvo.mobile.caddisfly.fragment.ResultFragment.java
org.akvo.mobile.caddisfly.fragment.StartFragment.java
org.akvo.mobile.caddisfly.fragment.dummy.DummyContent.java