Version increased, many cleanups.

This commit is contained in:
Martin Rotter 2014-02-04 13:14:36 +01:00
parent 9de551794c
commit 4efdcd6262
17 changed files with 54 additions and 83 deletions

View file

@ -40,8 +40,8 @@
project(rssguard) project(rssguard)
set(APP_NAME "RSS Guard") set(APP_NAME "RSS Guard")
set(APP_LOW_NAME "rssguard") set(APP_LOW_NAME "rssguard")
set(APP_VERSION "1.9.9.2") set(APP_VERSION "1.9.9.3")
set(FILE_VERSION "1,9,9,2") set(FILE_VERSION "1,9,9,3")
set(APP_AUTHOR "Martin Rotter") set(APP_AUTHOR "Martin Rotter")
set(APP_URL "http://www.rssguard.comehere.cz") set(APP_URL "http://www.rssguard.comehere.cz")
set(APP_URL_ISSUES "http://github.com/martinrotter/rssguard/issues") set(APP_URL_ISSUES "http://github.com/martinrotter/rssguard/issues")

View file

@ -64,7 +64,7 @@ class DatabaseFactory : public QObject {
bool m_inMemoryInitialized; bool m_inMemoryInitialized;
// Is true when user selected in-memory database. // Is true when user selected in-memory database.
// NOTE: This is set only on application startup. // NOTE: This can be changed only on application startup.
bool m_inMemoryEnabled; bool m_inMemoryEnabled;
// Private singleton value. // Private singleton value.

View file

@ -563,10 +563,6 @@ QStringList FeedsModel::textualFeedIds(const QList<FeedsModelFeed*> &feeds) {
} }
void FeedsModel::reloadWholeLayout() { void FeedsModel::reloadWholeLayout() {
// NOTE: Take a look at docs about this.
// I have tested that this is LITTLE slower than code above,
// but it is really SIMPLER, so if code above will be buggy, then
// we can use this.
emit layoutAboutToBeChanged(); emit layoutAboutToBeChanged();
emit layoutChanged(); emit layoutChanged();
} }
@ -607,7 +603,6 @@ void FeedsModel::loadFromDatabase() {
case FeedsModelCategory::Feedly: case FeedsModelCategory::Feedly:
default: default:
// NOTE: Not yet implemented.
break; break;
} }
} }

View file

