comparison src/cache.cpp @ 11:dfcf8c973219

Implement Cache maker.
author pyon@macmini
date Wed, 07 May 2014 20:38:57 +0900
parents
children 52958cd4a073
comparison
equal deleted inserted replaced
10:29021e6e1ebe 11:dfcf8c973219
1 // Filename : cache.cpp
2 // Last Change: 07-May-2014.
3 //
4
5 #include "cache.h"
6 #include "db.h"
7
8 CacheDialog::CacheDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style )
9 : wxDialog( parent, id, title, pos, size, style )
10 {
11 this->SetSizeHints( wxDefaultSize, wxDefaultSize );
12
13 wxBoxSizer* bSizerTop = new wxBoxSizer( wxVERTICAL );
14
15 m_datePickerBgn = new wxDatePickerCtrl( this, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_DEFAULT );
16 bSizerTop->Add( m_datePickerBgn, 0, wxALL, 5 );
17
18 m_datePickerEnd = new wxDatePickerCtrl( this, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_DEFAULT );
19 bSizerTop->Add( m_datePickerEnd, 0, wxALL, 5 );
20
21 m_buttonMake = new wxButton( this, ID_MKCACHE, wxT("作成"), wxDefaultPosition, wxDefaultSize, 0 );
22 bSizerTop->Add( m_buttonMake, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 );
23
24 m_buttonClose = new wxButton( this, ID_CLOSE, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 );
25 m_buttonClose->SetDefault();
26 bSizerTop->Add( m_buttonClose, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 );
27
28 this->SetSizer( bSizerTop );
29 this->Layout();
30 bSizerTop->Fit( this );
31
32 this->Centre( wxBOTH );
33 }
34
35 CacheDialog::~CacheDialog()
36 {
37 }
38
39 // Event Table
40 BEGIN_EVENT_TABLE( CacheDialog, wxDialog )
41 EVT_BUTTON( ID_MKCACHE, CacheDialog::OnMakeCache )
42 EVT_BUTTON( ID_CLOSE, CacheDialog::OnClose )
43 END_EVENT_TABLE()
44
45 // Event Handlers & Functions
46 void CacheDialog::Setting( wxString rootdir, int w, int h )
47 {
48 m_rootdir = rootdir;
49 m_width = w;
50 m_height = h;
51 }
52
53 void CacheDialog::OnMakeCache( wxCommandEvent& WXUNUSED(event) )
54 {
55 wxDateTime b = m_datePickerBgn->GetValue();
56 wxDateTime e = m_datePickerEnd->GetValue();
57
58 MakeCache( b.Format( wxT("%Y%m%d")), e.Format( wxT("%Y%m%d")) );
59 }
60
61 void CacheDialog::MakeCache( wxString from, wxString to )
62 {
63 wxArrayString path = GetPathes( from, to );
64 wxString cachedir = wxGetCwd() + wxFILE_SEP_PATH + wxT("cache");
65
66 for ( int i = 0; i < path.GetCount(); i++ ) {
67
68 wxArrayString files;
69 wxDir::GetAllFiles( path[i], &files, wxT("*.*"), wxDIR_DEFAULT );
70
71 for ( int j = 0; j < files.GetCount(); j++ ) {
72 wxImage image( files[j], wxBITMAP_TYPE_JPEG );
73 wxImage output = image.Scale( m_width, m_height, wxIMAGE_QUALITY_HIGH );
74
75 wxString buf = files[j];
76 buf.Replace( m_rootdir, cachedir, false );
77 buf = buf.BeforeLast( '.' ) + wxT(".png");
78
79 wxFileName tf( buf );
80 if ( !tf.Exists() ) tf.Mkdir( wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL );
81 output.SaveFile( buf, wxBITMAP_TYPE_PNG );
82 }
83
84 }
85
86 wxMessageBox( wxT("cache updated.") );
87 }
88
89 void CacheDialog::OnClose( wxCommandEvent& WXUNUSED(event) )
90 {
91 Close();
92 }
93