+ for (i = 0; i < count; i++)
+ {
+ MyMusicModelNode *child = m_children[i];
+ delete child;
+ }
+ }
+
+ wxUint32 GetID() { return m_id; }
+ bool IsContainer() { return m_isContainer; }
+
+ MyMusicModelNode* GetParent() { return m_parent; }
+ MyMusicModelNodes &GetChildren() { return m_children; }
+ MyMusicModelNode* GetNthChild( unsigned int n ) { return m_children.Item( n ); }
+ void Insert( MyMusicModelNode* child, unsigned int n) { m_children.Insert( child, n); }
+ void Append( MyMusicModelNode* child ) { m_children.Add( child ); }
+ unsigned int GetChildCount() { return m_children.GetCount(); }
+
+public:
+ wxString m_title;
+ wxString m_artist;
+ wxString m_year;
+
+private:
+ MyMusicModelNode *m_parent;
+ MyMusicModelNodes m_children;
+ wxUint32 m_id;
+ bool m_isContainer;
+};
+
+
+class MyMusicModel: public wxDataViewModel
+{
+public:
+ MyMusicModel()
+ {
+ m_idCounter = 0;
+ m_root = new MyMusicModelNode( NULL, GetNewId(), "My Music" );
+ m_pop = new MyMusicModelNode( m_root, GetNewId(), "Pop music" );
+ m_root->Append( m_pop );
+ m_pop->Append( new MyMusicModelNode( m_pop, GetNewId(),
+ "You are not alone", "Michael Jackson", "1995" ) );
+ m_pop->Append( new MyMusicModelNode( m_pop, GetNewId(),
+ "Take a bow", "Madonna", "1994" ) );
+ m_classical = new MyMusicModelNode( m_root, GetNewId(), "Classical music" );
+ m_root->Append( m_classical );
+ m_classical->Append( new MyMusicModelNode( m_classical, GetNewId(),
+ "Ninth symphony", "Ludwig van Beethoven", "1824" ) );
+ m_classical->Append( new MyMusicModelNode( m_classical, GetNewId(),
+ "German Requiem", "Johannes Brahms", "1868" ) );
+ m_classicalMusicIsKnownToControl = false;