diff --git a/resources/icons.qrc b/resources/icons.qrc index cb18d5468..4bdabddd7 100644 --- a/resources/icons.qrc +++ b/resources/icons.qrc @@ -51,6 +51,7 @@ ./graphics/Faenza/emblems/64/emblem-downloads.png ./graphics/Faenza/emblems/64/emblem-system.png ./graphics/Faenza/index.theme + ./graphics/Faenza/mimetypes/64/application-rss+xml.png ./graphics/Faenza/mimetypes/64/image-x-generic.png ./graphics/Faenza/mimetypes/64/text-html.png ./graphics/Faenza/places/64/folder.png diff --git a/resources/initial_feeds/feeds-en.opml b/resources/initial_feeds/feeds-en.opml index 0cca1accd..1a56a21ba 100644 --- a/resources/initial_feeds/feeds-en.opml +++ b/resources/initial_feeds/feeds-en.opml @@ -5,20 +5,20 @@ Wed, 22 Jun 2016 08:31:07 GMT - + - + - + - + diff --git a/resources/scripts/.generate-used-icons.sh b/resources/scripts/.generate-used-icons.sh index 3e2a972f6..fdfbc6ea4 100644 --- a/resources/scripts/.generate-used-icons.sh +++ b/resources/scripts/.generate-used-icons.sh @@ -28,7 +28,7 @@ discover_used_icons() { #echo "Root src folder: \"$ROOT_SRC_FOLDER\"." # Now we discover all usages of icons. - local ICON_NAMES=$(grep -Prioh '(?<=fromTheme\(QSL\(\")[-a-z]+' "$ROOT_SRC_FOLDER" | sort -u) + local ICON_NAMES=$(grep -Prioh '(?<=fromTheme\(QSL\(\")[-\+a-z]+' "$ROOT_SRC_FOLDER" | sort -u) cd "$RESOURCES_FOLDER" diff --git a/src/services/abstract/category.cpp b/src/services/abstract/category.cpp index 02c3dd920..3677754bb 100755 --- a/src/services/abstract/category.cpp +++ b/src/services/abstract/category.cpp @@ -12,18 +12,10 @@ Category::Category(RootItem* parent) : RootItem(parent) { setKind(RootItemKind::Category); - - if (icon().isNull()) { - setIcon(qApp->icons()->fromTheme(QSL("folder"))); - } } Category::Category(const Category& other) : RootItem(other) { setKind(RootItemKind::Category); - - if (icon().isNull()) { - setIcon(qApp->icons()->fromTheme(QSL("folder"))); - } } Category::Category(const QSqlRecord& record) : Category(nullptr) { @@ -37,12 +29,7 @@ Category::Category(const QSqlRecord& record) : Category(nullptr) { setTitle(record.value(CAT_DB_TITLE_INDEX).toString()); setDescription(record.value(CAT_DB_DESCRIPTION_INDEX).toString()); setCreationDate(TextFactory::parseDateTime(record.value(CAT_DB_DCREATED_INDEX).value()).toLocalTime()); - - QIcon loaded_icon = qApp->icons()->fromByteArray(record.value(CAT_DB_ICON_INDEX).toByteArray()); - - if (!loaded_icon.isNull()) { - setIcon(loaded_icon); - } + setIcon(qApp->icons()->fromByteArray(record.value(CAT_DB_ICON_INDEX).toByteArray())); } Category::~Category() {} diff --git a/src/services/abstract/gui/formfeeddetails.cpp b/src/services/abstract/gui/formfeeddetails.cpp index 6b4d60200..035c5b271 100755 --- a/src/services/abstract/gui/formfeeddetails.cpp +++ b/src/services/abstract/gui/formfeeddetails.cpp @@ -46,7 +46,7 @@ int FormFeedDetails::addEditFeed(Feed* input_feed, RootItem* parent_to_select, c loadCategories(m_serviceRoot->getSubTreeCategories(), m_serviceRoot); if (input_feed == nullptr) { - // User is adding new category. + // User is adding new feed. setWindowTitle(tr("Add new feed")); // Make sure that "default" icon is used as the default option for new @@ -164,10 +164,6 @@ void FormFeedDetails::onAutoUpdateTypeChanged(int new_index) { } } -void FormFeedDetails::onNoIconSelected() { - m_ui->m_btnIcon->setIcon(QIcon()); -} - void FormFeedDetails::onLoadIconFromFile() { QFileDialog dialog(this, tr("Select icon file for the feed"), qApp->homeFolder(), tr("Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)")); @@ -190,7 +186,7 @@ void FormFeedDetails::onLoadIconFromFile() { } void FormFeedDetails::onUseDefaultIcon() { - m_ui->m_btnIcon->setIcon(qApp->icons()->fromTheme(QSL("application-rss+xml"))); + m_ui->m_btnIcon->setIcon(QIcon()); } void FormFeedDetails::apply() {} @@ -285,7 +281,6 @@ void FormFeedDetails::createConnections() { // Icon connections. connect(m_actionFetchIcon, &QAction::triggered, this, &FormFeedDetails::guessIconOnly); connect(m_actionLoadIconFromFile, &QAction::triggered, this, &FormFeedDetails::onLoadIconFromFile); - connect(m_actionNoIcon, &QAction::triggered, this, &FormFeedDetails::onNoIconSelected); connect(m_actionUseDefaultIcon, &QAction::triggered, this, &FormFeedDetails::onUseDefaultIcon); } @@ -343,11 +338,8 @@ void FormFeedDetails::initialize() { m_actionLoadIconFromFile = new QAction(qApp->icons()->fromTheme(QSL("image-x-generic")), tr("Load icon from file..."), this); - m_actionNoIcon = new QAction(qApp->icons()->fromTheme(QSL("dialog-error")), - tr("Do not use icon"), - this); m_actionUseDefaultIcon = new QAction(qApp->icons()->fromTheme(QSL("application-rss+xml")), - tr("Use default icon"), + tr("Use default icon from icon theme"), this); m_actionFetchIcon = new QAction(qApp->icons()->fromTheme(QSL("emblem-downloads")), tr("Fetch icon from feed"), @@ -355,7 +347,6 @@ void FormFeedDetails::initialize() { m_iconMenu->addAction(m_actionFetchIcon); m_iconMenu->addAction(m_actionLoadIconFromFile); m_iconMenu->addAction(m_actionUseDefaultIcon); - m_iconMenu->addAction(m_actionNoIcon); m_ui->m_btnIcon->setMenu(m_iconMenu); // Set feed metadata fetch label. diff --git a/src/services/abstract/gui/formfeeddetails.h b/src/services/abstract/gui/formfeeddetails.h index d76ccb706..61d2510e1 100755 --- a/src/services/abstract/gui/formfeeddetails.h +++ b/src/services/abstract/gui/formfeeddetails.h @@ -22,7 +22,7 @@ class FormFeedDetails : public QDialog { public: // Constructors and destructors. - explicit FormFeedDetails(ServiceRoot* service_root, QWidget* parent = 0); + explicit FormFeedDetails(ServiceRoot* service_root, QWidget* parent = nullptr); virtual ~FormFeedDetails(); public slots: @@ -50,7 +50,6 @@ class FormFeedDetails : public QDialog { void onAutoUpdateTypeChanged(int new_index); // Icon selectors. - void onNoIconSelected(); void onLoadIconFromFile(); void onUseDefaultIcon(); @@ -78,7 +77,6 @@ class FormFeedDetails : public QDialog { QAction* m_actionLoadIconFromFile; QAction* m_actionUseDefaultIcon; QAction* m_actionFetchIcon; - QAction* m_actionNoIcon; }; #endif // FORMFEEDDETAILS_H diff --git a/src/services/abstract/rootitem.cpp b/src/services/abstract/rootitem.cpp index 0eedc34f5..25fd2bb77 100755 --- a/src/services/abstract/rootitem.cpp +++ b/src/services/abstract/rootitem.cpp @@ -3,6 +3,7 @@ #include "services/abstract/rootitem.h" #include "miscellaneous/application.h" +#include "miscellaneous/iconfactory.h" #include "services/abstract/category.h" #include "services/abstract/feed.h" #include "services/abstract/recyclebin.h" @@ -170,7 +171,18 @@ QVariant RootItem::data(int column, int role) const { case Qt::DecorationRole: if (column == FDS_MODEL_TITLE_INDEX) { - return icon(); + QIcon ico = icon(); + + if (ico.isNull()) { + if (kind() == RootItemKind::Feed) { + return qApp->icons()->fromTheme(QSL("application-rss+xml")); + } + else if (kind() == RootItemKind::Category) { + return qApp->icons()->fromTheme(QSL("folder")); + } + } + + return ico; } else { return QVariant(); diff --git a/src/services/standard/gui/formstandardcategorydetails.cpp b/src/services/standard/gui/formstandardcategorydetails.cpp index 1bd326c22..976c84f10 100755 --- a/src/services/standard/gui/formstandardcategorydetails.cpp +++ b/src/services/standard/gui/formstandardcategorydetails.cpp @@ -45,7 +45,6 @@ void FormStandardCategoryDetails::createConnections() { // Icon connections. connect(m_actionLoadIconFromFile, SIGNAL(triggered()), this, SLOT(onLoadIconFromFile())); - connect(m_actionNoIcon, SIGNAL(triggered()), this, SLOT(onNoIconSelected())); connect(m_actionUseDefaultIcon, SIGNAL(triggered()), this, SLOT(onUseDefaultIcon())); } @@ -154,10 +153,6 @@ void FormStandardCategoryDetails::onDescriptionChanged(const QString& new_descri } } -void FormStandardCategoryDetails::onNoIconSelected() { - m_ui->m_btnIcon->setIcon(QIcon()); -} - void FormStandardCategoryDetails::onLoadIconFromFile() { QFileDialog dialog(this, tr("Select icon file for the category"), qApp->homeFolder(), tr("Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)")); @@ -180,7 +175,7 @@ void FormStandardCategoryDetails::onLoadIconFromFile() { } void FormStandardCategoryDetails::onUseDefaultIcon() { - m_ui->m_btnIcon->setIcon(qApp->icons()->fromTheme(QSL("folder"))); + m_ui->m_btnIcon->setIcon(QIcon()); } void FormStandardCategoryDetails::initialize() { @@ -205,15 +200,11 @@ void FormStandardCategoryDetails::initialize() { m_actionLoadIconFromFile = new QAction(qApp->icons()->fromTheme(QSL("image-x-generic")), tr("Load icon from file..."), this); - m_actionNoIcon = new QAction(qApp->icons()->fromTheme(QSL("dialog-error")), - tr("Do not use icon"), - this); m_actionUseDefaultIcon = new QAction(qApp->icons()->fromTheme(QSL("folder")), - tr("Use default icon"), + tr("Use default icon from icon theme"), this); m_iconMenu->addAction(m_actionLoadIconFromFile); m_iconMenu->addAction(m_actionUseDefaultIcon); - m_iconMenu->addAction(m_actionNoIcon); m_ui->m_btnIcon->setMenu(m_iconMenu); // Setup tab order. diff --git a/src/services/standard/gui/formstandardcategorydetails.h b/src/services/standard/gui/formstandardcategorydetails.h index ad8a68a2d..1fc3ae226 100755 --- a/src/services/standard/gui/formstandardcategorydetails.h +++ b/src/services/standard/gui/formstandardcategorydetails.h @@ -43,7 +43,6 @@ class FormStandardCategoryDetails : public QDialog { void onDescriptionChanged(const QString& new_description); // Icon selectors. - void onNoIconSelected(); void onLoadIconFromFile(); void onUseDefaultIcon(); @@ -70,7 +69,6 @@ class FormStandardCategoryDetails : public QDialog { QMenu* m_iconMenu; QAction* m_actionLoadIconFromFile; QAction* m_actionUseDefaultIcon; - QAction* m_actionNoIcon; }; #endif // FORMCATEGORYDETAILS_H diff --git a/src/services/standard/gui/formstandardfeeddetails.cpp b/src/services/standard/gui/formstandardfeeddetails.cpp index 1d1d0f651..bb66a9b92 100755 --- a/src/services/standard/gui/formstandardfeeddetails.cpp +++ b/src/services/standard/gui/formstandardfeeddetails.cpp @@ -28,7 +28,7 @@ void FormStandardFeedDetails::apply() { new_feed->setPassword(m_ui->m_txtPassword->lineEdit()->text()); new_feed->setAutoUpdateType(static_cast(m_ui->m_cmbAutoUpdateType->itemData( m_ui->m_cmbAutoUpdateType->currentIndex()).toInt())); - new_feed->setAutoUpdateInitialInterval(m_ui->m_spinAutoUpdateInterval->value()); + new_feed->setAutoUpdateInitialInterval(int(m_ui->m_spinAutoUpdateInterval->value())); if (m_editableFeed == nullptr) { // Add the feed. @@ -67,7 +67,7 @@ void FormStandardFeedDetails::setEditableFeed(Feed* editable_feed) { FormFeedDetails::setEditableFeed(editable_feed); StandardFeed* feed = qobject_cast(editable_feed); - m_ui->m_cmbType->setCurrentIndex(m_ui->m_cmbType->findData(QVariant::fromValue((int) feed->type()))); + m_ui->m_cmbType->setCurrentIndex(m_ui->m_cmbType->findData(QVariant::fromValue(int(feed->type())))); m_ui->m_cmbEncoding->setCurrentIndex(m_ui->m_cmbEncoding->findData(feed->encoding(), Qt::DisplayRole, Qt::MatchFixedString)); m_ui->m_gbAuthentication->setChecked(feed->passwordProtected()); m_ui->m_txtUsername->lineEdit()->setText(feed->username()); diff --git a/src/services/standard/gui/formstandardfeeddetails.h b/src/services/standard/gui/formstandardfeeddetails.h index 4931289a2..e50e3b921 100755 --- a/src/services/standard/gui/formstandardfeeddetails.h +++ b/src/services/standard/gui/formstandardfeeddetails.h @@ -9,7 +9,7 @@ class FormStandardFeedDetails : public FormFeedDetails { Q_OBJECT public: - explicit FormStandardFeedDetails(ServiceRoot* service_root, QWidget* parent = 0); + explicit FormStandardFeedDetails(ServiceRoot* service_root, QWidget* parent = nullptr); protected slots: void apply(); diff --git a/src/services/standard/standardfeedsimportexportmodel.cpp b/src/services/standard/standardfeedsimportexportmodel.cpp index 26d845938..9b4e3262d 100755 --- a/src/services/standard/standardfeedsimportexportmodel.cpp +++ b/src/services/standard/standardfeedsimportexportmodel.cpp @@ -195,7 +195,7 @@ void FeedsImportExportModel::importAsOPML20(const QByteArray& data, bool fetch_m new_feed->setEncoding(feed_encoding); new_feed->setUrl(feed_url); new_feed->setCreationDate(QDateTime::currentDateTime()); - new_feed->setIcon(feed_icon.isNull() ? qApp->icons()->fromTheme(QSL("application-rss+xml")) : feed_icon); + new_feed->setIcon(feed_icon); if (feed_type == QL1S("RSS1")) { new_feed->setType(StandardFeed::Rdf); @@ -237,7 +237,7 @@ void FeedsImportExportModel::importAsOPML20(const QByteArray& data, bool fetch_m StandardCategory* new_category = new StandardCategory(active_model_item); new_category->setTitle(category_title); - new_category->setIcon(category_icon.isNull() ? qApp->icons()->fromTheme(QSL("folder")) : category_icon); + new_category->setIcon(category_icon); new_category->setCreationDate(QDateTime::currentDateTime()); new_category->setDescription(category_description); active_model_item->appendChild(new_category);