Changeset 798
- Timestamp:
- 2002-03-04 22:24:24 (7 years ago)
- Files:
-
- mb_tagger/trunk/analyzer.cpp (modified) (1 diff)
- mb_tagger/trunk/analyzer.h (modified) (1 diff)
- mb_tagger/trunk/defs.h (modified) (1 diff)
- mb_tagger/trunk/filecache.cpp (modified) (5 diffs)
- mb_tagger/trunk/filecache.h (modified) (2 diffs)
- mb_tagger/trunk/main.cpp (modified) (31 diffs)
- mb_tagger/trunk/main.dfm (modified) (50 diffs)
- mb_tagger/trunk/main.h (modified) (7 diffs)
- mb_tagger/trunk/mbid3.cpp (modified) (1 diff)
- mb_tagger/trunk/mbtagger.bpr (modified) (3 diffs)
- mb_tagger/trunk/preferences.cpp (modified) (1 diff)
- mb_tagger/trunk/rc/saved.bmp (added)
- mb_tagger/trunk/rc/submit.bmp (added)
- mb_tagger/trunk/rc/unrecognized.bmp (modified) (previous)
- mb_tagger/trunk/tview.cpp (modified) (24 diffs)
- mb_tagger/trunk/tview.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
mb_tagger/trunk/analyzer.cpp
r797 r798 87 87 Metadata data; 88 88 fileCache->getData(index, eData, data); 89 fileCache->getTrm(index, trm); 90 if (trm == AnsiString(ANALYZER_REDO_STRING)) 91 { 92 data.trackId = ""; 93 fileCache->setData(index, eData, data); 94 95 fileCache->getData(index, eId3, data); 96 data.trackId = ""; 97 fileCache->setData(index, eId3, data); 98 } 99 trm = ""; 100 89 101 if (!data.trackId.IsEmpty()) 90 102 { 91 103 // Yup, toss it into categorized 92 fileCache->setStatus(index, eAnalyzed Recognized);104 fileCache->setStatus(index, eAnalyzedPreviously); 93 105 status = fileName + " was previously matched."; 94 106 parent->setStatus(status); mb_tagger/trunk/analyzer.h
r787 r798 6 6 #pragma hdrstop 7 7 #include "filecache.h" 8 9 #define ANALYZER_REDO_STRING "<redo>" 8 10 9 11 class TMBTaggerForm; mb_tagger/trunk/defs.h
r797 r798 47 47 // States that the whole application will use 48 48 ePending = 0, 49 eUnrecognized = 1, 50 eRecognized = 2, 51 eError = 3, 52 eDeleted = 4, 49 eUnrecognized = 1, // unrecognized 50 eRecognized = 2, // Recognized, but unsaved 51 eError = 3, // Error 52 eDeleted = 4, // Deleted 53 eSaved = 5, // Saved & previously ident 53 54 54 // State that the an ylyzer, but the UI will never see55 // State that the analyzer, but the UI will never see 55 56 eAnalyzedRecognized = -1, 56 57 eAnalyzedUnrecognized = -2, 57 eAnalyzedError = -3 58 eAnalyzedPreviously = -3, 59 eAnalyzedError = -4 58 60 }; 59 61 mb_tagger/trunk/filecache.cpp
r797 r798 6 6 cache = new TList; 7 7 mutex = new TCriticalSection; 8 numUnsaved = 0;9 8 } 10 9 … … 29 28 mutex->Acquire(); 30 29 count = cache->Count; 31 mutex->Release();32 33 return count;34 }35 36 int FileCache::getNumUnsaved(void)37 {38 int count;39 40 mutex->Acquire();41 count = numUnsaved;42 30 mutex->Release(); 43 31 … … 101 89 102 90 if (!(entry->data == entry->id3)) 103 {104 91 entry->changed = true; 105 numUnsaved++;106 }107 92 else 108 93 entry->changed = false; … … 139 124 140 125 if (status == eDeleted && entry->changed) 141 {142 126 entry->changed = false; 143 numUnsaved--;144 }145 127 else 146 128 if (!(entry->data == entry->id3) && !entry->changed) … … 239 221 entry->data = data; 240 222 if (!(entry->data == entry->id3) && !entry->changed) 241 {242 223 entry->changed = true; 243 numUnsaved++;244 }245 224 break; 246 225 } mb_tagger/trunk/filecache.h
r797 r798 21 21 22 22 int getNumItems(void); 23 int getNumUnsaved(void);24 23 int getNumReadyItems(void); 25 24 int getNextItem(FileStatus status); … … 50 49 TCriticalSection *mutex; 51 50 TList *cache; 52 int numUnsaved;53 51 }; 54 52 mb_tagger/trunk/main.cpp
r797 r798 138 138 } 139 139 140 SetWindowPos(Handle, NULL, 141 prefs->getPrefs().windowRect.Left, 142 prefs->getPrefs().windowRect.Top, 143 prefs->getPrefs().windowRect.Right - 144 prefs->getPrefs().windowRect.Left, 145 prefs->getPrefs().windowRect.Bottom - 146 prefs->getPrefs().windowRect.Top, SWP_NOZORDER); 140 Width = prefs->getPrefs().windowRect.Right - 141 prefs->getPrefs().windowRect.Left; 142 Height = prefs->getPrefs().windowRect.Bottom - 143 prefs->getPrefs().windowRect.Top; 144 Left = prefs->getPrefs().windowRect.Left; 145 Top = prefs->getPrefs().windowRect.Top; 147 146 148 147 DragAcceptFiles(Handle, true); … … 330 329 cdLookupButtonClick(NULL); 331 330 } 331 332 //--------------------------------------------------------------------------- 332 333 333 334 void __fastcall TMBTaggerForm::cdLookupButtonClick(TObject *Sender) … … 657 658 treeView->Selected = NULL; 658 659 659 fileCache->setStatus(index, eUnrecognized);660 660 tview->setStatus(index, ePending, eUnrecognized); 661 661 } … … 671 671 if (index == currentIndex) 672 672 treeView->Selected = NULL; 673 674 fileCache->setStatus(index, eRecognized); 673 675 674 tview->setStatus(index, ePending, eRecognized); 676 675 } 677 676 else 678 {679 enableButtons();680 677 break; 681 }682 678 } 683 679 … … 689 685 if (index == currentIndex) 690 686 treeView->Selected = NULL; 691 692 fileCache->setStatus(index, eError); 687 693 688 tview->setStatus(index, ePending, eError); 694 689 } … … 696 691 break; 697 692 } 693 694 for(;;) 695 { 696 index = fileCache->getNextItem(eAnalyzedPreviously); 697 if (index >= 0) 698 { 699 if (index == currentIndex) 700 treeView->Selected = NULL; 701 702 tview->setStatus(index, ePending, eSaved); 703 } 704 else 705 break; 706 } 707 enableButtons(); 698 708 } 699 709 … … 706 716 BackgroundLookup *lookup; 707 717 LookupStatus status; 718 FileStatus fstatus; 708 719 char temp[10]; 709 720 TTrackLookupDialog *lookupDialog; 710 AnsiString fileName; 721 AnsiString fileName, trm; 722 TTreeNode *node; 711 723 712 724 if (trmIdEdit->Text.IsEmpty()) … … 765 777 MessageDlg(err, mtError, TMsgDlgButtons() << mbOK, 0); 766 778 767 fileCache->setStatus(currentIndex, eError);779 tview->setStatus(currentIndex, eUnrecognized, eError); 768 780 return; 769 781 } … … 778 790 delete lookup; 779 791 792 fileCache->getData(currentIndex, eData, mdata); 780 793 mdata.trackId = trackMBId; 781 fileCache->getFileName(currentIndex, fileName); 782 removePath(fileName); 783 784 artistEdit->Text = mdata.artist; 785 albumEdit->Text = mdata.album; 786 trackEdit->Text = mdata.track; 787 sprintf(temp, "%d", mdata.trackNum); 788 trackNumEdit->Text = AnsiString(temp); 789 trackIdEdit->Text = mdata.trackId; 794 fileCache->setData(currentIndex, eData, mdata); 795 796 // Add the current match to the submit info 797 fileCache->getTrm(currentIndex, trm); 798 submitInfo.add(trackMBId, trm); 799 800 fstatus = fileCache->getStatus(currentIndex); 801 tview->setStatus(currentIndex, fstatus, eRecognized); 790 802 791 803 setStatus("Track lookup done."); 792 804 Cursor = crDefault; 793 794 enableButtons();795 }796 797 //---------------------------------------------------------------------------798 799 void __fastcall TMBTaggerForm::revertButtonClick(TObject *Sender)800 {801 int trackNum;802 AnsiString artist, album, track, fileName, trm;803 char temp[10];804 Metadata data;805 FileStatus status;806 807 fileCache->getData(currentIndex, eId3, data);808 fileCache->setData(currentIndex, eData, data);809 fileCache->getFileName(currentIndex, fileName);810 fileCache->getTrm(currentIndex, trm);811 status = fileCache->getStatus(currentIndex);812 removePath(fileName);813 814 artistEdit->Text = data.artist;815 albumEdit->Text = data.album;816 trackEdit->Text = data.track;817 sprintf(temp, "%d", data.trackNum);818 trackNumEdit->Text = AnsiString(temp);819 trackIdEdit->Text = data.trackId;820 trmIdEdit->Text = trm;821 822 fileCache->setStatus(currentIndex, eUnrecognized);823 tview->setStatus(currentIndex, status, eUnrecognized);824 825 enableButtons();826 }827 828 //---------------------------------------------------------------------------829 830 void __fastcall TMBTaggerForm::saveButtonClick(TObject *Sender)831 {832 Metadata data;833 AnsiString fileName;834 TTreeNode *node;835 FileStatus status;836 837 if (currentIndex < 0)838 return;839 840 fileCache->getFileName(currentIndex, fileName);841 status = fileCache->getStatus(currentIndex);842 843 data.track = trackEdit->Text;844 data.artist = artistEdit->Text;845 data.album = albumEdit->Text;846 data.trackNum = atoi(trackNumEdit->Text.c_str());847 data.trackId = trackIdEdit->Text;848 fileCache->setData(currentIndex, eData, data);849 850 // Move the item to the recognized pile851 fileCache->setStatus(currentIndex, eRecognized);852 tview->setStatus(currentIndex, status, eRecognized);853 805 854 806 node = tview->getNextTrack(eUnrecognized); … … 910 862 ID3 id3(prefs->getPrefs().writeId3v1, prefs->getPrefs().writeId3v2); 911 863 TCursor saveCursor; 912 int index , numFiles = 0;864 int index; 913 865 Metadata data; 914 866 AnsiString fileName, fileOnly, trm, rdf; 915 867 TTreeNode *node; 916 SubmitRDF submit;917 868 918 869 if (!userCheck()) … … 921 872 treeView->Selected = NULL; 922 873 currentIndex = -1; 923 924 // Check to see if we have any pending info. If so, submit it first.925 submitSaved();926 927 submit.init();928 874 929 875 saveCursor = Screen->Cursor; … … 939 885 if (!fileCache->hasChanged(index)) 940 886 { 941 fileCache->setStatus(index, eDeleted); 942 tview->setStatus(index, eRecognized, eDeleted); 887 tview->setStatus(index, eRecognized, eSaved); 943 888 continue; 944 889 } … … 947 892 fileCache->getFileName(index, fileName); 948 893 fileCache->getTrm(index, trm); 949 950 // If we don't have a TRM, this track has been matched before,951 // thus don't write it out to disk again.952 if (!trm.IsEmpty())953 {954 numFiles++;955 submit.update(data.trackId, trm);956 }957 894 958 895 fileOnly = fileName; … … 999 936 fileCache->setFileName(index, newName); 1000 937 } 1001 938 1002 939 // Set the id3 data to be same as the in memory data 1003 940 fileCache->setData(index, eId3, data); 1004 fileCache->setStatus(index, eDeleted); 1005 tview->setStatus(index, eRecognized, eDeleted); 941 tview->setStatus(index, eRecognized, eSaved); 1006 942 Application->ProcessMessages(); 1007 943 } … … 1009 945 Screen->Cursor = saveCursor; 1010 946 setStatus("Done writing ID3 tags."); 1011 1012 submit.final();1013 submit.getRDF(rdf);1014 1015 if (numFiles > 0 && !submitTrms(rdf))1016 {1017 TMemoryStream *str;1018 AnsiString fileName;1019 1020 fileName = ExtractFilePath(Application->ExeName) + "\\saved.rdf";1021 str = new TMemoryStream;1022 str->Write(rdf.c_str(), rdf.Length());1023 try1024 {1025 str->SaveToFile(fileName);1026 }1027 catch(EWriteError *e)1028 {1029 MessageDlg("Could not write TRM information to disk for later "1030 "submisson.", mtError, TMsgDlgButtons() << mbOK, 0);1031 unlink(fileName.c_str());1032 }1033 delete str;1034 }1035 947 } 1036 948 … … 1040 952 bool &CanClose) 1041 953 { 954 int mr; 1042 955 char msg[100]; 1043 956 1044 if ( fileCache->getNumUnsaved() == 0)957 if (tview->getNumUnsaved() == 0 && submitInfo.getNumItems() == 0) 1045 958 { 1046 959 CanClose = true; … … 1048 961 } 1049 962 1050 sprintf(msg, "You have %d unsaved files. Do you want to exit with" 1051 "out saving?", fileCache->getNumUnsaved()); 1052 if (MessageDlg(msg, mtWarning, TMsgDlgButtons() 1053 << mbYes << mbNo, 0) == mrYes) 1054 CanClose = true; 1055 else 1056 CanClose = false; 963 if (tview->getNumUnsaved() > 0) 964 { 965 sprintf(msg, "You have %d unsaved files. Do you want to save them?", 966 tview->getNumUnsaved()); 967 mr = MessageDlg(msg, mtWarning, TMsgDlgButtons() 968 << mbYes << mbNo << mbCancel, 0); 969 if (mr == mrYes) 970 writeTagsClick(NULL); 971 else 972 if (mr == mrCancel) 973 { 974 CanClose = false; 975 return; 976 } 977 } 978 979 if (submitInfo.getNumItems() > 0) 980 { 981 sprintf(msg, "There are %d matches to submit to the MusicBrainz server. " 982 "Do you want to submit them now?", 983 submitInfo.getNumItems()); 984 mr = MessageDlg(msg, mtWarning, TMsgDlgButtons() 985 << mbYes << mbNo << mbCancel, 0); 986 if (mr == mrYes) 987 { 988 if (!submitTrms()) 989 { 990 CanClose = false; 991 return; 992 } 993 } 994 else 995 if (mr == mrCancel) 996 { 997 CanClose = false; 998 return; 999 } 1000 } 1001 1002 CanClose = true; 1057 1003 } 1058 1004 … … 1212 1158 TCloseAction &Action) 1213 1159 { 1214 if (mediaPlayer->Mode == mpPlaying || 1215 mediaPlayer->Mode == mpPaused) 1216 { 1217 mediaPlayer->Stop(); 1218 mediaPlayer->Close(); 1219 } 1220 else 1221 if (mediaPlayer->Mode == mpOpen) 1160 if (mediaPlayer->Mode == mpPlaying || 1161 mediaPlayer->Mode == mpPaused) 1162 { 1163 mediaPlayer->Stop(); 1222 1164 mediaPlayer->Close(); 1223 1224 seekbarTimer->Enabled = false; 1165 } 1166 else 1167 if (mediaPlayer->Mode == mpOpen) 1168 mediaPlayer->Close(); 1169 1170 seekbarTimer->Enabled = false; 1225 1171 } 1226 1172 … … 1285 1231 { 1286 1232 char msg[100]; 1287 bool enable; 1288 1289 enable = false; 1290 if (treeView->Selected) 1291 { 1292 FileStatus type; 1293 1294 type = tview->getNodeType(treeView->Selected); 1295 if (type == eUnrecognized || type == eRecognized) 1296 enable = !trackIdEdit->Text.IsEmpty(); 1297 } 1298 saveButton->Enabled = enable; 1299 1300 revertButton->Enabled = treeView->Selected != NULL; 1301 1302 if (treeView->Items->Count > 0) 1303 { 1304 sprintf(msg, "%d unsaved files", fileCache->getNumUnsaved()); 1305 writeTags->Enabled = true; 1306 } 1307 else 1308 { 1309 sprintf(msg, "No unsaved files"); 1310 writeTags->Enabled = false; 1311 } 1233 int unsavedCount, submitCount; 1234 1235 unsavedCount = tview->getNumUnsaved(); 1236 submitCount = submitInfo.getNumItems(); 1237 1238 writeTags->Enabled = (unsavedCount > 0); 1239 submitButton->Enabled = (submitCount > 0); 1240 1241 sprintf(msg, "%d unsaved, %d unsubmitted", unsavedCount, submitCount); 1312 1242 statusBar->Panels->Items[1]->Text = msg; 1313 1243 } … … 1323 1253 char temp[10]; 1324 1254 1325 if (fileCache == NULL || tview->isSpecialNode(Node)) 1326 { 1327 clearCurrentSelection(); 1328 treeView->Selected = NULL; 1329 enableButtons(); 1255 if (fileCache == NULL) 1330 1256 return; 1331 }1332 1257 1333 1258 if (currentIndex >= 0) 1334 1259 { 1260 FileStatus status, newStatus; 1261 1335 1262 // Set the data back to the current item, in case the user changed it 1336 1263 fileCache->getData(currentIndex, eData, data); … … 1340 1267 data.trackNum = atoi(trackNumEdit->Text.c_str()); 1341 1268 fileCache->setData(currentIndex, eData, data); 1269 1270 status = fileCache->getStatus(currentIndex); 1271 if (status == eSaved && fileCache->hasChanged(currentIndex)) 1272 newStatus = eRecognized; 1273 else 1274 if (status == eRecognized && !fileCache->hasChanged(currentIndex)) 1275 newStatus = eSaved; 1276 else 1277 newStatus = status; 1278 1279 tview->setStatus(currentIndex, status, newStatus); 1280 1281 currentIndex = -1; 1282 } 1283 1284 if (tview->isSpecialNode(Node)) 1285 { 1286 clearCurrentSelection(); 1287 treeView->Selected = NULL; 1288 enableButtons(); 1289 return; 1342 1290 } 1343 1291 … … 1451 1399 out = treeView->ClientToScreen(in); 1452 1400 1401 status = tview->getNodeType(node); 1402 identifyAgainItem->Enabled = (status == eSaved); 1403 identifyAllAgainItem->Enabled = (status == eSaved); 1404 1453 1405 treeViewMenu->Popup(out.x, out.y); 1454 1406 popupNode = node; … … 1476 1428 { 1477 1429 case eRecognized: 1478 treeView->Hint = "Tracks that were identified are shown here";1430 treeView->Hint = "Tracks that were identified, but unsaved are shown here"; 1479 1431 break; 1480 1432 case eUnrecognized: 1481 1433 treeView->Hint = "Tracks that were not identified are shown here"; 1434 break; 1435 case eSaved: 1436 treeView->Hint = "Tracks that have been saved or previously identified are shown here"; 1482 1437 break; 1483 1438 case ePending: … … 1507 1462 void __fastcall TMBTaggerForm::removeItemClick(TObject *Sender) 1508 1463 { 1509 FileStatus status;1510 1511 1464 if (popupNode == NULL) 1512 1465 return; 1513 1466 1514 status = fileCache->getStatus((int)popupNode->Data); 1515 fileCache->setStatus((int)popupNode->Data, eDeleted); 1516 tview->setStatus((int)popupNode->Data, status, eDeleted); 1467 removeNode(popupNode); 1468 popupNode = NULL; 1469 } 1470 1471 //--------------------------------------------------------------------------- 1472 1473 void __fastcall TMBTaggerForm::removeNode(TTreeNode *node) 1474 { 1475 FileStatus status; 1476 Metadata data; 1477 AnsiString trm; 1478 1479 status = fileCache->getStatus((int)node->Data); 1480 fileCache->getData((int)node->Data, eData, data); 1481 fileCache->getTrm((int)node->Data, trm); 1482 1483 // If we have full info, remove it from the submit it. Even if it 1484 // may not be in the submit list. 1485 if (!data.trackId.IsEmpty() && !trm.IsEmpty()) 1486 submitInfo.remove(data.trackId); 1487 1488 tview->setStatus((int)node->Data, status, eDeleted); 1517 1489 1518 1490 popupNode = NULL; … … 1526 1498 FileStatus status; 1527 1499 TTreeNode *node; 1500 Metadata data; 1501 AnsiString trm; 1528 1502 1529 1503 if (popupNode == NULL) … … 1537 1511 break; 1538 1512 1539 tview->setStatus((int)node->Data, status, eDeleted); 1540 fileCache->setStatus((int)node->Data, eDeleted); 1513 removeNode(node); 1541 1514 } 1542 1515 1543 1516 popupNode = NULL; 1517 } 1518 1519 //--------------------------------------------------------------------------- 1520 1521 void __fastcall TMBTaggerForm::identifyAgainItemClick(TObject *Sender) 1522 { 1523 if (popupNode == NULL) 1524 return; 1525 1526 identifyAgain(popupNode); 1527 popupNode = NULL; 1528 } 1529 1530 //--------------------------------------------------------------------------- 1531 1532 void __fastcall TMBTaggerForm::identifyAllAgainItemClick(TObject *Sender) 1533 { 1534 FileStatus status; 1535 TTreeNode *node; 1536 Metadata data; 1537 AnsiString trm; 1538 1539 if (popupNode == NULL) 1540 return; 1541 1542 status = fileCache->getStatus((int)popupNode->Data); 1543 for(;;) 1544 { 1545 node = tview->getNextTrack(status); 1546 if (node == NULL) 1547 break; 1548 1549 identifyAgain(node); 1550 } 1551 1552 popupNode = NULL; 1553 } 1554 1555 //--------------------------------------------------------------------------- 1556 1557 void __fastcall TMBTaggerForm::identifyAgain(TTreeNode *node) 1558 { 1559 FileStatus status; 1560 Metadata data; 1561 AnsiString trm; 1562 1563 status = fileCache->getStatus((int)node->Data); 1564 fileCache->getData((int)node->Data, eId3, data); 1565 fileCache->getTrm((int)node->Data, trm); 1566 1567 // If we have full info, remove it from the submit it. Even if it 1568 // may not be in the submit list. 1569 if (!data.trackId.IsEmpty() && !trm.IsEmpty()) 1570 submitInfo.remove(data.trackId); 1571 1572 data.trackId = ""; 1573 trm = ANALYZER_REDO_STRING; 1574 fileCache->setData((int)node->Data, eData, data); 1575 fileCache->setTrm((int)node->Data, trm); 1576 tview->setStatus((int)node->Data, status, ePending); 1577 analyzer->wake(); 1578 1544 1579 enableButtons(); 1545 1580 } … … 1547 1582 //--------------------------------------------------------------------------- 1548 1583 1549 bool __fastcall TMBTaggerForm::submitTrms( const AnsiString &rdf)1584 bool __fastcall TMBTaggerForm::submitTrms(void) 1550 1585 { 1551 1586 BackgroundLookup *lookup; … … 1554 1589 TTrackLookupDialog *lookupDialog; 1555 1590 AnsiString fileName; 1591 AnsiString rdf; 1556 1592 1557 1593 if (!userCheck()) 1558 1594 return false; 1595 1596 if (submitInfo.getNumItems() == 0) 1597 return false; 1598 1599 submitInfo.getRDF(rdf); 1559 1600 1560 1601 setStatus("Submtting TRM information to server..."); … … 1611 1652 Cursor = crDefault; 1612 1653 1654 submitInfo.clear(); 1655 1613 1656 return true; 1614 1657 } … … 1618 1661 void __fastcall TMBTaggerForm::processSubmitMessage(TMessage &Message) 1619 1662 { 1620 submitSaved(); 1621 } 1622 1623 //--------------------------------------------------------------------------- 1624 1625 void __fastcall TMBTaggerForm::submitSaved(void) 1626 { 1627 TMemoryStream *str; 1628 AnsiString fileName, rdf; 1629 1630 fileName = ExtractFilePath(Application->ExeName) + "\\saved.rdf"; 1631 if (access(fileName.c_str(), 0) != 0) 1632 return; 1633 1634 str = new TMemoryStream; 1635 try 1636 { 1637 char *ptr; 1638 1639 str->LoadFromFile(fileName); 1640 ptr = new char[str->Size + 1]; 1641 str->Read(ptr, str->Size); 1642 rdf = AnsiString(ptr); 1643 delete [] ptr; 1644 } 1645 catch(EReadError *e) 1646 { 1647 MessageDlg("Could not read saved TRM information from disk.", 1648 mtError, TMsgDlgButtons() << mbOK, 0); 1649 unlink(fileName.c_str()); 1650 delete str; 1651 return; 1652 } 1653 delete str; 1654 1655 if (submitTrms(rdf)) 1656 unlink(fileName.c_str()); 1663 //submitSaved(); 1657 1664 } 1658 1665 … … 1683 1690 return true; 1684 1691 } 1685 //--------------------------------------------------------------------------- 1686 1692 1693 //--------------------------------------------------------------------------- 1694 1695 void __fastcall TMBTaggerForm::submitButtonClick(TObject *Sender) 1696 { 1697 submitTrms(); 1698 } 1699 1700 1701 1702 mb_tagger/trunk/main.dfm
r797 r798 132 132 00000000000000000000000000000000000080000001} 133 133 OldCreateOrder = False 134 Position = poDefault135 134 OnClose = FormClose 136 135 OnCloseQuery = FormCloseQuery … … 329 328 end 330 329 object prevButton: TSpeedButton 331 Left = 191330 Left = 225 332 331 Top = 1 333 332 Width = 33 … … 407 406 end 408 407 object nextButton: TSpeedButton 409 Left = 2 24408 Left = 258 410 409 Top = 1 411 410 Width = 33 … … 484 483 end 485 484 object reloadButton: TSpeedButton 486 Left = 271485 Left = 305 487 486 Top = 1 488 487 Width = 33 … … 562 561 end 563 562 object stopButton: TSpeedButton 564 Left = 3 04563 Left = 338 565 564 Top = 1 566 565 Width = 33 … … 880 879 ShowHint = True 881 880 OnClick = openDirButtonClick 881 end 882 object submitButton: TSpeedButton 883 Left = 179 884 Top = 1 885 Width = 33 886 Height = 33 887 Hint = 'Submit tagged information to MusicBrainz' 888 Flat = True 889 Glyph.Data = { 890 360C0000424D360C000000000000360000002800000020000000200000000100 891 180000000000000C0000120B0000120B00000000000000000000C0C0C0C0C0C0 892 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 893 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 894 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 895 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 896 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 897 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 898 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 899 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 900 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 901 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 902 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 903 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 904 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 905 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 906 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 907 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 908 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 909 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 910 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 911 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 912 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 913 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 914 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 915 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 916 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 917 C061C9FF3E83AC3E83AC61C9FF61C9FF61C9FF61C9FF61C9FF61C9FF61C9FF61 918 C9FF61C9FF61C9FF61C9FFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 919 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C03E83 920 AC0000002E2929494C4700000024161A61C9FF61C9FF61C9FF61C9FF61C9FF61 921 C9FF61C9FF61C9FF61C9FF61C9FFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 922 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000 923 00CFD6CBFFFFFDFFFFFDFFFFFD494C4724161A61C9FF61C9FF61C9FF61C9FF61 924 C9FF61C9FF61C9FF61C9FF61C9FFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 925 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0000000C0C0C00000 926 00CFD6CBFFFFFDFFFFFDFFFFFDFFFFFD00000061C9FF61C9FF61C9FF61C9FF61 927 C9FF61C9FF61C9FF61C9FF61C9FFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 928 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000000000003E83 929 AC24161A776E6EBCBDBDBCBDBDCFD6CB0000002E292900000000000000000000 930 00002E292961C9FF61C9FF61C9FFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 931 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000008080800000 932 003E83AC24161A000000000000FFFFFF00000024161AA4A9A1FFFFFDFFFFFD93 933 9E9C2E29292E292961C9FF61C9FFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 934 C0C0C00000000000000000000000000000000000000000000000008080808080 935 8000000061C9FF61C9FF000000FFFFFF0000002E2929FFFFFDFFFFFDFFFFFDFF 936 FFFDCFD6CB00000061C9FF61C9FFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 937 C0C0C0808080C0C0C0808080808080808080808080808080808080C0C0C0C0DC 938 C0808080000000AE6C73000000FFFFFF000000000000494C47CFD6CBFFFFFDFF 939 FFFDFFFFFD000000AE6C73AE6C73C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 940 C0C0C0808080C0DCC0C0DCC0C0DCC0C0DCC0C0DCC0C0DCC0C0DCC0C0DCC0C0DC 941 C0C0C0C0000000AE6C73000000FFFFFF000000644A4D24161A00000000000000 942 0000FFFFFD000000AE6C73AE6C73C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 943 C0C0C0808080808080808080808080808080808080808080808080C0DCC0C0C0 944 C0000000AE6C73AE6C73000000FFFFFF24161A0000002E2929644A4D644A4D00 945 0000FFFFFD000000AE6C73AE6C73C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 946 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0808080C0C0C00000 947 00AE6C73AE6C73AE6C73000000FFFFFFFFFFFD939E9C2E292900000024161A00 948 0000FFFFFD000000AE6C73AE6C73C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 949 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0808080000000AE6C 950 73AE6C73AE6C73AE6C73000000BCBDBDFFFFFDFFFFFDFFFFFDCFD6CB59626100 951 0000FFFFFD000000AE6C73AE6C73C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 952 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0808080C0C0C0AE6C 953 73AE6C73AE6C73AE6C732E2929494C47BCBDBDFFFFFDFFFFFDFFFFFDFFFFFDFF 954 FFFDFFFFFD000000AE6C73AE6C73C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 955 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0AE6C 956 73AE6C73AE6C73AE6C73AE6C732E29290000002E2929939E9CFFFFFDFFFFFDFF 957 FFFDFFFFFD000000AE6C73AE6C73C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 958 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0AE6C 959 73AE6C73AE6C73AE6C73AE6C73AE6C73AE6C732E292900000024161A776E6ECF 960 D6CBFFFFFD000000AE6C73AE6C73C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 961 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 962 C0AE6C73AE6C73AE6C73AE6C73AE6C73AE6C73AE6C73AE6C73AE6C7324161A00 963 0000494C472E2929AE6C73C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 964 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 965 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 966 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 967 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 968 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 969 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 970 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 971 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 972 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 973 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 974 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 975 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 976 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 977 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 978 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 979 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 980 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 981 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 982 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 983 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 984 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 985 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 986 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 987 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0} 988 ParentShowHint = False 989 ShowHint = True 990 OnClick = submitButtonClick 882 991 end 883 992 end … … 1098 1207 SelEnd = 0 1099 1208 SelStart = 0 1100 TabOrder = 01209 TabOrder = 6 1101 1210 ThumbLength = 13 1102 1211 TickMarks = tmBottomRight … … 1110 1219 VisibleButtons = [] 1111 1220 Visible = False 1112 TabOrder = 11221 TabOrder = 7 1113 1222 OnNotify = mediaPlayerNotify 1114 1223 end … … 1120 1229 Anchors = [akLeft, akTop, akRight] 1121 1230 ReadOnly = True 1122 TabOrder = 21231 TabOrder = 4 1123 1232 end 1124 1233 object trackNumEdit: TEdit … … 1136 1245 Height = 21 1137 1246 Anchors = [akLeft, akTop, akRight] 1138 TabOrder = 41247 TabOrder = 2 1139 1248 end 1140 1249 object albumEdit: TEdit … … 1144 1253 Height = 21 1145 1254 Anchors = [akLeft, akTop, akRight] 1146 TabOrder = 51255 TabOrder = 1 1147 1256 end 1148 1257 object artistEdit: TEdit … … 1152 1261 Height = 21 1153 1262 Anchors = [akLeft, akTop, akRight] 1154 TabOrder = 61263 TabOrder = 0 1155 1264 end 1156 1265 object trackIdEdit: TEdit … … 1161 1270 Anchors = [akLeft, akTop, akRight] 1162 1271 ReadOnly = True 1163 TabOrder = 71272 TabOrder = 5 1164 1273 end 1165 1274 end <… …