summaryrefslogtreecommitdiff
authorzecke <zecke>2002-10-19 02:32:30 (UTC)
committer zecke <zecke>2002-10-19 02:32:30 (UTC)
commit47ea36b68b6c7f12ae3bb777c89d813b4e1360a3 (patch) (unidiff)
treed25ec05f1ccf0db36194d5f2879fe543a34620c2
parent7871e87fbd796c57374b23ec91890962b2ef1fe9 (diff)
downloadopie-47ea36b68b6c7f12ae3bb777c89d813b4e1360a3.zip
opie-47ea36b68b6c7f12ae3bb777c89d813b4e1360a3.tar.gz
opie-47ea36b68b6c7f12ae3bb777c89d813b4e1360a3.tar.bz2
Fix crash if todolist is empty
Fix paint update bugs.. knewly created items did not show up. an sort() QTable::update() is and was not enough A new feature. It's a quick entering method. It lacks icons and some more stuff but I like it Now redoing the Editor Dialog
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/todo/mainwindow.cpp29
-rw-r--r--core/pim/todo/mainwindow.h16
-rw-r--r--core/pim/todo/quickedit.cpp22
-rw-r--r--core/pim/todo/quickedit.h45
-rw-r--r--core/pim/todo/quickeditimpl.cpp89
-rw-r--r--core/pim/todo/quickeditimpl.h34
-rw-r--r--core/pim/todo/tableview.cpp14
-rw-r--r--core/pim/todo/todo.pro8
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
@@ -32,21 +32,24 @@
32#include <qmessagebox.h> 32#include <qmessagebox.h>
33#include <qtoolbar.h> 33#include <qtoolbar.h>
34#include <qpopupmenu.h> 34#include <qpopupmenu.h>
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>
41#include <qpe/ir.h> 43#include <qpe/ir.h>
42#include <qpe/resource.h> 44#include <qpe/resource.h>
43#include <qpe/qpemessagebox.h> 45#include <qpe/qpemessagebox.h>
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"
50#include "tableview.h" 53#include "tableview.h"
51 54
52#include "textviewshow.h" 55#include "textviewshow.h"
@@ -195,14 +198,21 @@ void MainWindow::initConfig() {
195 m_completed = config.readBoolEntry( "ShowComplete", TRUE ); 198 m_completed = config.readBoolEntry( "ShowComplete", TRUE );
196 m_curCat = config.readEntry( "Category", QString::null ); 199 m_curCat = config.readEntry( "Category", QString::null );
197 m_deadline = config.readBoolEntry( "ShowDeadLine", TRUE); 200 m_deadline = config.readBoolEntry( "ShowDeadLine", TRUE);
198 m_overdue = config.readBoolEntry("ShowOverDue", TRUE ); 201 m_overdue = config.readBoolEntry("ShowOverDue", TRUE );
199} 202}
200void MainWindow::initUI() { 203void 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
206 m_tool = new QToolBar( this ); 216 m_tool = new QToolBar( this );
207 m_tool->setHorizontalStretchable( TRUE ); 217 m_tool->setHorizontalStretchable( TRUE );
208 218
@@ -221,13 +231,13 @@ void MainWindow::initUI() {
221 connect(m_catMenu, SIGNAL(activated(int) ), 231 connect(m_catMenu, SIGNAL(activated(int) ),
222 this, SLOT(setCategory(int) ) ); 232 this, SLOT(setCategory(int) ) );
223 connect(m_template, SIGNAL(activated(int) ), 233 connect(m_template, SIGNAL(activated(int) ),
224 this, SLOT(slotNewFromTemplate(int) ) ); 234 this, SLOT(slotNewFromTemplate(int) ) );
225} 235}
226void MainWindow::initViews() { 236void 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;
231 connectBase( tableView ); 241 connectBase( tableView );
232 /* add QString type + QString configname to 242 /* add QString type + QString configname to
233 * the View menu 243 * the View menu
@@ -678,6 +688,19 @@ void MainWindow::updateList() {
678 m_todoMgr.updateList(); 688 m_todoMgr.updateList();
679} 689}
680void MainWindow::setReadAhead( uint count ) { 690void 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}
694void 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}
704QuickEditBase* 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
@@ -34,28 +34,30 @@
34 34
35#include <opie/otodoaccess.h> 35#include <opie/otodoaccess.h>
36#include <opie/otodo.h> 36#include <opie/otodo.h>
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
42class QPopupMenu; 43class QPopupMenu;
43class QMenuBar; 44class QMenuBar;
44class QToolBar; 45class QToolBar;
45class QAction; 46class QAction;
46class QWidgetStack; 47class QWidgetStack;
47class Ir; 48class Ir;
48 49class QVBox;
49 50
50namespace Todo { 51namespace Todo {
51 typedef TodoView View; 52 typedef TodoView View;
52 class TemplateManager; 53 class TemplateManager;
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
59 public: 61 public:
60 MainWindow( QWidget *parent = 0, 62 MainWindow( QWidget *parent = 0,
61 const char* name = 0 ); 63 const char* name = 0 );
@@ -80,18 +82,20 @@ namespace Todo {
80 bool showCompleted()const; 82 bool showCompleted()const;
81 bool showDeadline()const; 83 bool showDeadline()const;
82 bool showOverDue()const; 84 bool showOverDue()const;
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 );
91private slots: 94private slots:
95 void slotQuickEntered();
92 void populateCategories(); 96 void populateCategories();
93 void slotReload(); 97 void slotReload();
94 void slotFlush(); 98 void slotFlush();
95 99
96 protected: 100 protected:
97 void closeEvent( QCloseEvent* e ); 101 void closeEvent( QCloseEvent* e );
@@ -106,12 +110,13 @@ private slots:
106 void initEditor(); 110 void initEditor();
107 void initShow(); 111 void initShow();
108 void initTemplate(); 112 void initTemplate();
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;
115 TemplateEditor* currentTemplateEditor(); 120 TemplateEditor* currentTemplateEditor();
116 TemplateEditor* m_curTempEd; 121 TemplateEditor* m_curTempEd;
117 122
@@ -130,23 +135,32 @@ private slots:
130 QWidgetStack *m_stack; 135 QWidgetStack *m_stack;
131 QPopupMenu* m_catMenu, 136 QPopupMenu* m_catMenu,
132 *m_edit, 137 *m_edit,
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;
139 bool m_completed:1; 151 bool m_completed:1;
140 bool m_overdue:1; 152 bool m_overdue:1;
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);
150private slots: 164private slots:
151 void slotUpdate3( QWidget* ); 165 void slotUpdate3( QWidget* );
152 void slotNewFromTemplate(int id ); 166 void slotNewFromTemplate(int id );
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
4using namespace Todo;
5
6// not so interesting part base Implementation
7QuickEdit::QuickEdit(MainWindow* main )
8 : m_main( main ) {
9 m_sig = new QSignal();
10}
11QuickEdit::~QuickEdit() {
12 delete m_sig;
13}
14QSignal* QuickEdit::signal() {
15 return m_sig;
16}
17MainWindow* QuickEdit::mainWindow() {
18 return m_main;
19}
20void 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
9namespace 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
9QuickEditImpl::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}
36QuickEditImpl::~QuickEditImpl() {
37
38}
39OTodo QuickEditImpl::todo()const {
40 return m_todo;
41}
42QWidget* QuickEditImpl::widget() {
43 return this;
44}
45QSize QuickEditImpl::sizeHint()const{
46 return m_edit->sizeHint();
47}
48void 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}
65void 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}
83void QuickEditImpl::slotMore() {
84}
85void 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
8class QLineEdit;
9class QLabel;
10
11class QuickEditImpl : public QHBox, public Todo::QuickEdit {
12 Q_OBJECT
13public:
14 QuickEditImpl( Todo::MainWindow* win , QWidget* parent);
15 ~QuickEditImpl();
16 OTodo todo()const;
17 QWidget* widget();
18 QSize sizeHint()const;
19private slots:
20 void slotEnter();
21 void slotPrio();
22 void slotMore();
23private:
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
@@ -123,14 +123,16 @@ QString TableView::currentRepresentation() {
123void TableView::showOverDue( bool ) { 123void TableView::showOverDue( bool ) {
124 clear(); 124 clear();
125 updateView(); 125 updateView();
126} 126}
127 127
128void TableView::updateView( ) { 128void 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
134 */ 136 */
135 todoWindow()->setReadAhead( 4 ); 137 todoWindow()->setReadAhead( 4 );
136 sort(); 138 sort();
@@ -145,12 +147,14 @@ void TableView::updateView( ) {
145 setUpdatesEnabled( false ); 147 setUpdatesEnabled( false );
146 viewport()->setUpdatesEnabled( false ); 148 viewport()->setUpdatesEnabled( false );
147 149
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 );
154 viewport()->setUpdatesEnabled( true ); 158 viewport()->setUpdatesEnabled( true );
155 viewport()->update(); 159 viewport()->update();
156 160
@@ -159,19 +163,18 @@ void TableView::updateView( ) {
159 qWarning("adding took %d", el/1000 ); 163 qWarning("adding took %d", el/1000 );
160} 164}
161void TableView::setTodo( int, const OTodo&) { 165void TableView::setTodo( int, const OTodo&) {
162 sort(); 166 sort();
163 167
164 /* repaint */ 168 /* repaint */
165 QTable::update(); 169 repaint();
166} 170}
167void TableView::addEvent( const OTodo&) { 171void 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
175 * and then replace the complete row 178 * and then replace the complete row
176 */ 179 */
177void TableView::replaceEvent( const OTodo& ev) { 180void TableView::replaceEvent( const OTodo& ev) {
@@ -425,12 +428,15 @@ void TableView::slotPriority() {
425 * filled enough. 428 * filled enough.
426 * We will try to read ahead 4 items in both ways 429 * We will try to read ahead 4 items in both ways
427 * up and down. On odd or even we will currentRow()+-4 or +-9 430 * up and down. On odd or even we will currentRow()+-4 or +-9
428 * 431 *
429 */ 432 */
430void TableView::timerEvent( QTimerEvent* ev ) { 433void 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 ) {
434 int ro = row-4; 440 int ro = row-4;
435 if (ro < 0 ) ro = 0; 441 if (ro < 0 ) ro = 0;
436 sorted()[ro]; 442 sorted()[ro];
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
@@ -12,13 +12,15 @@ HEADERS = smalltodo.h \
12 todotemplatemanager.h \ 12 todotemplatemanager.h \
13 todoeditor.h \ 13 todoeditor.h \
14 todoshow.h \ 14 todoshow.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 \
22 mainwindow.cpp \ 24 mainwindow.cpp \
23 main.cpp \ 25 main.cpp \
24 todoentryimpl.cpp \ 26 todoentryimpl.cpp \
@@ -28,13 +30,15 @@ SOURCES = smalltodo.cpp \
28 todotemplatemanager.cpp \ 30 todotemplatemanager.cpp \
29 todoeditor.cpp \ 31 todoeditor.cpp \
30 todoshow.cpp \ 32 todoshow.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
38INCLUDEPATH += $(OPIEDIR)/include 42INCLUDEPATH += $(OPIEDIR)/include
39 DEPENDPATH+= $(OPIEDIR)/include 43 DEPENDPATH+= $(OPIEDIR)/include
40LIBS += -lqpe -lopie 44LIBS += -lqpe -lopie