void BookmarksComboBoxWidget::createFolder() { const QString title = QInputDialog::getText(this, tr("Folder Name"), tr("Select name of new folder:")); if (!title.isEmpty()) { setCurrentFolder(BookmarksManager::addBookmark(BookmarksModel::FolderBookmark, QUrl(), title, getCurrentFolder())->index()); } }
void BookmarksComboBoxWidget::createFolder() { const QString title = QInputDialog::getText(this, tr("Folder Name"), tr("Select name of new folder:")); if (!title.isEmpty()) { switch (m_mode) { case BookmarksModel::BookmarksMode: setCurrentFolder(BookmarksManager::addBookmark(BookmarksModel::FolderBookmark, QUrl(), title, getCurrentFolder())); break; case BookmarksModel::NotesMode: setCurrentFolder(NotesManager::addNote(BookmarksModel::FolderBookmark, QUrl(), title, getCurrentFolder())); break; default: break; } } }
bool OperaNotesImporter::import(const QString &path) { QFile file(getSuggestedPath(path)); if (!file.open(QIODevice::ReadOnly)) { return false; } QTextStream stream(&file); stream.setCodec("UTF-8"); QString line(stream.readLine()); if (line != QLatin1String("Opera Hotlist version 2.0")) { return false; } if (m_optionsWidget) { setImportFolder(m_folderComboBox->getCurrentFolder()); } BookmarksItem *note(NULL); OperaNoteEntry type(NoEntry); bool isHeader(true); while (!stream.atEnd()) { line = stream.readLine(); if (isHeader && (line.isEmpty() || line.at(0) != QLatin1Char('#'))) { continue; } isHeader = false; if (line.startsWith(QLatin1String("#NOTE"))) { note = NotesManager::addNote(BookmarksModel::UrlBookmark, QUrl(), QString(), getCurrentFolder()); type = NoteEntry; } else if (line.startsWith(QLatin1String("#FOLDER"))) { note = NotesManager::addNote(BookmarksModel::FolderBookmark, QUrl(), QString(), getCurrentFolder()); type = FolderStartEntry; } else if (line.startsWith(QLatin1String("#SEPERATOR"))) { note = NotesManager::addNote(BookmarksModel::SeparatorBookmark, QUrl(), QString(), getCurrentFolder()); type = SeparatorEntry; } else if (line == QLatin1String("-")) { type = FolderEndEntry; } else if (line.startsWith(QLatin1String("\tURL=")) && note) { const QUrl url(line.section(QLatin1Char('='), 1, -1)); note->setData(url, BookmarksModel::UrlRole); } else if (line.startsWith(QLatin1String("\tNAME=")) && note) { note->setData(line.section(QLatin1Char('='), 1, -1).replace(QLatin1String("\x02\x02"), QLatin1String("\n")), BookmarksModel::DescriptionRole); } else if (line.startsWith(QLatin1String("\tCREATED=")) && note) { note->setData(QDateTime::fromTime_t(line.section(QLatin1Char('='), 1, -1).toUInt()), BookmarksModel::TimeAddedRole); } else if (line.isEmpty()) { if (note) { if (type == FolderStartEntry) { setCurrentFolder(note); } note = NULL; } else if (type == FolderEndEntry) { goToParent(); } type = NoEntry; } } file.close(); return true; }
bool OperaBookmarksImporter::import(const QString &path) { QFile file(getSuggestedPath(path)); if (!file.open(QIODevice::ReadOnly)) { return false; } QTextStream stream(&file); stream.setCodec("UTF-8"); QString line(stream.readLine()); if (line != QLatin1String("Opera Hotlist version 2.0")) { return false; } if (m_optionsWidget) { if (m_optionsWidget->hasToRemoveExisting()) { removeAllBookmarks(); if (m_optionsWidget->isImportingIntoSubfolder()) { setImportFolder(BookmarksManager::addBookmark(BookmarksModel::FolderBookmark, QUrl(), m_optionsWidget->getSubfolderName(), BookmarksManager::getModel()->getRootItem())); } else { setImportFolder(BookmarksManager::getModel()->getRootItem()); } } else { setAllowDuplicates(m_optionsWidget->allowDuplicates()); setImportFolder(m_optionsWidget->getTargetFolder()); } } BookmarksItem *bookmark(NULL); OperaBookmarkEntry type(NoEntry); bool isHeader(true); while (!stream.atEnd()) { line = stream.readLine(); if (isHeader && (line.isEmpty() || line.at(0) != QLatin1Char('#'))) { continue; } isHeader = false; if (line.startsWith(QLatin1String("#URL"))) { bookmark = BookmarksManager::addBookmark(BookmarksModel::UrlBookmark, QUrl(), QString(), getCurrentFolder()); type = UrlEntry; } else if (line.startsWith(QLatin1String("#FOLDER"))) { bookmark = BookmarksManager::addBookmark(BookmarksModel::FolderBookmark, QUrl(), QString(), getCurrentFolder()); type = FolderStartEntry; } else if (line.startsWith(QLatin1String("#SEPERATOR"))) { bookmark = BookmarksManager::addBookmark(BookmarksModel::SeparatorBookmark, QUrl(), QString(), getCurrentFolder()); type = SeparatorEntry; } else if (line == QLatin1String("-")) { type = FolderEndEntry; } else if (line.startsWith(QLatin1String("\tURL=")) && bookmark) { const QUrl url(line.section(QLatin1Char('='), 1, -1)); if (!allowDuplicates() && BookmarksManager::hasBookmark(url)) { bookmark->remove(); bookmark = NULL; } else { bookmark->setData(url, BookmarksModel::UrlRole); } } else if (line.startsWith(QLatin1String("\tNAME=")) && bookmark) { bookmark->setData(line.section(QLatin1Char('='), 1, -1), BookmarksModel::TitleRole); } else if (line.startsWith(QLatin1String("\tDESCRIPTION=")) && bookmark) { bookmark->setData(line.section(QLatin1Char('='), 1, -1).replace(QLatin1String("\x02\x02"), QLatin1String("\n")), BookmarksModel::DescriptionRole); } else if (line.startsWith(QLatin1String("\tSHORT NAME=")) && bookmark) { const QString keyword(line.section(QLatin1Char('='), 1, -1)); if (!BookmarksManager::hasKeyword(keyword)) { bookmark->setData(keyword, BookmarksModel::KeywordRole); } } else if (line.startsWith(QLatin1String("\tCREATED=")) && bookmark) { bookmark->setData(QDateTime::fromTime_t(line.section(QLatin1Char('='), 1, -1).toUInt()), BookmarksModel::TimeAddedRole); } else if (line.startsWith(QLatin1String("\tVISITED=")) && bookmark) { bookmark->setData(QDateTime::fromTime_t(line.section(QLatin1Char('='), 1, -1).toUInt()), BookmarksModel::TimeVisitedRole); } else if (line.isEmpty()) { if (bookmark) { if (type == FolderStartEntry) { setCurrentFolder(bookmark); } bookmark = NULL; } else if (type == FolderEndEntry) { goToParent(); } type = NoEntry; } } file.close(); return true; }
void HtmlBookmarksImporter::processElement(const QWebElement &element) { QWebElement entryElement(element.findFirst(QLatin1String("dt, hr"))); while (!entryElement.isNull()) { if (entryElement.tagName().toLower() == QLatin1String("hr")) { BookmarksManager::addBookmark(BookmarksModel::SeparatorBookmark, {}, getCurrentFolder()); ++m_currentAmount; emit importProgress(BookmarksImport, m_totalAmount, m_currentAmount); } else { BookmarksModel::BookmarkType type(BookmarksModel::UnknownBookmark); QWebElement matchedElement(entryElement.findFirst(QLatin1String("dt > h3"))); if (matchedElement.isNull()) { matchedElement = entryElement.findFirst(QLatin1String("dt > a")); if (!matchedElement.isNull()) { type = (matchedElement.hasAttribute(QLatin1String("FEEDURL")) ? BookmarksModel::FeedBookmark : BookmarksModel::UrlBookmark); } } else { type = BookmarksModel::FolderBookmark; } if (type != BookmarksModel::UnknownBookmark && !matchedElement.isNull()) { QMap<int, QVariant> metaData({{BookmarksModel::TitleRole, matchedElement.toPlainText()}}); const bool isUrlBookmark(type == BookmarksModel::UrlBookmark || BookmarksModel::FeedBookmark); if (isUrlBookmark) { const QUrl url(matchedElement.attribute(QLatin1String("HREF"))); if (!areDuplicatesAllowed() && BookmarksManager::hasBookmark(url)) { entryElement = entryElement.nextSibling(); continue; } metaData[BookmarksModel::UrlRole] = url; } if (matchedElement.hasAttribute(QLatin1String("SHORTCUTURL"))) { const QString keyword(matchedElement.attribute(QLatin1String("SHORTCUTURL"))); if (!keyword.isEmpty() && !BookmarksManager::hasKeyword(keyword)) { metaData[BookmarksModel::KeywordRole] = keyword; } } if (matchedElement.hasAttribute(QLatin1String("ADD_DATE"))) { const QDateTime dateTime(getDateTime(matchedElement, QLatin1String("ADD_DATE"))); if (dateTime.isValid()) { metaData[BookmarksModel::TimeAddedRole] = dateTime; metaData[BookmarksModel::TimeModifiedRole] = dateTime; } } if (matchedElement.hasAttribute(QLatin1String("LAST_MODIFIED"))) { const QDateTime dateTime(getDateTime(matchedElement, QLatin1String("LAST_MODIFIED"))); if (dateTime.isValid()) { metaData[BookmarksModel::TimeModifiedRole] = dateTime; } } if (isUrlBookmark && matchedElement.hasAttribute(QLatin1String("LAST_VISITED"))) { const QDateTime dateTime(getDateTime(matchedElement, QLatin1String("LAST_VISITED"))); if (dateTime.isValid()) { metaData[BookmarksModel::TimeVisitedRole] = dateTime; } } BookmarksModel::Bookmark *bookmark(BookmarksManager::addBookmark(type, metaData, getCurrentFolder())); ++m_currentAmount; emit importProgress(BookmarksImport, m_totalAmount, m_currentAmount); if (type == BookmarksModel::FolderBookmark) { setCurrentFolder(bookmark); processElement(entryElement); } if (entryElement.nextSibling().tagName().toLower() == QLatin1String("dd")) { bookmark->setItemData(entryElement.nextSibling().toPlainText(), BookmarksModel::DescriptionRole); entryElement = entryElement.nextSibling(); } } } entryElement = entryElement.nextSibling(); } goToParent(); }
void HtmlBookmarksImporter::processElement(const QWebElement &element) { if (element.tagName().toLower() == QLatin1String("h3")) { BookmarksItem *bookmark = BookmarksManager::addBookmark(BookmarksModel::FolderBookmark, QUrl(), element.toPlainText(), getCurrentFolder()); const QString keyword = element.attribute(QLatin1String("SHORTCUTURL")); if (!BookmarksManager::hasKeyword(keyword)) { bookmark->setData(keyword, BookmarksModel::KeywordRole); } if (!element.attribute(QLatin1String("ADD_DATE")).isEmpty()) { const QDateTime time = QDateTime::fromTime_t(element.attribute(QLatin1String("ADD_DATE")).toUInt()); bookmark->setData(time, BookmarksModel::TimeAddedRole); bookmark->setData(time, BookmarksModel::TimeModifiedRole); } setCurrentFolder(bookmark); } else if (element.tagName().toLower() == QLatin1String("a")) { const QUrl url(element.attribute(QLatin1String("href"))); if (!allowDuplicates() && BookmarksManager::hasBookmark(url)) { return; } BookmarksItem *bookmark = BookmarksManager::addBookmark(BookmarksModel::UrlBookmark, url, element.toPlainText(), getCurrentFolder()); const QString keyword = element.attribute(QLatin1String("SHORTCUTURL")); if (!BookmarksManager::hasKeyword(keyword)) { bookmark->setData(keyword, BookmarksModel::KeywordRole); } if (element.parent().nextSibling().tagName().toLower() == QLatin1String("dd")) { bookmark->setData(element.parent().nextSibling().toPlainText(), BookmarksModel::DescriptionRole); } if (!element.attribute(QLatin1String("ADD_DATE")).isEmpty()) { bookmark->setData(QDateTime::fromTime_t(element.attribute(QLatin1String("ADD_DATE")).toUInt()), BookmarksModel::TimeAddedRole); } if (!element.attribute(QLatin1String("LAST_MODIFIED")).isEmpty()) { bookmark->setData(QDateTime::fromTime_t(element.attribute(QLatin1String("LAST_MODIFIED")).toUInt()), BookmarksModel::TimeModifiedRole); } if (!element.attribute(QLatin1String("LAST_VISITED")).isEmpty()) { bookmark->setData(QDateTime::fromTime_t(element.attribute(QLatin1String("LAST_VISITED")).toUInt()), BookmarksModel::TimeVisitedRole); } } else if (element.tagName().toLower() == QLatin1String("hr")) { BookmarksManager::addBookmark(BookmarksModel::SeparatorBookmark, QUrl(), QString(), getCurrentFolder()); } const QWebElementCollection descendants = element.findAll(QLatin1String("*")); for (int i = 0; i < descendants.count(); ++i) { if (descendants.at(i).parent() == element) { processElement(descendants.at(i)); } } if (element.tagName().toLower() == QLatin1String("dl")) { goToParent(); } }
bool OperaBookmarksImporter::import() { QTextStream stream(m_file); stream.setCodec("UTF-8"); QString line = stream.readLine(); if (line != QLatin1String("Opera Hotlist version 2.0")) { return false; } BookmarksItem *bookmark = NULL; OperaBookmarkEntry type = NoEntry; bool isHeader = true; handleOptions(); while (!stream.atEnd()) { line = stream.readLine(); if (isHeader && (line.isEmpty() || line.at(0) != QLatin1Char('#'))) { continue; } isHeader = false; if (line.startsWith(QLatin1String("#URL"))) { bookmark = BookmarksManager::addBookmark(BookmarksModel::UrlBookmark, QUrl(), QString(), getCurrentFolder()); type = UrlEntry; } else if (line.startsWith(QLatin1String("#FOLDER"))) { bookmark = BookmarksManager::addBookmark(BookmarksModel::FolderBookmark, QUrl(), QString(), getCurrentFolder()); type = FolderStartEntry; } else if (line.startsWith(QLatin1String("#SEPERATOR"))) { bookmark = BookmarksManager::addBookmark(BookmarksModel::SeparatorBookmark, QUrl(), QString(), getCurrentFolder()); type = SeparatorEntry; } else if (line == QLatin1String("-")) { type = FolderEndEntry; } else if (line.startsWith(QLatin1String("\tURL=")) && bookmark) { const QUrl url(line.section(QLatin1Char('='), 1, -1)); if (!allowDuplicates() && BookmarksManager::hasBookmark(url)) { bookmark->remove(); bookmark = NULL; } else { bookmark->setData(url, BookmarksModel::UrlRole); } } else if (line.startsWith(QLatin1String("\tNAME=")) && bookmark) { bookmark->setData(line.section(QLatin1Char('='), 1, -1), BookmarksModel::TitleRole); } else if (line.startsWith(QLatin1String("\tDESCRIPTION=")) && bookmark) { bookmark->setData(line.section(QLatin1Char('='), 1, -1).replace(QLatin1String("\x02\x02"), QLatin1String("\n")), BookmarksModel::DescriptionRole); } else if (line.startsWith(QLatin1String("\tSHORT NAME=")) && bookmark) { const QString keyword = line.section(QLatin1Char('='), 1, -1); if (!BookmarksManager::hasKeyword(keyword)) { bookmark->setData(keyword, BookmarksModel::KeywordRole); } } else if (line.startsWith(QLatin1String("\tCREATED=")) && bookmark) { bookmark->setData(QDateTime::fromTime_t(line.section(QLatin1Char('='), 1, -1).toUInt()), BookmarksModel::TimeAddedRole); } else if (line.startsWith(QLatin1String("\tVISITED=")) && bookmark) { bookmark->setData(QDateTime::fromTime_t(line.section(QLatin1Char('='), 1, -1).toUInt()), BookmarksModel::TimeVisitedRole); } else if (line.isEmpty()) { if (bookmark) { if (type == FolderStartEntry) { setCurrentFolder(bookmark); } bookmark = NULL; } else if (type == FolderEndEntry) { goToParent(); } type = NoEntry; } } return true; }