// This file is part of RSS Guard. // // Copyright (C) 2011-2017 by Martin Rotter // // RSS Guard is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // RSS Guard is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with RSS Guard. If not, see . #include "gui/dialogs/formaddaccount.h" #include "core/feedsmodel.h" #include "gui/guiutilities.h" #include "miscellaneous/application.h" #include "miscellaneous/iconfactory.h" #include "services/standard/standardserviceentrypoint.h" #include #include FormAddAccount::FormAddAccount(const QList& entry_points, FeedsModel* model, QWidget* parent) : QDialog(parent), m_ui(new Ui::FormAddAccount), m_model(model), m_entryPoints(entry_points) { m_ui->setupUi(this); // Set flags and attributes. GuiUtilities::applyDialogProperties(*this, qApp->icons()->fromTheme(QSL("document-new"))); connect(m_ui->m_listEntryPoints, &QListWidget::itemDoubleClicked, this, &FormAddAccount::addSelectedAccount); connect(m_ui->m_buttonBox, &QDialogButtonBox::accepted, this, &FormAddAccount::addSelectedAccount); loadEntryPoints(); } FormAddAccount::~FormAddAccount() { qDebug("Destroying FormAddAccount instance."); } void FormAddAccount::addSelectedAccount() { accept(); ServiceEntryPoint* point = selectedEntryPoint(); ServiceRoot* new_root = point->createNewRoot(); if (new_root != nullptr) { m_model->addServiceAccount(new_root, true); } else { qCritical("Cannot create new account."); } } ServiceEntryPoint* FormAddAccount::selectedEntryPoint() const { return m_entryPoints.at(m_ui->m_listEntryPoints->currentRow()); } void FormAddAccount::loadEntryPoints() { foreach (const ServiceEntryPoint* entry_point, m_entryPoints) { QListWidgetItem* item = new QListWidgetItem(entry_point->icon(), entry_point->name(), m_ui->m_listEntryPoints); if (entry_point->isSingleInstanceService() && m_model->containsServiceRootFromEntryPoint(entry_point)) { // Oops, this item cannot be added, it is single instance and is already added. item->setFlags(Qt::NoItemFlags); item->setToolTip(tr("This account can be added only once.")); } else { item->setToolTip(entry_point->description()); } } m_ui->m_listEntryPoints->setCurrentRow(m_entryPoints.size() - 1); }