OSDN Git Service

セキュリティ面で問題のある格納ファイルに対して警告し、赤字で表示するよう変更。
[tpi/lychee.git] / src / frontend / cls_listctrl.cpp
1 /*******************************************************************************\r
2   TPI - flexible but useless plug-in framework.\r
3   Copyright (C) 2002-2009 Silky\r
4 \r
5   This library is free software; you can redistribute it and/or modify it under\r
6   the terms of the GNU Lesser General Public License as published by the Free\r
7   Software Foundation; either version 2.1 of the License, or (at your option)\r
8   any later version.\r
9 \r
10   This library is distributed in the hope that it will be useful, but WITHOUT\r
11   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or \r
12   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License\r
13   for more details.\r
14 \r
15   You should have received a copy of the GNU Lesser General Public License along\r
16   with this library; if not, write to the Free Software Foundation, Inc.,\r
17   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\r
18 \r
19   $Id: cls_listctrl.cpp,v 1.6 2009/08/23 03:00:34 sirakaba Exp $\r
20 *******************************************************************************/\r
21 \r
22 #include "frontend.h"\r
23 \r
24 #include "cls_listctrl.h"\r
25 #include "dlg_make.h"\r
26 #include "frm_main.h"\r
27 #include "functions.h"\r
28 \r
29 //******************************************************************************\r
30 // myListCtrl\r
31 //******************************************************************************\r
32 \r
33 IMPLEMENT_DYNAMIC_CLASS(myListCtrl, wxListView)\r
34 \r
35 //******************************************************************************\r
36 // Event Table.\r
37 //******************************************************************************\r
38 \r
39 BEGIN_EVENT_TABLE(myListCtrl, wxListCtrl)\r
40         // ListView\r
41         EVT_LIST_COL_CLICK(XRCID("ListView"), myListCtrl::OnColClick)\r
42 END_EVENT_TABLE()\r
43 \r
44 //******************************************************************************\r
45 // Event handler.\r
46 //******************************************************************************\r
47 \r
48 wxString myListCtrl::OnGetItemText(long i, long column) const\r
49 {\r
50         // \83\8a\83X\83g\83r\83\85\81[\82É\8d\80\96Ú\82ð\92Ç\89Á\81B\r
51         switch (column)\r
52         {\r
53         case 0:\r
54                 return this->showFileInfo[i].fnFileName.GetFullName();\r
55         case 1:\r
56                 return this->showFileInfo[i].llUnpackedSize.ToString();\r
57         case 2:\r
58                 return this->showFileInfo[i].llPackedSize.ToString();\r
59         case 3:\r
60                 return wxString::Format(wxT("%3.1f%%"), this->showFileInfo[i].wCompressRatio / 10.0);\r
61         case 4:\r
62                 return this->showFileInfo[i].szMethod;\r
63         case 5:\r
64         {\r
65                 wxString szTemp = wxT("---w-");\r
66                 szTemp[0] = this->showFileInfo[i].dwAttribute & TPI_ATTRIBUTE_DIRECTORY ? wxT('d') : \r
67                             this->showFileInfo[i].dwAttribute & TPI_ATTRIBUTE_ARCHIVE   ? wxT('a') : wxT('-');\r
68                 szTemp[1] = this->showFileInfo[i].dwAttribute & TPI_ATTRIBUTE_SYSTEM    ? wxT('s') : wxT('-');\r
69                 szTemp[2] = this->showFileInfo[i].dwAttribute & TPI_ATTRIBUTE_HIDDEN    ? wxT('h') : wxT('-');\r
70                 szTemp[3] = this->showFileInfo[i].dwAttribute & TPI_ATTRIBUTE_READONLY  ? wxT('r') : wxT('w');\r
71                 szTemp[4] = this->showFileInfo[i].dwAttribute & TPI_ATTRIBUTE_ENCRYPTED ? wxT('g') : wxT('-');\r
72                 return szTemp;\r
73         }\r
74         case 6:\r
75                 return this->showFileInfo[i].tmModified.Format(wxT("%Y/%m/%d %H:%M:%S"));\r
76         case 7:\r
77                 return this->showFileInfo[i].fnFileName.GetPath();\r
78         case 8:\r
79                 return GetFileTypeName(this->showFileInfo[i].fnFileName);\r
80         case 9:\r
81                 return wxString::Format(wxT("%d"), this->showFileInfo[i].llFileID.ToULong());\r
82         default:\r
83                 return wxEmptyString;\r
84         }\r
85 }\r
86 \r
87 int myListCtrl::OnGetItemImage(long i) const\r
88 {\r
89         wxIcon icon = GetFileTypeIcon(this->showFileInfo[i].fnFileName);\r
90         g_hIconLL.Add(icon);\r
91         // wxGTK\82Å16x16\82Ì\83A\83C\83R\83\93\82ª\95\\8e¦\82Å\82«\82é\82æ\82¤\83\8a\83T\83C\83Y\82µ\82Ä\82¨\82­\81B\r
92 #ifdef __WINDOWS__\r
93         return g_hIconLS.Add(icon);\r
94 #else\r
95         return g_hIconLS.Add(icon.ConvertToImage().Rescale(16, 16));\r
96 #endif\r
97 }\r
98 \r
99 wxListItemAttr * myListCtrl::OnGetItemAttr(long i) const\r
100 {\r
101         return (wxListItemAttr *) this->showFileInfo[i].pCustomInfo;\r
102 }\r
103 \r
104 void myListCtrl::OnColClick(wxListEvent& e)\r
105 {\r
106         g_nSortingColumn = e.GetColumn();\r
107 \r
108         // \83\\81[\83g\81B\r
109         this->showFileInfo.Sort(& ListCtrlCompareProc);\r
110         this->SetItemCount(this->showFileInfo.Count());\r
111         this->RefreshItems(0, this->showFileInfo.Count() - 1);\r
112 }\r
113 \r
114 //******************************************************************************\r
115 //    \8f\94\8f\88\97\9d\8aÖ\90\94\r
116 //******************************************************************************\r
117 \r
118 int ListCtrlCompareProc(TPI_FILEINFO ** pItem1, TPI_FILEINFO ** pItem2)\r
119 {\r
120         TPI_FILEINFO * item1 = * pItem1, * item2 = * pItem2;\r
121         switch (g_nSortingColumn)\r
122         {\r
123         case 0:// Filename\r
124                 return ::wxStricmp(item1->fnFileName.GetFullName(), item2->fnFileName.GetFullName());\r
125         case 1:// Unpacked\r
126                 return (item1->llUnpackedSize < item2->llUnpackedSize) ? -1 : ((item1->llUnpackedSize > item2->llUnpackedSize) ? 1 : 0);\r
127         case 2:// Packed\r
128                 return (item1->llPackedSize < item2->llPackedSize) ? -1 : ((item1->llPackedSize > item2->llPackedSize) ? 1 : 0);\r
129         case 3:// Ratio\r
130                 return (item1->wCompressRatio < item2->wCompressRatio) ? -1 : ((item1->wCompressRatio > item2->wCompressRatio) ? 1 : 0);\r
131         case 6:// Last Modified\r
132                 return (item1->tmModified < item2->tmModified) ? -1 : ((item1->tmModified > item2->tmModified) ? 1 : 0);\r
133         case 7:// Path\r
134                 return ::wxStricmp(item1->fnFileName.GetPath(), item2->fnFileName.GetPath());\r
135         case 8:// Type\r
136                 return ::wxStricmp(GetFileTypeName(item1->fnFileName), GetFileTypeName(item2->fnFileName));\r
137         case 9:// No\r
138                 return (item1->llFileID < item2->llFileID) ? -1 : ((item1->llFileID > item2->llFileID) ? 1 : 0);\r
139         default:\r
140                 return 0;\r
141         }\r
142 }\r