-rw-r--r-- | core/pim/todo/mainwindow.cpp | 29 | ||||
-rw-r--r-- | core/pim/todo/mainwindow.h | 16 | ||||
-rw-r--r-- | core/pim/todo/quickedit.cpp | 22 | ||||
-rw-r--r-- | core/pim/todo/quickedit.h | 45 | ||||
-rw-r--r-- | core/pim/todo/quickeditimpl.cpp | 89 | ||||
-rw-r--r-- | core/pim/todo/quickeditimpl.h | 34 | ||||
-rw-r--r-- | core/pim/todo/tableview.cpp | 14 | ||||
-rw-r--r-- | core/pim/todo/todo.pro | 8 |
8 files changed, 247 insertions, 10 deletions
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp index a6d657c..8377573 100644 --- a/core/pim/todo/mainwindow.cpp +++ b/core/pim/todo/mainwindow.cpp | |||
@@ -35,6 +35,8 @@ | |||
35 | #include <qwidgetstack.h> | 35 | #include <qwidgetstack.h> |
36 | #include <qaction.h> | 36 | #include <qaction.h> |
37 | #include <qtimer.h> | 37 | #include <qtimer.h> |
38 | #include <qvbox.h> | ||
39 | #include <qlineedit.h> | ||
38 | 40 | ||
39 | #include <qpe/applnk.h> | 41 | #include <qpe/applnk.h> |
40 | #include <qpe/config.h> | 42 | #include <qpe/config.h> |
@@ -44,6 +46,7 @@ | |||
44 | 46 | ||
45 | #include <opie/otodoaccessvcal.h> | 47 | #include <opie/otodoaccessvcal.h> |
46 | 48 | ||
49 | #include "quickeditimpl.h" | ||
47 | #include "todotemplatemanager.h" | 50 | #include "todotemplatemanager.h" |
48 | #include "templateeditor.h" | 51 | #include "templateeditor.h" |
49 | #include "todoentryimpl.h" | 52 | #include "todoentryimpl.h" |
@@ -198,8 +201,15 @@ void MainWindow::initConfig() { | |||
198 | m_overdue = config.readBoolEntry("ShowOverDue", TRUE ); | 201 | m_overdue = config.readBoolEntry("ShowOverDue", TRUE ); |
199 | } | 202 | } |
200 | void MainWindow::initUI() { | 203 | void MainWindow::initUI() { |
201 | m_stack = new QWidgetStack(this, "main stack"); | 204 | m_mainBox = new QVBox(this, "main box "); |
202 | setCentralWidget( m_stack ); | 205 | m_curQuick = new QuickEditImpl(this, m_mainBox ); |
206 | m_curQuick->signal()->connect( this, SLOT(slotQuickEntered() ) ); | ||
207 | m_quickEdit.append( m_curQuick ); | ||
208 | |||
209 | |||
210 | |||
211 | m_stack = new QWidgetStack(m_mainBox, "main stack"); | ||
212 | setCentralWidget( m_mainBox ); | ||
203 | 213 | ||
204 | setToolBarsMovable( FALSE ); | 214 | setToolBarsMovable( FALSE ); |
205 | 215 | ||
@@ -224,7 +234,7 @@ void MainWindow::initUI() { | |||
224 | this, SLOT(slotNewFromTemplate(int) ) ); | 234 | this, SLOT(slotNewFromTemplate(int) ) ); |
225 | } | 235 | } |
226 | void MainWindow::initViews() { | 236 | void MainWindow::initViews() { |
227 | TableView* tableView = new TableView( this, this ); | 237 | TableView* tableView = new TableView( this, m_stack ); |
228 | m_stack->addWidget( tableView, m_counter++ ); | 238 | m_stack->addWidget( tableView, m_counter++ ); |
229 | m_views.append( tableView ); | 239 | m_views.append( tableView ); |
230 | m_curView = tableView; | 240 | m_curView = tableView; |
@@ -681,3 +691,16 @@ void MainWindow::setReadAhead( uint count ) { | |||
681 | if (m_todoMgr.todoDB() ) | 691 | if (m_todoMgr.todoDB() ) |
682 | m_todoMgr.todoDB()->setReadAhead( count ); | 692 | m_todoMgr.todoDB()->setReadAhead( count ); |
683 | } | 693 | } |
694 | void MainWindow::slotQuickEntered() { | ||
695 | qWarning("entered"); | ||
696 | OTodo todo = quickEditor()->todo(); | ||
697 | if (todo.isEmpty() ) | ||
698 | return; | ||
699 | |||
700 | m_todoMgr.add( todo ); | ||
701 | currentView()->addEvent( todo ); | ||
702 | raiseCurrentView(); | ||
703 | } | ||
704 | QuickEditBase* MainWindow::quickEditor() { | ||
705 | return m_curQuick; | ||
706 | } | ||
diff --git a/core/pim/todo/mainwindow.h b/core/pim/todo/mainwindow.h index 5a18e64..270cbd1 100644 --- a/core/pim/todo/mainwindow.h +++ b/core/pim/todo/mainwindow.h | |||
@@ -37,6 +37,7 @@ | |||
37 | 37 | ||
38 | #include "smalltodo.h" | 38 | #include "smalltodo.h" |
39 | #include "todoview.h" | 39 | #include "todoview.h" |
40 | #include "quickedit.h" | ||
40 | #include "todomanager.h" | 41 | #include "todomanager.h" |
41 | 42 | ||
42 | class QPopupMenu; | 43 | class QPopupMenu; |
@@ -45,7 +46,7 @@ class QToolBar; | |||
45 | class QAction; | 46 | class QAction; |
46 | class QWidgetStack; | 47 | class QWidgetStack; |
47 | class Ir; | 48 | class Ir; |
48 | 49 | class QVBox; | |
49 | 50 | ||
50 | namespace Todo { | 51 | namespace Todo { |
51 | typedef TodoView View; | 52 | typedef TodoView View; |
@@ -53,6 +54,7 @@ namespace Todo { | |||
53 | class Editor; | 54 | class Editor; |
54 | class TodoShow; | 55 | class TodoShow; |
55 | class TemplateEditor; | 56 | class TemplateEditor; |
57 | struct QuickEditBase; | ||
56 | 58 | ||
57 | class MainWindow : public QMainWindow { | 59 | class MainWindow : public QMainWindow { |
58 | Q_OBJECT | 60 | Q_OBJECT |
@@ -83,12 +85,14 @@ namespace Todo { | |||
83 | QString currentCategory()const; | 85 | QString currentCategory()const; |
84 | int currentCatId(); | 86 | int currentCatId(); |
85 | TemplateManager* templateManager(); | 87 | TemplateManager* templateManager(); |
88 | QuickEditBase* quickEditor(); | ||
86 | 89 | ||
87 | void updateTodo( const OTodo& ); | 90 | void updateTodo( const OTodo& ); |
88 | void populateTemplates(); | 91 | void populateTemplates(); |
89 | Editor* currentEditor(); | 92 | Editor* currentEditor(); |
90 | void setReadAhead(uint count ); | 93 | void setReadAhead(uint count ); |
91 | private slots: | 94 | private slots: |
95 | void slotQuickEntered(); | ||
92 | void populateCategories(); | 96 | void populateCategories(); |
93 | void slotReload(); | 97 | void slotReload(); |
94 | void slotFlush(); | 98 | void slotFlush(); |
@@ -109,6 +113,7 @@ private slots: | |||
109 | void raiseCurrentView(); | 113 | void raiseCurrentView(); |
110 | ViewBase* currentView(); | 114 | ViewBase* currentView(); |
111 | ViewBase* m_curView; | 115 | ViewBase* m_curView; |
116 | QuickEditBase* m_curQuick; | ||
112 | Editor* m_curEdit; | 117 | Editor* m_curEdit; |
113 | TodoShow* currentShow(); | 118 | TodoShow* currentShow(); |
114 | TodoShow* m_curShow; | 119 | TodoShow* m_curShow; |
@@ -133,6 +138,13 @@ private slots: | |||
133 | *m_options, | 138 | *m_options, |
134 | *m_view, | 139 | *m_view, |
135 | *m_template; | 140 | *m_template; |
141 | /* box with two rows | ||
142 | * top will be the quick edit | ||
143 | * this will bite my ass once | ||
144 | * we want to have all parts | ||
145 | * exchangeable | ||
146 | */ | ||
147 | QVBox* m_mainBox; | ||
136 | 148 | ||
137 | bool m_syncing:1; | 149 | bool m_syncing:1; |
138 | bool m_deadline:1; | 150 | bool m_deadline:1; |
@@ -141,9 +153,11 @@ private slots: | |||
141 | TodoManager m_todoMgr; | 153 | TodoManager m_todoMgr; |
142 | QString m_curCat; | 154 | QString m_curCat; |
143 | QList<ViewBase> m_views; | 155 | QList<ViewBase> m_views; |
156 | QList<QuickEditBase> m_quickEdit; | ||
144 | uint m_counter; | 157 | uint m_counter; |
145 | TemplateManager* m_tempManager; | 158 | TemplateManager* m_tempManager; |
146 | 159 | ||
160 | |||
147 | private slots: | 161 | private slots: |
148 | void slotShow(int); | 162 | void slotShow(int); |
149 | void slotEdit(int); | 163 | void slotEdit(int); |
diff --git a/core/pim/todo/quickedit.cpp b/core/pim/todo/quickedit.cpp new file mode 100644 index 0000000..edcd48a --- a/dev/null +++ b/core/pim/todo/quickedit.cpp | |||
@@ -0,0 +1,22 @@ | |||
1 | #include "mainwindow.h" | ||
2 | #include "quickedit.h" | ||
3 | |||
4 | using namespace Todo; | ||
5 | |||
6 | // not so interesting part base Implementation | ||
7 | QuickEdit::QuickEdit(MainWindow* main ) | ||
8 | : m_main( main ) { | ||
9 | m_sig = new QSignal(); | ||
10 | } | ||
11 | QuickEdit::~QuickEdit() { | ||
12 | delete m_sig; | ||
13 | } | ||
14 | QSignal* QuickEdit::signal() { | ||
15 | return m_sig; | ||
16 | } | ||
17 | MainWindow* QuickEdit::mainWindow() { | ||
18 | return m_main; | ||
19 | } | ||
20 | void QuickEdit::commit() { | ||
21 | m_sig->activate(); | ||
22 | } | ||
diff --git a/core/pim/todo/quickedit.h b/core/pim/todo/quickedit.h new file mode 100644 index 0000000..5fe74fe --- a/dev/null +++ b/core/pim/todo/quickedit.h | |||
@@ -0,0 +1,45 @@ | |||
1 | #ifndef OPIE_QUICK_EDIT_H | ||
2 | #define OPIE_QUICK_EDIT_H | ||
3 | |||
4 | #include <qsignal.h> | ||
5 | #include <qwidget.h> | ||
6 | |||
7 | #include <opie/otodo.h> | ||
8 | |||
9 | namespace Todo{ | ||
10 | class MainWindow; | ||
11 | struct QuickEditBase { | ||
12 | virtual OTodo todo()const = 0l; | ||
13 | virtual QSignal* signal() = 0l; | ||
14 | virtual QWidget* widget() = 0l; | ||
15 | }; | ||
16 | /* | ||
17 | * this is my second try | ||
18 | * of signal and slots with namespaces | ||
19 | * and templates | ||
20 | * I use a different approach now | ||
21 | * I give a QSignal away | ||
22 | * and have a protected method called emit | ||
23 | */ | ||
24 | /** | ||
25 | * Quick edit is meant to quickly enter | ||
26 | * OTodos in a fast way | ||
27 | */ | ||
28 | class QuickEdit : public QuickEditBase{ | ||
29 | public: | ||
30 | QuickEdit(MainWindow* main ); | ||
31 | virtual ~QuickEdit(); | ||
32 | //OTodo todo()const; | ||
33 | QSignal* signal(); | ||
34 | //QWidget* widget(); | ||
35 | protected: | ||
36 | MainWindow* mainWindow(); | ||
37 | void commit(); | ||
38 | private: | ||
39 | MainWindow* m_main; | ||
40 | QSignal* m_sig; | ||
41 | }; | ||
42 | }; | ||
43 | |||
44 | |||
45 | #endif | ||
diff --git a/core/pim/todo/quickeditimpl.cpp b/core/pim/todo/quickeditimpl.cpp new file mode 100644 index 0000000..2dd5b61 --- a/dev/null +++ b/core/pim/todo/quickeditimpl.cpp | |||
@@ -0,0 +1,89 @@ | |||
1 | #include <qlineedit.h> | ||
2 | |||
3 | #include <opie/oclickablelabel.h> | ||
4 | |||
5 | #include "mainwindow.h" | ||
6 | #include "quickeditimpl.h" | ||
7 | |||
8 | |||
9 | QuickEditImpl::QuickEditImpl( Todo::MainWindow* win, QWidget* arent ) | ||
10 | : QHBox(arent), Todo::QuickEdit(win) { | ||
11 | m_lbl = new OClickableLabel(this ); | ||
12 | m_lbl->setMinimumWidth(12); | ||
13 | m_lbl->setText("3"); | ||
14 | |||
15 | m_edit = new QLineEdit(this ); | ||
16 | |||
17 | m_enter = new OClickableLabel(this); | ||
18 | m_enter->setText("Enter"); | ||
19 | |||
20 | m_more = new OClickableLabel(this); | ||
21 | m_more->setText("More"); | ||
22 | |||
23 | |||
24 | // connect | ||
25 | connect(m_lbl, SIGNAL(clicked() ), | ||
26 | this, SLOT(slotPrio()) ); | ||
27 | connect(m_enter, SIGNAL(clicked() ), | ||
28 | this, SLOT(slotEnter() ) ); | ||
29 | connect(m_more, SIGNAL(clicked() ), | ||
30 | this, SLOT(slotMore() ) ); | ||
31 | |||
32 | m_menu = 0l; | ||
33 | reinit(); | ||
34 | setMaximumHeight( m_edit->sizeHint().height() ); | ||
35 | } | ||
36 | QuickEditImpl::~QuickEditImpl() { | ||
37 | |||
38 | } | ||
39 | OTodo QuickEditImpl::todo()const { | ||
40 | return m_todo; | ||
41 | } | ||
42 | QWidget* QuickEditImpl::widget() { | ||
43 | return this; | ||
44 | } | ||
45 | QSize QuickEditImpl::sizeHint()const{ | ||
46 | return m_edit->sizeHint(); | ||
47 | } | ||
48 | void QuickEditImpl::slotEnter() { | ||
49 | OTodo todo; | ||
50 | |||
51 | |||
52 | if (!m_edit->text().isEmpty() ) { | ||
53 | todo.setUid(1 ); // new uid | ||
54 | todo.setPriority( m_lbl->text().toInt() ); | ||
55 | todo.setSummary( m_edit->text() ); | ||
56 | if ( mainWindow()->currentCatId() != 0 ) | ||
57 | todo.setCategories( mainWindow()->currentCatId() ); | ||
58 | |||
59 | m_todo = todo; | ||
60 | commit(); | ||
61 | } | ||
62 | m_todo = todo; | ||
63 | reinit(); | ||
64 | } | ||
65 | void QuickEditImpl::slotPrio() { | ||
66 | m_state++; | ||
67 | if (m_state > 2 ) | ||
68 | m_state = 0; | ||
69 | |||
70 | switch(m_state ) { | ||
71 | case 0: | ||
72 | m_lbl->setText( "1" ); | ||
73 | break; | ||
74 | case 2: | ||
75 | m_lbl->setText( "5" ); | ||
76 | break; | ||
77 | case 1: | ||
78 | default: | ||
79 | m_lbl->setText( "3"); | ||
80 | break; | ||
81 | } | ||
82 | } | ||
83 | void QuickEditImpl::slotMore() { | ||
84 | } | ||
85 | void QuickEditImpl::reinit() { | ||
86 | m_state = 1; | ||
87 | m_lbl->setText("3"); | ||
88 | m_edit->clear(); | ||
89 | } | ||
diff --git a/core/pim/todo/quickeditimpl.h b/core/pim/todo/quickeditimpl.h new file mode 100644 index 0000000..d0f6c69 --- a/dev/null +++ b/core/pim/todo/quickeditimpl.h | |||
@@ -0,0 +1,34 @@ | |||
1 | #ifndef OPIE_QUICK_EDIT_IMPL_H | ||
2 | #define OPIE_QUICK_EDIT_IMPL_H | ||
3 | |||
4 | #include <qhbox.h> | ||
5 | |||
6 | #include "quickedit.h" | ||
7 | |||
8 | class QLineEdit; | ||
9 | class QLabel; | ||
10 | |||
11 | class QuickEditImpl : public QHBox, public Todo::QuickEdit { | ||
12 | Q_OBJECT | ||
13 | public: | ||
14 | QuickEditImpl( Todo::MainWindow* win , QWidget* parent); | ||
15 | ~QuickEditImpl(); | ||
16 | OTodo todo()const; | ||
17 | QWidget* widget(); | ||
18 | QSize sizeHint()const; | ||
19 | private slots: | ||
20 | void slotEnter(); | ||
21 | void slotPrio(); | ||
22 | void slotMore(); | ||
23 | private: | ||
24 | void reinit(); | ||
25 | int m_state; | ||
26 | QLabel* m_lbl; | ||
27 | QLineEdit* m_edit; | ||
28 | QLabel* m_enter; | ||
29 | QLabel* m_more; | ||
30 | QPopupMenu* m_menu; | ||
31 | OTodo m_todo; | ||
32 | }; | ||
33 | |||
34 | #endif | ||
diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp index f4b898f..34b8b3c 100644 --- a/core/pim/todo/tableview.cpp +++ b/core/pim/todo/tableview.cpp | |||
@@ -126,8 +126,10 @@ void TableView::showOverDue( bool ) { | |||
126 | } | 126 | } |
127 | 127 | ||
128 | void TableView::updateView( ) { | 128 | void TableView::updateView( ) { |
129 | qWarning("update view"); | ||
129 | m_row = false; | 130 | m_row = false; |
130 | startTimer( 2000 ); | 131 | static int id; |
132 | id = startTimer(2000 ); | ||
131 | /* FIXME we want one page to be read! | 133 | /* FIXME we want one page to be read! |
132 | * | 134 | * |
133 | * Calculate that screensize | 135 | * Calculate that screensize |
@@ -148,6 +150,8 @@ void TableView::updateView( ) { | |||
148 | QTime t; | 150 | QTime t; |
149 | t.start(); | 151 | t.start(); |
150 | setNumRows( it.count() ); | 152 | setNumRows( it.count() ); |
153 | if ( it.count() == 0 ) | ||
154 | killTimer(id); | ||
151 | int elc = time.elapsed(); | 155 | int elc = time.elapsed(); |
152 | qWarning("Adding took %d", elc/1000 ); | 156 | qWarning("Adding took %d", elc/1000 ); |
153 | setUpdatesEnabled( true ); | 157 | setUpdatesEnabled( true ); |
@@ -162,13 +166,12 @@ void TableView::setTodo( int, const OTodo&) { | |||
162 | sort(); | 166 | sort(); |
163 | 167 | ||
164 | /* repaint */ | 168 | /* repaint */ |
165 | QTable::update(); | 169 | repaint(); |
166 | } | 170 | } |
167 | void TableView::addEvent( const OTodo&) { | 171 | void TableView::addEvent( const OTodo&) { |
168 | sort(); | ||
169 | 172 | ||
170 | /* fix problems of not showing the 'Haken' */ | 173 | /* fix problems of not showing the 'Haken' */ |
171 | QTable::repaint(); | 174 | updateView(); |
172 | } | 175 | } |
173 | /* | 176 | /* |
174 | * find the event | 177 | * find the event |
@@ -428,6 +431,9 @@ void TableView::slotPriority() { | |||
428 | * | 431 | * |
429 | */ | 432 | */ |
430 | void TableView::timerEvent( QTimerEvent* ev ) { | 433 | void TableView::timerEvent( QTimerEvent* ev ) { |
434 | if (sorted().count() == 0 ) | ||
435 | return; | ||
436 | |||
431 | int row = currentRow(); | 437 | int row = currentRow(); |
432 | qWarning("TimerEvent %d", row); | 438 | qWarning("TimerEvent %d", row); |
433 | if ( m_row ) { | 439 | if ( m_row ) { |
diff --git a/core/pim/todo/todo.pro b/core/pim/todo/todo.pro index f26acee..d432e78 100644 --- a/core/pim/todo/todo.pro +++ b/core/pim/todo/todo.pro | |||
@@ -15,7 +15,9 @@ HEADERS = smalltodo.h \ | |||
15 | textviewshow.h \ | 15 | textviewshow.h \ |
16 | templateeditor.h \ | 16 | templateeditor.h \ |
17 | templatedialog.h \ | 17 | templatedialog.h \ |
18 | templatedialogimpl.h | 18 | templatedialogimpl.h \ |
19 | quickedit.h \ | ||
20 | quickeditimpl.h | ||
19 | 21 | ||
20 | SOURCES= smalltodo.cpp \ | 22 | SOURCES= smalltodo.cpp \ |
21 | todomanager.cpp \ | 23 | todomanager.cpp \ |
@@ -31,7 +33,9 @@ SOURCES = smalltodo.cpp \ | |||
31 | textviewshow.cpp \ | 33 | textviewshow.cpp \ |
32 | templateeditor.cpp \ | 34 | templateeditor.cpp \ |
33 | templatedialog.cpp \ | 35 | templatedialog.cpp \ |
34 | templatedialogimpl.cpp | 36 | templatedialogimpl.cpp \ |
37 | quickeditimpl.cpp \ | ||
38 | quickedit.cpp | ||
35 | 39 | ||
36 | INTERFACES= todoentry.ui | 40 | INTERFACES= todoentry.ui |
37 | TARGET = todolist | 41 | TARGET = todolist |