summaryrefslogtreecommitdiff
authorkorovkin <korovkin>2007-01-03 11:41:01 (UTC)
committer korovkin <korovkin>2007-01-03 11:41:01 (UTC)
commitc880d9e087019f27f19c80b13fe2c7a5a4b37e3d (patch) (side-by-side diff)
treeba79fe22adc7ebc062383aae1c49ddcf240b0f71
parent188c44c1196c3597a84189c2d148813df16dfe95 (diff)
downloadopie-c880d9e087019f27f19c80b13fe2c7a5a4b37e3d.zip
opie-c880d9e087019f27f19c80b13fe2c7a5a4b37e3d.tar.gz
opie-c880d9e087019f27f19c80b13fe2c7a5a4b37e3d.tar.bz2
Fix for bug#0001547 provided by Paul Eggleton <bluelightning@bluelightning.org>
If there are no templates, just create the blank task.
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/pim/todo/mainwindow.cpp10
1 files changed, 9 insertions, 1 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
@@ -192,214 +192,222 @@ 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 );
+ 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
*/