return languages;
}
+
+ public LanguageInfo GetNextLanguage()
+ {
+ List<LanguageInfo> languageInfos = languageInfoList.FindAll(x => x.Enabled == true);
+ int index = languageInfos.FindIndex(x => x.Name == languageInfoList[currentLanguage].Name);
+ if (index == languageInfos.Count - 1)
+ return languageInfos[0];
+ else
+ return languageInfos[index + 1];
+ }
+
+ public LanguageInfo GetPreviousLanguage()
+ {
+ List<LanguageInfo> languageInfos = languageInfoList.FindAll(x => x.Enabled == true);
+ int index = languageInfos.FindIndex(x => x.Name == languageInfoList[currentLanguage].Name);
+ if (index == 0)
+ return languageInfos[languageInfos.Count - 1];
+ else
+ return languageInfos[index - 1];
+ }
+
+ public void SelectLanguage(LanguageInfo language)
+ {
+ currentLanguage = languageInfoList.FindIndex(x => x.Name == language.Name);
+ }
}
}
using System.Xml;
using Tizen.NUI;
using Tizen.NUI.Components;
-using Tizen.NUI.BaseComponents;
using Tizen;
using System.Collections.Generic;
using Tizen.Applications;
};
window.Add(navigator);
- SCLNUI SclNui = new SCLNUI(navigator, DirectoryInfo.Resource + "main_entry.xml");
- Log.Info("NUIIME", "KOREAN_QTY");
-
- SclNui.SetInputMode("KOREAN_QTY");
- SclNui.SetCurrentSublayout("DEFAULT");
- SclNui.SetStringSubstitution("_LANGUAGE_", "Korean");
- SclNui.SetUpdatePending(false);
- navigator.Push(SclNui);
-
RegisterLanguageInfo();
bool exists = Preference.Contains(ResourceManager.IseConfigKeypadMode);
if (!exists)
IseConfig.Instance.ReadIseConfig();
LanguageManager.Instance.SetEnabledLanguages(IseConfig.Instance.EnabledLanguages);
+
+ LanguageInfo currentLanguage = LanguageManager.Instance.GetLanguageInfo(LanguageManager.Instance.GetCurrentLanguage());
+ SCLNUI SclNui = new SCLNUI(navigator, DirectoryInfo.Resource + "main_entry.xml");
+ SclNui.SetInputMode(currentLanguage.SelectedInputMode);
+ SclNui.SetCurrentSublayout("DEFAULT");
+ SclNui.SetStringSubstitution("_LANGUAGE_", currentLanguage.DisplayName);
+ SclNui.SetUpdatePending(false);
+ navigator.Push(SclNui);
}
private void RegisterLanguageInfo()
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate int KeyClickEventCallback(IntPtr eventDesc);
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+ internal delegate int DragStateChangedCallback(IntPtr eventDesc);
+
[DllImport(Libraries.SclNui, EntryPoint = "scl_nui_init")]
internal static extern int SclNuiInit(string entry_filepath);
[DllImport(Libraries.SclNui, EntryPoint = "scl_nui_set_key_click_event_cb")]
internal static extern int SclNuiKeyClickEventCb(KeyClickEventCallback callbackFunction);
+
+ [DllImport(Libraries.SclNui, EntryPoint = "scl_nui_set_drag_state_changed_cb")]
+ internal static extern int SclNuiDragStateChangedCb(DragStateChangedCallback callbackFunction);
}
}
using System;
using System.Collections.Generic;
-using System.Linq;
using System.Runtime.InteropServices;
-using System.Text;
-using System.Threading.Tasks;
using Tizen;
+using Tizen.Applications;
using Tizen.NUI;
using Tizen.NUI.BaseComponents;
using Tizen.NUI.Components;
private DrawRectangleCallback _draw_rectangle_cb = null;
private UpdateWindowCallback _update_window_cb = null;
private KeyClickEventCallback _onKeyClickEvent = null;
+ private DragStateChangedCallback _onDragStateChangedEvent = null;
private List<ImageView> image_list;
private List<TextLabel> label_list;
private ImageView imageView;
private View rectView;
+ private int beforePositionX = 0;
+ private int afterPositionX = 0;
+
enum LabelAlignment
{
LABEL_ALIGN_LEFT_TOP = 0,
navigator.Push(keyboardSettingPage);
}
+ if (eventInfo.keyValue.Equals("Space") && afterPositionX != 0 && Math.Abs(beforePositionX - afterPositionX) > 100)
+ {
+ navigator.Pop();
+ SCLNUI SclNui = new SCLNUI(navigator, Application.Current.DirectoryInfo.Resource + "main_entry.xml");
+ LanguageInfo nextLanguage = beforePositionX < afterPositionX ? LanguageManager.Instance.GetNextLanguage() : LanguageManager.Instance.GetPreviousLanguage();
+ LanguageManager.Instance.SelectLanguage(nextLanguage);
+ SclNui.SetInputMode(nextLanguage.SelectedInputMode);
+ SclNui.SetCurrentSublayout("DEFAULT");
+ SclNui.SetStringSubstitution("_LANGUAGE_", nextLanguage.DisplayName);
+ SclNui.SetUpdatePending(false);
+ navigator.Push(SclNui);
+ }
+
+ beforePositionX = 0;
+ afterPositionX = 0;
+
Marshal.FreeHGlobal(pnt);
return (int)SclNuiEventReturnType.PassOn;
};
SclNuiKeyClickEventCb(_onKeyClickEvent);
+ _onDragStateChangedEvent = (IntPtr eventDesc) =>
+ {
+ return (int)SclNuiEventReturnType.PassOn;
+ };
+ SclNuiDragStateChangedCb(_onDragStateChangedEvent);
+
Window.Instance.TouchEvent += OnWindowTouched;
BackKeyPressed += (object source, EventArgs args) =>
case PointStateType.Down:
{
Log.Info("NUIIME", "[MOUSE DOWN] x=" + e.Touch.GetScreenPosition(0).X + ", y=" + e.Touch.GetScreenPosition(0).Y);
-
SclControllerMousePress((int)e.Touch.GetScreenPosition(0).X, (int)e.Touch.GetScreenPosition(0).Y);
+ beforePositionX = (int)e.Touch.GetScreenPosition(0).X;
break;
}
case PointStateType.Motion:
{
Log.Info("NUIIME", "[MOUSE MOVE] x=" + e.Touch.GetScreenPosition(0).X + ", y=" + e.Touch.GetScreenPosition(0).Y);
SclControllerMouseMove((int)e.Touch.GetScreenPosition(0).X, (int)e.Touch.GetScreenPosition(0).Y, 0);
+ afterPositionX = (int)e.Touch.GetScreenPosition(0).X;
break;
}
case PointStateType.Up:
{
if (enableLanguages.Find(x => x == e.Name) != null && enableLanguages.Count > ResourceManager.MinSelectedLanguages)
{
+ LanguageInfo nextLanguage = LanguageManager.Instance.GetNextLanguage();
+ LanguageManager.Instance.SelectLanguage(nextLanguage);
enableLanguages.Remove(e.Name);
LanguageManager.Instance.SetEnabledLanguages(enableLanguages);
IseConfig.Instance.EnabledLanguages = enableLanguages;
private void GoBack()
{
navigator.Pop();
+ LanguageInfo currentLanguage = LanguageManager.Instance.GetLanguageInfo(LanguageManager.Instance.GetCurrentLanguage());
SCLNUI SclNui = new SCLNUI(navigator, Application.Current.DirectoryInfo.Resource + "main_entry.xml");
- SclNui.SetInputMode("KOREAN_QTY");
+ SclNui.SetInputMode(currentLanguage.SelectedInputMode);
SclNui.SetCurrentSublayout("DEFAULT");
- SclNui.SetStringSubstitution("_LANGUAGE_", "Korean");
+ SclNui.SetStringSubstitution("_LANGUAGE_", currentLanguage.DisplayName);
SclNui.SetUpdatePending(false);
navigator.Push(SclNui);
}
base.Dispose(type);
}
}
-}
\ No newline at end of file
+}
+