コード例 #1
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            Log.Debug(TAG, "onCreate()");
            base.OnCreate(savedInstanceState);

            Xamarin.Essentials.Platform.Init(this, savedInstanceState);

            // Force the controller into a full screen view
            Window.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.Fullscreen);
            RequestWindowFeature(WindowFeatures.NoTitle);
            var uiOptions = SystemUiFlags.HideNavigation |
                            SystemUiFlags.LayoutHideNavigation |
                            SystemUiFlags.LayoutFullscreen |
                            SystemUiFlags.Fullscreen |
                            SystemUiFlags.LayoutStable |
                            SystemUiFlags.ImmersiveSticky;

            Window.DecorView.SystemUiVisibility = (StatusBarVisibility)uiOptions;

            keyboardView = LayoutInflater.Inflate(SwSettings.GetSelectedLayout(), null);
            keyboardView.SetMinimumHeight(MULTI_DISPLAY_HEIGHT_PX);
            SetContentView(keyboardView);

            SwDisplayManager.StartSwDisplayManager();
            SetInputListeners((ViewGroup)keyboardView);
            instance = this;
        }
コード例 #2
0
        private void SetInputListener(View vin, SwSettings.ControlId cid)
        {
            var motion  = SwSettings.GetControlMotion(cid);
            var vibrate = SwSettings.GetVibrationEnable();

            vin.SetOnTouchListener(new SwButtonListener(vin, motion, vibrate));
        }
コード例 #3
0
        private void ConfigureVibrationSpinner()
        {
            Log.Debug(TAG, "ConfigureVibrationSpinner");
            var spinner = FindViewById <Spinner>(Resource.Id.vibrationEnable);

            spinner.Prompt = "Enable/Disable vibration on button press";

            var           set_vibration        = SwSettings.GetVibrationEnable();
            var           set_vibration_string = "";
            List <string> inputNames           = new List <string>();

            foreach (var vib_str in SwSettings.VIBRATION_TO_STRING_MAP.Keys)
            {
                inputNames.Add(vib_str);
                if (set_vibration == SwSettings.VIBRATION_TO_STRING_MAP[vib_str])
                {
                    set_vibration_string = vib_str;
                }
            }
            var adapter = new ArrayAdapter <string>(this, Resource.Layout.spinner_item, inputNames);

            adapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
            spinner.Adapter = adapter;

            spinner.ItemSelected += new EventHandler <AdapterView.ItemSelectedEventArgs>(VibrationSpinnerItemSelected);
            ignore_spinner_count++;

            int spinner_position = adapter.GetPosition(set_vibration_string);

            spinner.SetSelection(spinner_position);

            spinner.Invalidate();
        }
コード例 #4
0
        private void RefreshAnalogSpinner()
        {
            Log.Debug(TAG, "RefreshAnalogSpinner");

            var spinner = FindViewById <Spinner>(Resource.Id.analogDirections);

            var set_direction = SwSettings.GetControlMotion(selected_control).directionCount;

            Log.Debug(TAG, "Control = " + CONTROL_TO_STRING_MAP[selected_control] + " directions = " + set_direction.ToString());

            if (!IsAnalogControl(selected_control))
            {
                spinner.Visibility = ViewStates.Invisible;
                spinner.Invalidate();
                return;
            }

            spinner.Visibility = ViewStates.Visible;
            var set_direction_string = "";

            foreach (var key in SwSettings.DIRECTION_TO_STRING_MAP.Keys)
            {
                if (SwSettings.DIRECTION_TO_STRING_MAP[key] == set_direction)
                {
                    set_direction_string = key;
                }
            }

            var adapter          = (ArrayAdapter)spinner.Adapter;
            int spinner_position = adapter.GetPosition(set_direction_string);

            spinner.SetSelection(spinner_position);

            spinner.Invalidate();
        }
