author | alwin <alwin> | 2003-12-25 20:35:46 (UTC) |
---|---|---|
committer | alwin <alwin> | 2003-12-25 20:35:46 (UTC) |
commit | 34a7e0451c95e8a19735610553dba064b68823d9 (patch) (side-by-side diff) | |
tree | d6f763a9571f65743ee45f9cee998fa74babe41a /noncore | |
parent | bde1302aed8a0e2506684eaae7c2d2d823de42c6 (diff) | |
download | opie-34a7e0451c95e8a19735610553dba064b68823d9.zip opie-34a7e0451c95e8a19735610553dba064b68823d9.tar.gz opie-34a7e0451c95e8a19735610553dba064b68823d9.tar.bz2 |
context menues for single mails when holding the stylus or left mouse button
-rw-r--r-- | noncore/net/mail/mainwindow.cpp | 39 | ||||
-rw-r--r-- | noncore/net/mail/mainwindow.h | 8 |
2 files changed, 39 insertions, 8 deletions
diff --git a/noncore/net/mail/mainwindow.cpp b/noncore/net/mail/mainwindow.cpp index a57fb0d..dc8c188 100644 --- a/noncore/net/mail/mainwindow.cpp +++ b/noncore/net/mail/mainwindow.cpp @@ -111,27 +111,35 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) mailView->setSorting(-1); statusWidget = new StatusWidget( wrapperBox ); statusWidget->hide(); layout->addWidget( mailView ); layout->setStretchFactor( folderView, 1 ); layout->setStretchFactor( mailView, 2 ); slotAdjustLayout(); - connect( mailView, SIGNAL( clicked( QListViewItem * ) ),this, - SLOT( displayMail( QListViewItem * ) ) ); + QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold); + connect( mailView, SIGNAL( mouseButtonClicked(int, QListViewItem *,const QPoint&,int ) ),this, + SLOT( mailLeftClicked( int, QListViewItem *,const QPoint&,int ) ) ); + + connect( mailView, SIGNAL( mouseButtonPressed(int, QListViewItem *,const QPoint&,int ) ),this, + SLOT( mailHold( int, QListViewItem *,const QPoint&,int ) ) ); +#if 0 + connect( mailView, SIGNAL( rightButtonClicked( QListViewItem *,const QPoint&,int ) ),this, + SLOT( mailHold(QListViewItem *,const QPoint&,int) )); +#endif connect(folderView, SIGNAL(refreshMailview(QList<RecMail>*)),this,SLOT(refreshMailView(QList<RecMail>*))); QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) ); } void MainWindow::slotAdjustLayout() { QWidget *d = QApplication::desktop(); if ( d->width() < d->height() ) { @@ -174,55 +182,76 @@ void MainWindow::slotShowFolders( bool show ) } void MainWindow::refreshMailView(QList<RecMail>*list) { MailListViewItem*item = 0; mailView->clear(); for (unsigned int i = 0; i < list->count();++i) { item = new MailListViewItem(mailView,item); item->storeData(*(list->at(i))); item->showEntry(); } } -void MainWindow::displayMail(QListViewItem*item) +void MainWindow::mailLeftClicked(int button, QListViewItem *item,const QPoint&,int ) { + /* just LEFT button - or tap with stylus on pda */ + if (button!=1) return; + if (!item) return; + displayMail(); +} +void MainWindow::displayMail() +{ + QListViewItem*item = mailView->currentItem(); if (!item) return; RecMail mail = ((MailListViewItem*)item)->data(); RecBody body = folderView->fetchBody(mail); - ViewMail readMail( this ); readMail.setBody( body ); readMail.setMail( mail ); readMail.showMaximized(); readMail.exec(); if ( readMail.deleted ) { folderView->refreshCurrent(); } else { ( (MailListViewItem*)item )->setPixmap( 0, Resource::loadPixmap( "") ); } } void MainWindow::slotDeleteMail() { if (!mailView->currentItem()) return; RecMail mail = ((MailListViewItem*)mailView->currentItem() )->data(); if ( QMessageBox::warning(this, tr("Delete Mail"), QString( tr("<p>Do you really want to delete this mail? <br><br>" ) + mail.getFrom() + " - " + mail.getSubject() ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) { mail.Wrapper()->deleteMail( mail ); folderView->refreshCurrent(); } } - +void MainWindow::mailHold(int button, QListViewItem *item,const QPoint&,int ) +{ + /* just the RIGHT button - or hold on pda */ + if (button!=2) {return;} + qDebug("Event right/hold"); + if (!item) return; + QPopupMenu *m = new QPopupMenu(0); + if (m) { + m->insertItem(tr("Read this mail"),this,SLOT(displayMail())); + m->insertItem(tr("Delete this mail"),this,SLOT(slotDeleteMail())); + m->setFocus(); + m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) ); + delete m; + } +} MailListViewItem::MailListViewItem(QListView * parent, MailListViewItem * item ) :QListViewItem(parent,item),mail_data() { } void MailListViewItem::showEntry() { if ( mail_data.getFlags().testBit( FLAG_ANSWERED ) == true) { setPixmap( 0, Resource::loadPixmap( "mail/kmmsgreplied") ); } else if ( mail_data.getFlags().testBit( FLAG_SEEN ) == true ) { /* I think it looks nicer if there are not such a log of icons but only on mails diff --git a/noncore/net/mail/mainwindow.h b/noncore/net/mail/mainwindow.h index 4e4f4bb..638232a 100644 --- a/noncore/net/mail/mainwindow.h +++ b/noncore/net/mail/mainwindow.h @@ -17,28 +17,30 @@ class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); public slots: void slotAdjustColumns(); protected slots: virtual void slotShowFolders( bool show ); virtual void refreshMailView(QList<RecMail>*); - virtual void displayMail(QListViewItem*); + virtual void displayMail(); virtual void slotDeleteMail(); - void slotAdjustLayout(); - void slotEditSettings(); + virtual void mailHold(int, QListViewItem *,const QPoint&,int); + virtual void slotAdjustLayout(); + virtual void slotEditSettings(); + virtual void mailLeftClicked( int, QListViewItem *,const QPoint&,int ); protected: QToolBar *toolBar; StatusWidget *statusWidget; QMenuBar *menuBar; QPopupMenu *mailMenu, *settingsMenu; QAction *composeMail, *sendQueued, *showFolders, *searchMails, *deleteMails, *editSettings, *editAccounts, *syncFolders; AccountView *folderView; QListView *mailView; QBoxLayout *layout; }; |