3 #include "listwindow.h"
6 ListWindow::ListWindow(QWidget *parent): QMainWindow(parent), list(0)
9 setAttribute(Qt::WA_Maemo5StackedWindow, true);
12 QFrame *frame = new QFrame(this);
13 setCentralWidget(frame);
14 frameLayout = new QHBoxLayout();
15 frame->setLayout(frameLayout);
18 popup = new QMenu(this);
20 buttonBox = new QDialogButtonBox(Qt::Vertical, this);
21 frameLayout->addWidget(buttonBox);
25 void ListWindow::addList(QListView *listView)
29 list->installEventFilter(this);
31 frameLayout->insertWidget(0, list);
32 connect(list->selectionModel(),
33 SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
35 SLOT(onSelectionChanged(const QItemSelection &, const QItemSelection &)));
38 void ListWindow::addAction(const QString &title, QObject *receiver,
39 const char *slot, QDialogButtonBox::ButtonRole role)
42 QPushButton *button = buttonBox->addButton(title, role);
43 connect(button, SIGNAL(clicked()), receiver, slot);
46 QAction *action = menuBar()->addAction(title);
47 connect(action, SIGNAL(triggered()), receiver, slot);
48 #endif // ! Q_WS_MAEMO_5
51 void ListWindow::addItemAction(const QString &title, QObject *receiver,
56 buttonBox->addButton(title, QDialogButtonBox::ActionRole);
57 connect(button, SIGNAL(clicked()), receiver, slot);
58 itemButtons.append(button);
59 activateItemButtons();
61 popup->addAction(title, receiver, slot);
62 #endif // ! Q_WS_MAEMO_5
67 void ListWindow::closeEvent(QCloseEvent *event)
69 // Work around Maemo/Qt but: Menu items are not removed on close
74 #endif // Q_WS_MAEMO_5
76 void ListWindow::onSelectionChanged(const QItemSelection &selected,
77 const QItemSelection &deselected)
82 activateItemButtons();
88 void ListWindow::activateItemButtons()
92 enable = list->selectionModel()->hasSelection();
94 foreach (QPushButton *button, itemButtons) {
95 button->setEnabled(enable);
99 #endif // ! Q_WS_MAEMO_5
103 bool ListWindow::eventFilter(QObject *obj, QEvent *event)
105 if (event->type() == QEvent::ContextMenu) {
106 Trace::trace("ListWindow::eventFiler: Received QEvent::ContextMenu");
107 if (popup->actions().size()) {
108 QMouseEvent *mouseEvent = static_cast<QMouseEvent*> (event);
109 QPoint pos = mouseEvent->globalPos();
110 pos.setX(pos.x() - 150);
118 Trace::trace("ListWindow::eventFilter");
119 return QObject::eventFilter(obj, event);
123 #endif // Q_WS_MAEMO_5