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.

     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.

mercurial