#include <QTabWidget>
#include <QWidget>
#include <QDialog>
#include <QFileInfo>
#include <QVBoxLayout>
#include <QDialogButtonBox>
#include <QLabel>
#include <QLineEdit>
#include <QDateTime>
#include <QGroupBox>
#include <QCheckBox>
#include <QListWidget>
#include
"tabdlg.h"
TabDialog::TabDialog(
const QString &fileName, QWidget *parent):QDialog(parent)
{
QFileInfo fileInfo(fileName);
tabWidget=
new QTabWidget;
tabWidget->addTab(
new GeneralTab(fileName),trUtf8(
"常规"));
tabWidget->addTab(
new PermissionsTab(fileName),trUtf8(
"权限"));
tabWidget->addTab(
new ApplicationsTab(fileName),trUtf8(
"应用程序"));
buttonBox=
new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel);
connect(buttonBox,SIGNAL(accepted()),
this,SLOT(accept()));
//OK
connect(buttonBox,SIGNAL(rejected()),
this,SLOT(reject()));
//Cancel
QVBoxLayout *mainLayout=
new QVBoxLayout;
mainLayout->addWidget(tabWidget);
mainLayout->addWidget(buttonBox);
setLayout(mainLayout);
setWindowTitle(trUtf8(
"Tab对话框"));
}
//常规面板类构造函数实现
GeneralTab::GeneralTab(
const QFileInfo &fileInfo, QWidget *parent)
:QWidget(parent)
{
QLabel *fileNameLabel =
new QLabel(trUtf8(
"文件名:"));
QLineEdit *fileNameEdit =
new QLineEdit(fileInfo.fileName());
//去掉目录路径前缀后的
QLabel *pathLabel =
new QLabel(trUtf8(
"路径:"));
QLabel *pathValueLabel =
new QLabel(fileInfo.absoluteFilePath());
//完整的路径名
pathValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);
//设置label的样式
QLabel *sizeLabel =
new QLabel(trUtf8(
"大小:"));
qlonglong size = fileInfo.size()/1024;
//size()返回字节大小
QLabel *sizeValueLabel =
new QLabel(trUtf8(
"%1 K").arg(size));
sizeValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);
QLabel *lastReadLabel =
new QLabel(trUtf8(
"上次读取时间:"));
QLabel *lastReadValueLabel =
new QLabel(fileInfo.lastRead().toString());
lastReadValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);
QLabel *lastModLabel =
new QLabel(trUtf8(
"上次修改时间:"));
QLabel *lastModValueLabel =
new QLabel(fileInfo.lastModified().toString());
lastModValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);
QVBoxLayout *mainLayout =
new QVBoxLayout;
mainLayout->addWidget(fileNameLabel);
mainLayout->addWidget(fileNameEdit);
mainLayout->addWidget(pathLabel);
mainLayout->addWidget(pathValueLabel);
mainLayout->addWidget(sizeLabel);
mainLayout->addWidget(sizeValueLabel);
mainLayout->addWidget(lastReadLabel);
mainLayout->addWidget(lastReadValueLabel);
mainLayout->addWidget(lastModLabel);
mainLayout->addWidget(lastModValueLabel);
//mainLayout->addStretch(1);
setLayout(mainLayout);
}
//权限面板类
PermissionsTab::PermissionsTab(
const QFileInfo &fileInfo, QWidget *parent)
:QWidget(parent)
{
//群组框
QGroupBox *permissionsGroup =
new QGroupBox(trUtf8(
"权限"));
QCheckBox *readable =
new QCheckBox(trUtf8(
"可读"));
if (fileInfo.isReadable())
readable->setChecked(
true);
//勾选
QCheckBox *writable =
new QCheckBox(trUtf8(
"可写"));
if ( fileInfo.isWritable() )
writable->setChecked(
true);
QCheckBox *executable =
new QCheckBox(trUtf8(
"可执行"));
if ( fileInfo.isExecutable() )
executable->setChecked(
true);
QGroupBox *ownerGroup =
new QGroupBox(trUtf8(
"所有权"));
QLabel *ownerLabel =
new QLabel(trUtf8(
"所有者"));
QLabel *ownerValueLabel =
new QLabel(fileInfo.owner());
ownerValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);
QLabel *groupLabel =
new QLabel(trUtf8(
"组"));
QLabel *groupValueLabel =
new QLabel(fileInfo.group());
groupValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);
QVBoxLayout *permissionsLayout =
new QVBoxLayout;
permissionsLayout->addWidget(readable);
permissionsLayout->addWidget(writable);
permissionsLayout->addWidget(executable);
permissionsGroup->setLayout(permissionsLayout);
//权限组
QVBoxLayout *ownerLayout =
new QVBoxLayout;
ownerLayout->addWidget(ownerLabel);
ownerLayout->addWidget(ownerValueLabel);
ownerLayout->addWidget(groupLabel);
ownerLayout->addWidget(groupValueLabel);
ownerGroup->setLayout(ownerLayout);
//所有权组
QVBoxLayout *mainLayout =
new QVBoxLayout;
mainLayout->addWidget(permissionsGroup);
mainLayout->addWidget(ownerGroup);
//mainLayout->addStretch(1);
setLayout(mainLayout);
}
//应用程序选项卡类构造函数实现
ApplicationsTab::ApplicationsTab(
const QFileInfo &fileInfo, QWidget *parent)
:QWidget(parent)
{
QLabel *topLabel =
new QLabel(trUtf8(
"打开方式...:"));
QListWidget *applicationsListBox =
new QListWidget;
QStringList applications;
for (
int i = 1; i <= 30; ++i)
applications.append(trUtf8(
"应用程序 %1").arg(i));
applicationsListBox->insertItems(0, applications);
QCheckBox *alwaysCheckBox;
if (fileInfo.suffix().isEmpty())
alwaysCheckBox =
new QCheckBox(trUtf8(
"始终使用该程序"
"打开该类型的文件"));
else
alwaysCheckBox =
new QCheckBox(trUtf8(
"始终使用该程序"
"打开此扩展名文件 '%1'").arg(fileInfo.suffix()));
QVBoxLayout *layout =
new QVBoxLayout;
layout->addWidget(topLabel);
layout->addWidget(applicationsListBox);
layout->addWidget(alwaysCheckBox);
setLayout(layout);
}