зеркало из https://github.com/mozilla/gecko-dev.git
233 строки
6.4 KiB
C++
233 строки
6.4 KiB
C++
|
/* -*- 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
|
||
|
|
||
|
}
|