⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sortsavedlg.cpp

📁 用VC写的浏览器
💻 CPP
字号:
// SortSaveDlg.cpp : implementation file
//

#include "stdafx.h"
#include "GreenBrowser.h"
#include "SortSaveDlg.h"
#include "inputdlg.h"
#include "mainfrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSortSaveDlg dialog


CSortSaveDlg::CSortSaveDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSortSaveDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSortSaveDlg)
	m_strFileName = _T("");
	m_bType = FALSE;
	//}}AFX_DATA_INIT
	m_bUrlReplaced = FALSE;
}


void CSortSaveDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSortSaveDlg)
	DDX_Control(pDX, IDC_LIST1, m_list);
	DDX_Text(pDX, IDC_FILENAME, m_strFileName);
	DDX_Check(pDX, IDC_TYPE, m_bType);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSortSaveDlg, CDialog)
	//{{AFX_MSG_MAP(CSortSaveDlg)
	ON_NOTIFY(NM_RCLICK, IDC_LIST1, OnClickList1)
	ON_BN_CLICKED(IDC_NOT_SORT, OnNotSort)
	ON_BN_CLICKED(IDC_NEW, OnNew)
	ON_BN_CLICKED(IDC_OPEN, OnOpen)
	ON_BN_CLICKED(IDC_RENAME, OnRename)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1)
	ON_BN_CLICKED(IDC_DATE_SAVE, OnDateSave)
	ON_BN_CLICKED(IDC_TYPE, OnType)
	ON_BN_CLICKED(IDC_SHOW_SORT_DLG, OnShowSortDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSortSaveDlg message handlers

BOOL CSortSaveDlg::OnInitDialog() 
{
#ifdef _WRITE_LNG_FILE_
	_WriteDlgString(this,"DialogSortSave");
	this->OnCancel();
	return TRUE;
#endif
	LOADDLG("DialogSortSave");
	CDialog::OnInitDialog();
	
	CRect rect;
	m_list.SetExtendedStyle(m_list.GetExtendedStyle() | LVS_EX_FULLROWSELECT);
	m_list.InsertColumn(0,"");
	m_list.GetWindowRect(rect);
	m_list.SetColumnWidth(0, rect.Width()-5);

	try{
	static char cur[MAX_PATH];
	static char tmp[5]; 
	//load bmp names
	CString strTemp = ((CGreenBrowserApp*)AfxGetApp())->m_strDefaultDirSort;
	cur[0]=0;
	GetCurrentDirectory(MAX_PATH, cur);
	if(!SetCurrentDirectory(strTemp))
		CreateDirectory(strTemp, NULL);
	else
		SetCurrentDirectory(cur);

	WIN32_FIND_DATA wfd;
	HANDLE          h;
	strTemp += "*.*";

	int i=0,selected=0;//,iIcon;
	h = FindFirstFile(strTemp, &wfd);
	if(h != INVALID_HANDLE_VALUE)
	{
		do
		{
			if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
			{
				if(lstrcmp(wfd.cFileName, _T(".")) == 0 || lstrcmp(wfd.cFileName, _T("..")) == 0)
					continue;
				m_list.InsertItem(i,wfd.cFileName);
				if(lstrcmp(wfd.cFileName, m_strSortSaveFolder) == 0)
					selected = i;
				//
				i++;
			}
		}
		while(FindNextFile(h, &wfd) && i<511);
	}
	FindClose(h);
	LIST_FOCUS_POS(m_list,selected);
	//
	CButton *p = (CButton*)GetDlgItem(IDC_SHOW_SORT_DLG);
	p->SetCheck(pmf->m_bShowSortSaveDlg);

	}catch(...){}

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSortSaveDlg::OnOK() 
{
	// TODO: Add extra validation here
	POSITION pos = m_list.GetFirstSelectedItemPosition();
	int current = m_list.GetNextSelectedItem(pos);
	if (current<0)
		return;
	m_strSortSaveFolder = m_list.GetItemText(current,0);
	CDialog::OnOK();
}

void CSortSaveDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	POSITION pos = m_list.GetFirstSelectedItemPosition();
	if(pos!=NULL)
		OnOK();

	*pResult = 0;
}

void CSortSaveDlg::OnNotSort() 
{
	// TODO: Add your control notification handler code here
	m_strSortSaveFolder.Empty();
	CDialog::OnOK();
}
void CSortSaveDlg::NewDir(CString strNew)
{
	CString strItem;
	int count = m_list.GetItemCount();
	for (int i=0;i<count;i++)
	{
		strItem = m_list.GetItemText(i,0);
		strItem.MakeLower();
		strNew.MakeLower();
		if (strItem==strNew)
			break;
	}
	if (i==count)
	{
		m_list.InsertItem(i, strNew);
		strNew = theApp.m_strDefaultDirSort + strNew;
		_CreateFullDir(strNew);
	}
	LIST_FOCUS_POS(m_list,i);
}
void CSortSaveDlg::OnNew() 
{
	// TODO: Add your control notification handler code here
	CInputDlg dlg;
	CString str;
	LOADSTR(str ,IDS_NEW_DIR);
	dlg.m_strMsg = str;
	if (dlg.DoModal()==IDOK)
	{
		CString strName;
		strName = dlg.m_strOutput;
		if (strName.GetLength())
		{
			REPLACE_ERR_PATH_CHAR(strName)
			if (strName.GetLength()<1)
				return;
			NewDir(strName);
		}
	}
}

void CSortSaveDlg::OnOpen() 
{
	// TODO: Add your control notification handler code here
	POSITION pos = m_list.GetFirstSelectedItemPosition();
	int current = m_list.GetNextSelectedItem(pos);
	CString strName;
	if (current>=0)
		strName = m_list.GetItemText(current,0);
	//
	CString strTemp = ((CGreenBrowserApp*)AfxGetApp())->m_strDefaultDirSort;
	strTemp += strName;
	ShellExecute(NULL, "open", strTemp , "", NULL, SW_SHOW );
}

void CSortSaveDlg::OnRename() 
{
	// TODO: Add your control notification handler code here
	POSITION pos = m_list.GetFirstSelectedItemPosition();
	int current = m_list.GetNextSelectedItem(pos);
	CString strNameOld;
	if (current>=0)
		strNameOld = m_list.GetItemText(current,0);
	//
	CInputDlg dlg;
	CString str;
	LOADSTR(str ,IDS_NEW_DIR);
	dlg.m_strMsg = str;
	dlg.m_strOutput = strNameOld;
	if (dlg.DoModal()==IDOK)
	{
		CString strName;
		strName = dlg.m_strOutput;
		if (strName.GetLength())
		{
			REPLACE_ERR_PATH_CHAR(strName)
			if (strName.GetLength()<1)
				return;
			m_list.SetItemText(current,0,strName);
			//		
			CString strOldPath = ((CGreenBrowserApp*)AfxGetApp())->m_strDefaultDirSort + strNameOld;
			CString strNewPath = ((CGreenBrowserApp*)AfxGetApp())->m_strDefaultDirSort + strName;
			rename(strOldPath, strNewPath);
		}
	}	
}

void CSortSaveDlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	POSITION pos = m_list.GetFirstSelectedItemPosition();
	if(pos!=NULL)
		OnOK();

	*pResult = 0;
}

