185035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes/*
285035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes * Copyright (C) 2016 The Android Open Source Project
385035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes *
485035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes * Licensed under the Apache License, Version 2.0 (the "License");
585035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes * you may not use this file except in compliance with the License.
685035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes * You may obtain a copy of the License at
785035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes *
885035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes *      http://www.apache.org/licenses/LICENSE-2.0
985035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes *
1085035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes * Unless required by applicable law or agreed to in writing, software
1185035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes * distributed under the License is distributed on an "AS IS" BASIS,
1285035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1385035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes * See the License for the specific language governing permissions and
1485035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes * limitations under the License
1585035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes */
1685035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes
1785035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banespackage android.support.v7.app;
1885035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes
1985035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banesimport android.content.Context;
208f886fe8c7e23fe6ccb8734167c960c2ed3429c3Alan Viveretteimport android.support.annotation.RequiresApi;
2185035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banesimport android.view.KeyboardShortcutGroup;
2285035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banesimport android.view.Menu;
2385035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banesimport android.view.Window;
2485035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes
2585035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banesimport java.util.List;
2685035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes
278f886fe8c7e23fe6ccb8734167c960c2ed3429c3Alan Viverette@RequiresApi(24)
2885035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banesclass AppCompatDelegateImplN extends AppCompatDelegateImplV23 {
2985035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes
3085035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes    AppCompatDelegateImplN(Context context, Window window, AppCompatCallback callback) {
3185035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes        super(context, window, callback);
3285035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes    }
3385035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes
3485035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes    @Override
3585035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes    Window.Callback wrapWindowCallback(Window.Callback callback) {
3685035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes        return new AppCompatWindowCallbackN(callback);
3785035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes    }
3885035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes
3985035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes    class AppCompatWindowCallbackN extends AppCompatWindowCallbackV23 {
4085035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes        AppCompatWindowCallbackN(Window.Callback callback) {
4185035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes            super(callback);
4285035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes        }
4385035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes
4485035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes        @Override
4596af432b980d0216c22a874f79173e7523dff892Clara Bayarri        public void onProvideKeyboardShortcuts(
4696af432b980d0216c22a874f79173e7523dff892Clara Bayarri                List<KeyboardShortcutGroup> data, Menu menu, int deviceId) {
4785035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes            final PanelFeatureState panel = getPanelState(Window.FEATURE_OPTIONS_PANEL, true);
4885035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes            if (panel != null && panel.menu != null) {
4985035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes                // The menu provided is one created by PhoneWindow which we don't actually use.
5085035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes                // Instead we'll pass through our own...
5196af432b980d0216c22a874f79173e7523dff892Clara Bayarri                super.onProvideKeyboardShortcuts(data, panel.menu, deviceId);
5285035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes            } else {
5385035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes                // If we don't have a menu, jump pass through the original instead
5496af432b980d0216c22a874f79173e7523dff892Clara Bayarri                super.onProvideKeyboardShortcuts(data, menu, deviceId);
5585035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes            }
5685035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes        }
5785035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes    }
5885035fae2e7f292a529dc70e8d41cebc799e7d4fChris Banes}
59