TODO

Thu, 06 Aug 2009 13:21:30 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 06 Aug 2009 13:21:30 +0200
changeset 15
0e0eb7c91312
parent 1
d64aaa7d146f
permissions
-rw-r--r--

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.

mercurial