home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: SysTools / SysTools.zip / taman002.zip / TASKMANA.ZIP / src / kContainer.h < prev    next >
C/C++ Source or Header  |  2000-04-29  |  5KB  |  160 lines

  1. /* $Id: kContainer.h,v 1.1 2000/04/29 19:06:34 stknut Exp $
  2.  *
  3.  * kContainer (kClassLib)  - layer to the OS/2 container Windowclass.
  4.  *                           kCnrMiniRecord, kCnrRecord, kContainer and kDetailCnr
  5.  *
  6.  * Copyright (c) 1999-2000 knut st. osmundsen
  7.  *
  8.  */
  9. #ifndef _kContainer_h_
  10. #define _kContainer_h_
  11.  
  12.  
  13. /**
  14.  * @description Basis containerrecord class - MINIRECORDCORE.
  15.  * @author      knut st. osmundsen
  16.  */
  17. class kCnrMiniRecord
  18. {
  19. protected:
  20.     MINIRECORDCORE RecordCore;
  21. public:
  22.     kCnrMiniRecord *getNext();
  23.     kCnrMiniRecord *setNext(kCnrMiniRecord *pRecord);
  24. };
  25.  
  26.  
  27.  
  28. /**
  29.  * @description Basis containerrecord class - RECORDCORE.
  30.  * @author      knut st. osmundsen
  31.  */
  32. class kCnrRecord
  33. {
  34. protected:
  35.     RECORDCORE RecordCore;
  36. public:
  37.     kCnrRecord *getNext();
  38.     kCnrRecord *setNext(kCnrRecord *pRecord);
  39. };
  40.  
  41.  
  42.  
  43. /**
  44.  * @description Basis container class.
  45.  * @author      knut st. osmundsen
  46.  */
  47. class kCnrBase
  48. {
  49. protected:
  50.     /**@cat private data */
  51.     HWND      hwndCnr;
  52.     HWND      hwndBorder;
  53.     PFNWP     pfnwpOrg;
  54.  
  55.     /**@cat Container info */
  56.     BOOL      fUsesMiniRecord;
  57.     BOOL      fValidCnrInfo;
  58.     CNRINFO   CnrInfo;
  59.  
  60.     /**@cat Private methods */
  61.     BOOL      validateCnrInfo();
  62.     BOOL      setCnrInfo(ULONG flChanged);
  63.     BOOL      usesMiniRecord();
  64.  
  65. protected:
  66.     /**@cat Protected eventhandlers */
  67.     virtual VOID  command(USHORT usCmd, USHORT usSource, BOOL fPointer); //WM_COMMAND
  68.     virtual VOID  initMenu(USHORT usMenuId, HWND hwndMnu); //WM_INITMENU
  69.     virtual VOID  menuEnd(USHORT usMenuId, HWND hwndMnu); //WM_ENDMENU
  70.  
  71. public:
  72.     /**@cat Constructor/Destructor */
  73.     kCnrBase(HWND hwndCnr, BOOL fBorder = TRUE) throw (kError);
  74.     ~kCnrBase();
  75.  
  76.     /**@cat Subclass message loop */
  77.     MRESULT msgLoop(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  78.  
  79.     /**@cat Alloc/free */
  80.     kCnrMiniRecord  *allocMiniRec(ULONG cbRecord, ULONG cRecords = 1);
  81.     kCnrRecord      *allocRec(ULONG cbRecord, ULONG cRecords = 1);
  82.     PFIELDINFO       allocDetailFieldInfo(USHORT cFieldInfo);
  83.     BOOL             freeDetailFieldInfo(PFIELDINFO pFieldInfo, USHORT cFieldInfo);
  84.  
  85.     /**@cat Insert-/remove-record methods */
  86.     BOOL insertAtTop(kCnrMiniRecord *pRecord, ULONG cRecords /*=1*/);
  87.     BOOL insertAtBottom(kCnrMiniRecord *pRecord, ULONG cRecords /*=1*/);
  88.     BOOL insertDetailFieldInfo(PFIELDINFO pFieldInfo, PFIELDINFO pFieldInfoOrder,
  89.                                ULONG fInvalidateFieldInfo, ULONG cFieldInfoInsert);
  90.     BOOL removeRecord(void *pvRecord);
  91.     BOOL removeRecords(void **ppvRecord, ULONG cRecord = 1);
  92.     BOOL removeRecordAtTop(LONG cRecord);
  93.     BOOL removeRecordAtBottom(LONG cRecord);
  94.     BOOL removeAllRecords();
  95.     BOOL removeDetailFieldInfo(PFIELDINFO paFieldInfo[], USHORT cFieldInfo, USHORT usFlags);
  96.     BOOL removeAllDetailFieldInfos();
  97.  
  98.  
  99.     /**@cat Invalidate(s) */
  100.     BOOL invalidateRecord(kCnrMiniRecord *pRecord, ULONG fFlags = CMA_TEXTCHANGED);
  101.     BOOL invalidateRecords(ULONG fFlags, ULONG cRecords, ...);
  102.     BOOL invalidateRecords(ULONG fFlags, ULONG cRecords, kCnrMiniRecord **papRec);
  103.  
  104.  
  105.     /**@cat Sets */
  106.     BOOL setDelta(ULONG cDelta);
  107.     BOOL setflWindowAttr(ULONG flWindowAttr);
  108.     BOOL setTitle(PSZ pszTitle);
  109.     BOOL setLastFieldInfo(PFIELDINFO pFieldInfoLast);
  110.     BOOL setRecordEmphasis(kCnrMiniRecord *pRecord, BOOL fChangeEmphasis, USHORT fEmphasisAttribute);
  111.     BOOL setPos(ULONG ulPos);
  112.  
  113.  
  114.     /**@cat Misc */
  115.     BOOL disableUpdate();
  116.     BOOL enableUpdate();
  117.     BOOL resize(LONG cx, LONG cy);
  118.     BOOL setpos(LONG x, LONG y);
  119.     BOOL resizeAndMove(LONG x, LONG y, LONG cx, LONG cy);
  120.  
  121.     /**@cat Query-record methods */
  122.     kCnrMiniRecord  *queryMenuSourceRecord(kCnrMiniRecord *pStartRecord = NULL);
  123.     kCnrMiniRecord  *querySelectedRecord(kCnrMiniRecord *pStartRecord = NULL);
  124.     kCnrMiniRecord  *queryInUseRecord(kCnrMiniRecord *pStartRecord = NULL);
  125.     kCnrMiniRecord  *queryCursoredRecord(kCnrMiniRecord *pStartRecord = NULL);
  126.     kCnrMiniRecord  *queryTopRecord();
  127.     kCnrMiniRecord  *queryBottomRecord();
  128.     kCnrMiniRecord  *queryNextRecord(kCnrMiniRecord *pStartRecord = NULL);
  129.     kCnrMiniRecord  *queryPrevRecord(kCnrMiniRecord *pStartRecord = NULL);
  130.  
  131.     /**@cat Other queries */
  132.     ULONG            getCountOfRecords();
  133.     ULONG            getflWindowAttr();
  134. };
  135.  
  136.  
  137.  
  138. /**
  139.  * @description Detail container class.
  140.  * @author      knut st. osmundsen
  141.  */
  142. class kDetailCnr : public kCnrBase
  143. {
  144. protected:
  145.     ULONG cColumns;
  146.  
  147.     virtual  SHORT  sortCallBack(kCnrMiniRecord *pRecord1, kCnrMiniRecord *pRecord2);
  148.  
  149. public:
  150.     kDetailCnr(HWND hwndCnr, ULONG flWindowAttr, PSZ pszTitle, ULONG cColumns, PFIELDINFO paFieldInfo, BOOL fBorder = TRUE) throw (kError);
  151.     ~kDetailCnr();
  152.  
  153.     BOOL            enableSorting();
  154.     BOOL            disableSorting();
  155.  
  156.     friend SHORT _System sortForwarder(PMINIRECORDCORE pRecord1, PMINIRECORDCORE pRecord2, PVOID pvThis);
  157. };
  158.  
  159. #endif
  160.