// Created: 06/01/06
// RCS-ID: $Id$
// Copyright: (c) Robert Roebling
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
variant = node->m_quality;
break;
case 4:
- // wxMac doesn't conceal the popularity progress renderer, return 0 for containers
- if (IsContainer(item))
- variant = (long) 0;
- else
- variant = (long) 80; // all music is very 80% popular
+ variant = 80L; // all music is very 80% popular
break;
case 5:
- // Make size of red square depend on year
if (GetYear(item) < 1900)
- variant = (long) 35;
+ variant = "old";
else
- variant = (long) 25;
+ variant = "new";
break;
default:
return false;
}
+bool MyMusicTreeModel::IsEnabled( const wxDataViewItem &item,
+ unsigned int col ) const
+{
+ wxASSERT(item.IsOk());
+
+ MyMusicTreeModelNode *node = (MyMusicTreeModelNode*) item.GetID();
+
+ // disable Beethoven's ratings, his pieces can only be good
+ return !(col == 3 && node->m_artist.EndsWith("Beethoven"));
+}
+
wxDataViewItem MyMusicTreeModel::GetParent( const wxDataViewItem &item ) const
{
// the invisible root node has no parent
return *v1-*v2;
}
-#define INITIAL_NUMBER_OF_ITEMS 100000
+#define INITIAL_NUMBER_OF_ITEMS 10000
MyListModel::MyListModel() :
wxDataViewVirtualListModel( INITIAL_NUMBER_OF_ITEMS )
{
- m_virtualItems = INITIAL_NUMBER_OF_ITEMS;
-
// the first 100 items are really stored in this model;
// all the others are synthesized on request
static const unsigned NUMBER_REAL_ITEMS = 100;
void MyListModel::DeleteItem( const wxDataViewItem &item )
{
unsigned int row = GetRow( item );
+
if (row >= m_textColValues.GetCount())
return;
void MyListModel::AddMany()
{
- m_virtualItems += 1000;
- Reset( m_textColValues.GetCount() + m_virtualItems );
+ Reset( GetCount()+1000 );
}
void MyListModel::GetValueByRow( wxVariant &variant,
}
break;
+ case Col_Custom:
+ variant = wxString::Format("%d", row % 100);
+ break;
+
case Col_Max:
wxFAIL_MSG( "invalid column" );
}
break;
case Col_TextWithAttr:
- // do what the labels defined above hint at
+ case Col_Custom:
+ // do what the labels defined in GetValueByRow() hint at
switch ( row % 5 )
{
case 0:
return true;
case Col_TextWithAttr:
+ case Col_Custom:
wxLogError("Cannot edit the column %d", col);
break;
return false;
}
+
+
+// ----------------------------------------------------------------------------
+// MyListStoreDerivedModel
+// ----------------------------------------------------------------------------
+
+bool MyListStoreDerivedModel::IsEnabledByRow(unsigned int row, unsigned int col) const
+{
+ // disabled the last two checkboxes
+ return !(col == 0 && 8 <= row && row <= 9);
+}