-rw-r--r-- | core/pim/todo/mainwindow.cpp | 387 |
1 files changed, 107 insertions, 280 deletions
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp index 9424c23..75da27c 100644 --- a/core/pim/todo/mainwindow.cpp +++ b/core/pim/todo/mainwindow.cpp @@ -1,23 +1,23 @@ /* - =. This file is part of the OPIE Project - .=l. Copyright (c) 2002 <> - .>+-= - _;:, .> :=|. 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 - -_. . . )=. = General Public License along with - -- :-=` this library; see the file COPYING.LIB. + =. This file is part of the OPIE Project + .=l. Copyright (c) 2002 <> + .>+-= +_;:, .> :=|. 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 + -_. . . )=. = General Public License along with + -- :-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, @@ -44,2 +44,4 @@ +#include <qaction.h> +#include <qlayout.h> #include <qmenubar.h> @@ -47,5 +49,4 @@ #include <qpushbutton.h> -#include <qaction.h> +#include <qstringlist.h> #include <qtimer.h> -#include <qlayout.h> #include <qwhatsthis.h> @@ -54,3 +55,3 @@ #include "todotemplatemanager.h" -#include "templateeditor.h" +#include "templatedialogimpl.h" #include "tableview.h" @@ -59,2 +60,3 @@ #include "todoeditor.h" +#include "newtaskdlg.h" #include "mainwindow.h" @@ -69,3 +71,4 @@ MainWindow::MainWindow( QWidget* parent, const char* name, WFlags ) - : Opie::OPimMainWindow( "Todolist", parent, name, WType_TopLevel | WStyle_ContextHelp ) + : Opie::OPimMainWindow( "Todolist", tr( "Todo List" ), "Todo List", tr( "Task" ), "todo", + parent, name, WType_TopLevel | WStyle_ContextHelp ) { @@ -80,4 +83,4 @@ MainWindow::MainWindow( QWidget* parent, - initUI(); initConfig(); + initUI(); initViews(); @@ -86,97 +89,26 @@ MainWindow::MainWindow( QWidget* parent, initShow(); - initTemplate(); - populateTemplates(); raiseCurrentView(); - QTimer::singleShot(0, this, SLOT(populateCategories() ) ); + QTimer::singleShot( 0, this, SLOT(initStuff()) ); } -void MainWindow::initTemplate() { - m_curTempEd = new TemplateEditor( this, templateManager() ); +void MainWindow::initStuff() { + m_todoMgr.load(); + setViewCategory( m_curCat ); + setCategory( m_curCat ); } void MainWindow::initActions() { + // Insert Task menu items + QActionGroup *items = new QActionGroup( this, QString::null, false ); + + m_deleteCompleteAction = new QAction( QString::null, QWidget::tr( "Delete completed" ), + 0, items, 0 ); + connect( m_deleteCompleteAction, SIGNAL(activated()), this, SLOT(slotDeleteCompleted()) ); - // Data menu - m_edit->insertItem(QWidget::tr("New from template"), m_template, - -1, 0 ); - - QAction* a = new QAction( QWidget::tr("New Task" ), Resource::loadPixmap( "new" ), - QString::null, 0, this, 0 ); - connect(a, SIGNAL( activated() ), - this, SLOT( slotNew() ) ); - a->setWhatsThis( QWidget::tr( "Click here to create a new task." ) ); - a->addTo(m_tool ); - a->addTo(m_edit ); - - a = new QAction( QWidget::tr("Edit Task"), Resource::loadIconSet( "edit" ), - QString::null, 0, this, 0 ); - connect(a, SIGNAL(activated() ), - this, SLOT( slotEdit() ) ); - a->setWhatsThis( QWidget::tr( "Click here to modify the current task." ) ); - a->addTo( m_tool ); - a->addTo( m_edit ); - m_editAction = a; - - a = new QAction( QString::null, QWidget::tr("View Task"), 0, this, 0 ); - connect(a, SIGNAL( activated() ), - this, SLOT( slotShowDetails() ) ); - a->addTo( m_edit ); - - m_edit->insertSeparator(); - - a = new QAction( QWidget::tr("Delete..."), Resource::loadIconSet( "trash" ), - QString::null, 0, this, 0 ); - connect(a, SIGNAL(activated() ), - this, SLOT(slotDelete() ) ); - a->setWhatsThis( QWidget::tr( "Click here to remove the current task." ) ); - a->addTo( m_tool ); - a->addTo( m_edit ); - m_deleteAction = a; - - a = new QAction( QString::null, QWidget::tr("Delete all..."), 0, this, 0 ); - connect(a, SIGNAL( activated() ), - this, SLOT( slotDeleteAll() ) ); - a->addTo(m_edit ); - m_deleteAllAction = a; - - a = new QAction( QString::null, QWidget::tr("Delete completed"), - 0, this, 0 ); - connect(a, SIGNAL( activated() ), - this, SLOT( slotDeleteCompleted() ) ); - a->addTo(m_edit ); - a->setEnabled( TRUE ); - m_deleteCompleteAction = a; - - m_edit->insertSeparator(); - - a = new QAction( QString::null, QWidget::tr("Duplicate"), 0, this, 0 ); - connect(a, SIGNAL( activated() ), - this, SLOT( slotDuplicate() ) ); - a->addTo(m_edit ); - m_duplicateAction = a; - - m_edit->insertSeparator(); - - if ( Ir::supported() ) { - a = new QAction( QWidget::tr( "Beam" ), Resource::loadPixmap( "beam" ), QString::null, 0, this, 0 ); - connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) ); - a->setWhatsThis( QWidget::tr( "Click here to send the current task to another device." ) ); - a->addTo( m_edit ); - a->addTo( m_tool ); - } - -#if 0 - // Options menu - a = new QAction( QWidget::tr("Find"), Resource::loadIconSet( "mag" ), - QString::null, 0, this, 0 ); - connect(a, SIGNAL( activated() ), this, SLOT( slotFind() ) ); - a->addTo( m_options ); - m_findAction = a; - - - m_options->insertSeparator(); -#endif + insertItemMenuItems( items ); + + // Insert View menu items + items = new QActionGroup( this, QString::null, false ); m_completedAction = new QAction( QString::null, QWidget::tr("Show completed tasks"), - 0, this, 0, TRUE ); - m_completedAction->addTo( m_options ); + 0, items, 0, true ); m_completedAction->setOn( showCompleted() ); @@ -184,5 +116,4 @@ void MainWindow::initActions() { - a = new QAction( QString::null, QWidget::tr("Show only over-due tasks"), - 0, this, 0, TRUE ); - a->addTo( m_options ); + QAction *a = new QAction( QString::null, QWidget::tr("Show only over-due tasks"), + 0, items, 0, true ); a->setOn( showOverDue() ); @@ -191,4 +122,3 @@ void MainWindow::initActions() { m_showDeadLineAction = new QAction( QString::null, QWidget::tr("Show task deadlines"), - 0, this, 0, TRUE ); - m_showDeadLineAction->addTo( m_options ); + 0, items, 0, true ); m_showDeadLineAction->setOn( showDeadline() ); @@ -197,4 +127,3 @@ void MainWindow::initActions() { m_showQuickTaskAction = new QAction( QString::null, QWidget::tr("Show quick task bar"), - 0, this, 0, TRUE ); - m_showQuickTaskAction->addTo( m_options ); + 0, items, 0, true ); m_showQuickTaskAction->setOn( showQuickTask() ); @@ -202,12 +131,3 @@ void MainWindow::initActions() { - m_options->insertSeparator(); - - m_bar->insertItem( QWidget::tr("Data") ,m_edit ); - m_bar->insertItem( QWidget::tr("Category"), m_catMenu ); - m_bar->insertItem( QWidget::tr("Options"), m_options ); - - m_curQuick = new QuickEditImpl( this, m_quicktask ); - addToolBar( (QToolBar *)m_curQuick->widget(), QWidget::tr( "QuickEdit" ), QMainWindow::Top, TRUE ); - m_curQuick->signal()->connect( this, SLOT(slotQuickEntered() ) ); - + insertViewMenuItems( items ); } @@ -217,35 +137,20 @@ void MainWindow::initConfig() { config.setGroup( "View" ); - m_completed = config.readBoolEntry( "ShowComplete", TRUE ); + m_completed = config.readBoolEntry( "ShowComplete", true ); m_curCat = config.readEntry( "Category", QString::null ); - m_deadline = config.readBoolEntry( "ShowDeadLine", TRUE); - m_overdue = config.readBoolEntry("ShowOverDue", FALSE ); - m_quicktask = config.readBoolEntry("ShowQuickTask", TRUE); + m_deadline = config.readBoolEntry( "ShowDeadLine", true); + m_overdue = config.readBoolEntry("ShowOverDue", false ); + m_quicktask = config.readBoolEntry("ShowQuickTask", true); } void MainWindow::initUI() { - + // Create main widget stack m_stack = new Opie::Ui::OWidgetStack(this, "main stack"); - setCentralWidget( m_stack ); + connect( this, SIGNAL(categorySelected(const QString&)), + this, SLOT(setCategory(const QString&)) ); - setToolBarsMovable( FALSE ); - - QToolBar *menubarholder = new QToolBar( this ); - menubarholder->setHorizontalStretchable( TRUE ); - m_bar = new QMenuBar( menubarholder ); - - m_tool = new QToolBar( this ); - - /** QPopupMenu */ - m_edit = new QPopupMenu( this ); - m_options = new QPopupMenu( this ); - m_catMenu = new QPopupMenu( this ); - m_template = new QPopupMenu( this ); - - m_catMenu->setCheckable( TRUE ); - m_template->setCheckable( TRUE ); - - connect(m_catMenu, SIGNAL(activated(int) ), - this, SLOT(setCategory(int) ) ); - connect(m_template, SIGNAL(activated(int) ), - this, SLOT(slotNewFromTemplate(int) ) ); + // Create quick task toolbar + m_curQuick = new QuickEditImpl( this, m_quicktask ); + addToolBar( (QToolBar *)m_curQuick->widget(), QWidget::tr( "QuickEdit" ), + QMainWindow::Top, true ); + m_curQuick->signal()->connect( this, SLOT(slotQuickEntered()) ); } @@ -277,30 +182,4 @@ void MainWindow::connectBase( ViewBase* ) { } -QPopupMenu* MainWindow::contextMenu( int , bool recur ) { - QPopupMenu* menu = new QPopupMenu(); - - m_editAction->addTo( menu ); - m_deleteAction->addTo( menu ); - m_duplicateAction->addTo( menu ); - - menu->insertSeparator(); - - /* - * if this event recurs we allow - * to detach it. - * remove all - */ - if ( recur ) { - ; // FIXME - } - - return menu; -} -QPopupMenu* MainWindow::options() { - return m_options; -} -QPopupMenu* MainWindow::edit() { - return m_edit; -} -QToolBar* MainWindow::toolbar() { - return m_tool; +QPopupMenu* MainWindow::contextMenu( int , bool /*recur*/ ) { + return itemContextMenu(); } @@ -311,5 +190,5 @@ OPimTodoAccess::List MainWindow::sorted( bool asc, int sortOrder ) { int cat = 0; - if ( m_curCat != QWidget::tr("All Categories") ) + if ( m_curCat != tr( "All" ) ) cat = currentCatId(); - if ( m_curCat == QWidget::tr("Unfiled") ) + if ( m_curCat == tr( "Unfiled" ) ) cat = -1; @@ -327,6 +206,6 @@ OPimTodoAccess::List MainWindow::sorted( bool asc, int sortOrder, int addFilter) int cat = 0; - if ( m_curCat != QWidget::tr("All Categories") ) + if ( m_curCat != tr( "All" ) ) cat = currentCatId(); - if ( m_curCat == QWidget::tr("Unfiled") ) + if ( m_curCat == tr( "Unfiled" ) ) cat = -1; @@ -351,3 +230,3 @@ TodoShow* MainWindow::currentShow() { void MainWindow::slotReload() { - m_syncing = FALSE; + m_syncing = false; m_todoMgr.reload(); @@ -405,29 +284,14 @@ void MainWindow::closeEvent( QCloseEvent* e ) { } -void MainWindow::populateTemplates() { - m_template->clear(); - QStringList list = templateManager()->templates(); - QStringList::Iterator it; - for ( it = list.begin(); it != list.end(); ++it ) { - m_template->insertItem( (*it) ); - } -} -/* - * slotNewFromTemplate - * We use the edit widget to do - * the config but we setUid(1) - * to get a new uid - */ -/* - * first we get the name of the template - * then we will use the TemplateManager - */ -void MainWindow::slotNewFromTemplate( int id ) { - QString name = m_template->text( id ); - - OPimTodo event = templateManager()->templateEvent( name ); - event = currentEditor()->edit(this, - event ); - +void MainWindow::slotItemNew() { + NewTaskDlg dlg( templateManager()->templates(), this ); + if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted ) { + QString tempName = dlg.tempSelected(); + if ( tempName.isNull() ) + // Create new, blank task + create(); + else { + // Create new task from the template selected + OPimTodo event = templateManager()->templateEvent( tempName ); + event = currentEditor()->edit( this, event ); if ( currentEditor()->accepted() ) { - /* assign new todo */ event.setUid( 1 ); @@ -437,3 +301,3 @@ void MainWindow::slotNewFromTemplate( int id ) { - populateCategories(); + reloadCategories(); } @@ -441,6 +305,8 @@ void MainWindow::slotNewFromTemplate( int id ) { } -void MainWindow::slotNew() { - create(); } -void MainWindow::slotDuplicate() { +} +void MainWindow::slotItemEdit() { + slotEdit( currentView()->current() ); +} +void MainWindow::slotItemDuplicate() { if(m_syncing) { @@ -458,3 +324,3 @@ void MainWindow::slotDuplicate() { } -void MainWindow::slotDelete() { +void MainWindow::slotItemDelete() { if (!currentView()->current() ) @@ -476,2 +342,14 @@ void MainWindow::slotDelete() { } + +static const char *beamfile = "/tmp/opie-todo.vcs"; +void MainWindow::slotItemBeam() { + beam( currentView()->current() ); +} +void MainWindow::slotItemFind() { +} +void MainWindow::slotConfigure() { + TemplateDialogImpl dlg( this, m_tempManager ); + if ( QPEApplication::execDialog( &dlg ) != QDialog::Accepted ) + m_tempManager->load(); +} void MainWindow::slotDelete(int uid ) { @@ -522,8 +400,2 @@ void MainWindow::slotDeleteCompleted() { } -void MainWindow::slotFind() { - -} -void MainWindow::slotEdit() { - slotEdit( currentView()->current() ); -} /* @@ -531,21 +403,6 @@ void MainWindow::slotEdit() { */ -void MainWindow::setCategory( int c) { - if ( c <= 0 ) return; - - - for ( unsigned int i = 1; i < m_catMenu->count(); i++ ) - m_catMenu->setItemChecked(i, c == (int)i ); - - if (c == 1 ) { +void MainWindow::setCategory( const QString &category ) { + m_curCat = category; + if ( m_curCat == tr( "All" ) ) m_curCat = QString::null; - setCaption( QWidget::tr("Todo") + " - " + QWidget::tr("All Categories" ) ); - - }else if ( c == (int)m_catMenu->count() - 1 ) { - m_curCat = QWidget::tr("Unfiled"); - setCaption( QWidget::tr("Todo") + " - " + QWidget::tr("Unfiled") ); - }else { - m_curCat = m_todoMgr.categories()[c-2]; - setCaption( QWidget::tr("Todo") + " - " + m_curCat ); - } - m_catMenu->setItemChecked( c, true ); @@ -579,7 +436,2 @@ void MainWindow::setDocument( const QString& fi) { } - -static const char *beamfile = "/tmp/opie-todo.vcs"; -void MainWindow::slotBeam() { - beam( currentView()->current() ); -} void MainWindow::beamDone( Ir* ir) { @@ -612,3 +464,3 @@ void MainWindow::receiveFile( const QString& filename ) { void MainWindow::slotFlush() { - m_syncing = TRUE; + m_syncing = true; m_todoMgr.save(); @@ -618,27 +470,2 @@ void MainWindow::slotShowDetails() { } -/* - * populate the Categories - * Menu - */ -void MainWindow::populateCategories() { - m_todoMgr.load(); - - m_catMenu->clear(); - int id, rememberId; - id = 1; - rememberId = 1; - - m_catMenu->insertItem( QWidget::tr( "All Categories" ), id++ ); - m_catMenu->insertSeparator(); - QStringList categories = m_todoMgr.categories(); - categories.append( QWidget::tr( "Unfiled" ) ); - for ( QStringList::Iterator it = categories.begin(); - it != categories.end(); ++it ) { - m_catMenu->insertItem( *it, id ); - if ( *it == currentCategory() ) - rememberId = id; - ++id; - } - setCategory( rememberId ); -} bool MainWindow::showCompleted()const { @@ -711,3 +538,3 @@ void MainWindow::slotEdit( int uid ) { /* a Category might have changed */ - populateCategories(); + reloadCategories(); } @@ -860,3 +687,3 @@ int MainWindow::create() { // but only call if we changed something -zecke - populateCategories(); + reloadCategories(); } @@ -917,3 +744,3 @@ void MainWindow::add( const OPimRecord& rec) { // but only call if we changed something -zecke - populateCategories(); + reloadCategories(); } @@ -1006,3 +833,3 @@ void MainWindow::doAlarm( const QDateTime& dt, int uid ) { - QDialog dlg(this, 0, TRUE ); + QDialog dlg(this, 0, true ); QVBoxLayout* lay = new QVBoxLayout( &dlg ); |