|
1 *************************************** |
|
2 * * |
|
3 * TODO: OSSP titraq Specification * |
|
4 * * |
|
5 *************************************** |
|
6 |
|
7 Must do |
|
8 ------- |
|
9 Q_CHECK_PTR |
|
10 public/private |
|
11 Ensure rethrows from second loadData on upwards |
|
12 Report errors in all slot code |
|
13 Rework error handling in prefs |
|
14 Generally maintain Preference class |
|
15 Implement missing interface methods |
|
16 Review destruction of all members, compare with setupPrefs |
|
17 Some menus are defined QPopupMenu in header, some in code |
|
18 Memory optimization needed in tidataops |
|
19 Check all identifiers for undeutig unique scope |
|
20 Remove magic numbers from cpp files to titconst like TITRAQ_INDEXREMARK |
|
21 Some signals implemented in Titraqform really belong in satellite classes |
|
22 Write M4 macro for detecting cuserid, and prefer it in ac_assist |
|
23 configure soll ueberpruefen ob libqt[-mt] threads braucht, |
|
24 dann wenn so, soll den LIBS -pthread hardgecodet haben |
|
25 Read config location from optional --confgen autoconf location |
|
26 IDs in as_const.h much better choosing, so they make sense |
|
27 Be consistent with szQString vs QString var names |
|
28 After every result write a status bar message |
|
29 On multiple selection, no text should appear in edit ctrls |
|
30 Make consistent setEdition(), setDirty() default parameters |
|
31 Use namespace 'AS' or unique identifier 'AS' for all classnames |
|
32 Unify class mycl = class(), class mycl(), class *pMycl, auto_ptr<class *> |
|
33 Win32 code in User class is only half written, and incomplete homedir |
|
34 Verify routine consistently scans all fields on load and new entries |
|
35 Remove all exception raises from slot code |
|
36 New doc, new entry, change text in table, close... No verify save! |
|
37 Might not need classes Amount and Tableitem at all |
|
38 Mach mal mit den 'autobackup' und 'fextension' Optionen von prefs |
|
39 Check for outdated config file version |
|
40 Make status bar message, qWarning, qDebug, and Popup messages consistent |
|
41 For which purposes do messages go in each category? |
|
42 Label methods and parameters throughout as const ... const, use & |
|
43 Yank out all #include from headers, replace with class ...; protos |
|
44 Check for empty amount field in getWeektotals before Hashtasks[Convstring] += |
|
45 Accountlistbox is sorted both in assist and dataops with maps |
|
46 Verify that unviewable rows are not redrawn cerr << "Rownum" << nRow << endl; |
|
47 Also, use bool QTable::isRowHidden (int nRow) const |
|
48 Don't raise the question 'Save before quitting' when no contents were changed |
|
49 |
|
50 Bugs (? = unverified) |
|
51 --------------------- |
|
52 Overidden paintCell() might not work when called asynchronously? |
|
53 Sometimes a click on add or delete toolbar button is ignored? |
|
54 When multiple new rows are added sometimes wrong row shading? |
|
55 When sorting rows, sometimes a false extra highlight appears |
|
56 Disabled actions still show enabled icons in menu popups |
|
57 Pressing escape on task data cells does not exit edit mode |
|
58 On win32, all or some file reads and writes probably need IO_Translate? |
|
59 Method saveData(stream) must write to a new file, otherwise writes data pattern |
|
60 CRCs are being generated before parsing of "" is finished? |
|
61 Double click on column separator is broken again |
|
62 Zeitabzug moeglicherweise falsch wenn 23:00-01:00=? |
|
63 Statustext soll nicht neben Pixmaps erscheinen |
|
64 Loesch mal alle Text vom Task Editctrl, dann drueck mal Obentaste |
|
65 Memory leak in vector<QRadioButton> as_panel |
|
66 Opendoc, schau amount unten Knopf (ist dimmed) |
|
67 Reporting only works if event data is sorted by date |
|
68 Press Return then Tab many times to see invalid selections |
|
69 Does not enter edit mode for a cell when double click |
|
70 Some versions (as.de.cw.net:/v/as-old/sw), double click to |
|
71 edit a cell, add two characters, click X to close without |
|
72 leaving the cell. It should ask to save doc, but doesn't. |
|
73 |
|
74 Nice to have |
|
75 ------------ |
|
76 Implement drag and drop selected row swapping |
|
77 Implement an unlimited and generic undo and redo buffer class |
|
78 Support pasting into as_gui from other app (like vim) |
|
79 Add optional automatic file personal data file backup |
|
80 Make edit control window optional through preferences |
|
81 Add customizable column ordering by click and drag |
|
82 Soll mehr intuitive, mit sekondaer/dritte Keycolumn |
|
83 CRC und Rev sollen nicht in gleiche Methode berechnet |
|
84 No need to have upd slots for non-changeable upd controls |
|
85 Before openDoc, closeEvent should be used instead of new code |
|
86 Align CRC field data to left edge of table items |
|
87 Make Simplefile class non-Qt specific |
|
88 Read and write karm format files with file extension detection |
|
89 Offer general option 'Use vim keymap' |
|
90 Text revisions |
|
91 Title case, sentence case, or lower case |
|
92 Past tense, third person, style, usage... |
|
93 Make consistent when version is shown in titlebar of all dialogs |
|
94 Runtime help system should not depend on installtime documentation |
|
95 App should start even if no accounts file is found |
|
96 Fully vimize all input widgets by subclassing them (w - back word) |
|
97 Reload accountlist on startup, but reload during 'Open Doc' as well |
|
98 Better file validation, instead of just single line validateData op |
|
99 Freetext field, for copyright or some announcement (this data isn't |
|
100 accurate enough for billing purposes). Field can be optionally |
|
101 shown above main table, but always dimmed to avoid accidental edit. |
|
102 Check for account list updates (checkbox), to allow a local user to |
|
103 query a CORBA or SOAP server for a new account list via accessors: |
|
104 U32 Account::getCrc(void) |
|
105 Acctlist Account::getData(void) |
|
106 Reimplement void QTable::swapRows, so that rows can be moved easily |
|
107 Update edit controls only after return from TiTable::createEditor() |
|
108 |
|
109 Screwey user notes ;-) |
|
110 ---------------------- |
|
111 cs: 'd' should not delete at once but flag the record as deleted. Use '$' to sync (similar to mutt) |
|
112 cs: first 'TAB' should complete (if possible), second 'TAB' should open selection box (similar to bash) |
|
113 cs: line numberscould be referenced when entering accounts ala bash history ('!4' = record #4) |
|
114 mlelstv: 24:00 muss als Valideintrag im Finishfeld erlaubt |
|
115 thl: / should enable the user to search for something |
|
116 thl: using = should force a recalculation for a time field |
|
117 thl: using ~ should round a time field to the next quarter (configurable) |
|
118 |
|
119 Architectural |
|
120 ------------- |
|
121 Decouple form, preferences, and RPC classes |
|
122 Remove common class behaviours (quitApp, close...) to abstract classes |
|
123 |
|
124 Win32 |
|
125 ----- |
|
126 Rework username, homedir, and confdaten (hive) logic |
|
127 |
|
128 Preferences |
|
129 ----------- |
|
130 <option name wert> Hintergrund Functionalitaet |
|
131 <aspect name wert> Sichtliche Functionalitaet |
|
132 <session name wert> Automatisch gespeicherte |
|
133 <rule name expr cond> Amount = Finish - Start (mussen alle da z.B.) |
|
134 <alias name wert> Nutzbar lange Taskzeilen zu abstrahieren |
|
135 <macro name = 'Reuse'> |
|
136 Selectiere aktuelle und 3 vorherige Reihen |
|
137 Copy |
|
138 Geh zu letzte Reihe |
|
139 Paste |
|
140 </macro name = 'Reuse'> |
|
141 <macro name = 'Append'> |
|
142 Geh zu letzte Reihe |
|
143 Zufug Reihe |
|
144 </macro name = 'Append'> |
|
145 |
|
146 Code snippits |
|
147 ------------- |
|
148 // Portable processes |
|
149 QProcess *Proc; |
|
150 Proc = new QProcess; |
|
151 Proc->setArguments("/usr/local/bin/nada"); |
|
152 bool ok = Proc->start(); |
|
153 |
|
154 > Does anyone know how to set the WhatsThis text for a QPushButton?. |
|
155 > |
|
156 > Met vriendelijke groet |
|
157 Use the static QWhatsThis::add() |
|
158 |
|
159 Document |
|
160 -------- |
|
161 Use doxygen for C++ interface documentation. |
|
162 |
|
163 Project plan |
|
164 ------------ |
|
165 Prototype |
|
166 Release v0.8 Milestone 1, Alpha |
|
167 Release v0.9 Milestone 2, Beta |
|
168 Release v1.0 Milestone 3, |
|
169 Release v1.2 Milestone 4, |
|
170 |
|
171 Requirements |
|
172 ------------ |
|
173 |
|
174 Deliverables |
|
175 ------------ |
|
176 Binaries |
|
177 titraq Verwendung |
|
178 |
|
179 Designdocs |
|
180 titraq_design.ps Systemdiagramme |
|
181 |
|
182 Manpage |
|
183 titraq.1 Hauptinfo |
|
184 titraq.conf.5 Beschreibung des Configdatei |
|
185 |
|
186 Geliefert |
|
187 titraq.conf Ausgekommentet Beispieldatei |
|
188 |
|
189 Pseudocode |
|
190 ---------- |
|
191 initialize |
|
192 parse command line |
|
193 parse titraq.conf file |
|
194 load titraq.dat file |
|
195 show control window |
|
196 wait for quit |
|
197 save titraq.dat file |
|
198 finish |
|
199 |
|
200 Test case |
|
201 --------- |
|
202 Pre: |
|
203 tar zxvf titraq-0.9.tar |
|
204 cd titraq-0.9 |
|
205 ./configure |
|
206 make |
|
207 su |
|
208 make install |
|
209 |
|
210 Assume: |
|
211 OS has Qt 3.0.6 or newer multithreaded library |
|
212 |
|
213 Begin: |
|
214 $ titraq |
|
215 |
|
216 Output: |
|
217 Post: |
|
218 Procedure: |
|
219 |
|
220 |
|
221 **************************** |
|
222 * * |
|
223 * Inadequacies of as-gui * |
|
224 * * |
|
225 **************************** |
|
226 |
|
227 Architecture Inconsistencies |
|
228 o Some custom classes are thinly veiled Qt classes. Others |
|
229 are completely different, but with similar functionality. |
|
230 o Several classes are immense, and should be split into |
|
231 into easier to read pieces. |
|
232 o Some classes should be abstracted and new subclasses built. |
|
233 |
|
234 Implementation |
|
235 o Too procedural for my taste. Many methods should be merged |
|
236 or split and grouped into new classes or such. |
|
237 |
|
238 Naming |
|
239 o Hungarian notation is only used to 90% potential. |
|
240 o Inconsistent length and abbreviations. |
|
241 o Conventions suggested on Qt website not followed. |
|
242 |
|
243 Error handling |
|
244 o No standardized return values. |
|
245 o C++ exceptions used inconsistently. |
|
246 |
|
247 Memory handling |
|
248 o Smart pointers should be used in all exception code blocks. |
|
249 o A consistent policy of automatic versus dynamic pointer |
|
250 variables should be used in all classes. |