X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b04fcede8f8f29cbade858ff81247ffbdc482d27..564da6ff0b0492f87e84693faf0e6afc0120fa6b:/samples/dataview/dataview.cpp?ds=sidebyside diff --git a/samples/dataview/dataview.cpp b/samples/dataview/dataview.cpp index 8b1e24f85f..c9fc9840d4 100644 --- a/samples/dataview/dataview.cpp +++ b/samples/dataview/dataview.cpp @@ -197,6 +197,17 @@ public: m_classicalMusicIsKnownToControl = false; } + // helper method for wxLog + + wxString GetTitle( const wxDataViewItem &item ) + { + MyMusicModelNode *node = (MyMusicModelNode*) item.GetID(); + if (!node) + return wxEmptyString; + + return node->m_title; + } + // helper methods to change the model void AddToClassical( const wxString &title, const wxString &artist, int year ) @@ -333,48 +344,36 @@ public: return node->IsContainer(); } - virtual wxDataViewItem GetFirstChild( const wxDataViewItem &parent ) const + virtual unsigned int GetChildren( const wxDataViewItem &parent, wxDataViewItemArray &array ) const { MyMusicModelNode *node = (MyMusicModelNode*) parent.GetID(); if (!node) - return wxDataViewItem( (void*) m_root ); + { + array.Add( wxDataViewItem( (void*) m_root ) ); + return 1; + } - if (node->GetChildCount() == 0) - return wxDataViewItem( 0 ); - if (node == m_classical) { MyMusicModel *model = (MyMusicModel*)(const MyMusicModel*) this; model->m_classicalMusicIsKnownToControl = true; } - MyMusicModelNode *first_child = node->GetChildren().Item( 0 ); - return wxDataViewItem( (void*) first_child ); + if (node->GetChildCount() == 0) + { + return 0; + } + + unsigned int count = node->GetChildren().GetCount(); + unsigned int pos; + for (pos = 0; pos < count; pos++) + { + MyMusicModelNode *child = node->GetChildren().Item( pos ); + array.Add( wxDataViewItem( (void*) child ) ); + } + return count; } - virtual wxDataViewItem GetNextSibling( const wxDataViewItem &item ) const - { - MyMusicModelNode *node = (MyMusicModelNode*) item.GetID(); - - // "MyMusic" has no siblings in our model - if (node == m_root) - return wxDataViewItem(0); - - MyMusicModelNode *parent = node->GetParent(); - int pos = parent->GetChildren().Index( node ); - - // Something went wrong - if (pos == wxNOT_FOUND) - return wxDataViewItem(0); - - // No more children - if (pos == parent->GetChildCount()-1) - return wxDataViewItem(0); - - node = parent->GetChildren().Item( pos+1 ); - return wxDataViewItem( (void*) node ); - } - private: MyMusicModelNode* m_root; MyMusicModelNode* m_pop; @@ -509,7 +508,7 @@ public: void OnExpanded( wxDataViewEvent &event ); void OnCollapsing( wxDataViewEvent &event ); void OnCollapsed( wxDataViewEvent &event ); - void OnSelected( wxDataViewEvent &event ); + void OnSelectionChanged( wxDataViewEvent &event ); void OnEditingStarted( wxDataViewEvent &event ); void OnEditingDone( wxDataViewEvent &event ); @@ -602,12 +601,11 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_DATAVIEW_ITEM_EXPANDED(ID_MUSIC_CTRL, MyFrame::OnExpanded) EVT_DATAVIEW_ITEM_COLLAPSING(ID_MUSIC_CTRL, MyFrame::OnCollapsing) EVT_DATAVIEW_ITEM_COLLAPSED(ID_MUSIC_CTRL, MyFrame::OnCollapsed) - EVT_DATAVIEW_ITEM_SELECTED(ID_MUSIC_CTRL, MyFrame::OnSelected) + EVT_DATAVIEW_SELECTION_CHANGED(ID_MUSIC_CTRL, MyFrame::OnSelectionChanged) EVT_DATAVIEW_ITEM_EDITING_STARTED(ID_MUSIC_CTRL, MyFrame::OnEditingStarted) EVT_DATAVIEW_ITEM_EDITING_DONE(ID_MUSIC_CTRL, MyFrame::OnEditingDone) - EVT_DATAVIEW_COLUMN_HEADER_CLICK(ID_MUSIC_CTRL, MyFrame::OnHeaderClick) EVT_DATAVIEW_COLUMN_HEADER_RIGHT_CLICKED(ID_MUSIC_CTRL, MyFrame::OnHeaderRightClick) EVT_DATAVIEW_COLUMN_SORTED(ID_MUSIC_CTRL, MyFrame::OnSorted) @@ -767,15 +765,20 @@ void MyFrame::OnActivated( wxDataViewEvent &event ) if(!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, Item Id: %d; Column: %d", event.GetItem().GetID(), event.GetColumn()); + wxString title = m_music_model->GetTitle( event.GetItem() ); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, Item: %s", title ); } -void MyFrame::OnSelected( wxDataViewEvent &event ) +void MyFrame::OnSelectionChanged( wxDataViewEvent &event ) { if(!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_SELECTED, Item Id: %d", event.GetItem().GetID() ); + wxString title = m_music_model->GetTitle( event.GetItem() ); + if (title.empty()) + title = "None"; + + wxLogMessage("wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, First selected Item: %s", title ); } void MyFrame::OnExpanding( wxDataViewEvent &event ) @@ -783,7 +786,8 @@ void MyFrame::OnExpanding( wxDataViewEvent &event ) if (!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING, Item Id: %d", event.GetItem().GetID() ); + wxString title = m_music_model->GetTitle( event.GetItem() ); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING, Item: %s", title ); } @@ -792,7 +796,8 @@ void MyFrame::OnEditingStarted( wxDataViewEvent &event ) if (!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED, Item Id: %d", event.GetItem().GetID() ); + wxString title = m_music_model->GetTitle( event.GetItem() ); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED, Item: %s", title ); } void MyFrame::OnEditingDone( wxDataViewEvent &event ) @@ -800,7 +805,8 @@ void MyFrame::OnEditingDone( wxDataViewEvent &event ) if (!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE, Item Id: %d", event.GetItem().GetID() ); + wxString title = m_music_model->GetTitle( event.GetItem() ); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE, Item: %s", title ); } void MyFrame::OnExpanded( wxDataViewEvent &event ) @@ -808,7 +814,8 @@ void MyFrame::OnExpanded( wxDataViewEvent &event ) if (!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDED, Item Id: %d", event.GetItem().GetID() ); + wxString title = m_music_model->GetTitle( event.GetItem() ); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDED, Item: %s", title ); } void MyFrame::OnCollapsing( wxDataViewEvent &event ) @@ -816,23 +823,27 @@ void MyFrame::OnCollapsing( wxDataViewEvent &event ) if (!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING, Item Id: %d", event.GetItem().GetID() ); + wxString title = m_music_model->GetTitle( event.GetItem() ); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING, Item: %s", title ); } void MyFrame::OnCollapsed( wxDataViewEvent &event ) { if (!m_log) return; - - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSED, Item Id: %d", event.GetItem().GetID() ); + + wxString title = m_music_model->GetTitle( event.GetItem() ); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSED, Item: %s", title ); } void MyFrame::OnHeaderClick( wxDataViewEvent &event ) { if(!m_log) return; + + int pos = m_musicCtrl->GetColumnPosition( event.GetDataViewColumn() ); - wxLogMessage("wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICK, Column: %d", event.GetColumn()); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICK, Column position: %d", pos ); } void MyFrame::OnHeaderRightClick( wxDataViewEvent &event ) @@ -840,7 +851,9 @@ void MyFrame::OnHeaderRightClick( wxDataViewEvent &event ) if(!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, Column: %d", event.GetColumn()); + int pos = m_musicCtrl->GetColumnPosition( event.GetDataViewColumn() ); + + wxLogMessage("wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, Column position: %d", pos ); } void MyFrame::OnSorted( wxDataViewEvent &event ) @@ -848,7 +861,9 @@ void MyFrame::OnSorted( wxDataViewEvent &event ) if(!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED, Column: %d", event.GetColumn()); + int pos = m_musicCtrl->GetColumnPosition( event.GetDataViewColumn() ); + + wxLogMessage("wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED, Column position: %d", pos ); } void MyFrame::OnRightClick( wxMouseEvent &event )