1ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen/*
2ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * Copyright (C) 2014 The Android Open Source Project
3ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen *
4ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * Licensed under the Apache License, Version 2.0 (the "License");
5ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * you may not use this file except in compliance with the License.
6ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * You may obtain a copy of the License at
7ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen *
8ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen *      http://www.apache.org/licenses/LICENSE-2.0
9ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen *
10ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * Unless required by applicable law or agreed to in writing, software
11ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * distributed under the License is distributed on an "AS IS" BASIS,
12ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * See the License for the specific language governing permissions and
14ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * limitations under the License.
15ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen */
16ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen
17ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazenpackage android.support.v4.app;
18ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen
19ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazenimport android.app.RemoteInput;
20ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazenimport android.content.Intent;
21ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazenimport android.os.Bundle;
22ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen
23ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazenclass RemoteInputCompatApi20 {
24ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    static RemoteInputCompatBase.RemoteInput[] toCompat(RemoteInput[] srcArray,
25ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen            RemoteInputCompatBase.RemoteInput.Factory factory) {
26ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen        if (srcArray == null) {
27ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen            return null;
28ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen        }
29ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen        RemoteInputCompatBase.RemoteInput[] result = factory.newArray(srcArray.length);
30ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen        for (int i = 0; i < srcArray.length; i++) {
31ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen            RemoteInput src = srcArray[i];
32ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen            result[i] = factory.build(src.getResultKey(), src.getLabel(), src.getChoices(),
33ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen                    src.getAllowFreeFormInput(), src.getExtras());
34ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen        }
35ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen        return result;
36ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    }
37ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen
38ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    static RemoteInput[] fromCompat(RemoteInputCompatBase.RemoteInput[] srcArray) {
39ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen        if (srcArray == null) {
40ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen            return null;
41ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen        }
42ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen        RemoteInput[] result = new RemoteInput[srcArray.length];
43ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen        for (int i = 0; i < srcArray.length; i++) {
44ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen            RemoteInputCompatBase.RemoteInput src = srcArray[i];
45ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen            result[i] = new RemoteInput.Builder(src.getResultKey())
46ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen                    .setLabel(src.getLabel())
47ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen                    .setChoices(src.getChoices())
48ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen                    .setAllowFreeFormInput(src.getAllowFreeFormInput())
492bb98d48fdaf79a2bbd9d247da81a2bb9834dfc7Griff Hazen                    .addExtras(src.getExtras())
50ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen                    .build();
51ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen        }
52ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen        return result;
53ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    }
54ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen
55ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    static Bundle getResultsFromIntent(Intent intent) {
56ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen        return RemoteInput.getResultsFromIntent(intent);
57ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    }
58ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen
59ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    static void addResultsToIntent(RemoteInputCompatBase.RemoteInput[] remoteInputs,
60ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen            Intent intent, Bundle results) {
61ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen        RemoteInput.addResultsToIntent(fromCompat(remoteInputs), intent, results);
62ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    }
63ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen}
64