OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.widget; | 5 package org.chromium.chrome.browser.widget; |
6 | 6 |
7 import android.app.Dialog; | 7 import android.app.Dialog; |
8 import android.content.Context; | 8 import android.content.Context; |
9 import android.content.DialogInterface; | 9 import android.content.DialogInterface; |
10 import android.os.Bundle; | 10 import android.os.Bundle; |
11 import android.view.LayoutInflater; | 11 import android.view.LayoutInflater; |
12 import android.view.View; | 12 import android.view.View; |
13 import android.view.ViewGroup.LayoutParams; | 13 import android.view.ViewGroup.LayoutParams; |
14 import android.widget.FrameLayout; | 14 import android.widget.FrameLayout; |
15 | 15 |
16 import org.chromium.base.ApiCompatibilityUtils; | 16 import org.chromium.base.ApiCompatibilityUtils; |
17 import org.chromium.chrome.R; | 17 import org.chromium.chrome.R; |
| 18 import org.chromium.chrome.browser.infobar.InfoBarControlLayout; |
18 | 19 |
19 /** | 20 /** |
20 * Generic builder for promo dialogs. | 21 * Generic builder for promo dialogs. |
21 */ | 22 */ |
22 public abstract class PromoDialog | 23 public abstract class PromoDialog |
23 extends Dialog implements View.OnClickListener, DialogInterface.OnDismis
sListener { | 24 extends Dialog implements View.OnClickListener, DialogInterface.OnDismis
sListener { |
24 /** Parameters that can be used to create a new PromoDialog. */ | 25 /** Parameters that can be used to create a new PromoDialog. */ |
25 public static class DialogParams { | 26 public static class DialogParams { |
26 /** Optional: Resource ID of the Drawable to use for the promo illustrat
ion. */ | 27 /** Optional: Resource ID of the Drawable to use for the promo illustrat
ion. */ |
27 public int drawableResource; | 28 public int drawableResource; |
(...skipping 24 matching lines...) Expand all Loading... |
52 | 53 |
53 mScrimView = new FrameLayout(context); | 54 mScrimView = new FrameLayout(context); |
54 mScrimView.setBackgroundColor(ApiCompatibilityUtils.getColor( | 55 mScrimView.setBackgroundColor(ApiCompatibilityUtils.getColor( |
55 context.getResources(), R.color.modal_dialog_scrim_color)); | 56 context.getResources(), R.color.modal_dialog_scrim_color)); |
56 LayoutInflater.from(context).inflate(R.layout.promo_dialog_layout, mScri
mView, true); | 57 LayoutInflater.from(context).inflate(R.layout.promo_dialog_layout, mScri
mView, true); |
57 | 58 |
58 mDialogLayout = (PromoDialogLayout) mScrimView.findViewById(R.id.promo_d
ialog_layout); | 59 mDialogLayout = (PromoDialogLayout) mScrimView.findViewById(R.id.promo_d
ialog_layout); |
59 mDialogLayout.initialize(getDialogParams()); | 60 mDialogLayout.initialize(getDialogParams()); |
60 } | 61 } |
61 | 62 |
62 /** | 63 /** Add a standardized set of dialog controls. */ |
63 * Adds a View to the layout within the scrollable area. | 64 protected InfoBarControlLayout addControlLayout() { |
64 * See {@link PromoDialogLayout#addControl}. | 65 return mDialogLayout.addControlLayout(); |
65 */ | |
66 protected void addControl(View control) { | |
67 mDialogLayout.addControl(control); | |
68 } | 66 } |
69 | 67 |
70 @Override | 68 @Override |
71 protected void onCreate(Bundle savedInstanceState) { | 69 protected void onCreate(Bundle savedInstanceState) { |
72 super.onCreate(savedInstanceState); | 70 super.onCreate(savedInstanceState); |
73 setContentView(mScrimView); | 71 setContentView(mScrimView); |
74 | 72 |
75 // Force the window to allow the dialog contents be as wide as necessary
. | 73 // Force the window to allow the dialog contents be as wide as necessary
. |
76 getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARE
NT); | 74 getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARE
NT); |
77 | 75 |
78 // Connect all the buttons to this class. | 76 // Connect all the buttons to this class. |
79 for (int interactiveViewId : CLICKABLE_BUTTON_IDS) { | 77 for (int interactiveViewId : CLICKABLE_BUTTON_IDS) { |
80 View view = findViewById(interactiveViewId); | 78 View view = findViewById(interactiveViewId); |
81 if (view != null) view.setOnClickListener(this); | 79 if (view != null) view.setOnClickListener(this); |
82 } | 80 } |
83 } | 81 } |
84 | 82 |
85 @Override | 83 @Override |
86 public void onClick(View view) {} | 84 public void onClick(View view) {} |
87 | 85 |
88 /** Returns a set of {@link DialogParams} that define what is shown in the p
romo dialog. */ | 86 /** Returns a set of {@link DialogParams} that define what is shown in the p
romo dialog. */ |
89 protected abstract DialogParams getDialogParams(); | 87 protected abstract DialogParams getDialogParams(); |
90 } | 88 } |
OLD | NEW |