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

Commit 513eb24f authored by nicolasroard's avatar nicolasroard
Browse files

Add printing to Gallery

Change-Id: I26aad645759f95813003badffbd03845e0df37bb
parent f29cc45a
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -75,4 +75,7 @@
    <item android:id="@+id/action_show_on_map"
    <item android:id="@+id/action_show_on_map"
            android:title="@string/show_on_map"
            android:title="@string/show_on_map"
            android:showAsAction="never" />
            android:showAsAction="never" />
    <item android:id="@+id/print"
          android:title="@string/print_image"
          android:showAsAction="never" />
</menu>
</menu>
+17 −0
Original line number Original line Diff line number Diff line
@@ -29,6 +29,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.content.ServiceConnection;
import android.content.res.Configuration;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
import android.os.Bundle;
import android.os.IBinder;
import android.os.IBinder;
import android.view.Menu;
import android.view.Menu;
@@ -40,9 +41,11 @@ import com.android.gallery3d.R;
import com.android.gallery3d.common.ApiHelper;
import com.android.gallery3d.common.ApiHelper;
import com.android.gallery3d.data.DataManager;
import com.android.gallery3d.data.DataManager;
import com.android.gallery3d.data.MediaItem;
import com.android.gallery3d.data.MediaItem;
import com.android.gallery3d.filtershow.cache.ImageLoader;
import com.android.gallery3d.ui.GLRoot;
import com.android.gallery3d.ui.GLRoot;
import com.android.gallery3d.ui.GLRootView;
import com.android.gallery3d.ui.GLRootView;
import com.android.gallery3d.util.PanoramaViewHelper;
import com.android.gallery3d.util.PanoramaViewHelper;
import com.android.gallery3d.util.PrintJob;
import com.android.gallery3d.util.ThreadPool;
import com.android.gallery3d.util.ThreadPool;
import com.android.photos.data.GalleryBitmapPool;
import com.android.photos.data.GalleryBitmapPool;


@@ -342,4 +345,18 @@ public class AbstractGalleryActivity extends Activity implements GalleryContext
            throw new RuntimeException("Batch service unavailable");
            throw new RuntimeException("Batch service unavailable");
        }
        }
    }
    }

    public void printSelectedImage(Uri uri) {
        if (uri == null) {
            return;
        }
        String path = ImageLoader.getLocalPathFromUri(this, uri);
        if (path != null) {
            Uri localUri = Uri.parse(path);
            path = localUri.getLastPathSegment();
        } else {
            path = uri.getLastPathSegment();
        }
        PrintJob.printBitmapAtUri(this, path, uri);
    }
}
}
+4 −0
Original line number Original line Diff line number Diff line
@@ -1059,6 +1059,10 @@ public abstract class PhotoPage extends ActivityState implements
                }
                }
                return true;
                return true;
            }
            }
            case R.id.print: {
                mActivity.printSelectedImage(manager.getContentUri(path));
                return true;
            }
            case R.id.action_delete:
            case R.id.action_delete:
                confirmMsg = mActivity.getResources().getQuantityString(
                confirmMsg = mActivity.getResources().getQuantityString(
                        R.plurals.delete_selection, 1);
                        R.plurals.delete_selection, 1);
+14 −0
Original line number Original line Diff line number Diff line
@@ -18,9 +18,11 @@ package com.android.gallery3d.util;


import android.content.Context;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.RectF;
import android.net.Uri;
import android.os.Bundle;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.CancellationSignal;
import android.print.PageRange;
import android.print.PageRange;
@@ -29,13 +31,20 @@ import android.print.PrintDocumentAdapter;
import android.print.PrintDocumentInfo;
import android.print.PrintDocumentInfo;
import android.print.PrintManager;
import android.print.PrintManager;
import android.print.pdf.PdfDocument;
import android.print.pdf.PdfDocument;
import com.android.gallery3d.app.AbstractGalleryActivity;
import com.android.gallery3d.filtershow.cache.ImageLoader;
import com.android.gallery3d.filtershow.imageshow.MasterImage;
import com.android.gallery3d.filtershow.imageshow.MasterImage;


import java.io.FileDescriptor;
import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.FileOutputStream;


public class PrintJob {
public class PrintJob {
    private final static int MAX_PRINT_SIZE = 2048;

    public static void printBitmap(Context context, final String jobName, final Bitmap bitmap) {
    public static void printBitmap(Context context, final String jobName, final Bitmap bitmap) {
        if (bitmap == null) {
            return;
        }
        PrintManager printManager = (PrintManager) context.getSystemService(Context.PRINT_SERVICE);
        PrintManager printManager = (PrintManager) context.getSystemService(Context.PRINT_SERVICE);
        android.print.PrintJob printJob = printManager.print(jobName,
        android.print.PrintJob printJob = printManager.print(jobName,
                new PrintDocumentAdapter() {
                new PrintDocumentAdapter() {
@@ -95,4 +104,9 @@ public class PrintJob {


    }
    }


    public static void printBitmapAtUri(Context context, String imagePrint, Uri uri) {
        // TODO: load full size images. For now, it's better to constrain ourselves.
        Bitmap bitmap = ImageLoader.loadConstrainedBitmap(uri, context, MAX_PRINT_SIZE, null, false);
        printBitmap(context, imagePrint, bitmap);
    }
}
}