1 /*
2  * Copyright (C) 2017 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.wallpaper.picker;
17 
18 import android.content.Context;
19 import android.content.Intent;
20 import android.os.Bundle;
21 
22 import androidx.fragment.app.Fragment;
23 import androidx.fragment.app.FragmentManager;
24 
25 import com.android.wallpaper.R;
26 import com.android.wallpaper.model.InlinePreviewIntentFactory;
27 import com.android.wallpaper.model.WallpaperInfo;
28 import com.android.wallpaper.module.InjectorProvider;
29 import com.android.wallpaper.picker.AppbarFragment.AppbarFragmentHost;
30 import com.android.wallpaper.util.ActivityUtils;
31 
32 /**
33  * Activity that displays a preview of a specific wallpaper and provides the ability to set the
34  * wallpaper as the user's current wallpaper.
35  */
36 public class PreviewActivity extends BasePreviewActivity implements AppbarFragmentHost {
37 
38     /**
39      * Returns a new Intent with the provided WallpaperInfo instance put as an extra.
40      */
newIntent(Context packageContext, WallpaperInfo wallpaperInfo)41     public static Intent newIntent(Context packageContext, WallpaperInfo wallpaperInfo) {
42         Intent intent = new Intent(packageContext, PreviewActivity.class);
43         intent.putExtra(EXTRA_WALLPAPER_INFO, wallpaperInfo);
44         return intent;
45     }
46 
47     @Override
onCreate(Bundle savedInstanceState)48     protected void onCreate(Bundle savedInstanceState) {
49         super.onCreate(savedInstanceState);
50         setContentView(R.layout.activity_preview);
51 
52         enableFullScreen();
53 
54         FragmentManager fm = getSupportFragmentManager();
55         Fragment fragment = fm.findFragmentById(R.id.fragment_container);
56 
57         if (fragment == null) {
58             Intent intent = getIntent();
59             WallpaperInfo wallpaper = intent.getParcelableExtra(EXTRA_WALLPAPER_INFO);
60             boolean viewAsHome = intent.getBooleanExtra(EXTRA_VIEW_AS_HOME, true);
61             boolean testingModeEnabled = intent.getBooleanExtra(EXTRA_TESTING_MODE_ENABLED, false);
62             fragment = InjectorProvider.getInjector().getPreviewFragment(
63                     /* context */ this,
64                     wallpaper,
65                     PreviewFragment.MODE_CROP_AND_SET_WALLPAPER,
66                     viewAsHome,
67                     /* viewFullScreen= */ false,
68                     testingModeEnabled);
69             fm.beginTransaction()
70                     .add(R.id.fragment_container, fragment)
71                     .commit();
72         }
73     }
74 
75     @Override
onUpArrowPressed()76     public void onUpArrowPressed() {
77         onBackPressed();
78     }
79 
80     @Override
isUpArrowSupported()81     public boolean isUpArrowSupported() {
82         return !ActivityUtils.isSUWMode(getBaseContext());
83     }
84 
85     /**
86      * Implementation that provides an intent to start a PreviewActivity.
87      */
88     public static class PreviewActivityIntentFactory implements InlinePreviewIntentFactory {
89         @Override
newIntent(Context context, WallpaperInfo wallpaper)90         public Intent newIntent(Context context, WallpaperInfo wallpaper) {
91             return PreviewActivity.newIntent(context, wallpaper);
92         }
93     }
94 }
95