/IZWebFileManager/FileViewItem.cs
http://izwebfilemanager.googlecode.com/ · C# · 155 lines · 120 code · 20 blank · 15 comment · 25 complexity · ebfa89be9040ad5130b4a998bb2f8a93 MD5 · raw file
- // Copyright (C) 2006 Igor Zelmanovich <izwebfilemanager@gmail.com>
- //
- // This program is free software; you can redistribute it and/or modify
- // it under the terms of the GNU General Public License as published by
- // the Free Software Foundation; either version 2 of the License, or
- // (at your option) any later version.
- //
- // This program is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // GNU General Public License for more details.
- //
- // You should have received a copy of the GNU General Public License
- // along with this program; if not, write to the Free Software
- // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.IO;
- using System.Web;
- using System.Globalization;
-
- namespace IZ.WebFileManager
- {
- sealed class FileViewItem
- {
- string _thumbnailImage;
- string _smallImage;
- string _largeImage;
- string _size;
- string _type;
- string _modified;
- string _cliendID;
- readonly FileSystemInfo _fsi;
- readonly FileManagerControlBase _fileView;
- bool? _hidden;
-
- public FileSystemInfo FileSystemInfo {
- get { return _fsi; }
- }
-
- public bool IsDirectory {
- get { return _fsi is DirectoryInfo; }
- }
-
- public string ClientID {
- get { return _cliendID; }
- set { _cliendID = value; }
- }
-
- public bool CanBeRenamed {
- get { return true; }
- }
-
- public string SmallImage {
- get {
- if (_smallImage == null)
- _smallImage = _fileView.Controller.GetItemSmallImage (_fsi);
- return _smallImage;
- }
- }
-
- public string LargeImage {
- get {
- if (_largeImage == null)
- _largeImage = _fileView.Controller.GetItemLargeImage (_fsi);
- return _largeImage;
- }
- }
-
- public string ThumbnailImage {
- get {
- if (_thumbnailImage == null)
- _thumbnailImage = _fileView.Controller.GetItemThumbnailImage (_fsi, _fileView.CurrentDirectory);
- return _thumbnailImage;
- }
- }
-
- public string Info {
- get { return String.Empty; }
- }
-
- public string Size {
- get {
- if (_size == null)
- _size = _fsi is DirectoryInfo ? " " : FileSizeToString (((FileInfo) _fsi).Length);
- return _size;
- }
- }
-
- public string Type {
- get {
- if (_type == null)
- _type = GetItemType (_fsi);
- return _type;
- }
- }
-
- public string Modified {
- get {
- if (_modified == null)
- _modified = _fsi.LastWriteTime.ToString ("g", null);
- return _modified;
- }
- }
-
- public string Name {
- get { return _fsi.Name; }
- }
-
- public bool Hidden {
- get {
- if (!_hidden.HasValue) {
- _hidden = (!String.IsNullOrEmpty (_fileView.HiddenFilesAndFoldersPrefix) && _fsi.Name.StartsWith (_fileView.HiddenFilesAndFoldersPrefix, StringComparison.InvariantCultureIgnoreCase));
- if (!_hidden.Value && _fsi is FileInfo) {
- string ext = _fsi.Extension.ToLower (CultureInfo.InvariantCulture).TrimStart ('.');
- _hidden = _fileView.Controller.HiddenFilesArray.Contains (ext);
- }
- }
- return _hidden.Value;
- }
- }
-
- internal FileViewItem (FileSystemInfo fsi, FileManagerControlBase fileView) {
- this._fsi = fsi;
- this._fileView = fileView;
- }
-
- string GetItemType (FileSystemInfo fsi) {
- if (fsi is DirectoryInfo)
- return _fileView.Controller.GetResourceString ("File_Folder", "File Folder");
- else {
- FileInfo file = (FileInfo) fsi;
- FileType ft = _fileView.Controller.GetFileType (file);
- if (ft != null && ft.Name.Length > 0)
- return ft.Name;
- else {
- return file.Extension.ToUpper (CultureInfo.InvariantCulture).TrimStart ('.') + " File";
- }
- }
-
- }
-
- static string FileSizeToString (long size) {
- if (size < 1024)
- return size.ToString (null, null) + " B";
- else if (size < 1048576)
- return (size / 1024).ToString (null, null) + " KB";
- else
- return (size / 1048576).ToString (null, null) + " MB";
-
- }
- }
- }