コード例 #5
0
        protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
        {
            Log.Debug(TAG, "OnActivityResult " + data.Data.ToString());
            base.OnActivityResult(requestCode, resultCode, data);
            if (!File.Exists(data.Data.ToString()))
            {
                Log.Debug(TAG, data.Data.ToString() + " File Not Found!");
            }
            switch (requestCode)
            {
            case REQUEST_OPEN_FILE_CALLBACK:
                SwSettings.SetOpenSoundPath(data.Data);
                dispatcher.Post(new AudioUpdateMessage(data.Data, AudioUpdateMessage.AudioType.SwingOpen));
                {
                    // Make sure we can continue using the file after a reset
                    var takeFlags = ActivityFlags.GrantReadUriPermission | ActivityFlags.GrantWriteUriPermission;
                    ContentResolver.TakePersistableUriPermission(data.Data, takeFlags);
                }
                break;

            case REQUEST_CLOSE_FILE_CALLBACK:
                SwSettings.SetCloseSoundPath(data.Data);
                dispatcher.Post(new AudioUpdateMessage(data.Data, AudioUpdateMessage.AudioType.SwingClose));
                {
                    // Make sure we can continue using the file after a reset
                    var takeFlags = ActivityFlags.GrantReadUriPermission | ActivityFlags.GrantWriteUriPermission;
                    ContentResolver.TakePersistableUriPermission(data.Data, takeFlags);
                }
                break;

            default:
                Log.Debug(TAG, "Ignoring Activity Result");
                break;
            }
        }
コード例 #6
0
        private void ConfigureLayoutSpinner()
        {
            Log.Debug(TAG, "ConfigureLayoutSpinner");
            var spinner = FindViewById <Spinner>(Resource.Id.controllerLayout);

            spinner.Prompt = "Select Controller Layout";

            var           set_layout        = SwSettings.GetSelectedLayout();
            var           set_layout_string = "";
            List <string> inputNames        = new List <string>();

            foreach (var layout_str in SwSettings.LAYOUT_TO_STRING_MAP.Keys)
            {
                inputNames.Add(layout_str);
                if (set_layout == SwSettings.LAYOUT_TO_STRING_MAP[layout_str])
                {
                    set_layout_string = layout_str;
                }
            }
            var adapter = new ArrayAdapter <string>(this, Resource.Layout.spinner_item, inputNames);

            adapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
            spinner.Adapter = adapter;

            spinner.ItemSelected += new EventHandler <AdapterView.ItemSelectedEventArgs>(LayoutSpinnerItemSelected);
            ignore_spinner_count++;

            int spinner_position = adapter.GetPosition(set_layout_string);

            spinner.SetSelection(spinner_position);

            spinner.Invalidate();
        }
コード例 #7
0
        private void UpdateLayoutVisibility()
        {
            var inputViewA = FindViewById <ViewGroup>(Resource.Id.imeKeyViewA);
            var inputViewB = FindViewById <ViewGroup>(Resource.Id.imeKeyViewB);
            var inputViewC = FindViewById <ViewGroup>(Resource.Id.imeKeyViewC);

            inputViewA.Visibility = ViewStates.Gone;
            inputViewB.Visibility = ViewStates.Gone;
            inputViewC.Visibility = ViewStates.Gone;

            var layout = SwSettings.GetSelectedLayout();

            switch (layout)
            {
            case (Resource.Layout.input_b):
                inputViewB.Visibility = ViewStates.Visible;
                SetInputListeners(inputViewB);
                selected_layout = inputViewB;
                break;

            case (Resource.Layout.input_c):
                inputViewC.Visibility = ViewStates.Visible;
                SetInputListeners(inputViewC);
                selected_layout = inputViewC;
                break;

            default:
                inputViewA.Visibility = ViewStates.Visible;
                SetInputListeners(inputViewA);
                selected_layout = inputViewA;
                break;
            }
            RefreshInputHighlighting();
        }
コード例 #8
0
        private void ProfileSpinnerItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
        {
            Log.Debug(TAG, "ProfileSpinnerItemSelected");
            // Ignore the initial "Item Selected" calls during UI setup
            if (ignore_spinner_count != 0)
            {
                ignore_spinner_count--;
                return;
            }
            Spinner spinner        = (Spinner)sender;
            var     profile_string = string.Format("{0}", spinner.GetItemAtPosition(e.Position));

            SwSettings.SetSelectedKeymap(profile_string);
            RefreshInputHighlighting();
        }
コード例 #9
0
        private void LayoutSpinnerItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
        {
            Log.Debug(TAG, "LayoutSpinnerItemSelected");
            // Ignore the initial "Item Selected" calls during UI setup
            if (ignore_spinner_count != 0)
            {
                ignore_spinner_count--;
                return;
            }
            Spinner spinner       = (Spinner)sender;
            var     layout_string = string.Format("{0}", spinner.GetItemAtPosition(e.Position));
            var     layout        = SwSettings.LAYOUT_TO_STRING_MAP[layout_string];

            SwSettings.SetSelectedLayout(layout);
            UpdateLayoutVisibility();
        }
