aboutsummaryrefslogtreecommitdiff
path: root/Src/nu/listview.h
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/nu/listview.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/nu/listview.h')
-rw-r--r--Src/nu/listview.h229
1 files changed, 229 insertions, 0 deletions
diff --git a/Src/nu/listview.h b/Src/nu/listview.h
new file mode 100644
index 00000000..d29db58a
--- /dev/null
+++ b/Src/nu/listview.h
@@ -0,0 +1,229 @@
+/*
+** Copyright (C) 2003 Nullsoft, Inc.
+**
+** This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held
+** liable for any damages arising from the use of this software.
+**
+** Permission is granted to anyone to use this software for any purpose, including commercial applications, and to
+** alter it and redistribute it freely, subject to the following restrictions:
+**
+** 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software.
+** If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+**
+** 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+**
+** 3. This notice may not be removed or altered from any source distribution.
+**
+*/
+
+#ifndef _LISTVIEW_H_
+#define _LISTVIEW_H_
+
+#include <windows.h>
+#include <windowsx.h>
+#include <commctrl.h>
+
+#ifndef LVS_EX_DOUBLEBUFFER //this will work XP only
+#define LVS_EX_DOUBLEBUFFER 0x00010000
+#endif
+
+class W_ListView
+{
+public:
+ W_ListView();
+ W_ListView( HWND hwndView );
+ W_ListView( HWND hwndDlg, int resourceId );
+ ~W_ListView();
+
+ void InvertSelection();
+ void SetTextColors( COLORREF foregroundColor, COLORREF backgroundColor );
+ void SetFont( HFONT newFont );
+ void setwnd( HWND hwnd );
+ void AddCol( const wchar_t *text, int w );
+ void AddCol( const char *text, int w );
+ void AddAutoCol( LPTSTR text );
+ void AddImageCol( int w );
+
+ void JustifyColumn( int column, int justificationFlag )
+ {
+ LVCOLUMN col;
+ col.mask = LVCF_FMT;
+ col.fmt = justificationFlag;
+
+ ListView_SetColumn( m_hwnd, column, &col );
+ }
+
+ void SetColumnWidth( int column, int width )
+ {
+ ListView_SetColumnWidth( m_hwnd, column, width );
+ }
+
+ int GetCount( void )
+ {
+ return ListView_GetItemCount( m_hwnd );
+ }
+
+ int GetParam( int p );
+
+ void DeleteItem( int n )
+ {
+ ListView_DeleteItem( m_hwnd, n );
+ }
+
+ void RefreshItem( int item )
+ {
+ ListView_RedrawItems( m_hwnd, item, item );
+ }
+
+ void RefreshAll()
+ {
+ ListView_RedrawItems( m_hwnd, 0, GetCount() );
+ }
+
+ void Clear( void )
+ {
+ ListView_DeleteAllItems( m_hwnd );
+ }
+
+ int GetSelected( int x )
+ {
+ return( ListView_GetItemState( m_hwnd, x, LVIS_SELECTED ) & LVIS_SELECTED ) ? 1 : 0;
+ }
+
+ int GetSelectedCount()
+ {
+ return ListView_GetSelectedCount( m_hwnd );
+ }
+
+ int GetNextSelected( int start = -1 )
+ {
+ return ListView_GetNextItem( m_hwnd, start, LVNI_ALL | LVNI_SELECTED );
+ }
+
+ int GetSelectionMark()
+ {
+ return ListView_GetSelectionMark( m_hwnd );
+ }
+
+ void SetSelected( int x )
+ {
+ ListView_SetItemState( m_hwnd, x, LVIS_SELECTED, LVIS_SELECTED );
+ }
+
+ void SelectAll()
+ {
+ ListView_SetItemState( m_hwnd, -1, LVIS_SELECTED, LVIS_SELECTED );
+ }
+
+ void UnselectAll()
+ {
+ ListView_SetItemState( m_hwnd, -1, 0, LVIS_SELECTED );
+ }
+
+ void Unselect( int x )
+ {
+ ListView_SetItemState( m_hwnd, x, 0, LVIS_SELECTED );
+ }
+
+ void EditItem( int x )
+ {
+ SetFocus( m_hwnd );
+ ListView_EditLabel( m_hwnd, x );
+ }
+
+ int AppendItem( LPCWSTR text, LPARAM param );
+ int InsertItem( int p, const wchar_t *text, LPARAM param );
+ int InsertItem( int p, const char *text, LPARAM param );
+
+ void GetItemRect( int i, RECT *r )
+ {
+ ListView_GetItemRect( m_hwnd, i, r, LVIR_BOUNDS );
+ }
+
+ void SetItemText( int p, int si, const wchar_t *text );
+ void SetItemText( int p, int si, const char *text );
+ void SetItemParam( int p, int param );
+
+ void GetText( int p, int si, char *text, int maxlen );
+ void GetText( int p, int si, wchar_t *text, int maxlen );
+
+ size_t GetTextLength( int p, int si )
+ {
+ LVITEM lvItem;
+ lvItem.cchTextMax = 0;
+ lvItem.pszText = 0;
+ lvItem.iSubItem = si;
+ lvItem.iItem = p;
+
+ return SendMessage( m_hwnd, LVM_GETITEMTEXT, p, (LPARAM)&lvItem );
+ }
+
+ int FindItemByParam( int param )
+ {
+ LVFINDINFO fi = { LVFI_PARAM,0,param };
+
+ return ListView_FindItem( m_hwnd, -1, &fi );
+ }
+
+ int FindItemByPoint( int x, int y );
+
+ void SetVirtualCount( int count, DWORD flags = 0 )
+ {
+ ListView_SetItemCountEx( m_hwnd, count, flags );
+ }
+
+ void SetVirtualCountAsync( int count, DWORD flags = 0 )
+ {
+ if ( m_hwnd )
+ PostMessage( m_hwnd, LVM_SETITEMCOUNT, count, flags );
+ }
+
+ int GetColumnWidth( int col );
+
+ void AutoColumnWidth( int col )
+ {
+ ListView_SetColumnWidth( m_hwnd, col, LVSCW_AUTOSIZE_USEHEADER );
+ }
+
+ void AutoSizeColumn( int col )
+ {
+ ListView_SetColumnWidth( m_hwnd, col, LVSCW_AUTOSIZE );
+ }
+
+ HWND getwnd( void )
+ {
+ return m_hwnd;
+ }
+
+ void ScrollTo( int index )
+ {
+ ListView_EnsureVisible( m_hwnd, index, FALSE );
+ }
+
+ void SetDoubleBuffered( bool buffered = true )
+ {
+ ListView_SetExtendedListViewStyleEx( m_hwnd, LVS_EX_DOUBLEBUFFER, buffered ? LVS_EX_DOUBLEBUFFER : 0 );
+ }
+
+ bool ColumnExists( int columnNum )
+ {
+ LVCOLUMN col;
+ col.mask = LVCF_WIDTH;
+
+ return ListView_GetColumn( m_hwnd, columnNum, &col );
+ }
+
+ void ForceUnicode()
+ {
+ SendMessage( m_hwnd, CCM_SETUNICODEFORMAT, TRUE, 0 );
+ }
+
+protected:
+ HWND m_hwnd;
+ HFONT m_font;
+ int m_col;
+
+};
+
+#endif//_LISTVIEW_H_
+