track-reordering works \o/
This commit is contained in:
parent
a244529a4f
commit
aa65670383
@ -26,7 +26,11 @@ bool SyncDocument::load(const std::string &fileName)
|
||||
|
||||
// look up track-name, create it if it doesn't exist
|
||||
int trackIndex = getTrackIndex(name);
|
||||
if (0 > trackIndex) trackIndex = int(createTrack(name));
|
||||
if (0 > trackIndex)
|
||||
{
|
||||
trackIndex = int(createTrack(name));
|
||||
trackOrder.push_back(trackIndex);
|
||||
}
|
||||
|
||||
MSXML2::IXMLDOMNodeListPtr rowNodes = trackNode->GetchildNodes();
|
||||
for (int i = 0; i < rowNodes->Getlength(); ++i)
|
||||
@ -65,6 +69,7 @@ bool SyncDocument::load(const std::string &fileName)
|
||||
MessageBox(NULL, temp, NULL, MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -267,7 +267,8 @@ public:
|
||||
|
||||
size_t getTrackIndexFromPos(size_t track) const
|
||||
{
|
||||
return track;
|
||||
assert(track < trackOrder.size());
|
||||
return trackOrder[track];
|
||||
}
|
||||
|
||||
bool load(const std::string &fileName);
|
||||
@ -277,6 +278,8 @@ public:
|
||||
std::map<size_t, size_t> clientRemap;
|
||||
bool clientPaused;
|
||||
|
||||
std::vector<size_t> trackOrder;
|
||||
|
||||
private:
|
||||
std::stack<Command*> undoStack;
|
||||
std::stack<Command*> redoStack;
|
||||
|
||||
@ -524,7 +524,11 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
|
||||
// find track
|
||||
int serverIndex = document.getTrackIndex(trackName);
|
||||
if (0 > serverIndex) serverIndex = int(document.createTrack(trackName));
|
||||
if (0 > serverIndex)
|
||||
{
|
||||
serverIndex = int(document.createTrack(trackName));
|
||||
document.trackOrder.push_back(serverIndex);
|
||||
}
|
||||
|
||||
// setup remap
|
||||
document.clientRemap[serverIndex] = clientIndex;
|
||||
|
||||
@ -867,8 +867,21 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
||||
else setEditRow(editRow + 1);
|
||||
break;
|
||||
|
||||
case VK_LEFT: setEditTrack(editTrack - 1); break;
|
||||
case VK_RIGHT: setEditTrack(editTrack + 1); break;
|
||||
case VK_LEFT:
|
||||
if (GetKeyState(VK_CONTROL) < 0 && 0 < editTrack)
|
||||
{
|
||||
std::swap(document->trackOrder[editTrack], document->trackOrder[editTrack - 1]);
|
||||
}
|
||||
setEditTrack(editTrack - 1);
|
||||
break;
|
||||
|
||||
case VK_RIGHT:
|
||||
if (GetKeyState(VK_CONTROL) < 0 && document->trackOrder.size() > editTrack + 1)
|
||||
{
|
||||
std::swap(document->trackOrder[editTrack], document->trackOrder[editTrack + 1]);
|
||||
}
|
||||
setEditTrack(editTrack + 1);
|
||||
break;
|
||||
|
||||
case VK_PRIOR:
|
||||
if (GetKeyState(VK_CONTROL) < 0)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user