-rw-r--r-- | core/pim/todo/mainwindow.cpp | 2 | ||||
-rw-r--r-- | core/pim/todo/otaskeditor.cpp | 19 | ||||
-rw-r--r-- | core/pim/todo/otaskeditor.h | 7 | ||||
-rw-r--r-- | core/pim/todo/taskeditoroverviewimpl.cpp | 12 | ||||
-rw-r--r-- | core/pim/todo/todoeditor.cpp | 32 | ||||
-rw-r--r-- | core/pim/todo/todoeditor.h | 4 |
6 files changed, 59 insertions, 17 deletions
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp index 71e6750..9b2423b 100644 --- a/core/pim/todo/mainwindow.cpp +++ b/core/pim/todo/mainwindow.cpp @@ -146,65 +146,65 @@ void MainWindow::initActions() { } a = new QAction( 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(); m_completedAction = new QAction( QString::null, tr("Completed tasks"), 0, this, 0, TRUE ); m_completedAction->addTo( m_options ); m_completedAction->setOn( showCompleted() ); connect(m_completedAction, SIGNAL( toggled(bool) ), this, SLOT(slotShowCompleted(bool) ) ); m_showDeadLineAction = new QAction( QString::null, tr("Show Deadline"), 0, this, 0, TRUE ); m_showDeadLineAction->addTo( m_options ); m_showDeadLineAction->setOn( showDeadline() ); connect(m_showDeadLineAction, SIGNAL(toggled(bool) ), this, SLOT( slotShowDeadLine( bool ) ) ); m_options->insertSeparator(); m_bar->insertItem( tr("Data") ,m_edit ); m_bar->insertItem( tr("Category"), m_catMenu ); m_bar->insertItem( tr("Options"), m_options ); /* initialize the view menu */ - a = new QAction( QString::null, tr("Show over due"), + a = new QAction( QString::null, tr("Show only over due"), 0, this, 0, TRUE ); a->addTo( m_view ); a->setOn( showOverDue() ); connect(a, SIGNAL(toggled(bool)), this, SLOT(slotShowDue(bool) ) ); m_view->insertSeparator(); m_bar->insertItem( tr("View"), m_view ); /* templates */ m_edit->insertItem(tr("New from template"), m_template, -1, 0 ); } /* m_curCat from Config */ void MainWindow::initConfig() { Config config( "todo" ); config.setGroup( "View" ); m_completed = config.readBoolEntry( "ShowComplete", TRUE ); m_curCat = config.readEntry( "Category", QString::null ); m_deadline = config.readBoolEntry( "ShowDeadLine", TRUE); m_overdue = config.readBoolEntry("ShowOverDue", TRUE ); } void MainWindow::initUI() { m_mainBox = new QVBox(this, "main box "); m_curQuick = new QuickEditImpl(this, m_mainBox ); m_curQuick->signal()->connect( this, SLOT(slotQuickEntered() ) ); m_quickEdit.append( m_curQuick ); m_stack = new QWidgetStack(m_mainBox, "main stack"); diff --git a/core/pim/todo/otaskeditor.cpp b/core/pim/todo/otaskeditor.cpp index e8e922f..1a68eb5 100644 --- a/core/pim/todo/otaskeditor.cpp +++ b/core/pim/todo/otaskeditor.cpp @@ -1,62 +1,69 @@ #include <qdatetime.h> #include <qlayout.h> #include <qlabel.h> #include <qmultilineedit.h> #include <opie/orecurrancewidget.h> #include "taskeditoroverviewimpl.h" #include "taskeditoradvanced.h" #include "taskeditoralarms.h" #include "otaskeditor.h" OTaskEditor::OTaskEditor(int cur) : QDialog(0, 0, TRUE ) { init(); - OTodo to; - to.setCategories( cur ); - load(to); - m_uid = 1; // generate a new one + init( cur ); } OTaskEditor::OTaskEditor( const OTodo& to) : QDialog(0, 0, TRUE ) { init(); - load( to ); - m_uid = to.uid(); + init( to ); } OTaskEditor::~OTaskEditor() { } +void OTaskEditor::init( int cur ) { + OTodo to; + if ( cur != 0 ) + to.setCategories( cur ); + load(to); + m_uid = 1; // generate a new one +} +void OTaskEditor::init( const OTodo& to ) { + load( to ); + m_uid = to.uid(); +} OTodo OTaskEditor::todo()const{ qWarning("saving!"); OTodo to; to.setUid(m_uid ); m_overView->save( to ); to.setDescription( m_line->text() ); return to; } void OTaskEditor::load(const OTodo& to) { m_overView->load( to ); m_line->setText( to.description() ); } void OTaskEditor::init() { QVBoxLayout* lay = new QVBoxLayout(this); setCaption("Task Editor"); m_tab = new OTabWidget(this); /* * Add the Widgets */ m_overView = new TaskEditorOverViewImpl(m_tab ); m_tab->addTab( m_overView, QString::null, tr("Overview") ); m_adv = new TaskEditorAdvanced( m_tab ); m_line = new QMultiLineEdit(m_adv ); QLabel* label = new QLabel(m_adv ); label->setText( tr("Description") ); ((QGridLayout*) m_adv->layout() )->addWidget( label,3, 0 ); ((QGridLayout*) m_adv->layout())->addWidget( m_line,4,0 ); m_tab->addTab( m_adv, QString::null, tr("Advanced") ); diff --git a/core/pim/todo/otaskeditor.h b/core/pim/todo/otaskeditor.h index 5842fdc..bcbd543 100644 --- a/core/pim/todo/otaskeditor.h +++ b/core/pim/todo/otaskeditor.h @@ -1,37 +1,44 @@ #ifndef OPIE_TASK_EDITOR_H #define OPIE_TASK_EDITOR_H #include <qdialog.h> #include <opie/otodo.h> #include <opie/otabwidget.h> class TaskEditorOverViewImpl; class TaskEditorAdvanced; class TaskEditorAlarms; class ORecurranceWidget; class QMultiLineEdit; class OTaskEditor : public QDialog { Q_OBJECT public: OTaskEditor(int cur); OTaskEditor( const OTodo& todo ); ~OTaskEditor(); + /* + * same as the c'tor but this gives us the + * power to 'preload' the dialog + */ + void init( int cur ); + void init( const OTodo& todo ); + OTodo todo()const; private: void load( const OTodo& ); void init(); OTabWidget *m_tab; TaskEditorOverViewImpl* m_overView; TaskEditorAdvanced *m_adv; TaskEditorAlarms *m_alarm; TaskEditorAlarms* m_remind; ORecurranceWidget* m_rec; QMultiLineEdit* m_line; int m_uid; }; #endif diff --git a/core/pim/todo/taskeditoroverviewimpl.cpp b/core/pim/todo/taskeditoroverviewimpl.cpp index b9b2ae6..c10ad40 100644 --- a/core/pim/todo/taskeditoroverviewimpl.cpp +++ b/core/pim/todo/taskeditoroverviewimpl.cpp @@ -1,103 +1,115 @@ #include <qapplication.h> #include <qcheckbox.h> #include <qcombobox.h> #include <qpopupmenu.h> #include <qpe/datebookmonth.h> #include <qpe/categoryselect.h> #include <qpe/timestring.h> #include "taskeditoroverviewimpl.h" /* * we need to hack */ TaskEditorOverViewImpl::TaskEditorOverViewImpl( QWidget* parent, const char* name ) : TaskEditorOverView( parent, name ) { init(); } TaskEditorOverViewImpl::~TaskEditorOverViewImpl() { } void TaskEditorOverViewImpl::load( const OTodo& todo) { + /* + * now that we're 'preloaded' we + * need to disable the buttons + * holding the dat + */ + btnDue-> setEnabled( FALSE ); + btnComp-> setEnabled( FALSE ); + btnStart->setEnabled( FALSE ); + + QDate date = QDate::currentDate(); QString str = TimeString::longDateString( date ); emit recurranceEnabled( FALSE ); ckbStart->setChecked( FALSE ); btnStart->setText( str ); ckbComp->setChecked( FALSE ); btnComp->setText( str ); cmbProgress->setCurrentItem( todo.progress()/20 ); cmbSum->insertItem( todo.summary(), 0 ); cmbSum->setCurrentItem( 0 ); ckbDue->setChecked( todo.hasDueDate() ); btnDue->setText( TimeString::longDateString( todo.dueDate() ) ); cmbPrio->setCurrentItem( todo.priority() -1 ); ckbCompleted->setChecked( todo.isCompleted() ); comboCategory->setCategories( todo.categories(), "Todo List", tr("Todo List") ); } void TaskEditorOverViewImpl::save( OTodo& to) { qWarning("save it now"); if ( ckbDue->isChecked() ) { to.setDueDate( m_due ); to.setHasDueDate( true ); }else to.setHasDueDate( false ); if ( comboCategory->currentCategory() != -1 ) { QArray<int> arr = comboCategory->currentCategories(); to.setCategories( arr ); } to.setPriority( cmbPrio->currentItem() + 1 ); to.setCompleted( ckbCompleted->isChecked() ); to.setSummary( cmbSum->currentText() ); to.setProgress( cmbProgress->currentItem() * 20 ); } /* * here we will init the basic view * one Popup for each Date Button * and some other signal and slots connection */ void TaskEditorOverViewImpl::init() { QDate curDate = QDate::currentDate(); m_start = m_comp = m_due = curDate; QString str = TimeString::longDateString( curDate ); + + /* Start Date Picker */ m_startPop = new QPopupMenu(this); m_startBook = new DateBookMonth(m_startPop, 0, TRUE ); m_startPop->insertItem( m_startBook ); connect( m_startBook, SIGNAL( dateClicked(int, int, int) ), this, SLOT(slotStartChanged(int, int, int) ) ); /* Due Date Picker */ m_duePop = new QPopupMenu(this); m_dueBook = new DateBookMonth(m_duePop, 0, TRUE ); m_duePop->insertItem( m_dueBook ); connect( m_dueBook, SIGNAL( dateClicked(int, int, int) ), this, SLOT(slotDueChanged(int, int, int) ) ); m_compPop = new QPopupMenu(this); m_compBook = new DateBookMonth(m_compPop, 0, TRUE ); m_compPop->insertItem(m_compBook ); connect( m_compBook, SIGNAL(dateClicked(int, int, int) ), this, SLOT(slotCompletedChanged(int, int, int) ) ); /* * another part of the hack * it's deprecated in Qt2 but * still available in my qt-copy of Qt3.1beta2 */ btnDue->setIsMenuButton( TRUE ); btnStart->setIsMenuButton( TRUE ); btnComp->setIsMenuButton( TRUE ); /* now connect the hack */ diff --git a/core/pim/todo/todoeditor.cpp b/core/pim/todo/todoeditor.cpp index e19ab8d..9b8c5cb 100644 --- a/core/pim/todo/todoeditor.cpp +++ b/core/pim/todo/todoeditor.cpp @@ -1,55 +1,67 @@ #include "otaskeditor.h" #include "todoeditor.h" using namespace Todo; Editor::Editor() { m_accepted = false; + m_self = 0l; } Editor::~Editor() { + delete m_self; + m_self = 0; } OTodo Editor::newTodo( int cur, - QWidget* par) { + QWidget*) { - OTaskEditor e( cur); + OTaskEditor *e = self(); + e->setCaption( QObject::tr("Enter Task") ); + e->init( cur ); #if defined(Q_WS_QWS) || defined(_WS_QWS_) - e.showMaximized(); + e->showMaximized(); #endif - int ret = e.exec(); + int ret = e->exec(); if ( QDialog::Accepted == ret ) { m_accepted = true; }else m_accepted = false; - OTodo ev = e.todo(); + OTodo ev = e->todo(); qWarning("Todo uid"); qWarning("Todo %s %d %d", ev.summary().latin1(), ev.progress(), ev.isCompleted() ); ev.setUid(1); return ev; } OTodo Editor::edit( QWidget *wid, const OTodo& todo ) { - OTaskEditor e( todo ); - e.setCaption( QObject::tr( "Edit Task" ) ); + OTaskEditor *e = self(); + e->init( todo ); + e->setCaption( QObject::tr( "Edit Task" ) ); #if defined(Q_WS_QWS) || defined(_WS_QWS_) - e.showMaximized(); + e->showMaximized(); #endif - int ret = e.exec(); + int ret = e->exec(); - OTodo ev = e.todo(); + OTodo ev = e->todo(); if ( ret == QDialog::Accepted ) m_accepted = true; else m_accepted = false; return ev; } bool Editor::accepted()const { return m_accepted; } +OTaskEditor* Editor::self() { + if (!m_self ) + m_self = new OTaskEditor(0); + + return m_self; +} diff --git a/core/pim/todo/todoeditor.h b/core/pim/todo/todoeditor.h index bbfdcb5..fe30634 100644 --- a/core/pim/todo/todoeditor.h +++ b/core/pim/todo/todoeditor.h @@ -1,25 +1,29 @@ #ifndef OPIE_TODO_EDITOR_H #define OPIE_TODO_EDITOR_H #include <opie/otodo.h> +class OTaskEditor; namespace Todo { class Editor { public: Editor(); ~Editor(); OTodo newTodo( int currentCatId, QWidget* par ); OTodo edit( QWidget* par, const OTodo& ev = OTodo() ); bool accepted()const; + protected: + OTaskEditor* self(); private: bool m_accepted: 1; + OTaskEditor* m_self; }; }; #endif |