/// <summary>
        /// При нажатии кнопки Настройки
        /// </summary>
        private async void OnButtonSettingsClicked(object sender, EventArgs e)
        {
            var settingsPopup = new SettingsPopupPage((GlobalSettings)settings.Clone());

            NewGlobalSettingsEvent += (eventSender, settings) =>
            {
                this.settings = settings;

                securityService.ResetConnection();
                localStorageService.Set(typeof(GlobalSettings).Name, settings);
            };

            await PopupNavigation.Instance.PushAsync(settingsPopup);
        }
Example #2
0
        /*-------------------------------------------------------------------------
         * 初期化
         * ---------------------------------------------------------------------------*/
        private void init(GlobalSettings _setting, KeyAssignList assign_list, string device_info, tab_index index, DrawSettingPage page)
        {
            // 설정내용をコピーして持つ
            m_setting         = _setting.Clone();
            m_key_assign_list = assign_list.DeepClone();

            InitializeComponent();
            Useful.SetFontMeiryo(this, 8f);
            Useful.SetFontMeiryo(listBox1, 9f);

            // ツールチップを등록する
            toolTip1.AutoPopDelay = 30 * 1000;                    // 30초표시
            toolTip1.BackColor    = Color.LightYellow;
            toolTip1.SetToolTip(comboBox2, "플레이하는 서버를 선택");
            toolTip1.SetToolTip(comboBox3, "소속되어 있는 국가를 선택");
            toolTip1.SetToolTip(comboBox1, "지도를 선택");
            toolTip1.SetToolTip(comboBox5, "위도, 경도선의 그리기방법을 선택\n단위는 측량에서 얻어지는 값과 같습니다 (0~16384)\n초기값은 좌표만 그리기");
            toolTip1.SetToolTip(textBox1, "항로공유용 그룹명을 지정\n비워두면 항로가 공유되지 않습니다");
            toolTip1.SetToolTip(textBox2, "항로공유 그리기시 표시되는 이름을 지정\n지정된 이름을 항로공유하는 다른 멤버에게 전합니다.\n비워두면 항로가 공유되지 않습니다");
            toolTip1.SetToolTip(checkBox8, "체크하면 도시명, 도시아이콘 등 최대한 같은 크기로 표시함\n체크하지 않으면 지도의 축척에 맞춰서 크기를 표시함\n체크하지 않으면 그리기가 빨라집니다");
            toolTip1.SetToolTip(checkBox1, "인터넷 연결 여부를 지정\n체크하면 시작할 때 데이터업데이트, 항로공유가 가능하게 됩니다\n한국어판에서는 동작여부를 보장하지 않습니다");
            toolTip1.SetToolTip(checkBox2, "마우스의 앞/뒤 버튼으로 스킬・도구창을 열기");
            toolTip1.SetToolTip(checkBox6, "항로공유를 사용하는 경우 체크하세요.\n인터넷으로 업데이트 정보 등을 받으려면 체크해야 합니다.");
            toolTip1.SetToolTip(checkBox9, "시작시 인터넷으로부터 @Web아이콘을 얻어옵니다.\n얻어진 @Web아이콘은 내 컴퓨터에 보존됩니다.\n시작시 매번 받을 필요가 없는 경우 체크를 해제하십시오.");
            toolTip1.SetToolTip(comboBox6, "도시아이콘의 사이즈를 선택\n해안선이 아이콘으로 가려지는것이 싫은 경우 작은 아이콘 또는 아이콘 표시 안함을 선택");
            toolTip1.SetToolTip(comboBox7, "도시명 그리기 여부를 선택\n그리지 않더라도 도시 주변에 마우스를 가져가면 도시명 팝업이 뜨게 됩니다.");
            toolTip1.SetToolTip(comboBox8, "스크린샷 포맷을 선택\n초기값은 bmp");
            toolTip1.SetToolTip(checkBox4, "조선중이 아니더라도 조선카운터를 표시할지를 설정");

            string str = "우클릭시의 동작을 선택\n";

            str += "체크함\n";
            str += "  우클릭으로 컨텍스트 메뉴를 열기\n";
            str += "  우클릭으로 도시선택이 가능\n";
            str += "  장소해제는 ESC키로만\n";
            str += "체크안함\n";
            str += "  Ctrl+우클릭으로 컨텍스트 메뉴를 열기\n";
            str += "  우클릭으로 도시선택 불가능\n";
            str += "  장소해제는 ESC키나 다른도시를 선택\n";
            toolTip1.SetToolTip(checkBox10, str);
            toolTip1.SetToolTip(checkBox11, "항로도즐겨찾기를 합성한 지도를 사용\n이항목은 항로도 즐겨찾기 사용/미사용 전환을 위해 사용됨");
            toolTip1.SetToolTip(checkBox12, "윈도우를 항상 맨 앞으로 표시");
            toolTip1.SetToolTip(checkBox13, "항로도, 나침반の각도선, 항로예상선의 그리기방법을 지정\n체크시 안티앨리어싱 사용");
            toolTip1.SetToolTip(checkBox14, "가장 최근의 항로도를 제외하고 반투명으로 그리기\n일자, 재해팝업도 반투명이 됩니다");
            toolTip1.SetToolTip(checkBox16, "@Web아이콘 그리기시 같은 종류로 거리가 가까운 경우 하나로 합침\n@Web아이콘 표시시 좀더 깔끔해집니다");

            toolTip1.SetToolTip(checkBox3, "화면캡처 방법을 지정\nWindows Vista 사용시 측량인식이 잘 되지 않을 경우 체크하십시오\nWindows7은 체크가 필요없습니다.");
            toolTip1.SetToolTip(checkBox5, "재해팝업, 이자 경과일수, 해역변동시스템용 로그분석을 사용");
            toolTip1.SetToolTip(checkBox17, "캡처한 화면을 선수상의 오른쪽에 표시\n나침반 각도 분석 및 확인용\n일반적으로 체크할 필요가 없습니다.");
            toolTip1.SetToolTip(comboBox4, "화면캡처 간격을 선택\n짧은간격으로 캡처할수록 나침반의 각도변경에 대한 반응이 빨라지지만 CPU를 많이 사용합니다\nCPU가 감당할 수 있는 경우 0.5초에 1회 또는 그 이하를 선택해 주세요\n초기값은 1초에 1회");
            toolTip1.SetToolTip(textBox6, "TCP서버가 사용하는 포트번호를 지정\n특별히 변경할 필요는 없습니다");
            toolTip1.SetToolTip(checkBox7, "정보윈도우의 좌표계나 측량계가 아닌 지도계にします\n開発時の위치取得용です");

            str  = "표시할 최저항해일수를 지정\n";
            str += "이 설정은 최신의 항로도에는 영향을 주지 않습니다\n";
            str += "좁은 범위의 항해시 항로도가 뒤죽박죽이 되는 현상을 줄여줍니다\n";
            str += "만약 3개로 설정시 항해일수 2일 이하의 항로도는 그리지 않습니다\n";
            str += "0으로 설정하면 전체항로도를 그리게 됩니다\n";
            str += "초기값은 0";
            toolTip1.SetToolTip(textBox8, str);

            toolTip1.SetToolTip(checkBox18, "즐겨찾기 항로도를 반투명으로 그리기");
            toolTip1.SetToolTip(checkBox19, "즐겨찾기 항로도의 재해 팝업도 그리기");
            str  = "과거의 항로도를 몇개까지 목록에 저장할지 설정\n";
            str += "그리기와 다르게, 이 경우에는 CPU부하가 낮아 많은 항로도를 보존해도 문제가 없습니다.\n";
            str += "초기값은 200";
            toolTip1.SetToolTip(textBox9, str);

            str  = "항로도를 보존を保持する수を지정します\n";
            str += "保持수を多くすると그리기負荷が増えます\n";
            str += "해に出る도に항로도を전체삭제している方は1を지정してください\n";
            str += "初期値は20です";
            toolTip1.SetToolTip(textBox3, str);

            // 설정항목を反映させる
            comboBox2.SelectedIndex = (int)m_setting.server;
            comboBox3.SelectedItem  = GvoWorldInfo.GetCountryString(this.m_setting.country);
            comboBox1.SelectedIndex = (int)m_setting.map;
            comboBox5.SelectedIndex = (int)m_setting.tude_interval;
            comboBox6.SelectedIndex = (int)m_setting.map_icon;
            comboBox7.SelectedIndex = (int)m_setting.map_draw_names;
            comboBox8.SelectedIndex = (int)m_setting.ss_format;
            textBox1.Text           = m_setting.share_group;
            textBox2.Text           = m_setting.share_group_myname;
            textBox3.Text           = m_setting.searoutes_group_max.ToString();
            textBox9.Text           = m_setting.trash_searoutes_group_max.ToString();
            textBox8.Text           = m_setting.minimum_draw_days.ToString();
            checkBox1.Checked       = m_setting.connect_network;
            checkBox2.Checked       = m_setting.hook_mouse;
            checkBox6.Checked       = m_setting.is_share_routes;
            checkBox9.Checked       = m_setting.connect_web_icon;
            checkBox10.Checked      = m_setting.compatible_windows_rclick;
            checkBox11.Checked      = m_setting.use_mixed_map;
            checkBox12.Checked      = m_setting.window_top_most;
            checkBox13.Checked      = m_setting.enable_line_antialias;
            checkBox14.Checked      = m_setting.enable_sea_routes_aplha;
            checkBox16.Checked      = m_setting.remove_near_web_icons;
            checkBox8.Checked       = !m_setting.is_mixed_info_names;
            checkBox18.Checked      = m_setting.enable_favorite_sea_routes_alpha;
            checkBox19.Checked      = m_setting.draw_favorite_sea_routes_alpha_popup;
            checkBox4.Checked       = m_setting.force_show_build_ship;
            checkBox7.Checked       = m_setting.debug_flag_show_potision;
            checkBox15.Checked      = m_setting.enable_dpi_scaling;

            if (m_setting.capture_interval == CaptureIntervalIndex.Per250ms)
            {
                comboBox4.SelectedIndex = 0;
            }
            else
            {
                comboBox4.SelectedIndex = (int)m_setting.capture_interval + 1;
            }
            checkBox3.Checked  = m_setting.windows_vista_aero;
            checkBox5.Checked  = m_setting.enable_analize_log_chat;
            checkBox17.Checked = m_setting.draw_capture_info;

            textBox6.Text = m_setting.port_index.ToString();
            try {
                string host_name = net_useful.GetHostName();
                textBox5.AppendText(host_name + "\n");
                IPAddress[] list = net_useful.GetLocalIpAddress_Ipv4();
                if ((list != null) &&
                    (list.Length > 0))
                {
                    textBox5.AppendText(list[0].ToString());
                }
            } catch {
                textBox5.AppendText("PC명\n");
                textBox5.AppendText("IPアドレスの取得に실패");
            }

            // 모드설정
            if (m_setting.is_server_mode)
            {
                radioButton2.Checked = true;
            }
            else
            {
                radioButton1.Checked = true;
            }

            // デバイス정보
            textBox4.Lines = device_info.Split(new string[] { "\n", "\r\n" }, StringSplitOptions.None);

            // 버전정보
            label5.Text = def.WINDOW_TITLE;

            // 표시항목の初期化
            init_draw_setting(page);

            // 유효, 무효の업데이트
            update_gray_ctrl();

            // 初期ページ
            listBox1.SelectedIndex = (int)index;

            // HP
            linkLabel1.Text = def.URL_HP;

            // 키할당
            m_key_assign_helper = new KeyAssiginSettingHelper(m_key_assign_list,
                                                              this, comboBox9, listView1, button3, button5, button6);
        }
        /*-------------------------------------------------------------------------
         * 初期化
         * ---------------------------------------------------------------------------*/
        private void init(GlobalSettings _setting, KeyAssignList assign_list, string device_info, tab_index index, DrawSettingPage page)
        {
            // 設定内容をコピーして持つ
            m_setting         = _setting.Clone();
            m_key_assign_list = assign_list.DeepClone();

            InitializeComponent();
            Useful.SetFontMeiryo(this, 8f);
            Useful.SetFontMeiryo(listBox1, 9f);

            // ツールチップを登録する
            toolTip1.AutoPopDelay = 30 * 1000;                          // 30秒表示
            toolTip1.BackColor    = Color.LightYellow;
            toolTip1.SetToolTip(comboBox2, "プレイしているサーバを選択します");
            toolTip1.SetToolTip(comboBox3, "属している国を選択します");
            toolTip1.SetToolTip(comboBox1, "地図を選択します");
            toolTip1.SetToolTip(comboBox5, "緯度、経度線の描画方法を選択します\n単位は測量で得られる値です\n初期値は座標のみ描画です");
            toolTip1.SetToolTip(textBox1, "航路共有用のグループ名を指定します\n空白にすると航路共有されません");
            toolTip1.SetToolTip(textBox2, "航路共有描画時に表示される名前を指定します\n指定した名前を航路共有する他のメンバーに伝えます\n空白にすると航路共有されません");
            toolTip1.SetToolTip(checkBox8, "チェックを入れると街名、街アイコン等をできるだけ等倍で表示します。\nチェックを外すと地図の縮尺に合わせて拡縮されて表示します。\nチェックを外したほうが描画が軽くなります。");
            toolTip1.SetToolTip(checkBox1, "インターネットに接続するかどうかを指定します\nチェックを入れると起動時のデータ更新、航路共有が有効になります");
            toolTip1.SetToolTip(checkBox2, "マウスの戻る・進むボタンでスキル・道具窓を開きます");
            toolTip1.SetToolTip(checkBox6, "航路共有を有効にする場合はチェックを入れてください\nインターネットから更新情報等を受け取るにチェックを入れている必要があります");
            toolTip1.SetToolTip(checkBox9, "起動時インターネットから@Webアイコンを取得します\n取得した@Webアイコンはローカルに保存されます\n起動時に毎回取得する必要がない場合はチェックをはずしてください");
            toolTip1.SetToolTip(comboBox6, "街アイコンのサイズを選択します。\n海岸線がアイコンで隠れるのがいやな方は小さいアイコンを選択してください。");
            toolTip1.SetToolTip(comboBox7, "街名等を描画するかどうかを選択します。\n描画しない場合はマウスを乗せると街名がポップアップします。");
            toolTip1.SetToolTip(comboBox8, "スクリーンショットのフォーマットを選択します。\n初期値はbmpです。");
            toolTip1.SetToolTip(checkBox4, "造船中でなくても造船カウンタを表示するかどうかを設定します");

            string str = "右クリック時の動作を選択します\n";

            str += "チェック有\n";
            str += "  右クリックでコンテキストメニューが開く\n";
            str += "  右クリックでも街を選択できる\n";
            str += "  スポット解除はESCキーのみ\n";
            str += "チェックなし\n";
            str += "  Ctrl+右クリックでコンテキストメニューが開く\n";
            str += "  右クリックでは街を選択できない\n";
            str += "  スポット解除はESCキーかどこかの街を選択\n";
            toolTip1.SetToolTip(checkBox10, str);
            toolTip1.SetToolTip(checkBox11, "お気に入り航路と合成した地図を使用します\nこの項目はお気に入り航路の使用/不使用切り替えのために用意されています");
            toolTip1.SetToolTip(checkBox12, "ウインドウを常に最前面に表示します");
            toolTip1.SetToolTip(checkBox13, "航路図、コンパスの角度線、進路予想線の描画方法を指定します\nチェックを入れた場合アンチエイリアスで描画されます");
            toolTip1.SetToolTip(checkBox14, "一番新しい航路図以外を半透明で描画します\n日付、災害ポップアップも半透明になります");
            toolTip1.SetToolTip(checkBox16, "@Webアイコン描画時に同じ種類で距離が近い場合、1つにまとめます。\n@Webアイコン表示時のごちゃごちゃした感じを軽減します。");

            toolTip1.SetToolTip(checkBox3, "画面キャプチャ方法を指定します\nWindows Vistaを使用していて航路図がうまく書かれない場合チェックを入れてください。\nWindows7ではこのチェックを入れる必要はありません。");
            toolTip1.SetToolTip(checkBox5, "災害ポップアップ、利息からの経過日数、海域変動システム用にログ解析を行います");
            toolTip1.SetToolTip(checkBox17, "キャプチャした画像を右に表示します\nコンパス解析の角度ずれの確認用です\n通常はチェックを入れる必要はありません");
            toolTip1.SetToolTip(comboBox4, "画面キャプチャ間隔を選択します\n短い間隔でキャプチャするほどコンパスの角度のレスポンスがよくなりますがCPU時間を多く消費します\nCPUに余裕がある場合は0.5秒に1回を選択してください\nさらにCPUに余裕がある場合は0.25秒に1回を選択してください\n初期値は1秒に1回です");
            toolTip1.SetToolTip(textBox6, "TCPサーバが使用するポート番号を指定します\n特に変更する必要はありません");
            toolTip1.SetToolTip(checkBox7, "情報ウインドウの座標系を測量系ではなく地図系にします\n開発時の位置取得用です");

            str  = "描画する最低航海日数を指定します\n";
            str += "この設定は最も新しい航路図には影響を与えません\n";
            str += "狭い範囲を航海すると航路図がごちゃごちゃしてしまうのを軽減できます\n";
            str += "例えば3に設定すると航海日数2日以下の航路図は描画されなくなります\n";
            str += "0に設定すると全ての航路図が描画されます\n";
            str += "初期値は0です";
            toolTip1.SetToolTip(textBox8, str);

            toolTip1.SetToolTip(checkBox18, "お気に入り航路図を半透明で描画します");
            toolTip1.SetToolTip(checkBox19, "お気に入り航路図の災害ポップアップを描画します");
            str  = "過去の航路図を保持する数を設定します\n";
            str += "過去の航路図は描画されないため、CPU負荷が低く多くの航路図を保持しても問題ありません\n";
            str += "初期値は200です";
            toolTip1.SetToolTip(textBox9, str);

            str  = "航路図を保持する数を指定します\n";
            str += "保持数を多くすると描画負荷が増えます\n";
            str += "海に出る度に航路図を全て削除している方は1を指定してください\n";
            str += "初期値は20です";
            toolTip1.SetToolTip(textBox3, str);

            // 設定項目を反映させる
            comboBox2.SelectedIndex = (int)m_setting.server;
            comboBox3.SelectedItem  = GvoWorldInfo.GetCountryString(this.m_setting.country);
            comboBox1.SelectedIndex = (int)m_setting.map;
            comboBox5.SelectedIndex = (int)m_setting.tude_interval;
            comboBox6.SelectedIndex = (int)m_setting.map_icon;
            comboBox7.SelectedIndex = (int)m_setting.map_draw_names;
            comboBox8.SelectedIndex = (int)m_setting.ss_format;
            textBox1.Text           = m_setting.share_group;
            textBox2.Text           = m_setting.share_group_myname;
            textBox3.Text           = m_setting.searoutes_group_max.ToString();
            textBox9.Text           = m_setting.trash_searoutes_group_max.ToString();
            textBox8.Text           = m_setting.minimum_draw_days.ToString();
            checkBox1.Checked       = m_setting.connect_network;
            checkBox2.Checked       = m_setting.hook_mouse;
            checkBox6.Checked       = m_setting.is_share_routes;
            checkBox9.Checked       = m_setting.connect_web_icon;
            checkBox10.Checked      = m_setting.compatible_windows_rclick;
            checkBox11.Checked      = m_setting.use_mixed_map;
            checkBox12.Checked      = m_setting.window_top_most;
            checkBox13.Checked      = m_setting.enable_line_antialias;
            checkBox14.Checked      = m_setting.enable_sea_routes_aplha;
            checkBox16.Checked      = m_setting.remove_near_web_icons;
            checkBox8.Checked       = !m_setting.is_mixed_info_names;
            checkBox18.Checked      = m_setting.enable_favorite_sea_routes_alpha;
            checkBox19.Checked      = m_setting.draw_favorite_sea_routes_alpha_popup;
            checkBox4.Checked       = m_setting.force_show_build_ship;
            checkBox7.Checked       = m_setting.debug_flag_show_potision;
            checkBox15.Checked      = m_setting.enable_dpi_scaling;

            if (m_setting.capture_interval == CaptureIntervalIndex.Per250ms)
            {
                comboBox4.SelectedIndex = 0;
            }
            else
            {
                comboBox4.SelectedIndex = (int)m_setting.capture_interval + 1;
            }
            checkBox3.Checked  = m_setting.windows_vista_aero;
            checkBox5.Checked  = m_setting.enable_analize_log_chat;
            checkBox17.Checked = m_setting.draw_capture_info;

            textBox6.Text = m_setting.port_index.ToString();
            try{
                string host_name = net_useful.GetHostName();
                textBox5.AppendText(host_name + "\n");
                IPAddress[] list = net_useful.GetLocalIpAddress_Ipv4();
                if ((list != null) &&
                    (list.Length > 0))
                {
                    textBox5.AppendText(list[0].ToString());
                }
            }catch {
                textBox5.AppendText("PC名\n");
                textBox5.AppendText("IPアドレスの取得に失敗");
            }

            // モード設定
            if (m_setting.is_server_mode)
            {
                radioButton2.Checked = true;
            }
            else
            {
                radioButton1.Checked = true;
            }

            // デバイス情報
            textBox4.Lines = device_info.Split(new string[] { "\n", "\r\n" }, StringSplitOptions.None);

            // バージョン情報
            label5.Text = def.WINDOW_TITLE;

            // 表示項目の初期化
            init_draw_setting(page);

            // 有効、無効の更新
            update_gray_ctrl();

            // 初期ページ
            listBox1.SelectedIndex = (int)index;

            // HP
            linkLabel1.Text = def.URL_HP;

            // キー割り当て
            m_key_assign_helper = new KeyAssiginSettingHelper(m_key_assign_list,
                                                              this, comboBox9, listView1, button3, button5, button6);
        }