void RSSImp::askNewFolder() { QTreeWidgetItem* parent_item = 0; RssFolderPtr rss_parent; if (m_feedList->selectedItems().size() > 0) { parent_item = m_feedList->selectedItems().at(0); rss_parent = qSharedPointerDynamicCast<RssFolder>(m_feedList->getRSSItem(parent_item)); Q_ASSERT(rss_parent); } else { rss_parent = m_rssManager; } bool ok; QString new_name = AutoExpandableDialog::getText(this, tr("Please choose a folder name"), tr("Folder name:"), QLineEdit::Normal, tr("New folder"), &ok); if (!ok) return; RssFolderPtr newFolder = rss_parent->addFolder(new_name); QTreeWidgetItem* folderItem = createFolderListItem(newFolder); if (parent_item) parent_item->addChild(folderItem); else m_feedList->addTopLevelItem(folderItem); // Notify TreeWidget m_feedList->itemAdded(folderItem, newFolder); // Expand parent folder to display new folder if (parent_item) parent_item->setExpanded(true); m_rssManager->saveStreamList(); }
// add a stream by a button void RSSImp::on_newFeedButton_clicked() { // Determine parent folder for new feed QTreeWidgetItem *parent_item = 0; QList<QTreeWidgetItem *> selected_items = m_feedList->selectedItems(); if (!selected_items.empty()) { parent_item = selected_items.first(); // Consider the case where the user clicked on Unread item if (parent_item == m_feedList->stickyUnreadItem()) parent_item = 0; else if (!m_feedList->isFolder(parent_item)) parent_item = parent_item->parent(); } Rss::FolderPtr rss_parent; if (parent_item) rss_parent = qSharedPointerCast<Rss::Folder>(m_feedList->getRSSItem(parent_item)); else rss_parent = m_rssManager->rootFolder(); // Ask for feed URL bool ok; QString clip_txt = qApp->clipboard()->text(); QString default_url = "http://"; if (clip_txt.startsWith("http://", Qt::CaseInsensitive) || clip_txt.startsWith("https://", Qt::CaseInsensitive) || clip_txt.startsWith("ftp://", Qt::CaseInsensitive)) default_url = clip_txt; QString newUrl = AutoExpandableDialog::getText(this, tr("Please type a RSS stream URL"), tr("Stream URL:"), QLineEdit::Normal, default_url, &ok); if (!ok) return; newUrl = newUrl.trimmed(); if (newUrl.isEmpty()) return; if (m_feedList->hasFeed(newUrl)) { QMessageBox::warning(this, "qBittorrent", tr("This RSS feed is already in the list."), QMessageBox::Ok); return; } Rss::FeedPtr stream(new Rss::Feed(newUrl, m_rssManager.data())); rss_parent->addFile(stream); // Create TreeWidget item QTreeWidgetItem* item = createFolderListItem(stream); if (parent_item) parent_item->addChild(item); else m_feedList->addTopLevelItem(item); // Notify TreeWidget m_feedList->itemAdded(item, stream); m_rssManager->saveStreamList(); }