Fri, 28 Nov 2008 11:21:08 +0100
Fork project trunk at version 0.7.7 to maintain for future usage.
The original Cable & Wireless development team no longer exists.
The OSSP CVS repository is unavailable (cvs co ossp-pkg/as fails),
however http://cvs.ossp.org/dirview?d=ossp-pkg/as/as-gui is working.
1 ***************************************
2 * *
3 * TODO: OSSP titraq Specification *
4 * *
5 ***************************************
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
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.
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()
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)
119 Architectural
120 -------------
121 Decouple form, preferences, and RPC classes
122 Remove common class behaviours (quitApp, close...) to abstract classes
124 Win32
125 -----
126 Rework username, homedir, and confdaten (hive) logic
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'>
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();
154 > Does anyone know how to set the WhatsThis text for a QPushButton?.
155 >
156 > Met vriendelijke groet
157 Use the static QWhatsThis::add()
159 Document
160 --------
161 Use doxygen for C++ interface documentation.
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,
171 Requirements
172 ------------
174 Deliverables
175 ------------
176 Binaries
177 titraq Verwendung
179 Designdocs
180 titraq_design.ps Systemdiagramme
182 Manpage
183 titraq.1 Hauptinfo
184 titraq.conf.5 Beschreibung des Configdatei
186 Geliefert
187 titraq.conf Ausgekommentet Beispieldatei
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
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
210 Assume:
211 OS has Qt 3.0.6 or newer multithreaded library
213 Begin:
214 $ titraq
216 Output:
217 Post:
218 Procedure:
221 ****************************
222 * *
223 * Inadequacies of as-gui *
224 * *
225 ****************************
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.
234 Implementation
235 o Too procedural for my taste. Many methods should be merged
236 or split and grouped into new classes or such.
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.
243 Error handling
244 o No standardized return values.
245 o C++ exceptions used inconsistently.
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.