コード例 #10
0
        private void VibrationSpinnerItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
        {
            Log.Debug(TAG, "VibrationSpinnerItemSelected");
            // Ignore the initial "Item Selected" calls during UI setup
            if (ignore_spinner_count != 0)
            {
                ignore_spinner_count--;
                return;
            }
            Spinner spinner          = (Spinner)sender;
            var     vibration_string = string.Format("{0}", spinner.GetItemAtPosition(e.Position));

            var enable = SwSettings.VIBRATION_TO_STRING_MAP[vibration_string];

            SwSettings.SetVibrationEnable(enable);
        }
コード例 #11
0
 private void SetInputBackground(View vin, ControlId id)
 {
     Log.Debug(TAG, "SetInputBackground");
     if (id == selected_control)
     {
         vin.SetBackgroundColor(Android.Graphics.Color.SkyBlue);
     }
     else if (SwSettings.GetControlMotion(id).type == MotionType.Invalid)
     {
         vin.SetBackgroundColor(Android.Graphics.Color.Red);
     }
     else
     {
         vin.SetBackgroundColor(Android.Graphics.Color.Transparent);
     }
 }
コード例 #12
0
        public SwDisplayManager()
        {
            Log.Debug(TAG, "SwDisplayManager");

            lg_display_manager = new DisplayManagerHelper(this);
            instance           = this;

            dispatcher = SwSystem.MessageDispatcher.GetInstance();
            dispatcher.Subscribe(SwSystem.MessageType.DisplayUpdate, this);
            dispatcher.Subscribe(SwSystem.MessageType.ShowIme, this);
            dispatcher.Subscribe(SwSystem.MessageType.AudioUpdate, this);

            swivel_state_cb = new LgSwivelStateCallback();
            lg_display_manager.RegisterSwivelStateCallback(swivel_state_cb);
            OPEN_SOUND_PATH  = SwSettings.GetOpenSoundPath();
            CLOSE_SOUND_PATH = SwSettings.GetCloseSoundPath();
        }
コード例 #13
0
        private void DirectionSpinnerItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
        {
            Log.Debug(TAG, "DirectionSpinnerItemSelected");
            // Ignore the initial "Item Selected" calls during UI setup
            if (ignore_spinner_count != 0)
            {
                ignore_spinner_count--;
                return;
            }
            Spinner spinner          = (Spinner)sender;
            var     direction_string = string.Format("{0}", spinner.GetItemAtPosition(e.Position));

            var direction = SwSettings.DIRECTION_TO_STRING_MAP[direction_string];

            var motion = SwSettings.GetControlMotion(selected_control);

            motion.directionCount = direction;
            SwSettings.SetControlMotion(selected_control, motion);
        }
コード例 #14
0
        private void ConfigureProfileSpinner()
        {
            Log.Debug(TAG, "ConfigureProfileSpinner");
            var spinner = FindViewById <Spinner>(Resource.Id.controllerProfile);

            spinner.Prompt = "Select Controller Profile";

            var set_keymap = SwSettings.GetSelectedKeymap();
            var adapter    = new ArrayAdapter <string>(this, Resource.Layout.spinner_item, SwSettings.KEYMAP_FILENAMES);

            adapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
            spinner.Adapter = adapter;

            spinner.ItemSelected += new EventHandler <AdapterView.ItemSelectedEventArgs>(ProfileSpinnerItemSelected);
            ignore_spinner_count++;

            int spinner_position = adapter.GetPosition(set_keymap);

            spinner.SetSelection(spinner_position);

            spinner.Invalidate();
        }
コード例 #15
0
 private static extern SwReturnCode Seekware_SetSetting(IntPtr handle, SwSettings id, int value);
コード例 #16
0
 private void CommitMotionAndFinish()
 {
     SwSettings.SetControlMotion(control, motion);
     Finish();
 }
コード例 #17
0
 private bool DisablePromptRequired()
 {
     return((SwSettings.GetOpenSoundPath() == "") && (SwSettings.GetCloseSoundPath() == ""));
 }
コード例 #18
0
        private void SetJoystickListener(JoyStickView joystick, SwSettings.ControlId cid)
        {
            var motion = SwSettings.GetControlMotion(cid);

            joystick.SetOnMoveListener(new SwJoystickListener(motion));
        }