Example #1
0
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();
}
Example #2
0
// 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();
}