@ -91,8 +91,6 @@ class FeedsModel : public QAbstractItemModel {
// Returns list of feeds which belong to given indexes. // Returns list of feeds which belong to given indexes.
// NOTE: If index is "category", then all child feeds are contained in the // NOTE: If index is "category", then all child feeds are contained in the
// result. // result.
// NOTE: This is particularly useful for displaying messages of
// selected feeds.
QList<FeedsModelFeed*> feedsForIndexes(const QModelIndexList &indexes); QList<FeedsModelFeed*> feedsForIndexes(const QModelIndexList &indexes);
// Returns ALL CHILD feeds contained within single index. // Returns ALL CHILD feeds contained within single index.

View file

@ -13,9 +13,9 @@ class FeedsModelFeed : public FeedsModelRootItem {
// Describes possible types of feeds. // Describes possible types of feeds.
// NOTE: This is equivalent to attribute Feeds(type). // NOTE: This is equivalent to attribute Feeds(type).
enum Type { enum Type {
StandardRss0X = 0, StandardRss0X = 0,
StandardRss2X = 1, StandardRss2X = 1,
StandardRdf = 2, StandardRdf = 2,
StandardAtom10 = 3 StandardAtom10 = 3
}; };

View file

@ -123,7 +123,6 @@ class FeedsModelRootItem {
} }
// Each item has its title. // Each item has its title.
// NOTE: This is note entirely true for the root item.
inline QString title() const { inline QString title() const {
return m_title; return m_title;
} }

View file

@ -89,9 +89,6 @@ class FeedsModelStandardFeed : public FeedsModelFeed {
private: private:
AutoUpdateType m_autoUpdateType; AutoUpdateType m_autoUpdateType;
// NOTE: Number -1 means "do not auto-update", number
// 0 means "auto-update with global interval" and number
// > 0 means "auto-update with specific interval".
int m_autoUpdateInitialInterval; int m_autoUpdateInitialInterval;
int m_autoUpdateRemainingInterval; int m_autoUpdateRemainingInterval;

View file

@ -72,8 +72,6 @@ class MessagesModel : public QSqlTableModel {
bool setBatchMessagesRead(const QModelIndexList &messages, int read); bool setBatchMessagesRead(const QModelIndexList &messages, int read);
// Fetches ALL available data to the model. // Fetches ALL available data to the model.
// NOTE: This is almost always needed when sorting
// and makes the model more predictable.
void fetchAll(); void fetchAll();
// Loads messages of given feeds. // Loads messages of given feeds.

View file

@ -200,7 +200,7 @@ void FeedMessageViewer::createConnections() {
SIGNAL(triggered()), m_feedsView, SLOT(markSelectedFeedsRead())); SIGNAL(triggered()), m_feedsView, SLOT(markSelectedFeedsRead()));
connect(form_main->m_ui->m_actionMarkSelectedFeedsAsUnread, connect(form_main->m_ui->m_actionMarkSelectedFeedsAsUnread,
SIGNAL(triggered()), m_feedsView, SLOT(markSelectedFeedsUnread())); SIGNAL(triggered()), m_feedsView, SLOT(markSelectedFeedsUnread()));
connect(form_main->m_ui->m_actionClearFeeds, connect(form_main->m_ui->m_actionClearSelectedFeeds,
SIGNAL(triggered()), m_feedsView, SLOT(clearSelectedFeeds())); SIGNAL(triggered()), m_feedsView, SLOT(clearSelectedFeeds()));
connect(form_main->m_ui->m_actionUpdateSelectedFeedsCategories, connect(form_main->m_ui->m_actionUpdateSelectedFeedsCategories,
SIGNAL(triggered()), m_feedsView, SLOT(updateSelectedFeeds())); SIGNAL(triggered()), m_feedsView, SLOT(updateSelectedFeeds()));
@ -235,7 +235,7 @@ void FeedMessageViewer::initialize() {
m_toolBar->addSeparator(); m_toolBar->addSeparator();
m_toolBar->addAction(FormMain::instance()->m_ui->m_actionMarkSelectedFeedsAsRead); m_toolBar->addAction(FormMain::instance()->m_ui->m_actionMarkSelectedFeedsAsRead);
m_toolBar->addAction(FormMain::instance()->m_ui->m_actionMarkSelectedFeedsAsUnread); m_toolBar->addAction(FormMain::instance()->m_ui->m_actionMarkSelectedFeedsAsUnread);
m_toolBar->addAction(FormMain::instance()->m_ui->m_actionClearFeeds); m_toolBar->addAction(FormMain::instance()->m_ui->m_actionClearSelectedFeeds);
// Finish web/message browser setup. // Finish web/message browser setup.
m_messagesBrowser->setNavigationBarVisible(false); m_messagesBrowser->setNavigationBarVisible(false);

View file

@ -62,7 +62,7 @@ QList<QAction*> FormMain::allActions() {
// Add basic actions. // Add basic actions.
actions << m_ui->m_actionImport << m_ui->m_actionExport << actions << m_ui->m_actionImport << m_ui->m_actionExport <<
m_ui->m_actionSettings << m_ui->m_actionQuit << m_ui->m_actionSettings << m_ui->m_actionQuit <<
m_ui->m_actionFullscreen; m_ui->m_actionFullscreen << m_ui->m_actionAboutGuard;
// Add web browser actions // Add web browser actions
actions << m_ui->m_actionAddBrowser << m_ui->m_actionCloseCurrentTab << actions << m_ui->m_actionAddBrowser << m_ui->m_actionCloseCurrentTab <<
@ -72,9 +72,10 @@ QList<QAction*> FormMain::allActions() {
actions << m_ui->m_actionOpenSelectedSourceArticlesExternally << actions << m_ui->m_actionOpenSelectedSourceArticlesExternally <<
m_ui->m_actionOpenSelectedSourceArticlesInternally << m_ui->m_actionOpenSelectedSourceArticlesInternally <<
m_ui->m_actionOpenSelectedMessagesInternally << m_ui->m_actionOpenSelectedMessagesInternally <<
m_ui->m_actionMarkAllFeedsRead <<
m_ui->m_actionMarkSelectedFeedsAsRead << m_ui->m_actionMarkSelectedFeedsAsRead <<
m_ui->m_actionMarkSelectedFeedsAsUnread << m_ui->m_actionMarkSelectedFeedsAsUnread <<
m_ui->m_actionClearFeeds << m_ui->m_actionClearSelectedFeeds <<
m_ui->m_actionMarkSelectedMessagesAsRead << m_ui->m_actionMarkSelectedMessagesAsRead <<
m_ui->m_actionMarkSelectedMessagesAsUnread << m_ui->m_actionMarkSelectedMessagesAsUnread <<
m_ui->m_actionSwitchImportanceOfSelectedMessages << m_ui->m_actionSwitchImportanceOfSelectedMessages <<
@ -82,7 +83,10 @@ QList<QAction*> FormMain::allActions() {
m_ui->m_actionUpdateAllFeeds << m_ui->m_actionUpdateAllFeeds <<
m_ui->m_actionUpdateSelectedFeedsCategories << m_ui->m_actionUpdateSelectedFeedsCategories <<
m_ui->m_actionEditSelectedFeedCategory << m_ui->m_actionEditSelectedFeedCategory <<
m_ui->m_actionDeleteSelectedFeedCategory; m_ui->m_actionDeleteSelectedFeedCategory <<
m_ui->m_actionViewSelectedItemsNewspaperMode <<
m_ui->m_actionAddStandardCategory <<
m_ui->m_actionAddStandardFeed;
return actions; return actions;
} }
@ -228,7 +232,7 @@ void FormMain::setupIcons() {
m_ui->m_menuAddItem->setIcon(icon_theme_factory->fromTheme("item-new")); m_ui->m_menuAddItem->setIcon(icon_theme_factory->fromTheme("item-new"));
m_ui->m_actionUpdateAllFeeds->setIcon(icon_theme_factory->fromTheme("item-update-all")); m_ui->m_actionUpdateAllFeeds->setIcon(icon_theme_factory->fromTheme("item-update-all"));
m_ui->m_actionUpdateSelectedFeedsCategories->setIcon(icon_theme_factory->fromTheme("item-update-selected")); m_ui->m_actionUpdateSelectedFeedsCategories->setIcon(icon_theme_factory->fromTheme("item-update-selected"));
m_ui->m_actionClearFeeds->setIcon(icon_theme_factory->fromTheme("mail-remove")); m_ui->m_actionClearSelectedFeeds->setIcon(icon_theme_factory->fromTheme("mail-remove"));
m_ui->m_actionDeleteSelectedFeedCategory->setIcon(icon_theme_factory->fromTheme("item-remove")); m_ui->m_actionDeleteSelectedFeedCategory->setIcon(icon_theme_factory->fromTheme("item-remove"));
m_ui->m_actionDeleteSelectedMessages->setIcon(icon_theme_factory->fromTheme("mail-remove")); m_ui->m_actionDeleteSelectedMessages->setIcon(icon_theme_factory->fromTheme("mail-remove"));
m_ui->m_actionAddStandardCategory->setIcon(icon_theme_factory->fromTheme("item-new")); m_ui->m_actionAddStandardCategory->setIcon(icon_theme_factory->fromTheme("item-new"));

View file

@ -112,7 +112,7 @@
<addaction name="m_actionMarkAllFeedsRead"/> <addaction name="m_actionMarkAllFeedsRead"/>
<addaction name="m_actionMarkSelectedFeedsAsRead"/> <addaction name="m_actionMarkSelectedFeedsAsRead"/>
<addaction name="m_actionMarkSelectedFeedsAsUnread"/> <addaction name="m_actionMarkSelectedFeedsAsUnread"/>
<addaction name="m_actionClearFeeds"/> <addaction name="m_actionClearSelectedFeeds"/>
</widget> </widget>
<widget class="QMenu" name="m_menuMessages"> <widget class="QMenu" name="m_menuMessages">
<property name="title"> <property name="title">
@ -346,27 +346,21 @@
<string notr="true"/> <string notr="true"/>
</property> </property>
</action> </action>
<action name="m_actionClearFeeds"> <action name="m_actionClearSelectedFeeds">
<property name="text"> <property name="text">
<string>Clear selected items</string> <string>Clear selected items</string>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Remove all messages from selected feeds.</string> <string>Remove all messages from selected feeds.</string>
</property> </property>
<property name="shortcut">
<string notr="true"/>
</property>
</action> </action>
<action name="m_actionAddStandardFeed"> <action name="m_actionAddStandardFeed">
<property name="text"> <property name="text">
<string>Standard &amp;feed</string> <string>New standard &amp;feed</string>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Add new standard feed.</string> <string>Add new standard feed.</string>
</property> </property>
<property name="shortcut">
<string notr="true"/>
</property>
</action> </action>
<action name="m_actionOpenSelectedSourceArticlesExternally"> <action name="m_actionOpenSelectedSourceArticlesExternally">
<property name="text"> <property name="text">
@ -403,14 +397,11 @@
</action> </action>
<action name="m_actionAddStandardCategory"> <action name="m_actionAddStandardCategory">
<property name="text"> <property name="text">
<string>Standard &amp;category</string> <string>New standard &amp;category</string>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Add new standard category.</string> <string>Add new standard category.</string>
</property> </property>
<property name="shortcut">
<string notr="true"/>
</property>
</action> </action>
<action name="m_actionNoActions"> <action name="m_actionNoActions">
<property name="text"> <property name="text">

View file

@ -102,8 +102,8 @@ Authors of this application are NOT responsible for lost data.</string>
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>100</width> <width>564</width>
<height>30</height> <height>363</height>
</rect> </rect>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_4"> <layout class="QHBoxLayout" name="horizontalLayout_4">
@ -180,8 +180,8 @@ Authors of this application are NOT responsible for lost data.</string>
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>167</width> <width>558</width>
<height>219</height> <height>337</height>
</rect> </rect>
</property> </property>
<layout class="QFormLayout" name="formLayout"> <layout class="QFormLayout" name="formLayout">
@ -334,29 +334,6 @@ Authors of this application are NOT responsible for lost data.</string>
<property name="fieldGrowthPolicy"> <property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum> <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property> </property>
<item row="0" column="0" colspan="2">
<widget class="QGroupBox" name="m_grbCloseTabs">
<property name="title">
<string>Close tabs with</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QCheckBox" name="m_checkCloseTabsDoubleClick">
<property name="text">
<string>Left mouse button double-click</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="m_checkCloseTabsMiddleClick">
<property name="text">
<string>Middle mouse button single-click</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0" colspan="2"> <item row="1" column="0" colspan="2">
<widget class="QCheckBox" name="m_checkNewTabDoubleClick"> <widget class="QCheckBox" name="m_checkNewTabDoubleClick">
<property name="text"> <property name="text">
@ -371,6 +348,29 @@ Authors of this application are NOT responsible for lost data.</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="0" colspan="2">
<widget class="QGroupBox" name="m_grbCloseTabs">
<property name="title">
<string>Close tabs with</string>
</property>
<layout class="QFormLayout" name="formLayout_13">
<item row="0" column="0">
<widget class="QCheckBox" name="m_checkCloseTabsDoubleClick">
<property name="text">
<string>Right mouse button double-click</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="m_checkCloseTabsMiddleClick">
<property name="text">
<string>Middle mouse button single-click</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</widget> </widget>

View file

@ -51,7 +51,6 @@ void MessagesView::reloadSelections(int mark_current_index_read) {
QModelIndex mapped_current_index = m_proxyModel->mapToSource(current_index); QModelIndex mapped_current_index = m_proxyModel->mapToSource(current_index);
QModelIndexList selected_indexes = selectionModel()->selectedRows(); QModelIndexList selected_indexes = selectionModel()->selectedRows();
QModelIndexList mapped_indexes = m_proxyModel->mapListToSource(selected_indexes); QModelIndexList mapped_indexes = m_proxyModel->mapListToSource(selected_indexes);
int row_count;
// Reload the model now. // Reload the model now.
m_sourceModel->select(); m_sourceModel->select();

View file

@ -41,9 +41,8 @@ void SkinFactory::loadCurrentSkin() {
qDebug("Skin '%s' loaded.", qPrintable(skin_name_from_settings)); qDebug("Skin '%s' loaded.", qPrintable(skin_name_from_settings));
} }
else { else {
// TODO: Change this to qFatal once code is stable. qFatal("Skin '%s' not loaded because its data are corrupted. No skin is loaded now!",
qWarning("Skin '%s' not loaded because its data are corrupted. No skin is loaded now!", qPrintable(skin_name_from_settings));
qPrintable(skin_name_from_settings));
} }
} }
@ -98,8 +97,8 @@ void SkinFactory::setCurrentSkinName(const QString &skin_name) {
QString SkinFactory::selectedSkinName() { QString SkinFactory::selectedSkinName() {
return Settings::instance()->value(APP_CFG_GUI, return Settings::instance()->value(APP_CFG_GUI,
"skin", "skin",
APP_SKIN_DEFAULT).toString(); APP_SKIN_DEFAULT).toString();
} }
Skin SkinFactory::skinInfo(const QString &skin_name, bool *ok) { Skin SkinFactory::skinInfo(const QString &skin_name, bool *ok) {
@ -147,7 +146,6 @@ Skin SkinFactory::skinInfo(const QString &skin_name, bool *ok) {
skin.m_layoutMarkup = QByteArray::fromBase64(skin.m_layoutMarkup.toLocal8Bit()); skin.m_layoutMarkup = QByteArray::fromBase64(skin.m_layoutMarkup.toLocal8Bit());
// Obtain other information. // Obtain other information.
// NOTE: Probably fixed bug with "active skin" on Windows.
skin.m_baseName = QString(skin_name).replace(QDir::separator(), '/'); skin.m_baseName = QString(skin_name).replace(QDir::separator(), '/');
// Free resources. // Free resources.
@ -179,7 +177,7 @@ QList<Skin> SkinFactory::installedSkins() {
foreach (const QString &skin_file, skin_files) { foreach (const QString &skin_file, skin_files) {
// Check if skin file is valid and add it if it is valid. // Check if skin file is valid and add it if it is valid.
Skin skin_info = skinInfo(base_directory + QDir::separator() + skin_file, Skin skin_info = skinInfo(base_directory + QDir::separator() + skin_file,
&skin_load_ok); &skin_load_ok);
if (skin_load_ok) { if (skin_load_ok) {
skins.append(skin_info); skins.append(skin_info);

View file

@ -21,10 +21,6 @@ struct Skin {
Q_DECLARE_METATYPE(Skin) Q_DECLARE_METATYPE(Skin)
// NOTE: Skin "base/vergilius.xml" is now NEEDED for rssguard
// to run. IT IS DEFAULT skin. It sets no styles and stylesheet.
// It just contains markup for webbrowser.
class SkinFactory : public QObject { class SkinFactory : public QObject {
Q_OBJECT Q_OBJECT
@ -33,8 +29,6 @@ class SkinFactory : public QObject {
explicit SkinFactory(QObject *parent = 0); explicit SkinFactory(QObject *parent = 0);
// Loads the skin from give skin_data. // Loads the skin from give skin_data.
// NOTE: Extra relative path escaping is done for loading of
// external resources.
bool loadSkinFromData(const Skin &skin); bool loadSkinFromData(const Skin &skin);
public: public:
@ -60,8 +54,7 @@ class SkinFactory : public QObject {
// Gets skin about a particular skin. // Gets skin about a particular skin.
Skin skinInfo(const QString &skin_name, bool *ok = NULL); Skin skinInfo(const QString &skin_name, bool *ok = NULL);
// Returns list of installed skins, including "default system skin". // Returns list of installed skins.
// NOTE: Default skin always lies at position 0.
QList<Skin> installedSkins(); QList<Skin> installedSkins();
// Sets the desired skin as the active one if it exists. // Sets the desired skin as the active one if it exists.

View file

@ -74,7 +74,6 @@ bool SystemTrayIcon::isSystemTrayAvailable() {
} }
bool SystemTrayIcon::isSystemTrayActivated() { bool SystemTrayIcon::isSystemTrayActivated() {
// TODO: Check if this can be rewritten for bigger speed.
return SystemTrayIcon::isSystemTrayAvailable() && Settings::instance()->value(APP_CFG_GUI, return SystemTrayIcon::isSystemTrayAvailable() && Settings::instance()->value(APP_CFG_GUI,
"use_tray_icon", "use_tray_icon",
true).toBool(); true).toBool();

View file

@ -17,7 +17,7 @@ class TabContent : public QWidget {
// Gets/sets current index of this TabContent. // Gets/sets current index of this TabContent.
// NOTE: This is the index under which this object lies // NOTE: This is the index under which this object lies
// in some TabWidget instance. // in parent tab widget.
inline virtual int index() const { inline virtual int index() const {
return m_index; return m_index;
} }