Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c65510a7 authored by Svetoslav's avatar Svetoslav Committed by Android (Google) Code Review
Browse files

Merge "Accessibilty support for the print UI." into lmp-dev

parents 2e528712 e652b02d
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@
     limitations under the License.
-->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<com.android.printspooler.widget.PreviewPageFrame xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/preview_page"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
@@ -33,7 +33,8 @@
        android:layout_width="fill_parent"
        android:layout_height="@dimen/preview_page_footer_height"
        android:background="@color/material_grey_500"
        android:orientation="horizontal">
        android:orientation="horizontal"
        android:duplicateParentState="true">

        <TextView
            android:id="@+id/page_number"
@@ -51,9 +52,10 @@
            android:layout_marginRight="8dip"
            android:layout_alignParentEnd="true"
            android:layout_centerVertical="true"
            android:background="@drawable/page_selector_background">
            android:background="@drawable/page_selector_background"
            android:duplicateParentState="true">
        </ImageView>

    </RelativeLayout>

</LinearLayout>
</com.android.printspooler.widget.PreviewPageFrame>
+27 −1
Original line number Diff line number Diff line
@@ -76,10 +76,36 @@
    <!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
    <string name="print_dialog">Print dialog</string>

    <!-- Template for the message that shows the current page out of the total number of pages -->
    <!-- Template for the message that shows the current page out of the total number of pages [CHAR LIMIT=none] -->
    <string name="current_page_template"><xliff:g id="current_page">%1$d</xliff:g>
        /<xliff:g id="page_count">%2$d</xliff:g></string>

    <!-- Description of the current page - spoken to the user [CHAR LIMIT=none] -->
    <string name="page_description_template">Page <xliff:g id="current_page" example="1">%1$d</xliff:g>
        of <xliff:g id="page_count" example="100">%2$d</xliff:g></string>

    <!-- Template for the message to announce the print options summary - spoken to the user. [CHAR LIMIT=none] -->
    <string name="summary_template">Summary, copies <xliff:g id="copies" example="1">%1$s</xliff:g>,
        paper size <xliff:g id="paper_size" example="A4">%2$s</xliff:g></string>

    <!-- Description for the handle to expand all print options - spoken to the user. [CHAR LIMIT=none] -->
    <string name="expand_handle">Expand handle</string>

    <!-- Description for the handle to collapse all print options - spoken to the user. [CHAR LIMIT=none] -->
    <string name="collapse_handle">Collapse handle</string>

    <!-- Description for the print button - spoken to the user. [CHAR LIMIT=none] -->
    <string name="print_button">Print</string>

    <!-- Description for the save to PDF button - spoken to the user. [CHAR LIMIT=none] -->
    <string name="savetopdf_button">Save to PDF</string>

    <!-- Message to announce print options are expanded - spoken to the user. [CHAR LIMIT=none] -->
    <string name="print_options_expanded">Print options expanded</string>

    <!-- Message to announce print options are collapsed - spoken to the user. [CHAR LIMIT=none] -->
    <string name="print_options_collapsed">Print options collapsed</string>

    <!-- Select printer activity -->

    <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
+11 −35
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import com.android.printspooler.model.PageContentRepository;
import com.android.printspooler.model.PageContentRepository.PageContentProvider;
import com.android.printspooler.util.PageRangeUtils;
import com.android.printspooler.widget.PageContentView;
import com.android.printspooler.widget.PreviewPageFrame;
import dalvik.system.CloseGuard;

import java.util.ArrayList;
@@ -94,12 +95,6 @@ public final class PageAdapter extends Adapter implements
    private int mDocumentPageCount = PrintDocumentInfo.PAGE_COUNT_UNKNOWN;
    private int mSelectedPageCount;

    private float mSelectedPageElevation;
    private float mSelectedPageAlpha;

    private float mUnselectedPageElevation;
    private float mUnselectedPageAlpha;

    private int mPreviewPageMargin;
    private int mPreviewPageMinWidth;
    private int mPreviewListPadding;
@@ -134,16 +129,6 @@ public final class PageAdapter extends Adapter implements
                Context.LAYOUT_INFLATER_SERVICE);
        mPageContentRepository = new PageContentRepository(context, this);

        mSelectedPageElevation = mContext.getResources().getDimension(
                R.dimen.selected_page_elevation);
        mSelectedPageAlpha = mContext.getResources().getFraction(
                R.fraction.page_selected_alpha, 1, 1);

        mUnselectedPageElevation = mContext.getResources().getDimension(
                R.dimen.unselected_page_elevation);
        mUnselectedPageAlpha = mContext.getResources().getFraction(
                R.fraction.page_unselected_alpha, 1, 1);

        mPreviewPageMargin = mContext.getResources().getDimensionPixelSize(
                R.dimen.preview_page_margin);

@@ -296,7 +281,7 @@ public final class PageAdapter extends Adapter implements

        MyViewHolder myHolder = (MyViewHolder) holder;

        View page = holder.itemView;
        PreviewPageFrame page = (PreviewPageFrame) holder.itemView;
        page.setOnClickListener(mPageClickListener);

        page.setTag(holder);
