25 #include <QVBoxLayout>
30 #include <KIconLoader>
31 #include <KIO/NetAccess>
33 using namespace Kerfuffle;
37 return KIconLoader::global()->loadMimeTypeIcon(mimeName, KIconLoader::Desktop, KIconLoader::SizeHuge);
41 : QFrame(parent), m_model(model)
46 QFont fnt = fileName->font();
47 if (fnt.pointSize() > -1) {
48 fnt.setPointSize(fnt.pointSize() + 1);
50 fnt.setPixelSize(fnt.pixelSize() + 3);
52 fileName->setFont(fnt);
63 iconLabel->setPixmap(KIconLoader::global()->loadIcon(QLatin1String(
"utilities-file-archiver" ), KIconLoader::Desktop, KIconLoader::SizeHuge));
67 if (currentFileName.isEmpty()) {
68 fileName->setText(i18n(
"No archive loaded"));
70 fileName->setText(currentFileName);
73 additionalInfo->setText(QString());
80 if (m_prettyFileName.isEmpty()) {
83 return fileInfo.fileName();
87 return m_prettyFileName;
92 m_prettyFileName = fileName;
97 if (!index.isValid()) {
102 KMimeType::Ptr mimeType;
105 mimeType = KMimeType::mimeType(QLatin1String(
"inode/directory" ));
107 mimeType = KMimeType::findByPath(entry[
FileName ].toString(), 0,
true);
110 iconLabel->setPixmap(
getMimeIcon(mimeType->iconName()));
114 const int children = m_model->
childCount(index, dirs, files);
115 additionalInfo->setText(KIO::itemsSummaryString(children, files, dirs, 0,
false));
116 }
else if (entry.contains(
Link)) {
117 additionalInfo->setText(i18n(
"Symbolic Link"));
119 if (entry.contains(
Size)) {
120 additionalInfo->setText(KIO::convertSize(entry[
Size ].toULongLong()));
122 additionalInfo->setText(i18n(
"Unknown size"));
127 const QStringList nameParts = entry[
FileName ].toString().split(QLatin1Char(
'/' ), QString::SkipEmptyParts);
128 const QString name = (nameParts.count() > 0) ? nameParts.last() : entry[
FileName ].toString();
129 fileName->setText(name);
131 metadataLabel->setText(metadataTextFor(index));
138 if (list.size() == 0) {
140 }
else if (list.size() == 1) {
143 iconLabel->setPixmap(KIconLoader::global()->loadIcon(QLatin1String(
"utilities-file-archiver" ), KIconLoader::Desktop, KIconLoader::SizeHuge));
144 fileName->setText(i18np(
"One file selected",
"%1 files selected", list.size()));
145 quint64 totalSize = 0;
146 foreach(
const QModelIndex& index, list) {
148 totalSize += entry[
Size ].toULongLong();
150 additionalInfo->setText(KIO::convertSize(totalSize));
155 void InfoPanel::showMetaData()
157 firstSeparator->show();
158 metadataLabel->show();
161 void InfoPanel::hideMetaData()
163 firstSeparator->hide();
164 metadataLabel->hide();
167 void InfoPanel::showActions()
169 secondSeparator->show();
170 actionsLabel->show();
173 void InfoPanel::hideActions()
175 secondSeparator->hide();
176 actionsLabel->hide();
179 QString InfoPanel::metadataTextFor(
const QModelIndex &index)
184 KMimeType::Ptr mimeType;
187 mimeType = KMimeType::mimeType(QLatin1String(
"inode/directory" ));
189 mimeType = KMimeType::findByPath(entry[
FileName ].toString(), 0,
true);
192 text += i18n(
"<b>Type:</b> %1<br/>", mimeType->comment());
194 if (entry.contains(
Owner)) {
195 text += i18n(
"<b>Owner:</b> %1<br/>", entry[
Owner ].toString());
198 if (entry.contains(
Group)) {
199 text += i18n(
"<b>Group:</b> %1<br/>", entry[
Group ].toString());
202 if (entry.contains(
Link)) {
203 text += i18n(
"<b>Target:</b> %1<br/>", entry[
Link ].toString());
207 text += i18n(
"<b>Password protected:</b> Yes<br/>");
213 #include "infopanel.moc"
The user the entry belongs to.
The entry is password-protected.
The entry is a directory.
void setPrettyFileName(const QString &fileName)
Sets a different file name for the current open archive.
void setIndex(const QModelIndex &)
The entry is a symbolic link.
QHash< int, QVariant > ArchiveEntry
void updateWithDefaults()
static QPixmap getMimeIcon(const QString &mimeName)
InfoPanel(ArchiveModel *model, QWidget *parent=0)
int childCount(const QModelIndex &index, int &dirs, int &files) const
Kerfuffle::Archive * archive() const
The entry's original size.
void setIndexes(const QModelIndexList &list)
The user group the entry belongs to.
QString prettyFileName() const
Returns the file name that is displayed on the info panel.
Kerfuffle::ArchiveEntry entryForIndex(const QModelIndex &index)