home *** CD-ROM | disk | FTP | other *** search
- // ******************************************************************
- //
- // progqry.cpp : implementation file
- //
- // Implemented classes:
- // CProgQueryDlg
- //
- // Author: Nils Behncke
- // POET Software, August 1993
- //
- // ******************************************************************
-
- #include <stdafx.h> // header to MFC
- #include <helloapp.h> // header to application
- #include <progqry.h> // header to this file
- #include <queryres.h> // header to resultdialog
-
- #ifdef _DEBUG // generated by ClassWizard
- #undef THIS_FILE
- static char BASED_CODE THIS_FILE[] = __FILE__;
- #endif
-
- extern CHelloWinApp NEAR theApp; // declaration of application-instance
-
-
- /////////////////////////////////////////////////////////////////////////////
- // CProgQueryDlg dialog
-
- char *programmermembers [] = // additional members of Programmer
- {
- "Years of Exp.",
- "Language",
- ""
- };
-
-
- CProgQueryDlg::CProgQueryDlg(CWnd* pParent, UINT nIDTemp) // modified constructor generated by ClassWizard
- : CPersQueryDlg(pParent, nIDTemp) // call baseclass constructor
- {
- //{{AFX_DATA_INIT(CProgQueryDlg)
- m_strValue = ""; // clear Value
- m_nOpButtons = 1; // set Radiobuttons default to Equal
- //}}AFX_DATA_INIT
- }
-
-
-
- void CProgQueryDlg::DoDataExchange(CDataExchange* pDX)
- {
- CPersQueryDlg::DoDataExchange(pDX); // call baseclass dataexchange
- //{{AFX_DATA_MAP(CProgQueryDlg)
- // no additional controls to CPersQueryDlg
- //}}AFX_DATA_MAP
- }
-
- BEGIN_MESSAGE_MAP(CProgQueryDlg, CDialog)
- //{{AFX_MSG_MAP(CProgQueryDlg)
- ON_BN_CLICKED(IDC_QUERY_ENTER, OnClickedQueryEnter)
- ON_BN_CLICKED(IDC_QUERY_START, OnClickedQueryStart)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
- void CProgQueryDlg::Init ()
- {
- args = NULL; // initialize arguments
- adrargs = NULL;
- pall = new ProgrammerAllSet (theApp.GetOA ()); // set pall polymorph to ProgrammerAllSet
- if (args == NULL)
- args = new ProgrammerQuery (); // set agrs polymorph to ProgrammerQuery
- }
-
- void CProgQueryDlg::SetMemberList ()
- {
- SetMember (programmermembers); // add additional membernames of Programmer into memberlist
- CPersQueryDlg::SetMemberList (); // add membernames of Person into memberlist
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CProgQueryDlg message handlers
-
- // all handlerheaders generated by ClassWizard
-
- void CProgQueryDlg::OnClickedQueryEnter()
- {
- int item;
-
- UpdateData ();
- if ( ( item = GetMember ( programmermembers )) >= 0 ) // returns indexnumber in programmermembers
- // of current selection in memberlist
- {
- char *buffer;
- buffer = m_strValue.GetBuffer ( sizeof (buffer) ); // get value
- m_strValue.ReleaseBuffer ();
-
- switch ( item )
- {
- case 0: // Years of Experience
- {
- int years;
- years = atoi (buffer);
- ((ProgrammerQuery *) args)->Setexp_years ( years, GetOp () );
- break;
- }
- case 1: // Languages
- {
- PtString value ( buffer );
- ((ProgrammerQuery *) args)->Setlanguage ( value, GetOp () );
- break;
- }
- }
- }
- else
- CPersQueryDlg::OnClickedQueryEnter (); // search in personmembers
- }
-
-
- void CProgQueryDlg::OnClickedQueryStart()
- {
- if (m_CQueryList.GetCount () > 0)
- {
-
- ProgrammerOnDemandLSet result;
- int erc;
-
- if ( adrargs )
- args->Setadrs ( 1, PtGT | PtEQ, adrargs ); // set addressarguments
-
- if ((erc=pall->Query ( (ProgrammerQuery *) args, &result )) == 0) // perform query
- {
- if ( result.GetNum () > 0 ) // if matching
- {
- int nResult;
- CQueryResultDlg queryresult (this); // call resultdialog
-
- queryresult.SetResult ( & result );
-
- nResult = queryresult.DoModal (); // execute dialog
- queryresult.EndDialog (nResult); // end dialog
- }
- else
- MessageBox ("No Entries", "Query", MB_OK); // no matching
- }
- else // query error
- {
- char buffer[100];
- sprintf ( buffer, "POET Query error: %d", erc );
- MessageBox (buffer, "Query", MB_OK);
- }
-
- // initialize for next query
- delete args;
- args = new ProgrammerQuery ();
-
- if ( adrargs )
- {
- delete adrargs;
- adrargs = NULL;
- }
- m_CQueryList.ResetContent (); // reset argumentlistbox
- }
- }
-
-
-