• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.providers.media.photopicker.data;
17 
18 import static com.android.providers.media.photopicker.data.PickerDbFacade.QueryFilterBuilder.BOOLEAN_DEFAULT;
19 import static com.android.providers.media.photopicker.data.PickerDbFacade.QueryFilterBuilder.LIMIT_DEFAULT;
20 import static com.android.providers.media.photopicker.data.PickerDbFacade.QueryFilterBuilder.LONG_DEFAULT;
21 import static com.android.providers.media.photopicker.data.PickerDbFacade.QueryFilterBuilder.STRING_DEFAULT;
22 
23 import android.os.Bundle;
24 import android.provider.CloudMediaProviderContract;
25 import android.provider.CloudMediaProviderContract.AlbumColumns;
26 import android.provider.MediaStore;
27 
28 /**
29  * Represents the {@link CloudMediaProviderContract} extra filters from a {@link Bundle}.
30  */
31 public class CloudProviderQueryExtras {
32     private final String mAlbumId;
33     private final String mAlbumAuthority;
34     private final String mMimeType;
35     private final long mSizeBytes;
36     private final long mGeneration;
37     private final int mLimit;
38     private final boolean mIsFavorite;
39     private final boolean mIsVideo;
40 
CloudProviderQueryExtras()41     private CloudProviderQueryExtras() {
42         mAlbumId = STRING_DEFAULT;
43         mAlbumAuthority = STRING_DEFAULT;
44         mMimeType = STRING_DEFAULT;
45         mSizeBytes = LONG_DEFAULT;
46         mGeneration = LONG_DEFAULT;
47         mLimit = LIMIT_DEFAULT;
48         mIsFavorite = BOOLEAN_DEFAULT;
49         mIsVideo = BOOLEAN_DEFAULT;
50     }
51 
CloudProviderQueryExtras(String albumId, String albumAuthority, String mimeType, long sizeBytes, long generation, int limit, boolean isFavorite, boolean isVideo)52     private CloudProviderQueryExtras (String albumId, String albumAuthority, String mimeType,
53             long sizeBytes, long generation, int limit, boolean isFavorite, boolean isVideo) {
54         mAlbumId = albumId;
55         mAlbumAuthority = albumAuthority;
56         mMimeType = mimeType;
57         mSizeBytes = sizeBytes;
58         mGeneration = generation;
59         mLimit = limit;
60         mIsFavorite = isFavorite;
61         mIsVideo = isVideo;
62     }
63 
fromMediaStoreBundle(Bundle bundle, String localProvider)64     public static CloudProviderQueryExtras fromMediaStoreBundle(Bundle bundle,
65             String localProvider) {
66         if (bundle == null) {
67             return new CloudProviderQueryExtras();
68         }
69 
70         final String albumId = bundle.getString(MediaStore.QUERY_ARG_ALBUM_ID, STRING_DEFAULT);
71         final String albumAuthority = bundle.getString(MediaStore.QUERY_ARG_ALBUM_AUTHORITY,
72                 STRING_DEFAULT);
73         final String mimeType = bundle.getString(MediaStore.QUERY_ARG_MIME_TYPE, STRING_DEFAULT);
74 
75         final long sizeBytes = bundle.getLong(MediaStore.QUERY_ARG_SIZE_BYTES, LONG_DEFAULT);
76         final long generation = LONG_DEFAULT;
77         final int limit = bundle.getInt(MediaStore.QUERY_ARG_LIMIT, LIMIT_DEFAULT);
78 
79         final boolean isFavorite = localProvider.equals(albumAuthority)
80                 && AlbumColumns.ALBUM_ID_FAVORITES.equals(albumId);
81         final boolean isVideo = localProvider.equals(albumAuthority)
82                 && AlbumColumns.ALBUM_ID_VIDEOS.equals(albumId);
83 
84         return new CloudProviderQueryExtras(albumId, albumAuthority, mimeType, sizeBytes,
85                 generation, limit, isFavorite, isVideo);
86     }
87 
fromCloudMediaBundle(Bundle bundle)88     public static CloudProviderQueryExtras fromCloudMediaBundle(Bundle bundle) {
89         if (bundle == null) {
90             return new CloudProviderQueryExtras();
91         }
92 
93         final String albumId = bundle.getString(CloudMediaProviderContract.EXTRA_ALBUM_ID,
94                 STRING_DEFAULT);
95         final String albumAuthority = STRING_DEFAULT;
96         final String mimeType = bundle.getString(CloudMediaProviderContract.EXTRA_MIME_TYPE,
97                 STRING_DEFAULT);
98         final long sizeBytes = bundle.getLong(CloudMediaProviderContract.EXTRA_SIZE_LIMIT_BYTES,
99                 LONG_DEFAULT);
100         final long generation = bundle.getLong(CloudMediaProviderContract.EXTRA_SYNC_GENERATION,
101                 LONG_DEFAULT);
102         final int limit = LIMIT_DEFAULT;
103 
104         final boolean isFavorite = BOOLEAN_DEFAULT;
105         final boolean isVideo = BOOLEAN_DEFAULT;
106 
107         return new CloudProviderQueryExtras(albumId, albumAuthority, mimeType, sizeBytes,
108                 generation, limit, isFavorite, isVideo);
109     }
110 
toQueryFilter()111     public PickerDbFacade.QueryFilter toQueryFilter() {
112         PickerDbFacade.QueryFilterBuilder qfb = new PickerDbFacade.QueryFilterBuilder(mLimit);
113         qfb.setSizeBytes(mSizeBytes);
114         qfb.setMimeType(mMimeType);
115         qfb.setIsFavorite(mIsFavorite);
116         qfb.setIsVideo(mIsVideo);
117         qfb.setAlbumId(mAlbumId);
118         return qfb.build();
119     }
120 
toCloudMediaBundle()121     public Bundle toCloudMediaBundle() {
122         final Bundle extras = new Bundle();
123         extras.putString(CloudMediaProviderContract.EXTRA_ALBUM_ID, mAlbumId);
124         extras.putString(CloudMediaProviderContract.EXTRA_MIME_TYPE, mMimeType);
125         extras.putLong(CloudMediaProviderContract.EXTRA_SIZE_LIMIT_BYTES, mSizeBytes);
126 
127         return extras;
128     }
129 
getAlbumId()130     public String getAlbumId() {
131         return mAlbumId;
132     }
133 
getAlbumAuthority()134     public String getAlbumAuthority() {
135         return mAlbumAuthority;
136     }
137 
getMimeType()138     public String getMimeType() {
139         return mMimeType;
140     }
141 
getSizeBytes()142     public long getSizeBytes() {
143         return mSizeBytes;
144     }
145 
getGeneration()146     public long getGeneration() {
147         return mGeneration;
148     }
149 
isFavorite()150     public boolean isFavorite() {
151         return mIsFavorite;
152     }
153 
isVideo()154     public boolean isVideo() {
155         return mIsVideo;
156     }
157 }
158