Пример #1
0
    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);
            }
        }
    }