parent
d84d46b35d
commit
ed55845ac3
@ -1245,6 +1245,7 @@ static void onFoldGroup(bool fold)
|
|||||||
static void onToggleBookmark()
|
static void onToggleBookmark()
|
||||||
{
|
{
|
||||||
Commands_toggleBookmark(getTrackData(), getRowPos());
|
Commands_toggleBookmark(getTrackData(), getRowPos());
|
||||||
|
updateNeedsSaving();
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -1252,6 +1253,7 @@ static void onToggleBookmark()
|
|||||||
static void onClearBookmarks()
|
static void onClearBookmarks()
|
||||||
{
|
{
|
||||||
Commands_clearBookmarks(getTrackData());
|
Commands_clearBookmarks(getTrackData());
|
||||||
|
updateNeedsSaving();
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@ -20,6 +20,9 @@ static void parseXml(mxml_node_t* rootNode, TrackData* trackData)
|
|||||||
int g, i, foldedGroupCount = 0, is_key, track_index = 0;
|
int g, i, foldedGroupCount = 0, is_key, track_index = 0;
|
||||||
mxml_node_t* node = rootNode;
|
mxml_node_t* node = rootNode;
|
||||||
|
|
||||||
|
free(trackData->bookmarks);
|
||||||
|
trackData->bookmarkCount = 0;
|
||||||
|
|
||||||
// Traverse the tracks node data
|
// Traverse the tracks node data
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
@ -35,6 +38,14 @@ static void parseXml(mxml_node_t* rootNode, TrackData* trackData)
|
|||||||
{
|
{
|
||||||
const char* element_name = mxmlGetElement(node);
|
const char* element_name = mxmlGetElement(node);
|
||||||
|
|
||||||
|
if (!strcmp("bookmark", element_name))
|
||||||
|
{
|
||||||
|
const char* row = mxmlElementGetAttr(node, "row");
|
||||||
|
|
||||||
|
if (row)
|
||||||
|
TrackData_toggleBookmark(trackData, atoi(row));
|
||||||
|
}
|
||||||
|
|
||||||
if (!strcmp("group", element_name))
|
if (!strcmp("group", element_name))
|
||||||
{
|
{
|
||||||
s_foldedGroupNames[foldedGroupCount++] = mxmlElementGetAttr(node, "name");
|
s_foldedGroupNames[foldedGroupCount++] = mxmlElementGetAttr(node, "name");
|
||||||
@ -213,6 +224,9 @@ static const char* whitespaceCallback(mxml_node_t* node, int where)
|
|||||||
|
|
||||||
if (!strcmp("group", name))
|
if (!strcmp("group", name))
|
||||||
return "\t";
|
return "\t";
|
||||||
|
|
||||||
|
if (!strcmp("bookmark", name))
|
||||||
|
return "\t";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (where == MXML_WS_AFTER_OPEN)
|
if (where == MXML_WS_AFTER_OPEN)
|
||||||
@ -249,11 +263,25 @@ int LoadSave_saveRocketXML(const text_t* path, TrackData* trackData)
|
|||||||
mxml_node_t* tracks;
|
mxml_node_t* tracks;
|
||||||
FILE* fp;
|
FILE* fp;
|
||||||
size_t p;
|
size_t p;
|
||||||
|
|
||||||
struct sync_data* sync_data = &trackData->syncData;
|
struct sync_data* sync_data = &trackData->syncData;
|
||||||
|
int* bookmarks = trackData->bookmarks;
|
||||||
|
|
||||||
xml = mxmlNewXML("1.0");
|
xml = mxmlNewXML("1.0");
|
||||||
|
|
||||||
|
// save all bookmarks
|
||||||
|
|
||||||
|
for (p = 0; p < (size_t)trackData->bookmarkCount; ++p)
|
||||||
|
{
|
||||||
|
mxml_node_t* node;
|
||||||
|
const int bookmark = *bookmarks++;
|
||||||
|
|
||||||
|
if (bookmark == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
node = mxmlNewElement(xml, "bookmark");
|
||||||
|
setElementInt(node, "row", "%d", bookmark);
|
||||||
|
}
|
||||||
|
|
||||||
// save groups that are folded
|
// save groups that are folded
|
||||||
|
|
||||||
for (p = 0; p < (size_t)trackData->groupCount; ++p)
|
for (p = 0; p < (size_t)trackData->groupCount; ++p)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user