src/network/network_gui.cpp
changeset 8494 88f26cafc858
parent 8493 3ab458f7cff4
child 8514 b3ae8cdf13c0
equal deleted inserted replaced
8493:3ab458f7cff4 8494:88f26cafc858
  1793  */
  1793  */
  1794 static void ChatWindowWndProc(Window *w, WindowEvent *e)
  1794 static void ChatWindowWndProc(Window *w, WindowEvent *e)
  1795 {
  1795 {
  1796 	switch (e->event) {
  1796 	switch (e->event) {
  1797 	case WE_CREATE:
  1797 	case WE_CREATE:
  1798 		SendWindowMessage(WC_NEWS_WINDOW, 0, WE_CREATE, w->height, 0);
       
  1799 		SetBit(_no_scroll, SCROLL_CHAT); // do not scroll the game with the arrow-keys
       
  1800 		break;
  1798 		break;
  1801 
  1799 
  1802 	case WE_PAINT: {
  1800 	case WE_PAINT: {
  1803 		static const StringID chat_captions[] = {
       
  1804 			STR_NETWORK_CHAT_ALL_CAPTION,
       
  1805 			STR_NETWORK_CHAT_COMPANY_CAPTION,
       
  1806 			STR_NETWORK_CHAT_CLIENT_CAPTION
       
  1807 		};
       
  1808 		StringID msg;
       
  1809 
       
  1810 		DrawWindowWidgets(w);
  1801 		DrawWindowWidgets(w);
  1811 
  1802 
  1812 		assert(WP(w, chatquerystr_d).caption < lengthof(chat_captions));
       
  1813 		msg = chat_captions[WP(w, chatquerystr_d).caption];
       
  1814 		DrawStringRightAligned(w->widget[2].left - 2, w->widget[2].top + 1, msg, TC_BLACK);
       
  1815 		DrawEditBox(w, &WP(w, chatquerystr_d), 2);
  1803 		DrawEditBox(w, &WP(w, chatquerystr_d), 2);
  1816 	} break;
  1804 	} break;
  1817 
  1805 
  1818 	case WE_CLICK:
  1806 	case WE_CLICK:
  1819 		switch (e->we.click.widget) {
  1807 		switch (e->we.click.widget) {
  1885 	WP(w, chatquerystr_d).dest    = dest;
  1873 	WP(w, chatquerystr_d).dest    = dest;
  1886 	WP(w, chatquerystr_d).afilter = CS_ALPHANUMERAL;
  1874 	WP(w, chatquerystr_d).afilter = CS_ALPHANUMERAL;
  1887 	InitializeTextBuffer(&WP(w, chatquerystr_d).text, _edit_str_buf, lengthof(_edit_str_buf), 0);
  1875 	InitializeTextBuffer(&WP(w, chatquerystr_d).text, _edit_str_buf, lengthof(_edit_str_buf), 0);
  1888 }
  1876 }
  1889 
  1877 
       
  1878 /** Enum for NetworkGameWindow, referring to _network_game_window_widgets */
       
  1879 enum NetworkCompanyPasswordWindowWidgets {
       
  1880 	NCPWW_CLOSE,                    ///< Close 'X' button
       
  1881 	NCPWW_CAPTION,                  ///< Caption of the whole window
       
  1882 	NCPWW_BACKGROUND,               ///< The background of the interface
       
  1883 	NCPWW_LABEL,                    ///< Label in front of the password field
       
  1884 	NCPWW_PASSWORD,                 ///< Input field for the password
       
  1885 	NCPWW_SAVE_AS_DEFAULT_PASSWORD, ///< Toggle 'button' for saving the current password as default password
       
  1886 	NCPWW_CANCEL,                   ///< Close the window without changing anything
       
  1887 	NCPWW_OK,                       ///< Safe the password etc.
       
  1888 };
       
  1889 
       
  1890 static void NetworkCompanyPasswordWindowWndProc(Window *w, WindowEvent *e)
       
  1891 {
       
  1892 	switch (e->event) {
       
  1893 		case WE_PAINT:
       
  1894 			DrawWindowWidgets(w);
       
  1895 			DrawEditBox(w, &WP(w, chatquerystr_d), 4);
       
  1896 			break;
       
  1897 
       
  1898 		case WE_CLICK:
       
  1899 			switch (e->we.click.widget) {
       
  1900 				case NCPWW_OK: {
       
  1901 					if (w->IsWidgetLowered(NCPWW_SAVE_AS_DEFAULT_PASSWORD)) {
       
  1902 						snprintf(_network_default_company_pass, lengthof(_network_default_company_pass), "%s", _edit_str_buf);
       
  1903 					}
       
  1904 
       
  1905 					/* empty password is a '*' because of console argument */
       
  1906 					if (StrEmpty(_edit_str_buf)) snprintf(_edit_str_buf, lengthof(_edit_str_buf), "*");
       
  1907 					char *password = _edit_str_buf;
       
  1908 					NetworkChangeCompanyPassword(1, &password);
       
  1909 				}
       
  1910 
       
  1911 				/* FALL THROUGH */
       
  1912 				case NCPWW_CANCEL:
       
  1913 					DeleteWindow(w);
       
  1914 					break;
       
  1915 
       
  1916 				case NCPWW_SAVE_AS_DEFAULT_PASSWORD:
       
  1917 					w->ToggleWidgetLoweredState(NCPWW_SAVE_AS_DEFAULT_PASSWORD);
       
  1918 					SetWindowDirty(w);
       
  1919 					break;
       
  1920 			}
       
  1921 			break;
       
  1922 
       
  1923 		case WE_MOUSELOOP:
       
  1924 			HandleEditBox(w, &WP(w, chatquerystr_d), 4);
       
  1925 			break;
       
  1926 
       
  1927 		case WE_KEYPRESS:
       
  1928 			switch (HandleEditBoxKey(w, &WP(w, chatquerystr_d), 4, e)) {
       
  1929 				case 1: // Return
       
  1930 					/* FALLTHROUGH */
       
  1931 				case 2: // Escape
       
  1932 					DeleteWindow(w);
       
  1933 					break;
       
  1934 			}
       
  1935 			break;
       
  1936 	}
       
  1937 }
       
  1938 
       
  1939 static const Widget _ncp_window_widgets[] = {
       
  1940 {   WWT_CLOSEBOX, RESIZE_NONE, 14,   0,  10,  0, 13, STR_00C5,                          STR_018B_CLOSE_WINDOW},
       
  1941 {    WWT_CAPTION, RESIZE_NONE, 14,  11, 299,  0, 13, STR_COMPANY_PASSWORD_CAPTION,      STR_018C_WINDOW_TITLE_DRAG_THIS},
       
  1942 {      WWT_PANEL, RESIZE_NONE, 14,   0, 299, 14, 50, 0x0,                               STR_NULL},
       
  1943 {       WWT_TEXT, RESIZE_NONE, 14,   5, 100, 19, 30, STR_COMPANY_PASSWORD,              STR_NULL},
       
  1944 {      WWT_PANEL, RESIZE_NONE, 14, 101, 294, 19, 30, 0x0,                               STR_NULL},
       
  1945 {    WWT_TEXTBTN, RESIZE_NONE, 14, 101, 294, 35, 46, STR_MAKE_DEFAULT_COMPANY_PASSWORD, STR_MAKE_DEFAULT_COMPANY_PASSWORD_TIP},
       
  1946 { WWT_PUSHTXTBTN, RESIZE_NONE, 14,   0, 149, 51, 62, STR_012E_CANCEL,                   STR_COMPANY_PASSWORD_CANCEL},
       
  1947 { WWT_PUSHTXTBTN, RESIZE_NONE, 14, 150, 299, 51, 62, STR_012F_OK,                       STR_COMPANY_PASSWORD_OK},
       
  1948 {   WIDGETS_END},
       
  1949 };
       
  1950 
       
  1951 static const WindowDesc _ncp_window_desc = {
       
  1952 	WDP_AUTO, WDP_AUTO, 300, 63, 300, 63,
       
  1953 	WC_COMPANY_PASSWORD_WINDOW, WC_NONE,
       
  1954 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
       
  1955 	_ncp_window_widgets,
       
  1956 	NetworkCompanyPasswordWindowWndProc
       
  1957 };
       
  1958 
       
  1959 void ShowNetworkCompanyPasswordWindow()
       
  1960 {
       
  1961 	DeleteWindowById(WC_COMPANY_PASSWORD_WINDOW, 0);
       
  1962 
       
  1963 	_edit_str_buf[0] = '\0';
       
  1964 	Window *w = AllocateWindowDesc(&_ncp_window_desc);
       
  1965 	WP(w, chatquerystr_d).afilter = CS_ALPHANUMERAL;
       
  1966 	InitializeTextBuffer(&WP(w, chatquerystr_d).text, _edit_str_buf, min(lengthof(_network_default_company_pass), lengthof(_edit_str_buf)), 0);
       
  1967 }
       
  1968 
  1890 #endif /* ENABLE_NETWORK */
  1969 #endif /* ENABLE_NETWORK */