PCM: Select the preferred version first in version grid
This commit is contained in:
parent
0e4e9206ff
commit
0b59246279
|
@ -111,30 +111,14 @@ void PANEL_PACKAGE::SetState( PCM_PACKAGE_STATE aState )
|
||||||
|
|
||||||
void PANEL_PACKAGE::OnButtonClicked( wxCommandEvent& event )
|
void PANEL_PACKAGE::OnButtonClicked( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
// Versions are already presorted in descending order
|
|
||||||
if( m_data.state == PPS_AVAILABLE )
|
if( m_data.state == PPS_AVAILABLE )
|
||||||
{
|
{
|
||||||
// Find last stable compatible version
|
wxString version = GetPreferredVersion();
|
||||||
auto ver_it = std::find_if( m_data.package.versions.begin(), m_data.package.versions.end(),
|
|
||||||
[]( const PACKAGE_VERSION& ver )
|
|
||||||
{
|
|
||||||
return ver.compatible && ver.status == PVS_STABLE;
|
|
||||||
} );
|
|
||||||
|
|
||||||
// If not found then find any compatible version
|
if( version.IsEmpty() )
|
||||||
if( ver_it == m_data.package.versions.end() )
|
return;
|
||||||
{
|
|
||||||
ver_it = std::find_if( m_data.package.versions.begin(), m_data.package.versions.end(),
|
|
||||||
[]( const PACKAGE_VERSION& ver )
|
|
||||||
{
|
|
||||||
return ver.compatible;
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( ver_it == m_data.package.versions.end() )
|
m_actionCallback( m_data, PPA_INSTALL, version );
|
||||||
return; // Shouldn't happen
|
|
||||||
|
|
||||||
m_actionCallback( m_data, PPA_INSTALL, ver_it->version );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -177,3 +161,31 @@ void PANEL_PACKAGE::SetSelected( bool aSelected )
|
||||||
m_selected = aSelected;
|
m_selected = aSelected;
|
||||||
Refresh();
|
Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wxString PANEL_PACKAGE::GetPreferredVersion() const
|
||||||
|
{
|
||||||
|
// Versions are already presorted in descending order
|
||||||
|
|
||||||
|
// Find last stable compatible version
|
||||||
|
auto ver_it = std::find_if( m_data.package.versions.begin(), m_data.package.versions.end(),
|
||||||
|
[]( const PACKAGE_VERSION& ver )
|
||||||
|
{
|
||||||
|
return ver.compatible && ver.status == PVS_STABLE;
|
||||||
|
} );
|
||||||
|
|
||||||
|
// If not found then find any compatible version
|
||||||
|
if( ver_it == m_data.package.versions.end() )
|
||||||
|
{
|
||||||
|
ver_it = std::find_if( m_data.package.versions.begin(), m_data.package.versions.end(),
|
||||||
|
[]( const PACKAGE_VERSION& ver )
|
||||||
|
{
|
||||||
|
return ver.compatible;
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( ver_it == m_data.package.versions.end() )
|
||||||
|
return wxEmptyString; // Shouldn't happen
|
||||||
|
|
||||||
|
return ver_it->version;
|
||||||
|
}
|
||||||
|
|
|
@ -75,6 +75,9 @@ public:
|
||||||
|
|
||||||
void OnSize( wxSizeEvent& event ) override;
|
void OnSize( wxSizeEvent& event ) override;
|
||||||
|
|
||||||
|
///< Get preferred version. If criteria are not met, return wxEmptyString
|
||||||
|
wxString GetPreferredVersion() const;
|
||||||
|
|
||||||
const PACKAGE_VIEW_DATA& GetPackageData() const { return m_data; };
|
const PACKAGE_VIEW_DATA& GetPackageData() const { return m_data; };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -318,7 +318,27 @@ void PANEL_PACKAGES_VIEW::setPackageDetails( const PACKAGE_VIEW_DATA& aPackageDa
|
||||||
}
|
}
|
||||||
|
|
||||||
if( m_gridVersions->GetNumberRows() >= 1 )
|
if( m_gridVersions->GetNumberRows() >= 1 )
|
||||||
m_gridVersions->SelectRow( 0 );
|
{
|
||||||
|
wxString version = m_currentSelected->GetPreferredVersion();
|
||||||
|
|
||||||
|
if( !version.IsEmpty() )
|
||||||
|
{
|
||||||
|
for( int i = 0; i < m_gridVersions->GetNumberRows(); i++ )
|
||||||
|
{
|
||||||
|
if( m_gridVersions->GetCellValue( i, COL_VERSION ) == version )
|
||||||
|
{
|
||||||
|
std::cout << "auto select row: " << i << std::endl;
|
||||||
|
m_gridVersions->SelectRow( i );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Fall back to first row.
|
||||||
|
m_gridVersions->SelectRow( 0 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_gridVersions->Thaw();
|
m_gridVersions->Thaw();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue