1c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar/*
2c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar * Copyright (C) 2017 The Android Open Source Project
3c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar *
4c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar * Licensed under the Apache License, Version 2.0 (the "License");
5c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar * you may not use this file except in compliance with the License.
6c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar * You may obtain a copy of the License at
7c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar *
8c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar *      http://www.apache.org/licenses/LICENSE-2.0
9c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar *
10c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar * Unless required by applicable law or agreed to in writing, software
11c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar * distributed under the License is distributed on an "AS IS" BASIS,
12c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar * See the License for the specific language governing permissions and
14c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar * limitations under the License.
15c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar */
16c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar
17564e43098c323d1a90be53c190b8fdbdde973505Sumir Katariapackage androidx.work.integration.testapp.imageprocessing;
18c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar
19c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagarimport android.arch.lifecycle.Observer;
20c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagarimport android.content.Intent;
21c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagarimport android.os.Build;
22c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagarimport android.os.Bundle;
23c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagarimport android.provider.MediaStore;
24c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagarimport android.support.v7.app.AppCompatActivity;
25c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagarimport android.support.v7.widget.LinearLayoutManager;
26c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagarimport android.support.v7.widget.RecyclerView;
27c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagarimport android.util.Log;
28c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagarimport android.view.View;
29c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar
307031a0fbe12b8159ab2dc6d9c50be5b3f38477faRahul Ravikumarimport androidx.work.OneTimeWorkRequest;
31564e43098c323d1a90be53c190b8fdbdde973505Sumir Katariaimport androidx.work.WorkManager;
32564e43098c323d1a90be53c190b8fdbdde973505Sumir Katariaimport androidx.work.integration.testapp.R;
33564e43098c323d1a90be53c190b8fdbdde973505Sumir Katariaimport androidx.work.integration.testapp.db.Image;
34564e43098c323d1a90be53c190b8fdbdde973505Sumir Katariaimport androidx.work.integration.testapp.db.TestDatabase;
35564e43098c323d1a90be53c190b8fdbdde973505Sumir Kataria
3664e6bd86c786f1cb1b0c3dbc2b5307cca5c0d1f6Sumir Katariaimport java.util.List;
3764e6bd86c786f1cb1b0c3dbc2b5307cca5c0d1f6Sumir Kataria
38c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar/**
39c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar * Image Processing Activity
40c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar */
41c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagarpublic class ImageProcessingActivity extends AppCompatActivity {
42c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar    private static final int IMAGE_REQUEST_CODE = 1;
43c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar    private static final String TAG = "ImageProcessingActivity";
44c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar    private ImageRecyclerViewAdapter mImageRecyclerViewAdapter;
45c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar
46c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar    @Override
47c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar    protected void onCreate(Bundle savedInstanceState) {
48c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        super.onCreate(savedInstanceState);
49c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        setContentView(R.layout.activity_image_processing);
50c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar
51c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        mImageRecyclerViewAdapter = new ImageRecyclerViewAdapter();
52c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar
53c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        RecyclerView mRecyclerView = findViewById(R.id.image_recycler_view);
54c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
55c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        mRecyclerView.setAdapter(mImageRecyclerViewAdapter);
56c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar
57c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        TestDatabase.getInstance(this)
58c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                .getImageDao()
59c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                .getImagesLiveData()
60c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                .observe(this, new Observer<List<Image>>() {
61c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                    @Override
62c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                    public void onChanged(List<Image> images) {
63c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                        mImageRecyclerViewAdapter.updateList(images);
64c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                    }
65c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                });
66c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar
67c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        findViewById(R.id.add_image).setOnClickListener(new View.OnClickListener() {
68c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar            @Override
69c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar            public void onClick(View v) {
70c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                Intent chooseIntent = new Intent(
71c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                        Intent.ACTION_PICK,
72c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                        MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
73c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                if (Build.VERSION.SDK_INT >= 18) {
74c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                    chooseIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
75c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                }
76c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                startActivityForResult(chooseIntent, IMAGE_REQUEST_CODE);
77c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar            }
78c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        });
79c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar
80c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        findViewById(R.id.clear_all).setOnClickListener(new View.OnClickListener() {
81c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar            @Override
82c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar            public void onClick(View v) {
83c7077ec99a2bf4884a6e4f297398eb3f6df83d6fRahul Ravikumar                WorkManager.getInstance()
847031a0fbe12b8159ab2dc6d9c50be5b3f38477faRahul Ravikumar                        .enqueue(OneTimeWorkRequest.from(ImageCleanupWorker.class));
85c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar            }
86c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        });
87c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar    }
88c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar
89c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar    @Override
90c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
91c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        if (requestCode == IMAGE_REQUEST_CODE && resultCode == RESULT_OK
92c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                && Build.VERSION.SDK_INT >= 16 && data.getClipData() != null) {
93c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar            Log.d(TAG, "Image Selection Complete");
94c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar            int count = data.getClipData().getItemCount();
957031a0fbe12b8159ab2dc6d9c50be5b3f38477faRahul Ravikumar            OneTimeWorkRequest[] processingWork = new OneTimeWorkRequest[count];
967031a0fbe12b8159ab2dc6d9c50be5b3f38477faRahul Ravikumar            OneTimeWorkRequest[] setupWork = new OneTimeWorkRequest[count];
97c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar            for (int i = 0; i < count; i++) {
98c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                String uriString = data.getClipData().getItemAt(i).getUri().toString();
99c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                setupWork[i] = ImageSetupWorker.createWork(uriString);
100c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                processingWork[i] = ImageProcessingWorker.createWork(uriString);
101c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar            }
102c7077ec99a2bf4884a6e4f297398eb3f6df83d6fRahul Ravikumar            WorkManager.getInstance()
10351b5cd2bc8a7fb7979e2bcd731fc8fd0d195f860Sumir Kataria                    .beginWith(setupWork)
104dc9c66fc5b9155a1264225dc2f1807a3c4b429f0Rahul Ravikumar                    .then(processingWork)
105dc9c66fc5b9155a1264225dc2f1807a3c4b429f0Rahul Ravikumar                    .enqueue();
106c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        } else if (requestCode == IMAGE_REQUEST_CODE && resultCode == RESULT_OK
107c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                && data.getData() != null) {
108c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar            Log.d(TAG, "Image Selection Complete");
109c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar            String uriString = data.getData().toString();
1107031a0fbe12b8159ab2dc6d9c50be5b3f38477faRahul Ravikumar            OneTimeWorkRequest setupWork = ImageSetupWorker.createWork(uriString);
1117031a0fbe12b8159ab2dc6d9c50be5b3f38477faRahul Ravikumar            OneTimeWorkRequest processingWork = ImageProcessingWorker.createWork(uriString);
112c7077ec99a2bf4884a6e4f297398eb3f6df83d6fRahul Ravikumar            WorkManager.getInstance()
11351b5cd2bc8a7fb7979e2bcd731fc8fd0d195f860Sumir Kataria                    .beginWith(setupWork)
114dc9c66fc5b9155a1264225dc2f1807a3c4b429f0Rahul Ravikumar                    .then(processingWork)
115dc9c66fc5b9155a1264225dc2f1807a3c4b429f0Rahul Ravikumar                    .enqueue();
116c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        } else if (requestCode == IMAGE_REQUEST_CODE && resultCode == RESULT_CANCELED) {
117c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar            Log.d(TAG, "Image Selection Cancelled");
118c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        } else {
119c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar            throw new UnsupportedOperationException();
120c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar        }
121c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar    }
122c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar}
123