TODO

changeset 1
d64aaa7d146f
child 12
ceb4ba3d2d00
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/TODO	Fri Nov 28 11:21:08 2008 +0100
     1.3 @@ -0,0 +1,250 @@
     1.4 +                   ***************************************
     1.5 +                   *                                     *
     1.6 +                   *   TODO: OSSP titraq Specification   *
     1.7 +                   *                                     *
     1.8 +                   ***************************************
     1.9 +
    1.10 +Must do
    1.11 +-------
    1.12 +Q_CHECK_PTR
    1.13 +public/private
    1.14 +Ensure rethrows from second loadData on upwards
    1.15 +Report errors in all slot code
    1.16 +Rework error handling in prefs
    1.17 +Generally maintain Preference class
    1.18 +  Implement missing interface methods
    1.19 +Review destruction of all members, compare with setupPrefs
    1.20 +Some menus are defined QPopupMenu in header, some in code
    1.21 +Memory optimization needed in tidataops
    1.22 +Check all identifiers for undeutig unique scope
    1.23 +Remove magic numbers from cpp files to titconst like TITRAQ_INDEXREMARK
    1.24 +Some signals implemented in Titraqform really belong in satellite classes
    1.25 +Write M4 macro for detecting cuserid, and prefer it in ac_assist
    1.26 +configure soll ueberpruefen ob libqt[-mt] threads braucht,
    1.27 +  dann wenn so, soll den LIBS -pthread hardgecodet haben
    1.28 +Read config location from optional --confgen autoconf location
    1.29 +IDs in as_const.h much better choosing, so they make sense
    1.30 +Be consistent with szQString vs QString var names
    1.31 +After every result write a status bar message
    1.32 +On multiple selection, no text should appear in edit ctrls
    1.33 +Make consistent setEdition(), setDirty() default parameters
    1.34 +Use namespace 'AS' or unique identifier 'AS' for all classnames
    1.35 +Unify class mycl = class(), class mycl(), class *pMycl, auto_ptr<class *>
    1.36 +Win32 code in User class is only half written, and incomplete homedir
    1.37 +Verify routine consistently scans all fields on load and new entries
    1.38 +Remove all exception raises from slot code
    1.39 +New doc, new entry, change text in table, close... No verify save!
    1.40 +Might not need classes Amount and Tableitem at all
    1.41 +Mach mal mit den 'autobackup' und 'fextension' Optionen von prefs
    1.42 +Check for outdated config file version
    1.43 +Make status bar message, qWarning, qDebug, and Popup messages consistent
    1.44 +  For which purposes do messages go in each category?
    1.45 +Label methods and parameters throughout as const ... const, use &
    1.46 +Yank out all #include from headers, replace with class ...; protos
    1.47 +Check for empty amount field in getWeektotals before Hashtasks[Convstring] +=
    1.48 +Accountlistbox is sorted both in assist and dataops with maps
    1.49 +Verify that unviewable rows are not redrawn cerr << "Rownum" << nRow << endl;
    1.50 +Also, use bool QTable::isRowHidden (int nRow) const
    1.51 +Don't raise the question 'Save before quitting' when no contents were changed
    1.52 +
    1.53 +Bugs (? = unverified)
    1.54 +---------------------
    1.55 +Overidden paintCell() might not work when called asynchronously?
    1.56 +Sometimes a click on add or delete toolbar button is ignored?
    1.57 +When multiple new rows are added sometimes wrong row shading?
    1.58 +When sorting rows, sometimes a false extra highlight appears
    1.59 +Disabled actions still show enabled icons in menu popups
    1.60 +Pressing escape on task data cells does not exit edit mode
    1.61 +On win32, all or some file reads and writes probably need IO_Translate?
    1.62 +Method saveData(stream) must write to a new file, otherwise writes data pattern
    1.63 +CRCs are being generated before parsing of "" is finished?
    1.64 +Double click on column separator is broken again
    1.65 +Zeitabzug moeglicherweise falsch wenn 23:00-01:00=?
    1.66 +Statustext soll nicht neben Pixmaps erscheinen
    1.67 +Loesch mal alle Text vom Task Editctrl, dann drueck mal Obentaste
    1.68 +Memory leak in vector<QRadioButton> as_panel
    1.69 +Opendoc, schau amount unten Knopf (ist dimmed)
    1.70 +Reporting only works if event data is sorted by date
    1.71 +Press Return then Tab many times to see invalid selections
    1.72 +Does not enter edit mode for a cell when double click
    1.73 +Some versions (as.de.cw.net:/v/as-old/sw), double click to
    1.74 +  edit a cell, add two characters, click X to close without
    1.75 +  leaving the cell. It should ask to save doc, but doesn't.
    1.76 +
    1.77 +Nice to have
    1.78 +------------
    1.79 +Implement drag and drop selected row swapping
    1.80 +Implement an unlimited and generic undo and redo buffer class
    1.81 +Support pasting into as_gui from other app (like vim)
    1.82 +Add optional automatic file personal data file backup
    1.83 +Make edit control window optional through preferences
    1.84 +Add customizable column ordering by click and drag
    1.85 +Soll mehr intuitive, mit sekondaer/dritte Keycolumn
    1.86 +CRC und Rev sollen nicht in gleiche Methode berechnet
    1.87 +No need to have upd slots for non-changeable upd controls
    1.88 +Before openDoc, closeEvent should be used instead of new code
    1.89 +Align CRC field data to left edge of table items
    1.90 +Make Simplefile class non-Qt specific
    1.91 +Read and write karm format files with file extension detection
    1.92 +Offer general option 'Use vim keymap'
    1.93 +Text revisions
    1.94 +  Title case, sentence case, or lower case
    1.95 +  Past tense, third person, style, usage...
    1.96 +Make consistent when version is shown in titlebar of all dialogs
    1.97 +Runtime help system should not depend on installtime documentation
    1.98 +App should start even if no accounts file is found
    1.99 +Fully vimize all input widgets by subclassing them (w - back word)
   1.100 +Reload accountlist on startup, but reload during 'Open Doc' as well
   1.101 +Better file validation, instead of just single line validateData op
   1.102 +Freetext field, for copyright or some announcement (this data isn't
   1.103 +  accurate enough for billing purposes). Field can be optionally
   1.104 +  shown above main table, but always dimmed to avoid accidental edit.
   1.105 +Check for account list updates (checkbox), to allow a local user to
   1.106 +  query a CORBA or SOAP server for a new account list via accessors:
   1.107 +    U32 Account::getCrc(void)
   1.108 +    Acctlist Account::getData(void)
   1.109 +Reimplement void QTable::swapRows, so that rows can be moved easily
   1.110 +Update edit controls only after return from TiTable::createEditor()
   1.111 +
   1.112 +Screwey user notes ;-)
   1.113 +----------------------
   1.114 +cs:  'd' should not delete at once but flag the record as deleted.  Use '$' to sync (similar to mutt)
   1.115 +cs:  first 'TAB' should complete (if possible), second 'TAB' should open selection box (similar to bash)
   1.116 +cs:  line numberscould be referenced when entering accounts ala bash history ('!4' = record #4)
   1.117 +mlelstv: 24:00 muss als Valideintrag im Finishfeld erlaubt
   1.118 +thl: / should enable the user to search for something
   1.119 +thl: using = should force a recalculation for a time field
   1.120 +thl: using ~ should round a time field to the next quarter (configurable)
   1.121 +
   1.122 +Architectural
   1.123 +-------------
   1.124 +Decouple form, preferences, and RPC classes
   1.125 +Remove common class behaviours (quitApp, close...) to abstract classes
   1.126 +
   1.127 +Win32
   1.128 +-----
   1.129 +Rework username, homedir, and confdaten (hive) logic
   1.130 +
   1.131 +Preferences
   1.132 +-----------
   1.133 +<option name wert>      Hintergrund Functionalitaet
   1.134 +<aspect name wert>      Sichtliche Functionalitaet
   1.135 +<session name wert>     Automatisch gespeicherte
   1.136 +<rule name expr cond>   Amount = Finish - Start (mussen alle da z.B.)
   1.137 +<alias name wert>       Nutzbar lange Taskzeilen zu abstrahieren
   1.138 +<macro name = 'Reuse'>
   1.139 +  Selectiere aktuelle und 3 vorherige Reihen
   1.140 +  Copy
   1.141 +  Geh zu letzte Reihe
   1.142 +  Paste
   1.143 +</macro name = 'Reuse'>
   1.144 +<macro name = 'Append'>
   1.145 +  Geh zu letzte Reihe
   1.146 +  Zufug Reihe
   1.147 +</macro name = 'Append'>
   1.148 +
   1.149 +Code snippits
   1.150 +-------------
   1.151 +// Portable processes
   1.152 +QProcess *Proc;
   1.153 +Proc = new QProcess;
   1.154 +Proc->setArguments("/usr/local/bin/nada");
   1.155 +bool ok = Proc->start();
   1.156 +
   1.157 +> Does anyone know how to set the WhatsThis text for a QPushButton?.
   1.158 +>
   1.159 +> Met vriendelijke groet
   1.160 +Use the static QWhatsThis::add()
   1.161 +
   1.162 +Document
   1.163 +--------
   1.164 +Use doxygen for C++ interface documentation.
   1.165 +
   1.166 +Project plan
   1.167 +------------
   1.168 +    Prototype
   1.169 +    Release v0.8    Milestone 1, Alpha
   1.170 +    Release v0.9    Milestone 2, Beta
   1.171 +    Release v1.0    Milestone 3,
   1.172 +    Release v1.2    Milestone 4,
   1.173 +
   1.174 +Requirements
   1.175 +------------
   1.176 +
   1.177 +Deliverables
   1.178 +------------
   1.179 +    Binaries
   1.180 +      titraq           Verwendung
   1.181 +
   1.182 +    Designdocs
   1.183 +      titraq_design.ps Systemdiagramme
   1.184 +
   1.185 +    Manpage
   1.186 +      titraq.1         Hauptinfo
   1.187 +      titraq.conf.5    Beschreibung des Configdatei
   1.188 +
   1.189 +    Geliefert
   1.190 +      titraq.conf      Ausgekommentet Beispieldatei
   1.191 +
   1.192 +Pseudocode
   1.193 +----------
   1.194 +    initialize
   1.195 +    parse command line
   1.196 +    parse titraq.conf file
   1.197 +    load titraq.dat file
   1.198 +    show control window
   1.199 +    wait for quit
   1.200 +    save titraq.dat file
   1.201 +    finish
   1.202 +
   1.203 +Test case
   1.204 +---------
   1.205 +    Pre:
   1.206 +    tar zxvf titraq-0.9.tar
   1.207 +    cd titraq-0.9
   1.208 +    ./configure
   1.209 +    make
   1.210 +    su
   1.211 +    make install
   1.212 +
   1.213 +    Assume:
   1.214 +    OS has Qt 3.0.6 or newer multithreaded library
   1.215 +
   1.216 +    Begin:
   1.217 +    $ titraq
   1.218 +
   1.219 +    Output:
   1.220 +    Post:
   1.221 +    Procedure:
   1.222 +
   1.223 +
   1.224 +                ****************************
   1.225 +                *                          *
   1.226 +                *  Inadequacies of as-gui  *
   1.227 +                *                          *
   1.228 +                ****************************
   1.229 +
   1.230 +Architecture Inconsistencies
   1.231 +  o Some custom classes are thinly veiled Qt classes. Others
   1.232 +    are completely different, but with similar functionality.
   1.233 +  o Several classes are immense, and should be split into
   1.234 +    into easier to read pieces.
   1.235 +  o Some classes should be abstracted and new subclasses built.
   1.236 +
   1.237 +Implementation
   1.238 +  o Too procedural for my taste. Many methods should be merged
   1.239 +    or split and grouped into new classes or such.
   1.240 +
   1.241 +Naming
   1.242 +  o Hungarian notation is only used to 90% potential.
   1.243 +  o Inconsistent length and abbreviations.
   1.244 +  o Conventions suggested on Qt website not followed.
   1.245 +
   1.246 +Error handling
   1.247 +  o No standardized return values.
   1.248 +  o C++ exceptions used inconsistently.
   1.249 +
   1.250 +Memory handling
   1.251 +  o Smart pointers should be used in all exception code blocks.
   1.252 +  o A consistent policy of automatic versus dynamic pointer
   1.253 +    variables should be used in all classes.

mercurial