1eff7719415542ba819054863b0995f07742a7a8aJeff Brown/*
2eff7719415542ba819054863b0995f07742a7a8aJeff Brown * Copyright (C) 2013 The Android Open Source Project
3eff7719415542ba819054863b0995f07742a7a8aJeff Brown *
4eff7719415542ba819054863b0995f07742a7a8aJeff Brown * Licensed under the Apache License, Version 2.0 (the "License");
5eff7719415542ba819054863b0995f07742a7a8aJeff Brown * you may not use this file except in compliance with the License.
6eff7719415542ba819054863b0995f07742a7a8aJeff Brown * You may obtain a copy of the License at
7eff7719415542ba819054863b0995f07742a7a8aJeff Brown *
8eff7719415542ba819054863b0995f07742a7a8aJeff Brown *      http://www.apache.org/licenses/LICENSE-2.0
9eff7719415542ba819054863b0995f07742a7a8aJeff Brown *
10eff7719415542ba819054863b0995f07742a7a8aJeff Brown * Unless required by applicable law or agreed to in writing, software
11eff7719415542ba819054863b0995f07742a7a8aJeff Brown * distributed under the License is distributed on an "AS IS" BASIS,
12eff7719415542ba819054863b0995f07742a7a8aJeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13eff7719415542ba819054863b0995f07742a7a8aJeff Brown * See the License for the specific language governing permissions and
14eff7719415542ba819054863b0995f07742a7a8aJeff Brown * limitations under the License.
15eff7719415542ba819054863b0995f07742a7a8aJeff Brown */
16eff7719415542ba819054863b0995f07742a7a8aJeff Brown
17eff7719415542ba819054863b0995f07742a7a8aJeff Brownpackage android.support.v7.app;
18eff7719415542ba819054863b0995f07742a7a8aJeff Brown
19eff7719415542ba819054863b0995f07742a7a8aJeff Brown/**
20eff7719415542ba819054863b0995f07742a7a8aJeff Brown * The media route dialog factory is responsible for creating the media route
21eff7719415542ba819054863b0995f07742a7a8aJeff Brown * chooser and controller dialogs as needed.
22eff7719415542ba819054863b0995f07742a7a8aJeff Brown * <p>
23eff7719415542ba819054863b0995f07742a7a8aJeff Brown * The application can customize the dialogs by providing a subclass of the
24eff7719415542ba819054863b0995f07742a7a8aJeff Brown * dialog factory to the {@link MediaRouteButton} using the
25eff7719415542ba819054863b0995f07742a7a8aJeff Brown * {@link MediaRouteButton#setDialogFactory setDialogFactory} method.
26eff7719415542ba819054863b0995f07742a7a8aJeff Brown * </p>
27eff7719415542ba819054863b0995f07742a7a8aJeff Brown */
28eff7719415542ba819054863b0995f07742a7a8aJeff Brownpublic class MediaRouteDialogFactory {
29eff7719415542ba819054863b0995f07742a7a8aJeff Brown    private static final MediaRouteDialogFactory sDefault = new MediaRouteDialogFactory();
30eff7719415542ba819054863b0995f07742a7a8aJeff Brown
31eff7719415542ba819054863b0995f07742a7a8aJeff Brown    /**
32eff7719415542ba819054863b0995f07742a7a8aJeff Brown     * Creates a default media route dialog factory.
33eff7719415542ba819054863b0995f07742a7a8aJeff Brown     */
34eff7719415542ba819054863b0995f07742a7a8aJeff Brown    public MediaRouteDialogFactory() {
35eff7719415542ba819054863b0995f07742a7a8aJeff Brown    }
36eff7719415542ba819054863b0995f07742a7a8aJeff Brown
37eff7719415542ba819054863b0995f07742a7a8aJeff Brown    /**
38eff7719415542ba819054863b0995f07742a7a8aJeff Brown     * Gets the default factory instance.
39eff7719415542ba819054863b0995f07742a7a8aJeff Brown     *
40eff7719415542ba819054863b0995f07742a7a8aJeff Brown     * @return The default media route dialog factory, never null.
41eff7719415542ba819054863b0995f07742a7a8aJeff Brown     */
42eff7719415542ba819054863b0995f07742a7a8aJeff Brown    public static MediaRouteDialogFactory getDefault() {
43eff7719415542ba819054863b0995f07742a7a8aJeff Brown        return sDefault;
44eff7719415542ba819054863b0995f07742a7a8aJeff Brown    }
45eff7719415542ba819054863b0995f07742a7a8aJeff Brown
46eff7719415542ba819054863b0995f07742a7a8aJeff Brown    /**
47eff7719415542ba819054863b0995f07742a7a8aJeff Brown     * Called when the chooser dialog is being opened and it is time to create the fragment.
48eff7719415542ba819054863b0995f07742a7a8aJeff Brown     * <p>
49eff7719415542ba819054863b0995f07742a7a8aJeff Brown     * Subclasses may override this method to create a customized fragment.
50eff7719415542ba819054863b0995f07742a7a8aJeff Brown     * </p>
51eff7719415542ba819054863b0995f07742a7a8aJeff Brown     *
52eff7719415542ba819054863b0995f07742a7a8aJeff Brown     * @return The media route chooser dialog fragment, must not be null.
53eff7719415542ba819054863b0995f07742a7a8aJeff Brown     */
54eff7719415542ba819054863b0995f07742a7a8aJeff Brown    public MediaRouteChooserDialogFragment onCreateChooserDialogFragment() {
55eff7719415542ba819054863b0995f07742a7a8aJeff Brown        return new MediaRouteChooserDialogFragment();
56eff7719415542ba819054863b0995f07742a7a8aJeff Brown    }
57eff7719415542ba819054863b0995f07742a7a8aJeff Brown
58eff7719415542ba819054863b0995f07742a7a8aJeff Brown    /**
59eff7719415542ba819054863b0995f07742a7a8aJeff Brown     * Called when the controller dialog is being opened and it is time to create the fragment.
60eff7719415542ba819054863b0995f07742a7a8aJeff Brown     * <p>
61eff7719415542ba819054863b0995f07742a7a8aJeff Brown     * Subclasses may override this method to create a customized fragment.
62eff7719415542ba819054863b0995f07742a7a8aJeff Brown     * </p>
63eff7719415542ba819054863b0995f07742a7a8aJeff Brown     *
64eff7719415542ba819054863b0995f07742a7a8aJeff Brown     * @return The media route controller dialog fragment, must not be null.
65eff7719415542ba819054863b0995f07742a7a8aJeff Brown     */
66eff7719415542ba819054863b0995f07742a7a8aJeff Brown    public MediaRouteControllerDialogFragment onCreateControllerDialogFragment() {
67eff7719415542ba819054863b0995f07742a7a8aJeff Brown        return new MediaRouteControllerDialogFragment();
68eff7719415542ba819054863b0995f07742a7a8aJeff Brown    }
69eff7719415542ba819054863b0995f07742a7a8aJeff Brown}
70