void CSortSaveDlg::OnDateSave() 
{
	// TODO: Add your control notification handler code here
	CString strTime;
	SYSTEMTIME time;
	::GetLocalTime(&time);
	strTime.Format("%04d_%02d_%02d",time.wYear,time.wMonth,time.wDay);
	NewDir(strTime);
	OnOK();
}

void CSortSaveDlg::GetUrl() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	CString filename = m_strFileName;
	CString ext;
	int l = filename.ReverseFind('.');
	if(l>0)
	{
		ext = filename.Right(filename.GetLength()-l);
		filename = filename.Left(l);
	}
	//
	if (!m_bUrlReplaced)
	{
		m_strUrl.Replace('/', '\\');
		if(m_strUrl.Right(1) == "\\")
			m_strUrl = m_strUrl.Left(m_strUrl.GetLength()-1);

		int l = m_strUrl.ReverseFind('\\');
		m_strUrl = m_strUrl.Mid(l+1);
		m_strUrl.Replace(':', '_');
		l = m_strUrl.Find('?');
		if(l>0)
			m_strUrl = m_strUrl.Left(l);
		l = m_strUrl.ReverseFind('.');
		if(l>0)
			m_strUrl = m_strUrl.Left(l);
		//
		m_bUrlReplaced = TRUE;
	}
	m_strFileName = m_strUrl + ext;
	UpdateData(FALSE);
}

void CSortSaveDlg::GetTitle() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	CString filename = m_strFileName;
	CString ext;
	int l = filename.ReverseFind('.');
	if(l>0)
	{
		ext = filename.Right(filename.GetLength()-l);
		filename = filename.Left(l);
	}
	if (IS_URL(m_strTitle))
		m_strFileName = m_strTitle ;
	else
		m_strFileName = m_strTitle + ext;
	UpdateData(FALSE);
}

void CSortSaveDlg::OnType() 
{
	// TODO: Add your control notification handler code here
	if (m_bType)
		GetUrl();
	else
		GetTitle();
}

void CSortSaveDlg::OnShowSortDlg() 
{
	// TODO: Add your control notification handler code here
	pmf->m_bShowSortSaveDlg = !pmf->m_bShowSortSaveDlg;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -