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

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