-rw-r--r-- | core/pim/todo/tableview.cpp | 84 |
1 files changed, 32 insertions, 52 deletions
diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp index 221faca..c64ad46 100644 --- a/core/pim/todo/tableview.cpp +++ b/core/pim/todo/tableview.cpp @@ -1,52 +1,52 @@ /* - =. This file is part of the OPIE Project - .=l. Copyright (c) 2002 <zecke> - .>+-= - _;:, .> :=|. This program is free software; you can -.> <`_, > . <= redistribute it and/or modify it under -:`=1 )Y*s>-.-- : the terms of the GNU General Public -.="- .-=="i, .._ License as published by the Free Software - - . .-<_> .<> Foundation; either version 2 of the License, - ._= =} : or (at your option) any later version. - .%`+i> _;_. - .i_,=:_. -<s. This program is distributed in the hope that - + . -:. = it will be useful, but WITHOUT ANY WARRANTY; - : .. .:, . . . without even the implied warranty of - =_ + =;=|` MERCHANTABILITY or FITNESS FOR A - _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU -..}^=.= = ; Library General Public License for more -++= -. .` .: details. - : = ...= . :.=- - -. .:....=;==+<; You should have received a copy of the GNU - -_. . . )=. = Library General Public License along with - -- :-=` this library; see the file COPYING.LIB. + =. This file is part of the OPIE Project + .=l. Copyright (c) 2002 <zecke> + .>+-= +_;:, .> :=|. This program is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU General Public +.="- .-=="i, .._ License as published by the Free Software +- . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -<s. This program is distributed in the hope that + + . -:. = it will be useful, but WITHOUT ANY WARRANTY; + : .. .:, . . . without even the implied warranty of + =_ + =;=|` MERCHANTABILITY or FITNESS FOR A + _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU +..}^=.= = ; Library General Public License for more +++= -. .` .: details. +: = ...= . :.=- +-. .:....=;==+<; You should have received a copy of the GNU + -_. . . )=. = Library General Public License along with + -- :-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include <stdlib.h> #include <cmath> #include <cctype> #include <opie2/odebug.h> #include <opie2/opimrecurrence.h> #include <qpe/config.h> +#include <qpe/qpeapplication.h> #include <qpe/resource.h> #include <qcombobox.h> #include <qlineedit.h> -#include <qtimer.h> #include <qpopupmenu.h> #include "mainwindow.h" //#include "tableitems.h" #include "tableview.h" using namespace Todo; namespace { static const int BoxSize = 14; static const int RowHeight = 20; } @@ -108,37 +108,32 @@ TableView::TableView( MainWindow* window, QWidget* wid ) horizontalHeader()->setLabel( 1, QWidget::tr("Priority") ); horizontalHeader()->setLabel( 2, QWidget::tr("Summary" ) ); horizontalHeader()->setLabel( 3, QWidget::tr("Deadline") ); setShowDeadline( todoWindow()->showDeadline() ); setSorting( TRUE ); setSelectionMode( NoSelection ); setLeftMargin( 0 ); verticalHeader()->hide(); + QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); connect((QTable*)this, SIGNAL( clicked(int,int,int,const QPoint&) ), this, SLOT( slotClicked(int,int,int,const QPoint&) ) ); - connect((QTable*)this, SIGNAL( pressed(int,int,int,const QPoint&) ), - this, SLOT( slotPressed(int,int,int,const QPoint&) ) ); connect((QTable*)this, SIGNAL(valueChanged(int,int) ), this, SLOT( slotValueChanged(int,int) ) ); connect((QTable*)this, SIGNAL(currentChanged(int,int) ), this, SLOT( slotCurrentChanged(int,int) ) ); - m_menuTimer = new QTimer( this ); - connect( m_menuTimer, SIGNAL(timeout()), - this, SLOT(slotShowMenu()) ); - /* now let's init the config */ initConfig(); m_enablePaint = true; setUpdatesEnabled( true ); viewport()->setUpdatesEnabled( true ); viewport()->update(); setSortOrder( Opie::OPimTodoAccess::Completed ); setAscending( TRUE ); m_first = true; @@ -148,29 +143,24 @@ TableView::TableView( MainWindow* window, QWidget* wid ) * update the day */ void TableView::newDay() { clear(); updateView(); } TableView::~TableView() { Config config( "todo" ); config.setGroup( "Options" ); for (int i = 0; i < numCols(); i++ ) config.writeEntry("Width"+QString::number(i), columnWidth(i) ); } -void TableView::slotShowMenu() { - QPopupMenu *menu = todoWindow()->contextMenu( current(), sorted()[currentRow()].recurrence().doesRecur() ); - menu->exec(QCursor::pos() ); - delete menu; -} QString TableView::type() const { return QString::fromLatin1( tr("Table View") ); } int TableView::current() { if (numRows() == 0 ) return 0; int uid = sorted().uidAt(currentRow() ); return uid; } int TableView::next() { if ( numRows() == 0 ) return 0; if ( currentRow() + 1 >= numRows() ) return 0; @@ -274,25 +264,24 @@ void TableView::setShowDeadline( bool b ) { width = fontMetrics().boundingRect( horizontalHeader()->label( 3 ) ).width() + 8; setColumnWidth( 3, width ); col2width -= width; } setColumnWidth( 2, col2width ); } void TableView::setShowCategory( const QString& str) { if ( str != m_oleCat || m_first ) updateView(); m_oleCat = str; m_first = false; - } void TableView::clear() { setNumRows(0); } void TableView::slotClicked(int row, int col, int, const QPoint& point) { if ( m_editorWidget.cellWidget() ) { //setCellContentFromEditor(m_editorWidget.cellRow(), m_editorWidget.cellCol() ); endEdit(m_editorWidget.cellRow(), m_editorWidget.cellCol(), true, true ); m_editorWidget.releaseCellWidget(); } @@ -317,50 +306,35 @@ void TableView::slotClicked(int row, int col, int, } } break; // Priority emit a double click... case 1:{ QWidget* wid = beginEdit( row, col, FALSE ); m_editorWidget.setCellWidget( wid, row, col ); } break; case 2: { - m_menuTimer->stop(); showTodo( ui ); break; } case 3: { - m_menuTimer->stop(); TodoView::edit( ui ); break; } } } -void TableView::slotPressed(int row, int col, int, - const QPoint& point) { - - m_prevP = point; - /* TextColumn column */ - if ( col == 2 && cellGeometry( row, col ).contains( point ) ) - m_menuTimer->start( 750, TRUE ); -} -void TableView::slotValueChanged( int, int ) { -} -void TableView::slotCurrentChanged(int, int ) { - m_menuTimer->stop(); -} QWidget* TableView::widget() { return this; } /* * We need to overwrite sortColumn * because we want to sort whole row * based * We event want to set the setOrder * to a sort() and update() */ void TableView::sortColumn( int col, bool asc, bool ) { switch(col) { @@ -581,27 +555,33 @@ void TableView::timerEvent( QTimerEvent* ) { */ void TableView::contentsMouseReleaseEvent( QMouseEvent* e) { int row = rowAt(m_prevP.y()); int colOld = columnAt(m_prevP.x() ); int colNew = columnAt(e->x() ); if ( row == rowAt( e->y() ) && row != -1 && colOld != colNew ) { TodoView::complete( sorted()[row] ); return; } QTable::contentsMouseReleaseEvent( e ); } -void TableView::contentsMouseMoveEvent( QMouseEvent* e ) { - m_menuTimer->stop(); - QTable::contentsMouseMoveEvent( e ); +void TableView::contentsMousePressEvent( QMouseEvent *e ) { + if ( e->button() == RightButton ) { + QPopupMenu *menu = todoWindow()->contextMenu( current(), sorted()[currentRow()].recurrence().doesRecur() ); + menu->exec( QCursor::pos() ); + } + else { + m_prevP = e->pos(); + QTable::contentsMousePressEvent( e ); + } } void TableView::keyPressEvent( QKeyEvent* event) { if ( m_editorWidget.cellWidget() ) { // setCellContentFromEditor(m_editorWidget.cellRow(), m_editorWidget.cellCol() ); endEdit(m_editorWidget.cellRow(), m_editorWidget.cellCol(), true, true ); m_editorWidget.releaseCellWidget(); setFocus(); } if ( sorted().count() < 1 ) { QTable::keyPressEvent( event ); |