示例#1
0
        private static UserData GetDataObjectFromReader(SqlDataReader dataReader)
        {
            UserData data = new UserData();

            if (dataReader.IsDBNull(dataReader.GetOrdinal("UserId")))
            {
                data.UserId = IdType.UNSET;
            }
            else
            {
                data.UserId = new IdType(dataReader.GetInt32(dataReader.GetOrdinal("UserId")));
            }
            if (dataReader.IsDBNull(dataReader.GetOrdinal("UserLogin")))
            {
                data.UserLogin = StringType.UNSET;
            }
            else
            {
                data.UserLogin = StringType.Parse(dataReader.GetString(dataReader.GetOrdinal("UserLogin")));
            }
            if (dataReader.IsDBNull(dataReader.GetOrdinal("UserLocale")))
            {
                data.UserLocale = LocaleEnum.UNSET;
            }
            else
            {
                data.UserLocale = LocaleEnum.GetInstance(dataReader.GetInt32(dataReader.GetOrdinal("UserLocale")));
            }

            return(data);
        }
示例#2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="FreezingArcher.Localization.Localizer"/> class.
        /// </summary>
        /// <param name="locales">Locales.</param>
        /// <param name="messageProvider">Message manager instance.</param>
        /// <param name="initialLocale">Initial locale.</param>
        public Localizer (Dictionary<LocaleEnum, LocalizationData> locales, MessageProvider messageProvider,
            LocaleEnum initialLocale = LocaleEnum.en_US)
        {
            Logger.Log.AddLogEntry (LogLevel.Fine, ClassName, "Creating localizer instance with initial locale '{0}'",
                initialLocale.ToString ());
            Locales = locales;
            CurrentLocale = initialLocale;

            if (messageProvider != null)
                messageProvider += this;
        }
示例#3
0
        public async Task SetEnglishLanguage()
        {
            var    readLanguage = new StreamReader("./Data/localizations/EN_us.json");
            string json         = await readLanguage.ReadToEndAsync();

            readLanguage.Close();
            localizations = JsonSerializer.Deserialize <Localizations>(json);

            var setLanguageDefault = new StreamWriter("./Data/localizations/setting.txt");
            await setLanguageDefault.WriteAsync("EN_us");

            setLanguageDefault.Close();
            locale = LocaleEnum.EnUs;
        }
示例#4
0
        public async Task SetHungarianLanguage()
        {
            var    readLanguage = new StreamReader("./Data/localizations/HU_hu.json");
            string json         = await readLanguage.ReadToEndAsync();

            readLanguage.Close();
            localizations = JsonSerializer.Deserialize <Localizations>(json);

            var setLanguageDefault = new StreamWriter("./Data/localizations/setting.txt");
            await setLanguageDefault.WriteAsync("HU_hu");

            setLanguageDefault.Close();
            locale = LocaleEnum.HuHu;
        }
