Fixed column resize mode setup for messages.
This commit is contained in:
parent
b3cc490d85
commit
2508286e99
3 changed files with 64 additions and 51 deletions
|
@ -25,13 +25,15 @@ QList<Message> ParsingFactory::parseAsRSS20(const QString &data) {
|
|||
QDomNodeList messages_in_xml = xml_file.elementsByTagName("item");
|
||||
|
||||
for (int i = 0; i < messages_in_xml.size(); i++) {
|
||||
QDomElement elem_link = messages_in_xml.item(i).namedItem("link").toElement();
|
||||
QDomElement elem_description = messages_in_xml.item(i).namedItem("description").toElement();
|
||||
QDomElement elem_description2 = messages_in_xml.item(i).namedItem("encoded").toElement();
|
||||
QDomElement elem_title = messages_in_xml.item(i).namedItem("title").toElement();
|
||||
QDomElement elem_updated = messages_in_xml.item(i).namedItem("pubDate").toElement();
|
||||
QDomElement elem_author = messages_in_xml.item(i).namedItem("author").toElement();
|
||||
QDomElement elem_author2 = messages_in_xml.item(i).namedItem("creator").toElement();
|
||||
QDomNode message_item = messages_in_xml.item(i);
|
||||
|
||||
QDomElement elem_link = message_item.namedItem("link").toElement();
|
||||
QDomElement elem_description = message_item.namedItem("description").toElement();
|
||||
QDomElement elem_description2 = message_item.namedItem("encoded").toElement();
|
||||
QDomElement elem_title = message_item.namedItem("title").toElement();
|
||||
QDomElement elem_updated = message_item.namedItem("pubDate").toElement();
|
||||
QDomElement elem_author = message_item.namedItem("author").toElement();
|
||||
QDomElement elem_author2 = message_item.namedItem("creator").toElement();
|
||||
|
||||
// RSS 1.0 requires to have title and link valid.
|
||||
if (elem_description.text().isEmpty() && elem_title.text().isEmpty()) {
|
||||
|
@ -57,6 +59,7 @@ QList<Message> ParsingFactory::parseAsRSS20(const QString &data) {
|
|||
new_message.m_author = elem_author2.text();
|
||||
}
|
||||
|
||||
// Setup dates.
|
||||
new_message.m_created = TextFactory::parseDateTime(elem_updated.text());
|
||||
new_message.m_createdFromFeed = !new_message.m_created.isNull();
|
||||
|
||||
|
|
|
@ -14,7 +14,10 @@
|
|||
|
||||
|
||||
MessagesView::MessagesView(QWidget *parent)
|
||||
: QTreeView(parent), m_contextMenu(NULL), m_batchUnreadSwitch(false) {
|
||||
: QTreeView(parent),
|
||||
m_contextMenu(NULL),
|
||||
m_columnsAdjusted(false),
|
||||
m_batchUnreadSwitch(false) {
|
||||
m_proxyModel = new MessagesProxyModel(this);
|
||||
m_sourceModel = m_proxyModel->sourceModel();
|
||||
|
||||
|
@ -37,6 +40,10 @@ void MessagesView::createConnections() {
|
|||
// in new tab on double click.
|
||||
connect(this, SIGNAL(doubleClicked(QModelIndex)),
|
||||
this, SLOT(openSelectedSourceMessagesInternally()));
|
||||
|
||||
// Adjust columns when layout gets changed.
|
||||
connect(header(), SIGNAL(geometriesChanged()),
|
||||
this, SLOT(adjustColumns()));
|
||||
}
|
||||
|
||||
MessagesModel *MessagesView::sourceModel() {
|
||||
|
@ -53,49 +60,6 @@ void MessagesView::setSortingEnabled(bool enable) {
|
|||
}
|
||||
|
||||
void MessagesView::setupAppearance() {
|
||||
// FIXME: Sometimes ASSERT occurs if model provides less columns
|
||||
// than we set resize mode for.
|
||||
int column_count = header()->count();
|
||||
|
||||
qDebug("Loading MessagesView with %d columns.",
|
||||
column_count);
|
||||
|
||||
if (column_count > 0) {
|
||||
#if QT_VERSION >= 0x050000
|
||||
// Setup column resize strategies.
|
||||
header()->setSectionResizeMode(MSG_DB_ID_INDEX, QHeaderView::Interactive);
|
||||
header()->setSectionResizeMode(MSG_DB_READ_INDEX, QHeaderView::ResizeToContents);
|
||||
header()->setSectionResizeMode(MSG_DB_DELETED_INDEX, QHeaderView::Interactive);
|
||||
header()->setSectionResizeMode(MSG_DB_IMPORTANT_INDEX, QHeaderView::ResizeToContents);
|
||||
header()->setSectionResizeMode(MSG_DB_FEED_INDEX, QHeaderView::Interactive);
|
||||
header()->setSectionResizeMode(MSG_DB_TITLE_INDEX, QHeaderView::Stretch);
|
||||
header()->setSectionResizeMode(MSG_DB_URL_INDEX, QHeaderView::Interactive);
|
||||
header()->setSectionResizeMode(MSG_DB_AUTHOR_INDEX, QHeaderView::Interactive);
|
||||
header()->setSectionResizeMode(MSG_DB_DCREATED_INDEX, QHeaderView::Interactive);
|
||||
header()->setSectionResizeMode(MSG_DB_CONTENTS_INDEX, QHeaderView::Interactive);
|
||||
#else
|
||||
// Setup column resize strategies.
|
||||
header()->setResizeMode(MSG_DB_ID_INDEX, QHeaderView::Interactive);
|
||||
header()->setResizeMode(MSG_DB_READ_INDEX, QHeaderView::ResizeToContents);
|
||||
header()->setResizeMode(MSG_DB_DELETED_INDEX, QHeaderView::Interactive);
|
||||
header()->setResizeMode(MSG_DB_IMPORTANT_INDEX, QHeaderView::ResizeToContents);
|
||||
header()->setResizeMode(MSG_DB_FEED_INDEX, QHeaderView::Interactive);
|
||||
header()->setResizeMode(MSG_DB_TITLE_INDEX, QHeaderView::Stretch);
|
||||
header()->setResizeMode(MSG_DB_URL_INDEX, QHeaderView::Interactive);
|
||||
header()->setResizeMode(MSG_DB_AUTHOR_INDEX, QHeaderView::Interactive);
|
||||
header()->setResizeMode(MSG_DB_DCREATED_INDEX, QHeaderView::Interactive);
|
||||
header()->setResizeMode(MSG_DB_CONTENTS_INDEX, QHeaderView::Interactive);
|
||||
#endif
|
||||
|
||||
// Hide columns.
|
||||
// TODO: Make this changeable.
|
||||
hideColumn(MSG_DB_ID_INDEX);
|
||||
hideColumn(MSG_DB_DELETED_INDEX);
|
||||
hideColumn(MSG_DB_FEED_INDEX);
|
||||
hideColumn(MSG_DB_URL_INDEX);
|
||||
hideColumn(MSG_DB_CONTENTS_INDEX);
|
||||
}
|
||||
|
||||
header()->setDefaultSectionSize(MESSAGES_VIEW_DEFAULT_COL);
|
||||
header()->setStretchLastSection(false);
|
||||
setUniformRowHeights(true);
|
||||
|
@ -388,3 +352,45 @@ void MessagesView::reselectIndexes(const QModelIndexList &indexes) {
|
|||
QItemSelectionModel::Rows);
|
||||
}
|
||||
}
|
||||
|
||||
void MessagesView::adjustColumns() {
|
||||
if (header()->count() == 10 && !m_columnsAdjusted) {
|
||||
m_columnsAdjusted = true;
|
||||
|
||||
#if QT_VERSION >= 0x050000
|
||||
// Setup column resize strategies.
|
||||
header()->setSectionResizeMode(MSG_DB_ID_INDEX, QHeaderView::Interactive);
|
||||
header()->setSectionResizeMode(MSG_DB_READ_INDEX, QHeaderView::ResizeToContents);
|
||||
header()->setSectionResizeMode(MSG_DB_DELETED_INDEX, QHeaderView::Interactive);
|
||||
header()->setSectionResizeMode(MSG_DB_IMPORTANT_INDEX, QHeaderView::ResizeToContents);
|
||||
header()->setSectionResizeMode(MSG_DB_FEED_INDEX, QHeaderView::Interactive);
|
||||
header()->setSectionResizeMode(MSG_DB_TITLE_INDEX, QHeaderView::Stretch);
|
||||
header()->setSectionResizeMode(MSG_DB_URL_INDEX, QHeaderView::Interactive);
|
||||
header()->setSectionResizeMode(MSG_DB_AUTHOR_INDEX, QHeaderView::Interactive);
|
||||
header()->setSectionResizeMode(MSG_DB_DCREATED_INDEX, QHeaderView::Interactive);
|
||||
header()->setSectionResizeMode(MSG_DB_CONTENTS_INDEX, QHeaderView::Interactive);
|
||||
#else
|
||||
// Setup column resize strategies.
|
||||
header()->setResizeMode(MSG_DB_ID_INDEX, QHeaderView::Interactive);
|
||||
header()->setResizeMode(MSG_DB_READ_INDEX, QHeaderView::ResizeToContents);
|
||||
header()->setResizeMode(MSG_DB_DELETED_INDEX, QHeaderView::Interactive);
|
||||
header()->setResizeMode(MSG_DB_IMPORTANT_INDEX, QHeaderView::ResizeToContents);
|
||||
header()->setResizeMode(MSG_DB_FEED_INDEX, QHeaderView::Interactive);
|
||||
header()->setResizeMode(MSG_DB_TITLE_INDEX, QHeaderView::Stretch);
|
||||
header()->setResizeMode(MSG_DB_URL_INDEX, QHeaderView::Interactive);
|
||||
header()->setResizeMode(MSG_DB_AUTHOR_INDEX, QHeaderView::Interactive);
|
||||
header()->setResizeMode(MSG_DB_DCREATED_INDEX, QHeaderView::Interactive);
|
||||
header()->setResizeMode(MSG_DB_CONTENTS_INDEX, QHeaderView::Interactive);
|
||||
#endif
|
||||
|
||||
// Hide columns.
|
||||
// TODO: Make this changeable.
|
||||
hideColumn(MSG_DB_ID_INDEX);
|
||||
hideColumn(MSG_DB_DELETED_INDEX);
|
||||
hideColumn(MSG_DB_FEED_INDEX);
|
||||
hideColumn(MSG_DB_URL_INDEX);
|
||||
hideColumn(MSG_DB_CONTENTS_INDEX);
|
||||
|
||||
qDebug("Adjusting column resize modes for MessagesView.");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,6 +53,9 @@ class MessagesView : public QTreeView {
|
|||
// Marks given indexes as selected.
|
||||
void reselectIndexes(const QModelIndexList &indexes);
|
||||
|
||||
// Changes resize mode for all columns.
|
||||
void adjustColumns();
|
||||
|
||||
protected:
|
||||
void initializeContextMenu();
|
||||
void setupAppearance();
|
||||
|
@ -79,6 +82,7 @@ class MessagesView : public QTreeView {
|
|||
MessagesProxyModel *m_proxyModel;
|
||||
MessagesModel *m_sourceModel;
|
||||
|
||||
bool m_columnsAdjusted;
|
||||
bool m_batchUnreadSwitch;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue