You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.3 KiB
60 lines
1.3 KiB
/* |
|
* kmail: KDE mail client |
|
*/ |
|
|
|
#include "configuredialoglistview.h" |
|
|
|
#include <KLocalizedString> |
|
#include <QMenu> |
|
|
|
ListView::ListView(QWidget *parent) |
|
: QTreeWidget(parent) |
|
{ |
|
setAllColumnsShowFocus(true); |
|
setAlternatingRowColors(true); |
|
setSelectionMode(QAbstractItemView::SingleSelection); |
|
setRootIsDecorated(false); |
|
setContextMenuPolicy(Qt::CustomContextMenu); |
|
connect(this, &ListView::customContextMenuRequested, this, &ListView::slotContextMenu); |
|
} |
|
|
|
void ListView::resizeEvent(QResizeEvent *e) |
|
{ |
|
QTreeWidget::resizeEvent(e); |
|
resizeColums(); |
|
} |
|
|
|
void ListView::showEvent(QShowEvent *e) |
|
{ |
|
QTreeWidget::showEvent(e); |
|
resizeColums(); |
|
} |
|
|
|
void ListView::resizeColums() |
|
{ |
|
const int c = columnCount(); |
|
if (c == 0) { |
|
return; |
|
} |
|
|
|
const int w1 = viewport()->width(); |
|
const int w2 = w1 / c; |
|
const int w3 = w1 - (c - 1) * w2; |
|
|
|
for (int i = 0; i < c - 1; ++i) { |
|
setColumnWidth(i, w2); |
|
} |
|
setColumnWidth(c - 1, w3); |
|
} |
|
|
|
void ListView::slotContextMenu(const QPoint &pos) |
|
{ |
|
QMenu *menu = new QMenu(this); |
|
menu->addAction(i18n("Add"), this, SIGNAL(addHeader())); |
|
if (currentItem()) { |
|
menu->addAction(i18n("Remove"), this, SIGNAL(removeHeader())); |
|
} |
|
menu->exec(viewport()->mapToGlobal(pos)); |
|
delete menu; |
|
} |
|
|
|
|