示例#5
0
 /// <summary>
 /// Returns query string representation of given locale.
 /// </summary>
 /// <param name="region"></param>
 /// <returns></returns>
 public static string ToQueryString(this LocaleEnum locale)
 {
     return(locale switch
     {
         LocaleEnum.EnglishUK => "en_GB",
         LocaleEnum.EnglishUS => "en_US",
         LocaleEnum.French => "fr_FR",
         LocaleEnum.German => "de_DE",
         LocaleEnum.Italian => "it_IT",
         LocaleEnum.Korean => "ko_KR",
         LocaleEnum.PortugueseBR => "pt_BR",
         LocaleEnum.PortuguesePT => "pt_PT",
         LocaleEnum.Russian => "ru_RU",
         LocaleEnum.SpanishES => "es_ES",
         LocaleEnum.SpanishMX => "es_MX",
         LocaleEnum.Taiwanese => "zh_TW",
         _ => throw new NotImplementedException(nameof(locale))
     });
示例#6
0
        /// <summary>
        /// Разгребатель прилетевших от прокси обратных вызовов функций
        /// </summary>
        /// <param name="args">аргументы функций</param>
        /// <returns></returns>
        private unsafe object CallbackParser(object[] args)
        {
            if (args == null || args.Length == 0 || args[0] == null)
            {
                return(null);
            }

            switch (args[0])
            {
            // Отрабатываем все функции графического отображения и относящиеся к ним

            case FunctionNames.DRAW_FILLED_RECT:
                ucScreen.DrawFilledRect((int)args[1], (int)args[2], (int)args[3], (int)args[4]);
                break;

            case FunctionNames.DRAW_FILLED_RECT_BG:
                ucScreen.DrawFilledRectBg((int)args[1], (int)args[2], (int)args[3], (int)args[4]);
                break;

            case FunctionNames.DRAW_RECT:
                ucScreen.DrawRect((int)args[1], (int)args[2], (int)args[3], (int)args[4]);
                break;

            case FunctionNames.DRAW_HORIZONTAL_LINE:
                ucScreen.DrawLine((int)args[2], (int)args[1], (int)args[3], (int)args[1]);
                break;

            case FunctionNames.DRAW_VERTICAL_LINE:
                ucScreen.DrawLine((int)args[1], (int)args[2], (int)args[1], (int)args[3]);
                break;

            case FunctionNames.FILL_SCREEN_BG:
                ucScreen.FillScreenBg();
                break;

            case FunctionNames.TEXT_OUT:
                ucScreen.TextOut(args[1].ToString(), (int)args[2], (int)args[3]);
                break;

            case FunctionNames.TEXT_OUT_CENTER:
                ucScreen.TextOutCenter(args[1].ToString(), (int)args[2], (int)args[3]);
                break;

            case FunctionNames.SET_FG_COLOR:
                ucScreen.SetFgColor(WatchScreen.GetColorFromGRBInt((int)args[1]));
                break;

            case FunctionNames.SET_BG_COLOR:
                ucScreen.SetBgColor(WatchScreen.GetColorFromGRBInt((int)args[1]));
                break;

            case FunctionNames.GET_TEXT_HEIGHT:
                return(ucScreen.GetTextHeight());

            case FunctionNames.TEXT_WIDTH:
                return(ucScreen.GetTextWidth(args[1].ToString()));

            case FunctionNames.REPAINT_SCREEN_LINES:

                if (_useSharedVideoMemory)
                {
                    _sharedMemoryViewStream.Position = 0;
                    _sharedMemoryViewStream.Read(_videoMemory, 0, 15488);
                    ucScreen.SetVideoData(_videoMemory);
                }
                ucScreen.RepaintScreenLines((int)args[1], (int)args[2]);

                if (ucScreen.InvokeRequired)
                {
                    try
                    {
                        Invoke(new Action(() =>
                        {
                            ucScreen.Refresh();
                        }));
                    }
                    catch
                    {
                        Debug.WriteLine("Exception CallbackParser REPAINT_SCREEN_LINES");
                    }
                }
                else
                {
                    ucScreen.Refresh();
                }
                break;

            case FunctionNames.SHOW_ELF_RES_BY_ID:
                try
                {
                    if (_userResFile == null)
                    {
                        _userResFile = ResFile.Load(tbUserResFile.Text);
                    }

                    var resImage = new ResImage(_userResFile.Resources[(int)args[2]]);
                    ucScreen.DrawImage(resImage.Bitmap, (int)args[3], (int)args[4]);
                }
                catch
                {
                    Debug.WriteLine("Exception CallbackParser SHOW_ELF_RES_BY_ID");
                }

                return(0);

            case FunctionNames.SHOW_RES_BY_ID:
                ShowResById((int)args[1], (int)args[2], (int)args[3]);
                return(0);

            case FunctionNames.GET_RES_PARAMS:
            {
                var res = GetUserResImage((int)args[2]);
                if (res == null)
                {
                    return(-1);
                }

                var bmp = res.Bitmap;

                var param = new ResParam {
                    Width = (short)bmp.Width, Height = (short)bmp.Height
                };
                CopyStructToUnmanagedMemory(param, (IntPtr)args[3]);
                return(0);
            }

            case FunctionNames.READ_ELF_RES_BY_ID:
            {
                // only own resources
                if ((int)args[1] != -1)
                {
                    return(-1);
                }

                var data = GetUserResData(/*resId*/ (int)args[2], /*offset*/ (int)args[3], (int)args[5] /*len*/);
                Marshal.Copy(data, 0, (IntPtr)args[4], data.Length);
                return(0);
            }

            case FunctionNames.SHOW_BIG_DIGITS:
                ShowBigDigit((int)args[1], args[2].ToString(), (int)args[3], (int)args[4], (int)args[5]);
                break;

            case FunctionNames.LOG_PRINTF:
                DebugWriteLine(args[1].ToString());
                return(0);

            case FunctionNames.GET_LAST_HEARTRATE:
                int heartRate = 0;
                if (nudHeartRate.InvokeRequired)
                {
                    Invoke(new Action(() =>
                    {
                        heartRate = (int)nudHeartRate.Value;
                    }));
                }
                else
                {
                    heartRate = (int)nudHeartRate.Value;
                }
                return(heartRate);

            case FunctionNames.GET_HRM_STRUCT:
                HrmData hrmData = new HrmData();
                if (nudHeartRate.InvokeRequired)
                {
                    Invoke(new Action(() =>
                    {
                        hrmData = new HrmData
                        {
                            heart_rate = (byte)nudHeartRate.Value,
                            last_hr    = (byte)nudHeartRate.Value,
                            ret_code   = (byte)(cbHeartRateMeasurementComplited.Checked ? 0 : 5)
                        };
                    }));
                }
                else
                {
                    hrmData = new HrmData
                    {
                        heart_rate = (byte)nudHeartRate.Value,
                        last_hr    = (byte)nudHeartRate.Value,
                        ret_code   = (byte)(cbHeartRateMeasurementComplited.Checked ? 0 : 5)
                    }
                };


                if (_hrmDataPointer == IntPtr.Zero)
                {
                    _hrmDataPointer = Marshal.AllocHGlobal(Marshal.SizeOf(hrmData));
                }
                Marshal.StructureToPtr(hrmData, _hrmDataPointer, false);
                return(_hrmDataPointer.ToInt32());

            case FunctionNames.GET_NAVI_DATA:
                NaviData naviData = new NaviData();
                if (cbGeoLocationMeasurementComplited.InvokeRequired)
                {
                    Invoke(new Action(() =>
                    {
                        var alt = GetFloatFromText(tbAltitude.Text);
                        var lat = GetFloatFromText(tbLatitude.Text);
                        var lon = GetFloatFromText(tbLongitude.Text);

                        naviData = new NaviData
                        {
                            ready     = (cbPressureMeasurementComplited.Checked ? 1 : 0) | (cbGeoLocationMeasurementComplited.Checked ? 0x0e : 0),
                            pressure  = (uint)((float)nudPressure.Value * 133.322f),
                            altitude  = alt,
                            latitude  = (int)(3e6 * Math.Abs(lat)),
                            ns        = lat < 0 ? 0 : 1,
                            longitude = (int)(3e6 * Math.Abs(lon)),
                            ew        = lon < 0 ? 2 : 3
                        };
                    }));
                }
                else
                {
                    var alt = GetFloatFromText(tbAltitude.Text);
                    var lat = GetFloatFromText(tbLatitude.Text);
                    var lon = GetFloatFromText(tbLongitude.Text);

                    naviData = new NaviData
                    {
                        ready     = (cbPressureMeasurementComplited.Checked ? 1 : 0) | (cbGeoLocationMeasurementComplited.Checked ? 0x0e : 0),
                        pressure  = (uint)((float)nudPressure.Value * 133.322f),
                        altitude  = alt,
                        latitude  = (int)(3e6 * Math.Abs(lat)),
                        ns        = lat < 0 ? 1 : 0,
                        longitude = (int)(3e6 * Math.Abs(lon)),
                        ew        = lon < 0 ? 2 : 3
                    };
                }
                CopyStructToUnmanagedMemory(naviData, (IntPtr)args[1]);
                break;

            case FunctionNames.IS_GPS_FIXED:
                int isGpsFixed = 0;
                if (cbGeoLocationMeasurementComplited.InvokeRequired)
                {
                    Invoke(new Action(() =>
                    {
                        isGpsFixed = cbGeoLocationMeasurementComplited.Checked ? 1 : 0;
                    }));
                }
                else
                {
                    isGpsFixed = cbGeoLocationMeasurementComplited.Checked ? 1 : 0;
                }
                return(isGpsFixed);

            case FunctionNames.GET_SELECTED_LOCALE:
                LocaleEnum locale = LocaleEnum.ru_RU;
                if (cbLocale.InvokeRequired)
                {
                    Invoke(new Action(() =>
                    {
                        locale = GetCurrentLocale();
                    }));
                }
                else
                {
                    locale = GetCurrentLocale();
                }
                return((int)locale);

            case FunctionNames.SHARED_MEMORY_ENABLED:
                _useSharedVideoMemory = OpenFileMapping();
                return(_useSharedVideoMemory ? 1 : 0);

            // заглушки

            case FunctionNames.VIBRATE:
            case FunctionNames.SET_UPDATE_PERIOD:
                return(0);

            case FunctionNames.LOAD_FONT:
            case FunctionNames.REG_MENU:
                break;

            default:
                Debug.WriteLine($"UNKNOWN FUNCTION: {args[0]}");
                break;
            }
            return(null);
        }
示例#7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FreezingArcher.Localization.LocalizationData"/> class.
 /// </summary>
 /// <param name="translations">Translations.</param>
 /// <param name="parent">Parent.</param>
 public LocalizationData (Dictionary<string, string> translations, LocaleEnum parent = LocaleEnum.en_US)
 {
     Parent = parent;
     Values = translations;
 }