TODO

Fri, 28 Nov 2008 11:21:08 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 28 Nov 2008 11:21:08 +0100
changeset 1
d64aaa7d146f
child 12
ceb4ba3d2d00
permissions
-rw-r--r--

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.

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

mercurial