mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-06-04 15:38:59 +00:00
92 lines
3.2 KiB
Java
92 lines
3.2 KiB
Java
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
package org.mozilla.goanna.home;
|
|
|
|
import org.mozilla.goanna.R;
|
|
import org.mozilla.goanna.Tab;
|
|
import org.mozilla.goanna.Tabs;
|
|
import org.mozilla.goanna.db.BrowserContract.ReadingListItems;
|
|
import org.mozilla.goanna.home.TwoLinePageRow;
|
|
import org.mozilla.goanna.util.StringUtils;
|
|
|
|
import android.content.Context;
|
|
import android.content.res.Resources;
|
|
import android.database.Cursor;
|
|
import android.text.TextUtils;
|
|
import android.util.AttributeSet;
|
|
import android.view.LayoutInflater;
|
|
import android.widget.LinearLayout;
|
|
import android.widget.TextView;
|
|
|
|
public class ReadingListRow extends LinearLayout {
|
|
|
|
private final Resources resources;
|
|
|
|
private final TextView title;
|
|
private final TextView excerpt;
|
|
private final TextView readTime;
|
|
|
|
// Average reading speed in words per minute.
|
|
private static final int AVERAGE_READING_SPEED = 250;
|
|
|
|
// Length of average word.
|
|
private static final float AVERAGE_WORD_LENGTH = 5.1f;
|
|
|
|
|
|
public ReadingListRow(Context context) {
|
|
this(context, null);
|
|
}
|
|
|
|
public ReadingListRow(Context context, AttributeSet attrs) {
|
|
super(context, attrs);
|
|
|
|
LayoutInflater.from(context).inflate(R.layout.reading_list_row_view, this);
|
|
|
|
resources = context.getResources();
|
|
|
|
title = (TextView) findViewById(R.id.title);
|
|
excerpt = (TextView) findViewById(R.id.excerpt);
|
|
readTime = (TextView) findViewById(R.id.read_time);
|
|
}
|
|
|
|
public void updateFromCursor(Cursor cursor) {
|
|
if (cursor == null) {
|
|
return;
|
|
}
|
|
|
|
final String url = cursor.getString(cursor.getColumnIndexOrThrow(ReadingListItems.URL));
|
|
|
|
final String titleText = cursor.getString(cursor.getColumnIndexOrThrow(ReadingListItems.TITLE));
|
|
title.setText(TextUtils.isEmpty(titleText) ? StringUtils.stripCommonSubdomains(StringUtils.stripScheme(url)) : titleText);
|
|
|
|
final String excerptText = cursor.getString(cursor.getColumnIndexOrThrow(ReadingListItems.EXCERPT));
|
|
excerpt.setText(TextUtils.isEmpty(excerptText) ? url : excerptText);
|
|
|
|
/* Disabled until UX issues are fixed (see bug 1110461).
|
|
final int lengthIndex = cursor.getColumnIndexOrThrow(ReadingListItems.LENGTH);
|
|
final int minutes = getEstimatedReadTime(cursor.getInt(lengthIndex));
|
|
if (minutes <= 60) {
|
|
readTime.setText(resources.getString(R.string.reading_list_time_minutes, minutes));
|
|
} else {
|
|
readTime.setText(resources.getString(R.string.reading_list_time_over_an_hour));
|
|
}
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* Calculates the estimated time to read an article based on its length.
|
|
*
|
|
* @param length of the article (in characters)
|
|
* @return estimated time to read the article (in minutes)
|
|
*/
|
|
private static int getEstimatedReadTime(int length) {
|
|
final int minutes = (int) Math.ceil((length / AVERAGE_WORD_LENGTH) / AVERAGE_READING_SPEED);
|
|
|
|
// Minimum of one minute.
|
|
return Math.max(minutes, 1);
|
|
}
|
|
}
|