home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / fsrc1241.zip / threadlistsettings.c < prev    next >
C/C++ Source or Header  |  1999-02-14  |  15KB  |  357 lines

  1. /*---------------------------------------------------------------------------+
  2.  | Titel: THREADLISTSETTINGS.C                                               |
  3.  +-----------------------------------------+---------------------------------+
  4.  | Erstellt von: Michael Hohner            | Am: 06.08.1994                  |
  5.  +-----------------------------------------+---------------------------------+
  6.  | System: OS/2 2.x PM                                                       |
  7.  +---------------------------------------------------------------------------+
  8.  | Beschreibung:                                                             |
  9.  |                                                                           |
  10.  |     Threadlist-Settings-Notebook                                          |
  11.  |                                                                           |
  12.  |                                                                           |
  13.  +---------------------------------------------------------------------------+
  14.  | Bemerkungen:                                                              |
  15.  +---------------------------------------------------------------------------*/
  16.  
  17. /*----------------------------- Header-Dateien ------------------------------*/
  18. #pragma strings(readonly)
  19.  
  20. #define INCL_PM
  21. #include <os2.h>
  22. #include "main.h"
  23. #include "structs.h"
  24. #include "msgheader.h"
  25. #include "areaman\areaman.h"
  26. #include "areadlg.h"
  27. #include "controls\clrsel.h"
  28. #include "dialogids.h"
  29. #include "resids.h"
  30. #include "utility.h"
  31. #include "threadlistsettings.h"
  32.  
  33. /*--------------------------------- Defines ---------------------------------*/
  34.  
  35. #define TAB_FONT    "8.Helv"
  36. #define RGB_GREY    0x00cccccc
  37.  
  38. /*---------------------------------- Typen ----------------------------------*/
  39.  
  40. /*---------------------------- Globale Variablen ----------------------------*/
  41.  
  42. extern HAB anchor;
  43. extern HMODULE hmodLang;
  44. extern THREADLISTOPTIONS threadlistoptions;
  45. extern DIRTYFLAGS dirtyflags;
  46.  
  47. /*----------------------- interne Funktionsprototypen -----------------------*/
  48.  
  49. static void InsertThreadListSettingsPages(HWND notebook);
  50. static MRESULT EXPENTRY ThreadsSetupProc(HWND parent, ULONG message, MPARAM mp1, MPARAM mp2);
  51. static MRESULT EXPENTRY ThreadColorsProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  52.  
  53. /*---------------------------------------------------------------------------*/
  54. /* Funktionsname: ThreadListSettingsProc                                     */
  55. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  56. /* Beschreibung: Fenster-Prozedur der Threadlist-Settings                    */
  57. /*                                                                           */
  58. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  59. /* Parameter: WinProc                                                        */
  60. /*                                                                           */
  61. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  62. /* Rückgabewerte: MRESULT                                                    */
  63. /*                                                                           */
  64. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  65. /* Sonstiges: -                                                              */
  66. /*                                                                           */
  67. /*---------------------------------------------------------------------------*/
  68.  
  69. MRESULT EXPENTRY ThreadListSettingsProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
  70. {
  71.    extern HWND hwndhelp;
  72.    HWND notebook=NULLHANDLE;
  73.    MRESULT resultbuf;
  74.  
  75.    switch(msg)
  76.    {
  77.       case WM_INITDLG:
  78.          notebook=WinWindowFromID(hwnd, IDD_THRLISTSETTINGS+1);
  79.          InsertThreadListSettingsPages(notebook);
  80.          RestoreWinPos(hwnd, &threadlistoptions.SettingsPos, TRUE, TRUE);
  81.          WinSetWindowULong(hwnd, QWL_USER, 1);
  82.          break;
  83.  
  84.       case WM_DESTROY:
  85.          break;
  86.  
  87.       case WM_COMMAND:
  88.          return (MRESULT) FALSE;
  89.  
  90.       case WM_ADJUSTFRAMEPOS:
  91.          SizeToClient(anchor, (PSWP) mp1, hwnd, IDD_THRLISTSETTINGS+1);
  92.          break;
  93.  
  94.       case WM_WINDOWPOSCHANGED:
  95.          if (WinQueryWindowULong(hwnd, QWL_USER))
  96.             SaveWinPos(hwnd, (PSWP) mp1, &threadlistoptions.SettingsPos, &dirtyflags.threadsdirty);
  97.          break;
  98.  
  99.       case WM_QUERYTRACKINFO:
  100.          /* Default-Werte aus Original-Prozedur holen */
  101.          resultbuf=WinDefDlgProc(hwnd, msg, mp1, mp2);
  102.  
  103.          /* Minimale Fenstergroesse einstellen */
  104.          ((PTRACKINFO)mp2)->ptlMinTrackSize.x=255;
  105.          ((PTRACKINFO)mp2)->ptlMinTrackSize.y=190;
  106.  
  107.          return resultbuf;
  108.  
  109.       case WM_ACTIVATE:
  110.          if (mp1)
  111.             WinAssociateHelpInstance(hwndhelp, hwnd);
  112.          else
  113.             WinAssociateHelpInstance(hwndhelp, NULLHANDLE);
  114.          break;
  115.  
  116.       default:
  117.          break;
  118.    }
  119.    return WinDefDlgProc(hwnd, msg, mp1, mp2);
  120. }
  121.  
  122. /*---------------------------------------------------------------------------*/
  123. /* Funktionsname: InsertThreadListSettingsPages                              */
  124. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  125. /* Beschreibung: Fuegt die Settings-Pages in das Notebook fuer die           */
  126. /*               Threadlist-Settings ein.                                    */
  127. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  128. /* Parameter: notebook: Window-handle des Notebooks                          */
  129. /*                                                                           */
  130. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  131. /* Rückgabewerte: -                                                          */
  132. /*                                                                           */
  133. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  134. /* Sonstiges:                                                                */
  135. /*                                                                           */
  136. /*---------------------------------------------------------------------------*/
  137.  
  138. static void InsertThreadListSettingsPages(HWND notebook)
  139. {
  140.    SetNotebookParams(notebook, 80);
  141.  
  142.    InsertOnePage(notebook, IDD_THREADSETUP,   IDST_TAB_THREADS,  ThreadsSetupProc, NULL);
  143.    InsertOnePage(notebook, IDD_THRLISTCOLORS, IDST_TAB_THREADCOLORS, ThreadColorsProc, NULL);
  144.  
  145.    return;
  146. }
  147.  
  148. /*---------------------------------------------------------------------------*/
  149. /* Funktionsname: ThreadsSetupProc                                           */
  150. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  151. /* Beschreibung: Threadlist-Setup                                            */
  152. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  153. /* Parameter: WinProc                                                        */
  154. /*                                                                           */
  155. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  156. /* Rückgabewerte: MRESULT                                                    */
  157. /*                                                                           */
  158. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  159. /* Sonstiges:                                                                */
  160. /*                                                                           */
  161. /*---------------------------------------------------------------------------*/
  162.  
  163. static MRESULT EXPENTRY ThreadsSetupProc(HWND parent, ULONG message, MPARAM mp1, MPARAM mp2)
  164. {
  165.    BOOL booltemp;
  166.    ULONG ulTemp;
  167.  
  168.    switch(message)
  169.    {
  170.       case WM_INITDLG:
  171.          WinCheckButton(parent, IDD_THREADSETUP+4, threadlistoptions.shownames);
  172.          WinCheckButton(parent, IDD_THREADSETUP+8, threadlistoptions.compact);
  173.          switch(threadlistoptions.dspmode)
  174.          {
  175.             case DSPTHREADS_ALL:
  176.                WinCheckButton(parent, IDD_THREADSETUP+5, TRUE);
  177.                WinCheckButton(parent, IDD_THREADSETUP+6, FALSE);
  178.                WinCheckButton(parent, IDD_THREADSETUP+7, FALSE);
  179.                break;
  180.  
  181.             case DSPTHREADS_WITHUNREAD:
  182.                WinCheckButton(parent, IDD_THREADSETUP+5, FALSE);
  183.                WinCheckButton(parent, IDD_THREADSETUP+6, TRUE);
  184.                WinCheckButton(parent, IDD_THREADSETUP+7, FALSE);
  185.                break;
  186.  
  187.             case DSPTHREADS_UNREADONLY:
  188.                WinCheckButton(parent, IDD_THREADSETUP+5, FALSE);
  189.                WinCheckButton(parent, IDD_THREADSETUP+6, FALSE);
  190.                WinCheckButton(parent, IDD_THREADSETUP+7, TRUE);
  191.                break;
  192.  
  193.             default:
  194.                break;
  195.          }
  196.          break;
  197.  
  198.       case WM_CLOSE:
  199.       case WM_DESTROY:
  200.          booltemp=WinQueryButtonCheckstate(parent, IDD_THREADSETUP+4);
  201.          if (threadlistoptions.shownames != booltemp)
  202.          {
  203.             threadlistoptions.shownames = booltemp;
  204.             dirtyflags.threadsdirty=TRUE;
  205.          }
  206.          booltemp=WinQueryButtonCheckstate(parent, IDD_THREADSETUP+8);
  207.          if (threadlistoptions.compact != booltemp)
  208.          {
  209.             threadlistoptions.compact = booltemp;
  210.             dirtyflags.threadsdirty=TRUE;
  211.          }
  212.          if (WinQueryButtonCheckstate(parent, IDD_THREADSETUP+5))
  213.             ulTemp=DSPTHREADS_ALL;
  214.          if (WinQueryButtonCheckstate(parent, IDD_THREADSETUP+6))
  215.             ulTemp=DSPTHREADS_WITHUNREAD;
  216.          if (WinQueryButtonCheckstate(parent, IDD_THREADSETUP+7))
  217.             ulTemp=DSPTHREADS_UNREADONLY;
  218.          if (threadlistoptions.dspmode != ulTemp)
  219.          {
  220.             threadlistoptions.dspmode = ulTemp;
  221.             dirtyflags.threadsdirty=TRUE;
  222.          }
  223.          break;
  224.  
  225.       case WM_COMMAND:
  226.          return (MRESULT) FALSE;
  227.  
  228.       default:
  229.          break;
  230.    }
  231.    return WinDefDlgProc(parent,message,mp1,mp2);
  232. }
  233.  
  234. /*---------------------------------------------------------------------------*/
  235. /* Funktionsname: ThreadColorsProc                                           */
  236. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  237. /* Beschreibung: Threadlist-Farben-Setup                                     */
  238. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  239. /* Parameter: WinProc                                                        */
  240. /*                                                                           */
  241. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  242. /* Rückgabewerte: MRESULT                                                    */
  243. /*                                                                           */
  244. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  245. /* Sonstiges:                                                                */
  246. /*                                                                           */
  247. /*---------------------------------------------------------------------------*/
  248.  
  249. static MRESULT EXPENTRY ThreadColorsProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
  250. {
  251.  
  252.    switch (msg)
  253.    {
  254.       case WM_INITDLG:
  255.          /* Farben im Value-Set initialisieren */
  256.          WinSendDlgItemMsg(hwnd, IDD_THRLISTCOLORS+4, VM_SETITEM,
  257.                            MPFROM2SHORT(1, 1),
  258.                            MPFROMLONG(threadlistoptions.lBackClr));
  259.          WinSendDlgItemMsg(hwnd, IDD_THRLISTCOLORS+4, VM_SETITEM,
  260.                            MPFROM2SHORT(2, 1),
  261.                            MPFROMLONG(threadlistoptions.lReadClr));
  262.          WinSendDlgItemMsg(hwnd, IDD_THRLISTCOLORS+4, VM_SETITEM,
  263.                            MPFROM2SHORT(3, 1),
  264.                            MPFROMLONG(threadlistoptions.lUnreadClr));
  265.          WinSendDlgItemMsg(hwnd, IDD_THRLISTCOLORS+4, VM_SETITEM,
  266.                            MPFROM2SHORT(4, 1),
  267.                            MPFROMLONG(threadlistoptions.lPersonalClr));
  268.  
  269.          /* Erstes Element im VS auswaehlen */
  270.          WinSendDlgItemMsg(hwnd, IDD_THRLISTCOLORS+4, VM_SELECTITEM,
  271.                            MPFROM2SHORT(1, 1), NULL);
  272.  
  273.          /* Fadenkreuz im Color-Wheel entsprechend setzen */
  274.          WinSendDlgItemMsg(hwnd, IDD_THRLISTCOLORS+3, CLSM_SETRGB,
  275.                            &threadlistoptions.lBackClr,
  276.                            NULL);
  277.          break;
  278.  
  279.       case WM_CONTROL:
  280.          switch(SHORT1FROMMP(mp1))
  281.          {
  282.             case IDD_THRLISTCOLORS+3:  /* Color-Wheel */
  283.                if (SHORT2FROMMP(mp1) == CLSN_RGB)
  284.                {
  285.                   MRESULT selected;
  286.  
  287.                   /* selektiertes Item im Value-Set abfragen */
  288.                   selected=WinSendDlgItemMsg(hwnd, IDD_THRLISTCOLORS+4, VM_QUERYSELECTEDITEM,
  289.                                              NULL, NULL);
  290.  
  291.                   /* Farbe updaten */
  292.                   WinSendDlgItemMsg(hwnd, IDD_THRLISTCOLORS+4, VM_SETITEM,
  293.                                     selected, mp2);
  294.  
  295.                   /* Farbe in Settings eintragen */
  296.                   switch(SHORT1FROMMR(selected))
  297.                   {
  298.                      case 1:
  299.                         threadlistoptions.lBackClr= (LONG) mp2;
  300.                         break;
  301.  
  302.                      case 2:
  303.                         threadlistoptions.lReadClr= (LONG) mp2;
  304.                         break;
  305.  
  306.                      case 3:
  307.                         threadlistoptions.lUnreadClr= (LONG) mp2;
  308.                         break;
  309.  
  310.                      case 4:
  311.                         threadlistoptions.lPersonalClr= (LONG) mp2;
  312.                         break;
  313.  
  314.                      default:
  315.                         break;
  316.                   }
  317.  
  318.                   /* Dirty-Flag setzen */
  319.                   dirtyflags.threadsdirty=TRUE;
  320.                }
  321.                break;
  322.  
  323.             case IDD_THRLISTCOLORS+4:  /* Value-Set */
  324.                if (SHORT2FROMMP(mp1) == VN_SELECT)
  325.                {
  326.                   ULONG ulColor;
  327.  
  328.                   /* neue Selektion abfragen */
  329.                   ulColor=(ULONG)WinSendDlgItemMsg(hwnd, IDD_THRLISTCOLORS+4,
  330.                                                    VM_QUERYITEM, mp2, NULL);
  331.  
  332.                   /* Fadenkreuz setzen */
  333.                   WinSendDlgItemMsg(hwnd, IDD_THRLISTCOLORS+3,
  334.                                     CLSM_SETRGB, &ulColor, NULL);
  335.                }
  336.                break;
  337.  
  338.             default:
  339.                break;
  340.          }
  341.          break;
  342.  
  343.       case WM_COMMAND:
  344.          return (MRESULT) FALSE;
  345.  
  346.       case WM_DESTROY:
  347.          break;
  348.  
  349.       default:
  350.          break;
  351.    }
  352.    return WinDefDlgProc(hwnd, msg, mp1, mp2);
  353. }
  354.  
  355. /*-------------------------------- Modulende --------------------------------*/
  356.  
  357.