private void UpdateDetailsBox() { if (detailsBox.Visible) { FileNode active = slices.ActiveSlice.GetActiveNode(); GLib.File activeFile = GLib.FileFactory.NewForPath(active.File); if (!active.IsDirectory) { detailLabelContents.Visible = false; detailValueContents.Visible = false; detailEntryName.Text = active.FileName; String infoString = "standard::size,standard::content-type,filesystem:free,time::modified,time::access,owner::user,owner::group"; GLib.FileInfo info = activeFile.QueryInfo(infoString, FileQueryInfoFlags.None, null); String sizeString = info.GetAttributeAsString("standard::size"); detailValueSize.Text = String.Format(new FileSizeFormatProvider(), "{0:fs}", Convert.ToUInt64(sizeString)); detailValueType.Text = Gnome.Vfs.Mime.GetDescription(info.ContentType) + " (" + info.ContentType + ")"; DateTime tempTime = NodeManager.ConvertFromUnixTimestamp(Convert.ToUInt64(info.GetAttributeAsString("time::access"))); detailValueAccessed.Text = tempTime.ToString("ddd, dd MMM yyyy HH':'mm':'ss"); tempTime = NodeManager.ConvertFromUnixTimestamp(Convert.ToUInt64(info.GetAttributeAsString("time::modified"))); detailValueModified.Text = tempTime.ToString("ddd, dd MMM yyyy HH':'mm':'ss"); detailValueSpace.Text = String.Format(new FileSizeFormatProvider(), "{0:fs}", Convert.ToUInt64(info.GetAttributeString("filesystem:free"))); detailValueOwner.Text = info.GetAttributeString("owner::user"); detailValueGroup.Text = info.GetAttributeString("owner::group"); } else { detailLabelContents.Visible = true; detailValueContents.Visible = true; detailValueSize.Text = "[unsupported]"; detailEntryName.Text = active.FileName; detailValueType.Text = "Directory"; String infoString = "time::modified,time::access,owner::user,owner::group"; GLib.FileInfo info = activeFile.QueryInfo(infoString, FileQueryInfoFlags.None, null); DateTime tempTime = NodeManager.ConvertFromUnixTimestamp(Convert.ToUInt64(info.GetAttributeAsString("time::access"))); detailValueAccessed.Text = tempTime.ToString("ddd, dd MMM yyyy HH':'mm':'ss"); tempTime = NodeManager.ConvertFromUnixTimestamp(Convert.ToUInt64(info.GetAttributeAsString("time::modified"))); detailValueModified.Text = tempTime.ToString("ddd, dd MMM yyyy HH':'mm':'ss"); detailValueContents.Text = active.NumChildren + " items (" + active.NumDirs + " folders)"; detailValueOwner.Text = info.GetAttributeString("owner::user"); detailValueGroup.Text = info.GetAttributeString("owner::group"); } Mono.Unix.Native.Statvfs fsbuf = new Mono.Unix.Native.Statvfs(); Mono.Unix.Native.Syscall.statvfs(slices.ActiveSlice.GetActiveNode().File, out fsbuf); detailValueSpace.Text = String.Format(new FileSizeFormatProvider(), "{0:fs}", fsbuf.f_bavail * fsbuf.f_bsize); UpdateDetailPermissions(); if (detailValueOwner.Text == Mono.Unix.UnixUserInfo.GetRealUser().UserName) { EnableDetailPermissions(true); } else { EnableDetailPermissions(false); } } }