MCPcopy Create free account
hub / github.com/ProgerXP/Notepad2e / Encoding_AddToListView

Function Encoding_AddToListView

src/Edit.c:731–787  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

729}
730
731void Encoding_AddToListView ( HWND hwnd, int idSel, BOOL bRecodeOnly )
732{
733 int i;
734 int iSelItem = -1;
735 LVITEM lvi;
736 WCHAR wchBuf[256];
737 PENCODINGENTRY pEE = LocalAlloc ( LPTR, COUNTOF ( mEncoding ) * sizeof ( ENCODINGENTRY ) );
738 for ( i = 0; i < COUNTOF ( mEncoding ); i++ ) {
739 pEE[i].id = i;
740 GetString ( mEncoding[i].idsName, pEE[i].wch, COUNTOF ( pEE[i].wch ) );
741 }
742 qsort ( pEE, COUNTOF ( mEncoding ), sizeof ( ENCODINGENTRY ), CmpEncoding );
743 ZeroMemory ( &lvi, sizeof ( LVITEM ) );
744 lvi.mask = LVIF_PARAM | LVIF_TEXT | LVIF_IMAGE;
745 lvi.pszText = wchBuf;
746 for ( i = 0; i < COUNTOF ( mEncoding ); i++ ) {
747 int id = pEE[i].id;
748 if ( !bRecodeOnly || ( mEncoding[id].uFlags & NCP_RECODE ) ) {
749 CPINFO cpi;
750 WCHAR *pwsz;
751 lvi.iItem = ListView_GetItemCount ( hwnd );
752 if ( pwsz = StrChr ( pEE[i].wch, L';' ) ) {
753 StrCpyN ( wchBuf, CharNext ( pwsz ), COUNTOF ( wchBuf ) );
754 if ( pwsz = StrChr ( wchBuf, L';' ) ) {
755 *pwsz = 0;
756 }
757 } else {
758 StrCpyN ( wchBuf, pEE[i].wch, COUNTOF ( wchBuf ) );
759 }
760 if ( id == CPI_DEFAULT ) {
761 StrCatN ( wchBuf, wchANSI, COUNTOF ( wchBuf ) );
762 } else if ( id == CPI_OEM ) {
763 StrCatN ( wchBuf, wchOEM, COUNTOF ( wchBuf ) );
764 }
765 if ( ( mEncoding[id].uFlags & NCP_INTERNAL ) ||
766 ( IsValidCodePage ( mEncoding[id].uCodePage ) &&
767 GetCPInfo ( mEncoding[id].uCodePage, &cpi ) ) ) {
768 lvi.iImage = 0;
769 } else {
770 lvi.iImage = 1;
771 }
772 lvi.lParam = ( LPARAM ) id;
773 ListView_InsertItem ( hwnd, &lvi );
774 if ( idSel == id ) {
775 iSelItem = lvi.iItem;
776 }
777 }
778 }
779 LocalFree ( pEE );
780 if ( iSelItem != -1 ) {
781 ListView_SetItemState ( hwnd, iSelItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED );
782 ListView_EnsureVisible ( hwnd, iSelItem, FALSE );
783 } else {
784 ListView_SetItemState ( hwnd, 0, LVIS_FOCUSED, LVIS_FOCUSED );
785 ListView_EnsureVisible ( hwnd, 0, FALSE );
786 }
787}
788

Callers 1

SelectEncodingDlgProcFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected