=== modified file 'mixxx/src/library/cratetablemodel.cpp' --- mixxx/src/library/cratetablemodel.cpp 2011-10-31 21:53:43 +0000 +++ mixxx/src/library/cratetablemodel.cpp 2012-04-13 07:52:36 +0000 @@ -169,7 +169,8 @@ | TRACKMODELCAPS_RELOADMETADATA | TRACKMODELCAPS_LOADTODECK | TRACKMODELCAPS_LOADTOSAMPLER - | TRACKMODELCAPS_REMOVE; + | TRACKMODELCAPS_REMOVE + | TRACKMODELCAPS_RESETPLAYED; CrateDAO& crateDao = m_pTrackCollection->getCrateDAO(); bool locked = crateDao.isCrateLocked(m_iCrateId); === modified file 'mixxx/src/library/librarytablemodel.cpp' --- mixxx/src/library/librarytablemodel.cpp 2011-10-31 05:22:39 +0000 +++ mixxx/src/library/librarytablemodel.cpp 2012-04-13 07:54:42 +0000 @@ -145,5 +145,6 @@ | TRACKMODELCAPS_RELOADMETADATA | TRACKMODELCAPS_LOADTODECK | TRACKMODELCAPS_LOADTOSAMPLER - | TRACKMODELCAPS_REMOVE; + | TRACKMODELCAPS_REMOVE + | TRACKMODELCAPS_RESETPLAYED; } === modified file 'mixxx/src/library/playlisttablemodel.cpp' --- mixxx/src/library/playlisttablemodel.cpp 2011-11-30 06:19:47 +0000 +++ mixxx/src/library/playlisttablemodel.cpp 2012-04-13 07:55:52 +0000 @@ -318,7 +318,8 @@ | TRACKMODELCAPS_RELOADMETADATA | TRACKMODELCAPS_LOADTODECK | TRACKMODELCAPS_LOADTOSAMPLER - | TRACKMODELCAPS_REMOVE; + | TRACKMODELCAPS_REMOVE + | TRACKMODELCAPS_RESETPLAYED; // Only allow Add to AutoDJ if we aren't currently showing the AutoDJ queue. if (m_iPlaylistId != m_playlistDao.getPlaylistIdFromName(AUTODJ_TABLE)) { === modified file 'mixxx/src/library/trackmodel.h' --- mixxx/src/library/trackmodel.h 2011-10-31 05:22:39 +0000 +++ mixxx/src/library/trackmodel.h 2012-04-13 07:57:33 +0000 @@ -35,6 +35,7 @@ TRACKMODELCAPS_LOADTOSAMPLER = 0x0100, TRACKMODELCAPS_REMOVE = 0x0200, TRACKMODELCAPS_RELOCATE = 0x0400, + TRACKMODELCAPS_RESETPLAYED = 0x0800, }; typedef int CapabilitiesFlags; /** Enables us to do ORing */ === modified file 'mixxx/src/widget/wtracktableview.cpp' --- mixxx/src/widget/wtracktableview.cpp 2011-12-14 17:22:49 +0000 +++ mixxx/src/widget/wtracktableview.cpp 2012-04-13 08:11:05 +0000 @@ -261,6 +261,9 @@ m_pReloadMetadataAct = new QAction(tr("Reload Track Metadata"), this); connect(m_pReloadMetadataAct, SIGNAL(triggered()), this, SLOT(slotReloadTrackMetadata())); + + m_pResetPlayedAct = new QAction(tr("Reset Played Count"), this); + connect(m_pResetPlayedAct, SIGNAL(triggered()), this, SLOT(slotResetPlayed())); } void WTrackTableView::slotMouseDoubleClicked(const QModelIndex &index) { @@ -450,6 +453,10 @@ if (modelHasCapabilities(TrackModel::TRACKMODELCAPS_RELOADMETADATA)) { m_pMenu->addAction(m_pReloadMetadataAct); } + if (modelHasCapabilities(TrackModel::TRACKMODELCAPS_RESETPLAYED)) { + m_pMenu->addAction(m_pResetPlayedAct); //Adding reset played option + } + m_pMenu->addSeparator(); m_pPropertiesAct->setEnabled(oneSongSelected); m_pMenu->addAction(m_pPropertiesAct); @@ -854,6 +861,23 @@ } } +//slot for reset played count, sets count to 0 of one or more tracks +void WTrackTableView::slotResetPlayed() { + QModelIndexList indices = selectionModel()->selectedRows(); + TrackModel* trackModel = getTrackModel(); + + if (trackModel == NULL) { + return; + } + + foreach (QModelIndex index, indices) { + TrackPointer pTrack = trackModel->getTrack(index); + if (pTrack) { + pTrack->setTimesPlayed(0); + } + } +} + void WTrackTableView::addSelectionToPlaylist(int iPlaylistId) { PlaylistDAO& playlistDao = m_pTrackCollection->getPlaylistDAO(); TrackModel* trackModel = getTrackModel(); === modified file 'mixxx/src/widget/wtracktableview.h' --- mixxx/src/widget/wtracktableview.h 2011-10-14 03:58:14 +0000 +++ mixxx/src/widget/wtracktableview.h 2012-04-13 08:12:45 +0000 @@ -47,6 +47,7 @@ void slotPrevTrackInfo(); void slotSendToAutoDJ(); void slotReloadTrackMetadata(); + void slotResetPlayed(); void addSelectionToPlaylist(int iPlaylistId); void addSelectionToCrate(int iCrateId); void loadSelectionToGroup(QString group); @@ -92,6 +93,9 @@ // Remove from table QAction *m_pRemoveAct; + + // Reset the played count of selected track or tracks + QAction *m_pResetPlayedAct; // Show track-editor action QAction *m_pPropertiesAct;