-rw-r--r-- | core/pim/todo/mainwindow.cpp | 50 |
1 files changed, 29 insertions, 21 deletions
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp index b6ee16f..19a6675 100644 --- a/core/pim/todo/mainwindow.cpp +++ b/core/pim/todo/mainwindow.cpp @@ -160,277 +160,285 @@ void MainWindow::initViews() { TableView* tableView = new TableView( this, m_stack ); QWhatsThis::add( tableView, QWidget::tr( "This is a listing of all current tasks.\n\nThe list displays the following information:\n1. Completed - A green checkmark indicates task is completed. Click here to complete a task.\n2. Priority - a graphical representation of task priority. Double-click here to modify.\n3. Description - description of task. Click here to select the task.\n4. Deadline - shows when task is due. This column can be shown or hidden by selecting Options->'Show task deadlines' from the menu above." ) ); m_stack->addWidget( tableView, m_counter++ ); m_views.append( tableView ); m_curView = tableView; connectBase( tableView ); /* add QString type + QString configname to * the View menu * and subdirs for multiple views */ } void MainWindow::initEditor() { m_curEdit = new Editor(); } void MainWindow::initShow() { m_curShow = new TextViewShow(this, this); m_stack->addWidget( m_curShow->widget() , m_counter++ ); } MainWindow::~MainWindow() { delete templateManager(); } void MainWindow::connectBase( ViewBase* ) { // once templates and signals mix we'll use it again } QPopupMenu* MainWindow::contextMenu( int , bool /*recur*/ ) { return itemContextMenu(); } OPimTodoAccess::List MainWindow::list()const { return m_todoMgr.list(); } OPimTodoAccess::List MainWindow::sorted( bool asc, int sortOrder ) { int cat = 0; if ( m_curCat != tr( "All" ) ) cat = currentCatId(); if ( m_curCat == tr( "Unfiled" ) ) cat = -1; int filter = OPimTodoAccess::FilterCategory; if (!m_completed ) filter |= OPimTodoAccess::DoNotShowCompleted; if (m_overdue) filter |= OPimTodoAccess::OnlyOverDue; return m_todoMgr.sorted( asc, sortOrder, filter, cat ); } OPimTodoAccess::List MainWindow::sorted( bool asc, int sortOrder, int addFilter) { int cat = 0; if ( m_curCat != tr( "All" ) ) cat = currentCatId(); if ( m_curCat == tr( "Unfiled" ) ) cat = -1; return m_todoMgr.sorted(asc, sortOrder, addFilter, cat ); } OPimTodo MainWindow::event( int uid ) { return m_todoMgr.event( uid ); } bool MainWindow::isSyncing()const { return m_syncing; } TemplateManager* MainWindow::templateManager() { return m_tempManager; } Editor* MainWindow::currentEditor() { return m_curEdit; } TodoShow* MainWindow::currentShow() { return m_curShow; } void MainWindow::slotReload() { m_syncing = false; m_todoMgr.reload(); currentView()->updateView( ); raiseCurrentView(); } void MainWindow::closeEvent( QCloseEvent* e ) { if (m_stack->visibleWidget() == currentShow()->widget() ) { m_showing = false; raiseCurrentView(); e->ignore(); return; } /* * we should have flushed and now we're still saving * so there is no need to flush */ if (m_syncing ) { e->accept(); return; } bool quit = false; if ( m_todoMgr.saveAll() ){ quit = true; }else { if ( QMessageBox::critical( this, QWidget::tr("Out of space"), QWidget::tr("Todo was unable\n" "to save your changes.\n" "Free up some space\n" "and try again.\n" "\nQuit Anyway?"), QMessageBox::Yes|QMessageBox::Escape, QMessageBox::No|QMessageBox::Default) != QMessageBox::No ) { e->accept(); quit = true; }else e->ignore(); } if (quit ) { Config config( "todo" ); config.setGroup( "View" ); config.writeEntry( "ShowComplete", showCompleted() ); config.writeEntry( "Category", currentCategory() ); config.writeEntry( "ShowDeadLine", showDeadline()); config.writeEntry( "ShowOverDue", showOverDue() ); config.writeEntry( "ShowQuickTask", showQuickTask() ); /* save templates */ templateManager()->save(); e->accept(); QTimer::singleShot(0, qApp, SLOT(closeAllWindows()) ); } } 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() ) { - event.setUid( 1 ); - handleAlarms( OPimTodo(), event ); - m_todoMgr.add( event ); - currentView()->addEvent( event ); - - reloadCategories(); - } - raiseCurrentView(); - } - } + QStringList templateList = templateManager()->templates(); + if(templateList.isEmpty()) { + // No templates, just create a blank task + create(); + } + else { + // There are templates, so allow the user to select one + NewTaskDlg dlg( templateList, 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() ) { + event.setUid( 1 ); + handleAlarms( OPimTodo(), event ); + m_todoMgr.add( event ); + currentView()->addEvent( event ); + + reloadCategories(); + } + raiseCurrentView(); + } + } + } } void MainWindow::slotItemEdit() { slotEdit( currentView()->current() ); } void MainWindow::slotItemDuplicate() { if(m_syncing) { QMessageBox::warning(this, QWidget::tr("Todo"), QWidget::tr("Data can not be edited, currently syncing")); return; } OPimTodo ev = m_todoMgr.event( currentView()->current() ); /* let's generate a new uid */ ev.setUid(1); m_todoMgr.add( ev ); currentView()->addEvent( ev ); raiseCurrentView(); } void MainWindow::slotItemDelete() { if (!currentView()->current() ) return; if(m_syncing) { QMessageBox::warning(this, QWidget::tr("Todo"), QWidget::tr("Data can not be edited, currently syncing")); return; } QString strName = currentView()->currentRepresentation(); if (!QPEMessageBox::confirmDelete(this, QWidget::tr("Todo"), strName ) ) return; handleAlarms( m_todoMgr.event( currentView()->current() ), OPimTodo() ); m_todoMgr.remove( currentView()->current() ); currentView()->removeEvent( currentView()->current() ); raiseCurrentView(); } 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 ) { if( uid == 0 ) return; if(m_syncing) { QMessageBox::warning(this, QWidget::tr("Todo"), QWidget::tr("Data can not be edited, currently syncing")); return; } OPimTodo to = m_todoMgr.event(uid); if (!QPEMessageBox::confirmDelete(this, QWidget::tr("Todo"), to.toShortText() ) ) return; handleAlarms(to, OPimTodo() ); m_todoMgr.remove( to.uid() ); currentView()->removeEvent( to.uid() ); raiseCurrentView(); } void MainWindow::slotDeleteAll() { if(m_syncing) { QMessageBox::warning(this, QWidget::tr("Todo"), QWidget::tr("Data can not be edited, currently syncing")); return; } if ( !QPEMessageBox::confirmDelete( this, QWidget::tr( "Todo" ), QWidget::tr("all tasks?") ) ) return; m_todoMgr.removeAll(); currentView()->clear(); raiseCurrentView(); } void MainWindow::slotDeleteCompleted() { if(m_syncing) { QMessageBox::warning(this, QWidget::tr("Todo"), QWidget::tr("Data can not be edited, currently syncing")); return; } if ( !QPEMessageBox::confirmDelete( this, QWidget::tr( "Todo" ), QWidget::tr("all completed tasks?") ) ) return; m_todoMgr.removeCompleted(); currentView()->updateView( ); } /* * set the category */ void MainWindow::setCategory( const QString &category ) { m_curCat = category; if ( m_curCat == tr( "All" ) ) m_curCat = QString::null; currentView()->setShowCategory( m_curCat ); raiseCurrentView(); } void MainWindow::slotShowDeadLine( bool dead) { m_deadline = dead; currentView()->setShowDeadline( dead ); } void MainWindow::slotShowCompleted( bool show) { m_completed = show; currentView()->setShowCompleted( m_completed ); } void MainWindow::slotShowQuickTask( bool show ) { m_quicktask = show; if ( m_quicktask ) m_curQuick->widget()->show(); else m_curQuick->widget()->hide(); } bool MainWindow::showOverDue()const { return m_overdue; } void MainWindow::setDocument( const QString& fi) { DocLnk doc(fi); if (doc.isValid() ) receiveFile(doc.file() ); else |