utaudb.cpp 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. This file is part of QTau
  3. Copyright (C) 2013-2018 Tobias "Tomoko" Platen <tplaten@posteo.de>
  4. Copyright (C) 2013 digited <https://github.com/digited>
  5. Copyright (C) 2010-2013 HAL@ShurabaP <https://github.com/haruneko>
  6. QTau is free software: you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation, either version 3 of the License, or
  9. (at your option) any later version.
  10. This program is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. GNU General Public License for more details.
  14. You should have received a copy of the GNU General Public License
  15. along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. SPDX-License-Identifier: GPL-3.0+
  17. */
  18. #include "utaudb.h"
  19. #include "Utils.h"
  20. #define __devloglevel__ 0
  21. #include <QStringList>
  22. #include <QDirIterator>
  23. #include <QFileInfo>
  24. #include "otoini.h"
  25. #include <sekai/VVDReader.h>
  26. UTAUDB::UTAUDB(QString path) : _path(path)
  27. {
  28. int dir = 0;
  29. DEVLOG_DEBUG("UTAUDB: "+path);
  30. QDirIterator it(path, QStringList() << "oto.ini", QDir::Files, QDirIterator::Subdirectories);
  31. _reader=new VVDReader();
  32. while (it.hasNext())
  33. {
  34. QString oto = it.next();
  35. DEVLOG_DEBUG("OTO: "+ oto);
  36. OTOINI* ini = new OTOINI(dir);
  37. ini->readFromFile(oto);
  38. QString dir = QFileInfo(oto).dir().path();
  39. _dirs.push_back(dir);
  40. int vvd_count = 0;
  41. foreach(oto_entry* entry,ini->entries())
  42. {
  43. QString vvd = dir+"/"+entry->filename;
  44. vvd.replace(".wav",".vvd");
  45. DEVLOG_DEBUG("vvd: "+vvd);
  46. entry->vvd_index=vvd_count;
  47. if(!_vvds.keys().contains(vvd))
  48. {
  49. DEVLOG_DEBUG("vvd_count="+STR(vvd_count));
  50. bool ret = _reader->addVVD(vvd.toStdString());
  51. if(ret) {
  52. _vvds[vvd]=vvd_count;
  53. vvd_count++;
  54. }
  55. }
  56. _entries.push_back(entry);
  57. }
  58. delete ini;
  59. }
  60. //TODO -- read from vvd
  61. }
  62. oto_entry* UTAUDB::getEntryByLyric(QString lyric)
  63. {
  64. foreach(oto_entry* ent,_entries)
  65. {
  66. DEVLOG_DEBUG(ent->name);
  67. if(ent->name==lyric) {
  68. return ent;
  69. }
  70. }
  71. return NULL;
  72. }