bool VerseUrl::fromStringUrl(QString url) { m_ranges.clear(); //verse:/moduleID,bookID,chapterID,verseID-verseID,otherStuf=otherValue if(!url.startsWith(ModuleTools::verseScheme)) { m_isValid = false; return false; } url.remove(0, ModuleTools::verseScheme.size()); // remove verse:/ QStringList urls = url.split("|"); foreach(const QString nUrl, urls) { VerseUrlRange range; const QStringList params = nUrl.split(","); for(int i = 0; i < params.size(); ++i) { QString p = params.at(i); QString p2; if(i == 0) {//Bible if(p == "current") { range.setModule(VerseUrlRange::LoadCurrentModule); } else if(p.startsWith("uid=")) { range.setModule(p.remove(0, 4)); } else { range.setModule(p.toInt()); } } else if(i == 1) {//Book if(p == "current") { range.setBook(VerseUrlRange::LoadCurrentBook); } else if(p == "first") { range.setBook(VerseUrlRange::LoadFirstBook); } else if(p == "last") { range.setBook(VerseUrlRange::LoadLastBook); } else if(p == "none") { range.setBook(VerseUrlRange::LoadNoBook); } else { range.setBook(p.toInt()); } } else if(i == 2) { if(p == "current") { range.setChapter(VerseUrlRange::LoadCurrentChapter); } else if(p == "first") { range.setChapter(VerseUrlRange::LoadFirstChapter); } else if(p == "last") { range.setChapter(VerseUrlRange::LoadLastChapter); } else if(p == "last") { range.setChapter(VerseUrlRange::LoadLastChapter); } else if(p == "none") { range.setChapter(VerseUrlRange::LoadNoChapter); }else { range.setChapter(p.toInt()); } } else if(i == 3) { if(p.contains("-")) { QStringList tmp = p.split("-"); p = tmp.first(); p2 = tmp.last(); } if(p == "current") { range.setStartVerse(VerseUrlRange::LoadCurrentVerse); } else if(p == "first") { range.setStartVerse(VerseUrlRange::LoadFirstVerse); } else if(p == "last") { range.setStartVerse(VerseUrlRange::LoadLastVerse); } else if(p == "last") { range.setStartVerse(VerseUrlRange::LoadNoVerse); } else { range.setStartVerse(p.toInt()); } if(p2 == "current") { range.setEndVerse(VerseUrlRange::LoadCurrentVerse); } else if(p2 == "first") { range.setEndVerse(VerseUrlRange::LoadFirstVerse); } else if(p2 == "last") { range.setEndVerse(VerseUrlRange::LoadLastVerse); } else if(p2 == "last") { range.setEndVerse(VerseUrlRange::LoadNoVerse); } else if(!p2.isEmpty()) { range.setEndVerse(p2.toInt()); } } else { if(p.contains("=")) { const QStringList s = p.split("="); const QString key = s.first(); const QString value = s.last(); if(key == "active") { range.setActiveVerse(value.toInt()); } else { m_params.insert(key, value); } } else { m_params.insert(p, "true"); } } } m_ranges.append(range); }