Thu, 06 Aug 2009 13:21:30 +0200
Remove seemingly declarations unnecessary according to Qt 4.5.2 headers.
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 Appealing billing features
110 --------------------------
111 'Billable' column checkbox
112 Chroot type reporting (for a single customer)
114 Screwey user notes ;-)
115 ----------------------
116 cs: 'd' should not delete at once but flag the record as deleted. Use '$' to sync (similar to mutt)
117 cs: first 'TAB' should complete (if possible), second 'TAB' should open selection box (similar to bash)
118 cs: line numberscould be referenced when entering accounts ala bash history ('!4' = record #4)
119 mlelstv: 24:00 muss als Valideintrag im Finishfeld erlaubt
120 thl: / should enable the user to search for something
121 thl: using = should force a recalculation for a time field
122 thl: using ~ should round a time field to the next quarter (configurable)
124 Architectural
125 -------------
126 Decouple form, preferences, and RPC classes
127 Remove common class behaviours (quitApp, close...) to abstract classes
129 Win32
130 -----
131 Rework username, homedir, and confdaten (hive) logic
133 Preferences
134 -----------
135 <option name wert> Hintergrund Functionalitaet
136 <aspect name wert> Sichtliche Functionalitaet
137 <session name wert> Automatisch gespeicherte
138 <rule name expr cond> Amount = Finish - Start (mussen alle da z.B.)
139 <alias name wert> Nutzbar lange Taskzeilen zu abstrahieren
140 <macro name = 'Reuse'>
141 Selectiere aktuelle und 3 vorherige Reihen
142 Copy
143 Geh zu letzte Reihe
144 Paste
145 </macro name = 'Reuse'>
146 <macro name = 'Append'>
147 Geh zu letzte Reihe
148 Zufug Reihe
149 </macro name = 'Append'>
151 Code snippits
152 -------------
153 // Portable processes
154 QProcess *Proc;
155 Proc = new QProcess;
156 Proc->setArguments("/usr/local/bin/nada");
157 bool ok = Proc->start();
159 > Does anyone know how to set the WhatsThis text for a QPushButton?.
160 >
161 > Met vriendelijke groet
162 Use the static QWhatsThis::add()
164 Document
165 --------
166 Use doxygen for C++ interface documentation.
168 Project plan
169 ------------
170 Prototype
171 Release v0.8 Milestone 1, Alpha
172 Release v0.9 Milestone 2, Beta
173 Release v1.0 Milestone 3,
174 Release v1.2 Milestone 4,
176 Requirements
177 ------------
179 Deliverables
180 ------------
181 Binaries
182 titraq Verwendung
184 Designdocs
185 titraq_design.ps Systemdiagramme
187 Manpage
188 titraq.1 Hauptinfo
189 titraq.conf.5 Beschreibung des Configdatei
191 Geliefert
192 titraq.conf Ausgekommentet Beispieldatei
194 Pseudocode
195 ----------
196 initialize
197 parse command line
198 parse titraq.conf file
199 load titraq.dat file
200 show control window
201 wait for quit
202 save titraq.dat file
203 finish
205 Test case
206 ---------
207 Pre:
208 tar zxvf titraq-0.9.tar
209 cd titraq-0.9
210 ./configure
211 make
212 su
213 make install
215 Assume:
216 OS has Qt 3.0.6 or newer multithreaded library
218 Begin:
219 $ titraq
221 Output:
222 Post:
223 Procedure:
226 ****************************
227 * *
228 * Inadequacies of as-gui *
229 * *
230 ****************************
232 Architecture Inconsistencies
233 o Some custom classes are thinly veiled Qt classes. Others
234 are completely different, but with similar functionality.
235 o Several classes are immense, and should be split into
236 into easier to read pieces.
237 o Some classes should be abstracted and new subclasses built.
239 Implementation
240 o Too procedural for my taste. Many methods should be merged
241 or split and grouped into new classes or such.
243 Naming
244 o Hungarian notation is only used to 90% potential.
245 o Inconsistent length and abbreviations.
246 o Conventions suggested on Qt website not followed.
248 Error handling
249 o No standardized return values.
250 o C++ exceptions used inconsistently.
252 Memory handling
253 o Smart pointers should be used in all exception code blocks.
254 o A consistent policy of automatic versus dynamic pointer
255 variables should be used in all classes.