mirror of
https://github.com/reactos/reactos.git
synced 2026-06-01 08:50:24 +08:00
[rosctrls.h] CListView: Add Arrange method
[SHELL32] CDefView: Start implementing Auto arrange. So far its effect is only shown when the browser window resizes.
This commit is contained in:
@@ -125,7 +125,6 @@ class CDefView :
|
||||
HRESULT OnStateChange(UINT uFlags);
|
||||
void UpdateStatusbar();
|
||||
void CheckToolbar();
|
||||
void SetStyle(DWORD dwAdd, DWORD dwRemove);
|
||||
BOOL CreateList();
|
||||
void UpdateListColors();
|
||||
BOOL InitList();
|
||||
@@ -500,18 +499,6 @@ void CDefView::UpdateStatusbar()
|
||||
*
|
||||
* ##### helperfunctions for initializing the view #####
|
||||
*/
|
||||
/**********************************************************
|
||||
* change the style of the listview control
|
||||
*/
|
||||
void CDefView::SetStyle(DWORD dwAdd, DWORD dwRemove)
|
||||
{
|
||||
DWORD tmpstyle;
|
||||
|
||||
TRACE("(%p)\n", this);
|
||||
|
||||
tmpstyle = ::GetWindowLongPtrW(m_ListView, GWL_STYLE);
|
||||
::SetWindowLongPtrW(m_ListView, GWL_STYLE, dwAdd | (tmpstyle & ~dwRemove));
|
||||
}
|
||||
|
||||
/**********************************************************
|
||||
* ShellView_CreateList()
|
||||
@@ -1193,10 +1180,18 @@ HRESULT CDefView::FillArrangeAsMenu(HMENU hmenuArrange)
|
||||
MF_BYCOMMAND);
|
||||
|
||||
if (m_FolderSettings.ViewMode == FVM_DETAILS || m_FolderSettings.ViewMode == FVM_LIST)
|
||||
{
|
||||
EnableMenuItem(hmenuArrange, FCIDM_SHVIEW_AUTOARRANGE, MF_BYCOMMAND | MF_GRAYED);
|
||||
}
|
||||
else
|
||||
{
|
||||
EnableMenuItem(hmenuArrange, FCIDM_SHVIEW_AUTOARRANGE, MF_BYCOMMAND);
|
||||
|
||||
if (GetAutoArrange() == S_OK)
|
||||
CheckMenuItem(hmenuArrange, FCIDM_SHVIEW_AUTOARRANGE, MF_CHECKED);
|
||||
}
|
||||
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
@@ -1560,25 +1555,25 @@ LRESULT CDefView::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHand
|
||||
{
|
||||
case FCIDM_SHVIEW_SMALLICON:
|
||||
m_FolderSettings.ViewMode = FVM_SMALLICON;
|
||||
SetStyle (LVS_SMALLICON, LVS_TYPEMASK);
|
||||
m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_SMALLICON);
|
||||
CheckToolbar();
|
||||
break;
|
||||
|
||||
case FCIDM_SHVIEW_BIGICON:
|
||||
m_FolderSettings.ViewMode = FVM_ICON;
|
||||
SetStyle (LVS_ICON, LVS_TYPEMASK);
|
||||
m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_ICON);
|
||||
CheckToolbar();
|
||||
break;
|
||||
|
||||
case FCIDM_SHVIEW_LISTVIEW:
|
||||
m_FolderSettings.ViewMode = FVM_LIST;
|
||||
SetStyle (LVS_LIST, LVS_TYPEMASK);
|
||||
m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_LIST);
|
||||
CheckToolbar();
|
||||
break;
|
||||
|
||||
case FCIDM_SHVIEW_REPORTVIEW:
|
||||
m_FolderSettings.ViewMode = FVM_DETAILS;
|
||||
SetStyle (LVS_REPORT, LVS_TYPEMASK);
|
||||
m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_REPORT);
|
||||
CheckToolbar();
|
||||
break;
|
||||
|
||||
@@ -1593,9 +1588,14 @@ LRESULT CDefView::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHand
|
||||
break;
|
||||
|
||||
case FCIDM_SHVIEW_SNAPTOGRID:
|
||||
case FCIDM_SHVIEW_AUTOARRANGE:
|
||||
//FIXME
|
||||
break;
|
||||
case FCIDM_SHVIEW_AUTOARRANGE:
|
||||
if (GetAutoArrange() == S_OK)
|
||||
m_ListView.ModifyStyle(LVS_AUTOARRANGE, 0);
|
||||
else
|
||||
AutoArrange();
|
||||
break;
|
||||
case FCIDM_SHVIEW_SELECTALL:
|
||||
m_ListView.SetItemState(-1, LVIS_SELECTED, LVIS_SELECTED);
|
||||
break;
|
||||
@@ -2380,7 +2380,7 @@ HRESULT STDMETHODCALLTYPE CDefView::SetCurrentViewMode(UINT ViewMode)
|
||||
}
|
||||
}
|
||||
|
||||
SetStyle(dwStyle, LVS_TYPEMASK);
|
||||
m_ListView.ModifyStyle(LVS_TYPEMASK, dwStyle);
|
||||
|
||||
/* This will not necessarily be the actual mode set above.
|
||||
This mimics the behavior of Windows XP. */
|
||||
@@ -2481,7 +2481,7 @@ HRESULT STDMETHODCALLTYPE CDefView::GetDefaultSpacing(POINT *ppt)
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CDefView::GetAutoArrange()
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
return ((m_ListView.GetStyle() & LVS_AUTOARRANGE) ? S_OK : S_FALSE);
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CDefView::SelectItem(int iItem, DWORD dwFlags)
|
||||
@@ -2666,8 +2666,9 @@ HRESULT STDMETHODCALLTYPE CDefView::ArrangeGrid()
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CDefView::AutoArrange()
|
||||
{
|
||||
FIXME("(%p) stub\n", this);
|
||||
return E_NOTIMPL;
|
||||
m_ListView.ModifyStyle(0, LVS_AUTOARRANGE);
|
||||
m_ListView.Arrange(LVA_DEFAULT);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CDefView::AddObject(PITEMID_CHILD pidl, UINT *item)
|
||||
|
||||
Reference in New Issue
Block a user