diff options
Diffstat (limited to 'navit/gui/win32/win32_gui_destination.c')
-rw-r--r-- | navit/gui/win32/win32_gui_destination.c | 412 |
1 files changed, 0 insertions, 412 deletions
diff --git a/navit/gui/win32/win32_gui_destination.c b/navit/gui/win32/win32_gui_destination.c deleted file mode 100644 index 115b9058b..000000000 --- a/navit/gui/win32/win32_gui_destination.c +++ /dev/null @@ -1,412 +0,0 @@ -#include <windows.h> -#include <windowsx.h> -#include <commctrl.h> -#include <glib.h> -#include "item.h" -#include "attr.h" -#include "navit.h" -#include "search.h" -#include "debug.h" -#include "util.h" -#include "win32_gui_notify.h" -#include "resources/resource.h" - -static const TCHAR g_szDestinationClassName[] = TEXT("navit_gui_destinationwindow_class"); - -struct datawindow_priv -{ - HWND hwnd; - HWND hwndLabel; - HWND hwndEdit; - HWND hwndList; - HWND hwndButtonPrev; - HWND hwndButtonNext; - enum attr_type currentSearchState; - struct search_list *sl; - struct navit *nav; - struct notify_priv *notifications; -}; - -static void setlayout(struct datawindow_priv *datawindow) -{ - LVCOLUMN lvc; - lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; - - RECT winrect; - GetWindowRect (datawindow->hwndList, &winrect); - - lvc.iSubItem = 1; - lvc.cx = (winrect.right - winrect.left) - 52 ; - lvc.fmt = LVCFMT_LEFT; // left-aligned column - - switch (datawindow->currentSearchState) - { - case attr_country_name: - { - Edit_SetText(datawindow->hwndLabel, TEXT("Country")); - lvc.pszText = TEXT("Country"); - } - break; - case attr_town_name: - { - Edit_SetText(datawindow->hwndLabel, TEXT("Postal or Town")); - lvc.pszText = TEXT("Town"); - } - break; - case attr_street_name: - { - Edit_SetText(datawindow->hwndLabel, TEXT("Street")); - lvc.pszText = TEXT("Street"); - } - break; - default: - break; - - } - - (void)ListView_SetColumn(datawindow->hwndList, 1, &lvc); - - Edit_SetText(datawindow->hwndEdit, TEXT("")); - SetFocus(datawindow->hwndEdit); -} - -static void notify_apply(struct datawindow_priv *datawindow, int index, int param2) -{ - TCHAR txtBuffer[1024]; - char search_string[1024]; - struct attr search_attr; - struct search_list_result *res; - - - if ( index >= 0 ) - { - ListView_GetItemText(datawindow->hwndList, index, 1, txtBuffer, 1024); - - TCHAR_TO_UTF8(txtBuffer, search_string); - - search_attr.type = datawindow->currentSearchState; - search_attr.u.str = search_string; - - search_list_search(datawindow->sl, &search_attr, 0); - res=search_list_get_result(datawindow->sl); - } - - switch (datawindow->currentSearchState) - { - case attr_country_name: - { - datawindow->currentSearchState = attr_town_name; - } - break; - case attr_town_name: - { - datawindow->currentSearchState = attr_street_name; - } - break; - case attr_street_name: - { - navit_set_destination(datawindow->nav, res->c, "Mein Test", 1); - DestroyWindow(datawindow->hwnd); - } - break; - default: - break; - - } - - setlayout(datawindow); - -} - -static void notify_back(struct datawindow_priv *datawindow, int param1, int param2) -{ - switch (datawindow->currentSearchState) - { - case attr_country_name: - break; - case attr_town_name: - { - datawindow->currentSearchState = attr_country_name; - } - break; - case attr_street_name: - { - datawindow->currentSearchState = attr_town_name; - } - break; - default: - break; - - } - - setlayout(datawindow); -} - -static void notify_textchange(struct datawindow_priv *datawindow, int param1, int param2) -{ - - struct attr search_attr; - struct search_list_result *res; - char search_string[1024]; - TCHAR converted_iso2[32]; - - - int lineLength = Edit_LineLength(datawindow->hwndEdit, 0); - TCHAR line[lineLength + 1]; - (void)Edit_GetLine(datawindow->hwndEdit, 0, line, lineLength + 1); - line[lineLength] = 0; - - - (void)ListView_DeleteAllItems( datawindow->hwndList); - - TCHAR_TO_UTF8(line, search_string); - - search_attr.type = datawindow->currentSearchState; - search_attr.u.str = search_string; - - if (lineLength<1) - return; - - search_list_search(datawindow->sl, &search_attr, 1); - - - TCHAR *tcharBuffer = NULL; - int listIndex = 0; - LVITEM lvI; - - lvI.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE; - lvI.state = 0; - lvI.stateMask = 0; - - while ((res=search_list_get_result(datawindow->sl)) && listIndex < 50) - { - - switch (search_attr.type) - { - case attr_country_name: - tcharBuffer = newSysString(res->country->name); - break; - case attr_town_name: - tcharBuffer = newSysString(res->town->common.town_name); - break; - case attr_street_name: - if (res->street->name) - { - tcharBuffer = newSysString(res->street->name); - } - else - { - continue; - } - break; - default: - dbg(lvl_error, "Unhandled search type"); - } - - lvI.iItem = listIndex; - lvI.iImage = listIndex; - lvI.iSubItem = 0; - lvI.lParam = (LPARAM) res->country->iso2; - UTF8_TO_TCHAR(res->country->iso2, converted_iso2); - lvI.pszText = converted_iso2;//LPSTR_TEXTCALLBACK; // sends an LVN_GETDISP message. - (void)ListView_InsertItem(datawindow->hwndList, &lvI); - ListView_SetItemText(datawindow->hwndList, listIndex, 1, tcharBuffer); - g_free(tcharBuffer); - dbg(lvl_debug,"%s\n", res->country->name); - listIndex++; - } -} - -static void notify_destroy(struct datawindow_priv *datawindow, int param1, int param2) -{ - if ( datawindow ) - { - search_list_destroy(datawindow->sl); - g_free(datawindow); - } -} - -static void notify_size(struct datawindow_priv *datawindow, int width, int height) -{ - if (datawindow) - { - MoveWindow(datawindow->hwndLabel, - 0, 0, // starting x- and y-coordinates - width, // width of client area - 20, // height of client area - TRUE); // repaint window - MoveWindow(datawindow->hwndEdit, - 0, 20, // starting x- and y-coordinates - width, // width of client area - 20, // height of client area - TRUE); // repaint window - MoveWindow(datawindow->hwndList, - 0, 40, // starting x- and y-coordinates - width, // width of client area - height - 60, // height of client area - TRUE); // repaint window - MoveWindow(datawindow->hwndButtonPrev, - 0, height - 20, // starting x- and y-coordinates - width/2, // width of client area - 20, // height of client area - TRUE); // repaint window - MoveWindow(datawindow->hwndButtonNext, - width/2, height - 20, // starting x- and y-coordinates - width/2, // width of client area - 20, // height of client area - TRUE); // repaint window - - setlayout(datawindow); - - } -} - -static BOOL init_lv_columns(HWND hWndListView) -{ - -// struct LVCOLUMN lvc = {LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM, -// LVCFMT_LEFT, 100, szText[iCol], 0, iCol, 0, 0 }; - - TCHAR szText[][8] = {TEXT("Iso"),TEXT("Country")}; // temporary buffer - LVCOLUMN lvc; - int iCol; - - lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; - - for (iCol = 0; iCol < 2; iCol++) - { - lvc.iSubItem = iCol; - lvc.pszText = szText[iCol]; - lvc.cx = 50; // width of column in pixels - - if ( iCol < 2 ) - lvc.fmt = LVCFMT_LEFT; // left-aligned column - else - lvc.fmt = LVCFMT_RIGHT; // right-aligned column - - if (ListView_InsertColumn(hWndListView, iCol, &lvc) == -1) - return FALSE; - } - return TRUE; -} - -BOOL register_destination_window() -{ - WNDCLASS wc; - - wc.style = 0; - wc.lpfnWndProc = message_handler; - wc.cbClsExtra = 0; - wc.cbWndExtra = 32; - wc.hInstance = NULL; - wc.hCursor = LoadCursor(NULL, IDC_ARROW); - wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); - wc.lpszMenuName = NULL; - wc.lpszClassName = g_szDestinationClassName; - wc.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_NAVIT)); - - if (!RegisterClass(&wc)) - { - dbg(lvl_error, "Window Registration Failed!\n"); - return FALSE; - } - return TRUE; -} - -HANDLE create_destination_window( struct navit *nav ) -{ - - - struct datawindow_priv *this_; - - this_=g_new0(struct datawindow_priv, 1); - this_->nav = nav; - this_->currentSearchState = attr_country_name; - this_->sl=search_list_new(navit_get_mapset(this_->nav)); - - this_->hwnd = CreateWindowEx( - WS_EX_CLIENTEDGE, - g_szDestinationClassName, - TEXT("Destination Input"), -#if defined(__CEGCC__) - WS_SYSMENU | WS_CLIPCHILDREN, - CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, -#else - WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN, - CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, -#endif - NULL, NULL, NULL, NULL); - - if (this_->hwnd == NULL) - { - dbg(lvl_error, "Window Creation Failed!\n"); - return 0; - } - - this_->notifications = win32_gui_notify_new(this_); - SetWindowLongPtr( this_->hwnd , DWLP_USER, (LONG_PTR) this_->notifications ); - - this_->hwndLabel = CreateWindow(WC_STATIC, // predefined class - TEXT("Country"), // no window title - WS_CHILD | WS_VISIBLE | ES_LEFT , //| WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL - 0, 0, 0, 0, // set size in WM_SIZE message - this_->hwnd, // parent window - NULL,//(HMENU) ID_EDITCHILD, // edit control ID - (HINSTANCE) GetWindowLong(this_->hwnd, GWL_HINSTANCE), - NULL); // pointer not needed - - this_->hwndEdit = CreateWindow(WC_EDIT, // predefined class - NULL, // no window title - WS_CHILD | WS_VISIBLE | ES_LEFT | WS_BORDER , //| WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL - 0, 0, 0, 0, // set size in WM_SIZE message - this_->hwnd, // parent window - NULL,//(HMENU) ID_EDITCHILD, // edit control ID - (HINSTANCE) GetWindowLong(this_->hwnd, GWL_HINSTANCE), - NULL); // pointer not needed - - this_->hwndList = CreateWindow(WC_LISTVIEW, // predefined class - NULL, // no window title - WS_CHILD | WS_VISIBLE | ES_LEFT | WS_BORDER | LVS_REPORT , //| WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL - 0, 0, 0, 0, // set size in WM_SIZE message - this_->hwnd, // parent window - NULL,//(HMENU) ID_EDITCHILD, // edit control ID - (HINSTANCE) GetWindowLong(this_->hwnd, GWL_HINSTANCE), - NULL); // pointer not needed - - this_->hwndButtonPrev = CreateWindow(WC_BUTTON, // predefined class - TEXT("<<"), // no window title - WS_CHILD | WS_VISIBLE | ES_LEFT | WS_BORDER | LVS_REPORT , //| WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL - 0, 0, 0, 0, // set size in WM_SIZE message - this_->hwnd, // parent window - NULL,//(HMENU) ID_EDITCHILD, // edit control ID - (HINSTANCE) GetWindowLong(this_->hwnd, GWL_HINSTANCE), - NULL); // pointer not needed - this_->hwndButtonNext = CreateWindow(WC_BUTTON, // predefined class - TEXT(">>"), // no window title - WS_CHILD | WS_VISIBLE | ES_LEFT | WS_BORDER | LVS_REPORT , //| WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL - 0, 0, 0, 0, // set size in WM_SIZE message - this_->hwnd, // parent window - NULL,//(HMENU) ID_EDITCHILD, // edit control ID - (HINSTANCE) GetWindowLong(this_->hwnd, GWL_HINSTANCE), - NULL); // pointer not needed -#ifdef LVS_EX_FULLROWSELECT - (void)ListView_SetExtendedListViewStyle(this_->hwndList,LVS_EX_FULLROWSELECT); -#endif - - - win32_gui_notify( this_->notifications, this_->hwndEdit, CHANGE, notify_textchange); - win32_gui_notify( this_->notifications, NULL, WINDOW_SIZE, notify_size); - win32_gui_notify( this_->notifications, this_->hwndList, DBLCLICK, notify_apply); - win32_gui_notify( this_->notifications, this_->hwnd, WINDOW_DESTROY, notify_destroy); - - win32_gui_notify( this_->notifications, this_->hwndButtonNext, BUTTON_CLICK, notify_apply); - win32_gui_notify( this_->notifications, this_->hwndButtonPrev, BUTTON_CLICK, notify_back); - - init_lv_columns(this_->hwndList); - SetFocus(this_->hwndEdit); - ShowWindow(this_->hwnd, TRUE); - UpdateWindow(this_->hwnd); - - return this_->hwnd; -} - |