@@ -340,20 +325,15 @@ public final class PageAdapter extends Adapter implements
        }
        content.init(provider, mEmptyState, mMediaSize, mMinMargins);

        View pageSelector = page.findViewById(R.id.page_selector);
        pageSelector.setTag(myHolder);
        pageSelector.setOnClickListener(mPageClickListener);

        if (mConfirmedPagesInDocument.indexOfKey(pageInDocument) >= 0) {
            pageSelector.setSelected(true);
            page.setTranslationZ(mSelectedPageElevation);
            page.setAlpha(mSelectedPageAlpha);
            page.setSelected(true, false);
        } else {
            pageSelector.setSelected(false);
            page.setTranslationZ(mUnselectedPageElevation);
            page.setAlpha(mUnselectedPageAlpha);
            page.setSelected(false, false);
        }

        page.setContentDescription(mContext.getString(R.string.page_description_template,
                pageInDocument + 1, mDocumentPageCount));

        TextView pageNumberView = (TextView) page.findViewById(R.id.page_number);
        String text = mContext.getString(R.string.current_page_template,
                pageInDocument + 1, mDocumentPageCount);
@@ -793,24 +773,20 @@ public final class PageAdapter extends Adapter implements

    private final class PageClickListener implements OnClickListener {
        @Override
        public void onClick(View page) {
        public void onClick(View view) {
            PreviewPageFrame page = (PreviewPageFrame) view;
            MyViewHolder holder = (MyViewHolder) page.getTag();
            final int pageInAdapter = holder.mPageInAdapter;
            final int pageInDocument = computePageIndexInDocument(pageInAdapter);
            View pageSelector = page.findViewById(R.id.page_selector);
            if (mConfirmedPagesInDocument.indexOfKey(pageInDocument) < 0) {
                mConfirmedPagesInDocument.put(pageInDocument, null);
                pageSelector.setSelected(true);
                page.animate().translationZ(mSelectedPageElevation)
                        .alpha(mSelectedPageAlpha);
                page.setSelected(true, true);
            } else {
                if (mConfirmedPagesInDocument.size() <= 1) {
                    return;
                }
                mConfirmedPagesInDocument.remove(pageInDocument);
                pageSelector.setSelected(false);
                page.animate().translationZ(mUnselectedPageElevation)
                        .alpha(mUnselectedPageAlpha);
                page.setSelected(false, true);
            }
        }
    }
+28 −9
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
@@ -191,6 +192,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat

    private PrintContentView mOptionsContent;

    private View mSummaryContainer;
    private TextView mSummaryCopies;
    private TextView mSummaryPaperSize;

@@ -983,6 +985,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat

    private void bindUi() {
        // Summary
        mSummaryContainer = findViewById(R.id.summary_content);
        mSummaryCopies = (TextView) findViewById(R.id.copies_count_summary);
        mSummaryPaperSize = (TextView) findViewById(R.id.paper_size_summary);

@@ -1081,15 +1084,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat

    void updateOptionsUi() {
        // Always update the summary.
        if (!TextUtils.isEmpty(mCopiesEditText.getText())) {
            mSummaryCopies.setText(mCopiesEditText.getText());
        }

        final int selectedMediaIndex = mMediaSizeSpinner.getSelectedItemPosition();
        if (selectedMediaIndex >= 0) {
            SpinnerItem<MediaSize> mediaItem = mMediaSizeSpinnerAdapter.getItem(selectedMediaIndex);
            mSummaryPaperSize.setText(mediaItem.label);
        }
        updateSummary();

        if (mState == STATE_PRINT_CONFIRMED
                || mState == STATE_PRINT_COMPLETED
@@ -1330,8 +1325,10 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
        // Print
        if (mDestinationSpinnerAdapter.getPdfPrinter() != mCurrentPrinter) {
            mPrintButton.setImageResource(com.android.internal.R.drawable.ic_print);
            mPrintButton.setContentDescription(getString(R.string.print_button));
        } else {
            mPrintButton.setImageResource(R.drawable.ic_menu_savetopdf);
            mPrintButton.setContentDescription(getString(R.string.savetopdf_button));
        }
        if ((mRangeOptionsSpinner.getSelectedItemPosition() == 1
                && (TextUtils.isEmpty(mPageRangeEditText.getText()) || hasErrors()))
@@ -1357,6 +1354,28 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
        }
    }

    private void updateSummary() {
        CharSequence copiesText = null;
        CharSequence mediaSizeText = null;

        if (!TextUtils.isEmpty(mCopiesEditText.getText())) {
            copiesText = mCopiesEditText.getText();
            mSummaryCopies.setText(copiesText);
        }

        final int selectedMediaIndex = mMediaSizeSpinner.getSelectedItemPosition();
        if (selectedMediaIndex >= 0) {
            SpinnerItem<MediaSize> mediaItem = mMediaSizeSpinnerAdapter.getItem(selectedMediaIndex);
            mediaSizeText = mediaItem.label;
            mSummaryPaperSize.setText(mediaSizeText);
        }

        if (!TextUtils.isEmpty(copiesText) && !TextUtils.isEmpty(mediaSizeText)) {
            String summaryText = getString(R.string.summary_template, copiesText, mediaSizeText);
            mSummaryContainer.setContentDescription(summaryText);
        }
    }

    private void updatePageRangeOptions(int pageCount) {
        ArrayAdapter<SpinnerItem<Integer>> rangeOptionsSpinnerAdapter =
                (ArrayAdapter) mRangeOptionsSpinner.getAdapter();
+1 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import com.android.printspooler.model.PageContentRepository.PageContentProvider;
 */
public class PageContentView extends View
        implements PageContentRepository.OnPageContentAvailableCallback {

    private PageContentProvider mProvider;

    private MediaSize mMediaSize;
Loading