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");
|
QDomNodeList messages_in_xml = xml_file.elementsByTagName("item");
|
||||||
|
|
||||||
for (int i = 0; i < messages_in_xml.size(); i++) {
|
for (int i = 0; i < messages_in_xml.size(); i++) {
|
||||||
QDomElement elem_link = messages_in_xml.item(i).namedItem("link").toElement();
|
QDomNode message_item = messages_in_xml.item(i);
|
||||||
QDomElement elem_description = messages_in_xml.item(i).namedItem("description").toElement();
|
|
||||||
QDomElement elem_description2 = messages_in_xml.item(i).namedItem("encoded").toElement();
|
QDomElement elem_link = message_item.namedItem("link").toElement();
|
||||||
QDomElement elem_title = messages_in_xml.item(i).namedItem("title").toElement();
|
QDomElement elem_description = message_item.namedItem("description").toElement();
|
||||||
QDomElement elem_updated = messages_in_xml.item(i).namedItem("pubDate").toElement();
|
QDomElement elem_description2 = message_item.namedItem("encoded").toElement();
|
||||||
QDomElement elem_author = messages_in_xml.item(i).namedItem("author").toElement();
|
QDomElement elem_title = message_item.namedItem("title").toElement();
|
||||||
QDomElement elem_author2 = messages_in_xml.item(i).namedItem("creator").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.
|
// RSS 1.0 requires to have title and link valid.
|
||||||
if (elem_description.text().isEmpty() && elem_title.text().isEmpty()) {
|
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();
|
new_message.m_author = elem_author2.text();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Setup dates.
|
||||||
new_message.m_created = TextFactory::parseDateTime(elem_updated.text());
|
new_message.m_created = TextFactory::parseDateTime(elem_updated.text());
|
||||||
new_message.m_createdFromFeed = !new_message.m_created.isNull();
|
new_message.m_createdFromFeed = !new_message.m_created.isNull();
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,10 @@
|
||||||
|
|
||||||
|
|
||||||
MessagesView::MessagesView(QWidget *parent)
|
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_proxyModel = new MessagesProxyModel(this);
|
||||||
m_sourceModel = m_proxyModel->sourceModel();
|
m_sourceModel = m_proxyModel->sourceModel();
|
||||||
|
|
||||||
|
@ -37,6 +40,10 @@ void MessagesView::createConnections() {
|
||||||
// in new tab on double click.
|
// in new tab on double click.
|
||||||
connect(this, SIGNAL(doubleClicked(QModelIndex)),
|
connect(this, SIGNAL(doubleClicked(QModelIndex)),
|
||||||
this, SLOT(openSelectedSourceMessagesInternally()));
|
this, SLOT(openSelectedSourceMessagesInternally()));
|
||||||
|
|
||||||
|
// Adjust columns when layout gets changed.
|
||||||
|
connect(header(), SIGNAL(geometriesChanged()),
|
||||||
|
this, SLOT(adjustColumns()));
|
||||||
}
|
}
|
||||||
|
|
||||||
MessagesModel *MessagesView::sourceModel() {
|
MessagesModel *MessagesView::sourceModel() {
|
||||||
|
@ -53,49 +60,6 @@ void MessagesView::setSortingEnabled(bool enable) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessagesView::setupAppearance() {
|
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()->setDefaultSectionSize(MESSAGES_VIEW_DEFAULT_COL);
|
||||||
header()->setStretchLastSection(false);
|
header()->setStretchLastSection(false);
|
||||||
setUniformRowHeights(true);
|
setUniformRowHeights(true);
|
||||||
|
@ -388,3 +352,45 @@ void MessagesView::reselectIndexes(const QModelIndexList &indexes) {
|
||||||
QItemSelectionModel::Rows);
|
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.
|
// Marks given indexes as selected.
|
||||||
void reselectIndexes(const QModelIndexList &indexes);
|
void reselectIndexes(const QModelIndexList &indexes);
|
||||||
|
|
||||||
|
// Changes resize mode for all columns.
|
||||||
|
void adjustColumns();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void initializeContextMenu();
|
void initializeContextMenu();
|
||||||
void setupAppearance();
|
void setupAppearance();
|
||||||
|
@ -79,6 +82,7 @@ class MessagesView : public QTreeView {
|
||||||
MessagesProxyModel *m_proxyModel;
|
MessagesProxyModel *m_proxyModel;
|
||||||
MessagesModel *m_sourceModel;
|
MessagesModel *m_sourceModel;
|
||||||
|
|
||||||
|
bool m_columnsAdjusted;
|
||||||
bool m_batchUnreadSwitch;
|
bool m_batchUnreadSwitch;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue