From 77c17f7e5ae465eaf06636a3f800ce9fa141c0ee Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Mon, 10 Feb 2014 17:53:24 +0100 Subject: [PATCH] Status widgets refactored. --- CMakeLists.txt | 2 ++ src/core/databasefactory.cpp | 1 - src/core/feedsmodel.cpp | 8 ----- src/core/feedsmodelstandardfeed.cpp | 2 -- src/core/settings.cpp | 4 --- src/gui/lineeditwithstatus.cpp | 51 +++----------------------- src/gui/lineeditwithstatus.h | 38 +++----------------- src/gui/messagesview.cpp | 1 + src/gui/widgetwithstatus.cpp | 56 +++++++++++++++++++++++++++++ src/gui/widgetwithstatus.h | 46 ++++++++++++++++++++++++ 10 files changed, 114 insertions(+), 95 deletions(-) create mode 100644 src/gui/widgetwithstatus.cpp create mode 100644 src/gui/widgetwithstatus.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 6bf25f74c..634996d24 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -291,6 +291,7 @@ set(APP_SOURCES src/gui/formstandardfeeddetails.cpp src/gui/plaintoolbutton.cpp src/gui/lineeditwithstatus.cpp + src/gui/widgetwithstatus.cpp src/gui/messagebox.cpp # CORE sources. @@ -357,6 +358,7 @@ set(APP_HEADERS src/gui/formstandardfeeddetails.h src/gui/plaintoolbutton.h src/gui/lineeditwithstatus.h + src/gui/widgetwithstatus.h src/gui/messagebox.h # CORE headers. diff --git a/src/core/databasefactory.cpp b/src/core/databasefactory.cpp index 958c9efde..5e2046a02 100644 --- a/src/core/databasefactory.cpp +++ b/src/core/databasefactory.cpp @@ -315,7 +315,6 @@ void DatabaseFactory::determineDriver() { if (db_driver == APP_DB_DRIVER_MYSQL && QSqlDatabase::isDriverAvailable(APP_DB_DRIVER_MYSQL)) { // User wants to use MySQL and MySQL is actually available. Use it. - // TODO: Perform username & password check if db is really fine. m_activeDatabaseDriver = MYSQL; qDebug("Working database source was as MySQL database."); diff --git a/src/core/feedsmodel.cpp b/src/core/feedsmodel.cpp index d3f740eaa..9397c2175 100644 --- a/src/core/feedsmodel.cpp +++ b/src/core/feedsmodel.cpp @@ -77,8 +77,6 @@ QModelIndex FeedsModel::index(int row, int column, const QModelIndex &parent) co FeedsModelRootItem *parent_item; - // TODO: overit zda zde misto internalPointer nepouzit - // metodu itemFornIndex a overit vykonnostni dopady if (!parent.isValid()) { parent_item = m_rootItem; } @@ -101,8 +99,6 @@ QModelIndex FeedsModel::parent(const QModelIndex &child) const { return QModelIndex(); } - // TODO: overit zda zde misto internalPointer nepouzit - // metodu itemFornIndex a overit vykonnostni dopady FeedsModelRootItem *child_item = static_cast(child.internalPointer()); FeedsModelRootItem *parent_item = child_item->parent(); @@ -121,8 +117,6 @@ int FeedsModel::rowCount(const QModelIndex &parent) const { return 0; } - // TODO: overit zda zde misto internalPointer nepouzit - // metodu itemFornIndex a overit vykonnostni dopady if (!parent.isValid()) { parent_item = m_rootItem; } @@ -463,8 +457,6 @@ QList FeedsModel::messagesForFeeds(const QList &feeds) } int FeedsModel::columnCount(const QModelIndex &parent) const { - // TODO: overit zda zde misto internalPointer nepouzit - // metodu itemFornIndex a overit vykonnostni dopady if (parent.isValid()) { return static_cast(parent.internalPointer())->columnCount(); } diff --git a/src/core/feedsmodelstandardfeed.cpp b/src/core/feedsmodelstandardfeed.cpp index ff720b7e9..78009d575 100755 --- a/src/core/feedsmodelstandardfeed.cpp +++ b/src/core/feedsmodelstandardfeed.cpp @@ -397,8 +397,6 @@ void FeedsModelStandardFeed::updateMessages(const QList &messages) { qPrintable(message.m_title), message_id); - // TODO: Check if this is actually working. - // Message with given title/url is already persistently // stored in given feed. // Creation data of the message was obtained from diff --git a/src/core/settings.cpp b/src/core/settings.cpp index de0727385..2d38480e8 100644 --- a/src/core/settings.cpp +++ b/src/core/settings.cpp @@ -36,10 +36,6 @@ Settings *Settings::instance() { return s_instance; } - - - - QSettings::Status Settings::setupSettings() { // If settings file exists in executable file working directory // (in subdirectory APP_CFG_PATH), then use it (portable settings). diff --git a/src/gui/lineeditwithstatus.cpp b/src/gui/lineeditwithstatus.cpp index c5bc84cb0..aca7fc555 100644 --- a/src/gui/lineeditwithstatus.cpp +++ b/src/gui/lineeditwithstatus.cpp @@ -2,65 +2,22 @@ #include "gui/plaintoolbutton.h" #include "gui/baselineedit.h" -#include "gui/iconthemefactory.h" #include LineEditWithStatus::LineEditWithStatus(QWidget *parent) - : QWidget(parent) { - m_layout = new QHBoxLayout(this); - m_txtInput = new BaseLineEdit(this); - m_btnStatus = new PlainToolButton(this); - - m_iconInformation = IconThemeFactory::instance()->fromTheme("dialog-information"); - m_iconWarning = IconThemeFactory::instance()->fromTheme("dialog-warning"); - m_iconError = IconThemeFactory::instance()->fromTheme("dialog-error"); - m_iconOk = IconThemeFactory::instance()->fromTheme("dialog-yes"); + : WidgetWithStatus(parent) { + m_wdgInput = new BaseLineEdit(this); // Set correct size for the tool button. - int txt_input_height = m_txtInput->sizeHint().height(); + int txt_input_height = m_wdgInput->sizeHint().height(); m_btnStatus->setFixedSize(txt_input_height, txt_input_height); // Compose the layout. - m_layout->setMargin(0); - m_layout->addWidget(m_txtInput); + m_layout->addWidget(m_wdgInput); m_layout->addWidget(m_btnStatus); - - setLayout(m_layout); - setStatus(Information, QString()); } LineEditWithStatus::~LineEditWithStatus() { } - -void LineEditWithStatus::setStatus(LineEditWithStatus::StatusType status, - const QString &tooltip_text) { - m_status = status; - - switch (status) { - case Information: - m_btnStatus->setIcon(m_iconInformation); - break; - - case Warning: - m_btnStatus->setIcon(m_iconWarning); - break; - - case Error: - m_btnStatus->setIcon(m_iconError); - break; - - case Ok: - m_btnStatus->setIcon(m_iconOk); - break; - - default: - break; - } - - // Setup the tooltip text. - m_btnStatus->setToolTip(tooltip_text); -} - - diff --git a/src/gui/lineeditwithstatus.h b/src/gui/lineeditwithstatus.h index 676fc170f..42fff9793 100644 --- a/src/gui/lineeditwithstatus.h +++ b/src/gui/lineeditwithstatus.h @@ -1,51 +1,23 @@ #ifndef LINEEDITWITHSTATUS_H #define LINEEDITWITHSTATUS_H -#include -#include +#include "gui/widgetwithstatus.h" + +#include "gui/baselineedit.h" -class BaseLineEdit; -class PlainToolButton; -class QHBoxLayout; - -class LineEditWithStatus : public QWidget { +class LineEditWithStatus : public WidgetWithStatus { Q_OBJECT public: - enum StatusType { - Information, - Warning, - Error, - Ok - }; - // Constructors and destructors. explicit LineEditWithStatus(QWidget *parent = 0); virtual ~LineEditWithStatus(); - // Sets custom status for this control. - void setStatus(StatusType status, const QString &tooltip_text); - - inline StatusType status() const { - return m_status; - } - // Access to line edit. inline BaseLineEdit *lineEdit() const { - return m_txtInput; + return static_cast(m_wdgInput); } - - private: - StatusType m_status; - BaseLineEdit *m_txtInput; - PlainToolButton *m_btnStatus; - QHBoxLayout *m_layout; - - QIcon m_iconInformation; - QIcon m_iconWarning; - QIcon m_iconError; - QIcon m_iconOk; }; #endif // LINEEDITWITHSTATUS_H diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp index e76d99094..37a1d5709 100644 --- a/src/gui/messagesview.cpp +++ b/src/gui/messagesview.cpp @@ -197,6 +197,7 @@ void MessagesView::currentChanged(const QModelIndex ¤t, void MessagesView::loadFeeds(const QList &feed_ids) { // Load messages. + // TODO: Here we could load user-defined default sorting // column/order AND possibly hide/show user-defined columns for the feed(s). m_sourceModel->loadMessages(feed_ids); diff --git a/src/gui/widgetwithstatus.cpp b/src/gui/widgetwithstatus.cpp new file mode 100644 index 000000000..140bc7666 --- /dev/null +++ b/src/gui/widgetwithstatus.cpp @@ -0,0 +1,56 @@ +#include "gui/widgetwithstatus.h" + +#include "gui/plaintoolbutton.h" +#include "gui/iconthemefactory.h" + +#include + + +WidgetWithStatus::WidgetWithStatus(QWidget *parent) + : QWidget(parent), m_wdgInput(NULL) { + m_layout = new QHBoxLayout(this); + m_btnStatus = new PlainToolButton(this); + + m_iconInformation = IconThemeFactory::instance()->fromTheme("dialog-information"); + m_iconWarning = IconThemeFactory::instance()->fromTheme("dialog-warning"); + m_iconError = IconThemeFactory::instance()->fromTheme("dialog-error"); + m_iconOk = IconThemeFactory::instance()->fromTheme("dialog-yes"); + + // Set layout properties. + m_layout->setMargin(0); + + setLayout(m_layout); + setStatus(Information, QString()); +} + +WidgetWithStatus::~WidgetWithStatus() { +} + +void WidgetWithStatus::setStatus(WidgetWithStatus::StatusType status, + const QString &tooltip_text) { + m_status = status; + + switch (status) { + case Information: + m_btnStatus->setIcon(m_iconInformation); + break; + + case Warning: + m_btnStatus->setIcon(m_iconWarning); + break; + + case Error: + m_btnStatus->setIcon(m_iconError); + break; + + case Ok: + m_btnStatus->setIcon(m_iconOk); + break; + + default: + break; + } + + // Setup the tooltip text. + m_btnStatus->setToolTip(tooltip_text); +} diff --git a/src/gui/widgetwithstatus.h b/src/gui/widgetwithstatus.h new file mode 100644 index 000000000..190102314 --- /dev/null +++ b/src/gui/widgetwithstatus.h @@ -0,0 +1,46 @@ +#ifndef WIDGETWITHSTATUS_H +#define WIDGETWITHSTATUS_H + +#include +#include + + +class PlainToolButton; +class QHBoxLayout; + +class WidgetWithStatus : public QWidget { + Q_OBJECT + + public: + enum StatusType { + Information, + Warning, + Error, + Ok + }; + + // Constructors and destructors. + explicit WidgetWithStatus(QWidget *parent); + virtual ~WidgetWithStatus(); + + // Sets custom status for this control. + void setStatus(StatusType status, const QString &tooltip_text); + + inline StatusType status() const { + return m_status; + } + + protected: + StatusType m_status; + QWidget *m_wdgInput; + PlainToolButton *m_btnStatus; + QHBoxLayout *m_layout; + + QIcon m_iconInformation; + QIcon m_iconWarning; + QIcon m_iconError; + QIcon m_iconOk; +}; + + +#endif // WIDGETWITHSTATUS_H