/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the * NPL. * * The Initial Developer of this code under the NPL is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All Rights * Reserved. */ // extview.cpp : implementation file // #include "stdafx.h" #include "extview.h" #ifdef _DEBUG #undef THIS_FILE static char BASED_CODE THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CExtView dialog CExtView::CExtView(CWnd* pParent /*=NULL*/) : CDialog(CExtView::IDD, pParent) { //{{AFX_DATA_INIT(CExtView) //}}AFX_DATA_INIT } void CExtView::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CExtView) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CExtView, CDialog) //{{AFX_MSG_MAP(CExtView) ON_WM_CREATE() ON_BN_CLICKED(IDC_AddSubType, OnClickedAddSubType) ON_BN_CLICKED(IDC_LaunchExtViewer, OnClickedLaunchExtViewer) ON_BN_CLICKED(IDC_SaveToDisk, OnClickedSaveToDisk) ON_BN_CLICKED(IDC_ViewerBrowse, OnClickedViewerBrowse) ON_LBN_SELCHANGE(IDC_MIMETYPE, OnSelchangeMimetype) ON_LBN_SELCHANGE(IDC_MIMESUBTYPE, OnSelchangeMimesubtype) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CExtView message handlers int CExtView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialog::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here m_netList = cinfo_MasterListPointer(); return 0; } BOOL CExtView::OnInitDialog() { CListBox *pMimeList = (CListBox *)GetDlgItem(IDC_MIMETYPE); // Fill in the possible mime types... pMimeList->AddString("audio"); pMimeList->AddString("application"); pMimeList->AddString("image"); pMimeList->AddString("text"); pMimeList->AddString("video"); SetMimeTypeTo("image"); // select image in the mime type box ... will set rest of box up SetSubtypeTo("gif"); return TRUE; } void CExtView::SetMimeTypeTo(const char * mime_type) { #ifdef NOT CListBox *pMimeList = (CListBox *)GetDlgItem(IDC_MIMETYPE); CListBox *pSubtypeList = (CListBox *)GetDlgItem(IDC_MIMESUBTYPE); NET_cdataListItem *cd_item; char * pSlash; CEdit * pDescr = (CEdit *)GetDlgItem(IDC_Description); CEdit * pExt = (CEdit *)GetDlgItem(IDC_Extensions); pMimeList->SelectString(-1,mime_type); pDescr->SetWindowText(""); // fill in empty description pExt->SetWindowText(""); // set empty list pSubtypeList->ResetContent(); cd_item = m_netList; // Get beginning of the list while (cd_item) { // iterate through the list if (cd_item->ci.type) { // if it is a mime type if (!XP_STRNCMP(cd_item->ci.type,mime_type,4)) { // we can distinguish the mime types via the // first 2 characters but we'll compare 4 to be safe pSlash = XP_STRCHR(cd_item->ci.type,'//'); if (pSlash+1) pSubtypeList->AddString(pSlash+1); } } cd_item = cd_item->next; } #endif } void CExtView::SetSubtypeTo(const char * sub_type) { #ifdef NOT CListBox *pMimeList = (CListBox *)GetDlgItem(IDC_MIMETYPE); CListBox *pSubtypeList = (CListBox *)GetDlgItem(IDC_MIMESUBTYPE); CEdit * pDescr = (CEdit *)GetDlgItem(IDC_Description); CEdit * pExt = (CEdit *)GetDlgItem(IDC_Extensions); CEdit * pExtViewer = (CEdit *)GetDlgItem(IDC_ExternalViewer); CButton *pSaveToDisk = (CButton *)GetDlgItem(IDC_SaveToDisk); NET_cdataListItem *cd_item; int iSel = pMimeList->GetCurSel(); CString csMimeType; CString csExtList; int idx; if (!sub_type) return; // something bad pSubtypeList->SelectString(-1,sub_type); pMimeList->GetText(iSel,csMimeType); // get current mime type csMimeType+='/'; // add slash csMimeType+=sub_type; // add subtype cd_item = m_netList; // Get beginning of the list while (cd_item) { // iterate through the list if (cd_item->ci.type) { // if it is a mime type if (!XP_STRCMP(cd_item->ci.type,(const char *)csMimeType)) { // is this the type?? if (cd_item->ci.desc) pDescr->SetWindowText(cd_item->ci.desc); // fill in description else pDescr->SetWindowText(""); // fill in empty description for (idx = 0; idx < cd_item->num_exts ; idx++) { if (idx !=0) csExtList+=','; // if not first extension, add a comma if (cd_item->exts[idx]) csExtList+=cd_item->exts[idx]; // if num exts is right this will always work } if (!csExtList.IsEmpty()) pExt->SetWindowText((const char *)csExtList); else pExt->SetWindowText(""); // set emoty list pSaveToDisk->SetCheck(TRUE); } } cd_item = cd_item->next; } #endif } void CExtView::OnClickedAddSubType() { // TODO: Add your control notification handler code here } void CExtView::OnClickedLaunchExtViewer() { // TODO: Add your control notification handler code here } void CExtView::OnClickedSaveToDisk() { // TODO: Add your control notification handler code here } void CExtView::OnClickedViewerBrowse() { // TODO: Add your control notification handler code here } void CExtView::OnCancel() { // TODO: Add extra cleanup here CDialog::OnCancel(); } void CExtView::OnOK() { // TODO: Add extra validation here CDialog::OnOK(); } void CExtView::OnSelchangeMimetype() { CListBox *pMimeList = (CListBox *)GetDlgItem(IDC_MIMETYPE); if (!pMimeList) return; // something REAL bad is happening! int iSel = pMimeList->GetCurSel(); CString csMimeType; pMimeList->GetText(iSel,csMimeType); // get mime type user selected SetMimeTypeTo(csMimeType); // set subtypes based on mime-type } void CExtView::OnSelchangeMimesubtype() { // TODO: Add your control notification handler code here CListBox *pSubtypeList = (CListBox *)GetDlgItem(IDC_MIMESUBTYPE); if (!pSubtypeList) return; // something REAL bad is happening! int iSel = pSubtypeList->GetCurSel(); CString csMimeSubtype; pSubtypeList->GetText(iSel,csMimeSubtype); // get mime subtype user selected SetSubtypeTo(csMimeSubtype); // set descr/ectensions/ect }