From 084c604c3ca8b98633783a21fc5a7db0767c94cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Thu, 3 Jan 2013 12:43:03 +0000 Subject: [PATCH] Make filesystem label length depend on file system. svn path=/trunk/extragear/sysadmin/partitionmanager/; revision=1330603 --- src/fs/btrfs.cpp | 5 +++++ src/fs/btrfs.h | 1 + src/fs/exfat.cpp | 5 +++++ src/fs/exfat.h | 1 + src/fs/ext2.cpp | 5 +++++ src/fs/ext2.h | 1 + src/fs/fat16.cpp | 5 +++++ src/fs/fat16.h | 1 + src/fs/filesystem.cpp | 6 ++++++ src/fs/filesystem.h | 1 + src/fs/hfs.cpp | 5 +++++ src/fs/hfs.h | 1 + src/fs/hfsplus.cpp | 5 +++++ src/fs/hfsplus.h | 1 + src/fs/jfs.cpp | 5 +++++ src/fs/jfs.h | 1 + src/fs/linuxswap.cpp | 5 +++++ src/fs/linuxswap.h | 1 + src/fs/nilfs2.cpp | 5 +++++ src/fs/nilfs2.h | 1 + src/fs/ntfs.cpp | 5 +++++ src/fs/ntfs.h | 1 + src/fs/reiser4.cpp | 5 +++++ src/fs/reiser4.h | 1 + src/fs/reiserfs.cpp | 5 +++++ src/fs/reiserfs.h | 1 + src/fs/xfs.cpp | 5 +++++ src/fs/xfs.h | 1 + src/gui/newdialog.cpp | 3 +++ src/gui/partpropsdialog.cpp | 6 ++++++ src/gui/partpropswidgetbase.ui | 3 --- src/gui/sizedialogwidget.h | 2 +- src/gui/sizedialogwidgetbase.ui | 3 --- 33 files changed, 95 insertions(+), 7 deletions(-) diff --git a/src/fs/btrfs.cpp b/src/fs/btrfs.cpp index a5370d7..f81f55d 100644 --- a/src/fs/btrfs.cpp +++ b/src/fs/btrfs.cpp @@ -100,6 +100,11 @@ namespace FS return Capacity::unitFactor(Capacity::Byte, Capacity::EiB); } + qint64 btrfs::maxLabelLength() const + { + return 255; + } + qint64 btrfs::readUsedCapacity(const QString& deviceNode) const { ExternalCommand cmd("btrfs-debug-tree", QStringList() << deviceNode); diff --git a/src/fs/btrfs.h b/src/fs/btrfs.h index c84be1b..3bc08a7 100644 --- a/src/fs/btrfs.h +++ b/src/fs/btrfs.h @@ -66,6 +66,7 @@ namespace FS virtual qint64 minCapacity() const; virtual qint64 maxCapacity() const; + virtual qint64 maxLabelLength() const; virtual SupportTool supportToolName() const; virtual bool supportToolFound() const; diff --git a/src/fs/exfat.cpp b/src/fs/exfat.cpp index f111444..0e007bb 100644 --- a/src/fs/exfat.cpp +++ b/src/fs/exfat.cpp @@ -89,6 +89,11 @@ namespace FS return Capacity::unitFactor(Capacity::Byte, Capacity::EiB); } + qint64 exfat::maxLabelLength() const + { + return 15; + } + bool exfat::check(Report& report, const QString& deviceNode) const { ExternalCommand cmd(report, "exfatfsck", QStringList() << deviceNode); diff --git a/src/fs/exfat.h b/src/fs/exfat.h index b7a154e..871f1ef 100644 --- a/src/fs/exfat.h +++ b/src/fs/exfat.h @@ -66,6 +66,7 @@ namespace FS // virtual qint64 minCapacity() const; virtual qint64 maxCapacity() const; + virtual qint64 maxLabelLength() const; virtual SupportTool supportToolName() const; virtual bool supportToolFound() const; diff --git a/src/fs/ext2.cpp b/src/fs/ext2.cpp index 07f189d..75319c7 100644 --- a/src/fs/ext2.cpp +++ b/src/fs/ext2.cpp @@ -88,6 +88,11 @@ namespace FS return 32 * Capacity::unitFactor(Capacity::Byte, Capacity::TiB); } + qint64 ext2::maxLabelLength() const + { + return 16; + } + qint64 ext2::readUsedCapacity(const QString& deviceNode) const { ExternalCommand cmd("dumpe2fs", QStringList() << "-h" << deviceNode); diff --git a/src/fs/ext2.h b/src/fs/ext2.h index b3f2c4f..87098b7 100644 --- a/src/fs/ext2.h +++ b/src/fs/ext2.h @@ -65,6 +65,7 @@ namespace FS virtual CommandSupportType supportGetUUID() const { return m_GetUUID; } virtual qint64 maxCapacity() const; + virtual qint64 maxLabelLength() const; virtual SupportTool supportToolName() const; virtual bool supportToolFound() const; diff --git a/src/fs/fat16.cpp b/src/fs/fat16.cpp index 3ceec89..f913099 100644 --- a/src/fs/fat16.cpp +++ b/src/fs/fat16.cpp @@ -101,6 +101,11 @@ namespace FS return 4 * Capacity::unitFactor(Capacity::Byte, Capacity::GiB); } + qint64 fat16::maxLabelLength() const + { + return 11; + } + qint64 fat16::readUsedCapacity(const QString& deviceNode) const { ExternalCommand cmd("fsck.msdos", QStringList() << "-n" << "-v" << deviceNode); diff --git a/src/fs/fat16.h b/src/fs/fat16.h index 088d967..3ea78cb 100644 --- a/src/fs/fat16.h +++ b/src/fs/fat16.h @@ -65,6 +65,7 @@ namespace FS virtual qint64 minCapacity() const; virtual qint64 maxCapacity() const; + virtual qint64 maxLabelLength() const; virtual SupportTool supportToolName() const; virtual bool supportToolFound() const; diff --git a/src/fs/filesystem.cpp b/src/fs/filesystem.cpp index 6b1eecc..69ab9ba 100644 --- a/src/fs/filesystem.cpp +++ b/src/fs/filesystem.cpp @@ -252,6 +252,12 @@ qint64 FileSystem::maxCapacity() const return Capacity::unitFactor(Capacity::Byte, Capacity::EiB); } +/** @return the maximum label length valid for this FileSystem */ +qint64 FileSystem::maxLabelLength() const +{ + return 16; +} + /** @return this FileSystem's type as printable name */ QString FileSystem::name() const { diff --git a/src/fs/filesystem.h b/src/fs/filesystem.h index c60e3b7..5a8de35 100644 --- a/src/fs/filesystem.h +++ b/src/fs/filesystem.h @@ -132,6 +132,7 @@ class FileSystem virtual qint64 minCapacity() const; virtual qint64 maxCapacity() const; + virtual qint64 maxLabelLength() const; virtual SupportTool supportToolName() const; virtual bool supportToolFound() const; diff --git a/src/fs/hfs.cpp b/src/fs/hfs.cpp index d9b76b9..6bb32ee 100644 --- a/src/fs/hfs.cpp +++ b/src/fs/hfs.cpp @@ -78,6 +78,11 @@ namespace FS return 2 * Capacity::unitFactor(Capacity::Byte, Capacity::TiB); } + qint64 hfs::maxLabelLength() const + { + return 27; + } + bool hfs::check(Report& report, const QString& deviceNode) const { ExternalCommand cmd(report, "hfsck", QStringList() << "-v" << deviceNode); diff --git a/src/fs/hfs.h b/src/fs/hfs.h index d0ddca6..cc724c7 100644 --- a/src/fs/hfs.h +++ b/src/fs/hfs.h @@ -57,6 +57,7 @@ namespace FS virtual CommandSupportType supportBackup() const { return m_Backup; } virtual qint64 maxCapacity() const; + virtual qint64 maxLabelLength() const; virtual SupportTool supportToolName() const; virtual bool supportToolFound() const; diff --git a/src/fs/hfsplus.cpp b/src/fs/hfsplus.cpp index bc86659..c2f9ca9 100644 --- a/src/fs/hfsplus.cpp +++ b/src/fs/hfsplus.cpp @@ -73,6 +73,11 @@ namespace FS return 8 * Capacity::unitFactor(Capacity::Byte, Capacity::EiB); } + qint64 hfsplus::maxLabelLength() const + { + return 63; + } + bool hfsplus::check(Report& report, const QString& deviceNode) const { ExternalCommand cmd(report, "hpfsck", QStringList() << "-v" << deviceNode); diff --git a/src/fs/hfsplus.h b/src/fs/hfsplus.h index 6361d75..d3a343a 100644 --- a/src/fs/hfsplus.h +++ b/src/fs/hfsplus.h @@ -54,6 +54,7 @@ namespace FS virtual CommandSupportType supportBackup() const { return m_Backup; } virtual qint64 maxCapacity() const; + virtual qint64 maxLabelLength() const; virtual SupportTool supportToolName() const; virtual bool supportToolFound() const; diff --git a/src/fs/jfs.cpp b/src/fs/jfs.cpp index c26b8b7..9d18bdc 100644 --- a/src/fs/jfs.cpp +++ b/src/fs/jfs.cpp @@ -91,6 +91,11 @@ namespace FS return 32 * Capacity::unitFactor(Capacity::Byte, Capacity::PiB); } + qint64 jfs::maxLabelLength() const + { + return 11; + } + qint64 jfs::readUsedCapacity(const QString& deviceNode) const { ExternalCommand cmd("jfs_debugfs", QStringList() << deviceNode); diff --git a/src/fs/jfs.h b/src/fs/jfs.h index 66a82fe..1e84942 100644 --- a/src/fs/jfs.h +++ b/src/fs/jfs.h @@ -62,6 +62,7 @@ namespace FS virtual qint64 minCapacity() const; virtual qint64 maxCapacity() const; + virtual qint64 maxLabelLength() const; virtual SupportTool supportToolName() const; virtual bool supportToolFound() const; diff --git a/src/fs/linuxswap.cpp b/src/fs/linuxswap.cpp index d0f72b4..635466d 100644 --- a/src/fs/linuxswap.cpp +++ b/src/fs/linuxswap.cpp @@ -71,6 +71,11 @@ namespace FS return SupportTool("util-linux", KUrl("http://www.kernel.org/pub/linux/utils/util-linux-ng/")); } + qint64 linuxswap::maxLabelLength() const + { + return 15; + } + bool linuxswap::create(Report& report, const QString& deviceNode) const { ExternalCommand cmd(report, "mkswap", QStringList() << deviceNode); diff --git a/src/fs/linuxswap.h b/src/fs/linuxswap.h index 87c30c7..d3539be 100644 --- a/src/fs/linuxswap.h +++ b/src/fs/linuxswap.h @@ -69,6 +69,7 @@ namespace FS virtual CommandSupportType supportUpdateUUID() const { return m_UpdateUUID; } virtual CommandSupportType supportGetUUID() const { return m_GetUUID; } + virtual qint64 maxLabelLength() const; virtual SupportTool supportToolName() const; virtual bool supportToolFound() const; diff --git a/src/fs/nilfs2.cpp b/src/fs/nilfs2.cpp index 1fce21d..a821c89 100644 --- a/src/fs/nilfs2.cpp +++ b/src/fs/nilfs2.cpp @@ -103,6 +103,11 @@ namespace FS return Capacity::unitFactor(Capacity::Byte, Capacity::EiB); } + qint64 nilfs2::maxLabelLength() const + { + return 80; + } + bool nilfs2::check(Report& report, const QString& deviceNode) const { ExternalCommand cmd(report, "fsck.nilfs2", QStringList() << deviceNode); diff --git a/src/fs/nilfs2.h b/src/fs/nilfs2.h index 4e54aea..af1b29d 100644 --- a/src/fs/nilfs2.h +++ b/src/fs/nilfs2.h @@ -67,6 +67,7 @@ namespace FS virtual qint64 minCapacity() const; virtual qint64 maxCapacity() const; + virtual qint64 maxLabelLength() const; virtual SupportTool supportToolName() const; virtual bool supportToolFound() const; diff --git a/src/fs/ntfs.cpp b/src/fs/ntfs.cpp index 559b8e7..59b41d7 100644 --- a/src/fs/ntfs.cpp +++ b/src/fs/ntfs.cpp @@ -95,6 +95,11 @@ namespace FS return 256 * Capacity::unitFactor(Capacity::Byte, Capacity::TiB); } + qint64 ntfs::maxLabelLength() const + { + return 128; + } + qint64 ntfs::readUsedCapacity(const QString& deviceNode) const { ExternalCommand cmd("ntfsresize", QStringList() << "--info" << "--force" << "--no-progress-bar" << deviceNode); diff --git a/src/fs/ntfs.h b/src/fs/ntfs.h index c2fb9e4..5c4d89c 100644 --- a/src/fs/ntfs.h +++ b/src/fs/ntfs.h @@ -67,6 +67,7 @@ namespace FS virtual CommandSupportType supportGetUUID() const { return m_GetUUID; } virtual qint64 maxCapacity() const; + virtual qint64 maxLabelLength() const; virtual SupportTool supportToolName() const; virtual bool supportToolFound() const; diff --git a/src/fs/reiser4.cpp b/src/fs/reiser4.cpp index f0fa9c0..fe96283 100644 --- a/src/fs/reiser4.cpp +++ b/src/fs/reiser4.cpp @@ -78,6 +78,11 @@ namespace FS // http://en.wikipedia.org/wiki/Comparison_of_file_systems return Capacity::unitFactor(Capacity::Byte, Capacity::EiB); } + + qint64 reiser4::maxLabelLength() const + { + return 16; + } qint64 reiser4::readUsedCapacity(const QString& deviceNode) const { diff --git a/src/fs/reiser4.h b/src/fs/reiser4.h index 57bf598..30e40e2 100644 --- a/src/fs/reiser4.h +++ b/src/fs/reiser4.h @@ -57,6 +57,7 @@ namespace FS virtual CommandSupportType supportBackup() const { return m_Backup; } virtual qint64 maxCapacity() const; + virtual qint64 maxLabelLength() const; virtual SupportTool supportToolName() const; virtual bool supportToolFound() const; diff --git a/src/fs/reiserfs.cpp b/src/fs/reiserfs.cpp index 8a21612..4175342 100644 --- a/src/fs/reiserfs.cpp +++ b/src/fs/reiserfs.cpp @@ -94,6 +94,11 @@ namespace FS return 16 * Capacity::unitFactor(Capacity::Byte, Capacity::TiB); } + qint64 reiserfs::maxLabelLength() const + { + return 16; + } + qint64 reiserfs::readUsedCapacity(const QString& deviceNode) const { ExternalCommand cmd("debugreiserfs", QStringList() << deviceNode); diff --git a/src/fs/reiserfs.h b/src/fs/reiserfs.h index b32901f..f044883 100644 --- a/src/fs/reiserfs.h +++ b/src/fs/reiserfs.h @@ -68,6 +68,7 @@ namespace FS virtual qint64 minCapacity() const; virtual qint64 maxCapacity() const; + virtual qint64 maxLabelLength() const; virtual SupportTool supportToolName() const; virtual bool supportToolFound() const; diff --git a/src/fs/xfs.cpp b/src/fs/xfs.cpp index 1ae9d04..3c74b9a 100644 --- a/src/fs/xfs.cpp +++ b/src/fs/xfs.cpp @@ -95,6 +95,11 @@ namespace FS return Capacity::unitFactor(Capacity::Byte, Capacity::EiB); } + qint64 xfs::maxLabelLength() const + { + return 12; + } + qint64 xfs::readUsedCapacity(const QString& deviceNode) const { ExternalCommand cmd("xfs_db", QStringList() << "-c" << "sb 0" << "-c" << "print" << deviceNode); diff --git a/src/fs/xfs.h b/src/fs/xfs.h index 58f193a..6f50cf3 100644 --- a/src/fs/xfs.h +++ b/src/fs/xfs.h @@ -63,6 +63,7 @@ namespace FS virtual qint64 minCapacity() const; virtual qint64 maxCapacity() const; + virtual qint64 maxLabelLength() const; virtual SupportTool supportToolName() const; virtual bool supportToolFound() const; diff --git a/src/gui/newdialog.cpp b/src/gui/newdialog.cpp index d808e32..1d91651 100644 --- a/src/gui/newdialog.cpp +++ b/src/gui/newdialog.cpp @@ -156,6 +156,9 @@ void NewDialog::onFilesystemChanged(int idx) setupConstraints(); + const FileSystem* fs = FileSystemFactory::create(FileSystem::typeForName(dialogWidget().comboFileSystem().currentText()), -1, -1, -1, ""); + dialogWidget().m_EditLabel->setMaxLength(fs->maxLabelLength()); + updateSpinCapacity(partition().length()); dialogWidget().partResizerWidget().update(); diff --git a/src/gui/partpropsdialog.cpp b/src/gui/partpropsdialog.cpp index 531b72d..cd834ee 100644 --- a/src/gui/partpropsdialog.cpp +++ b/src/gui/partpropsdialog.cpp @@ -308,6 +308,9 @@ void PartPropsDialog::setupFileSystemComboBox() dialogWidget().fileSystem().addItem(createFileSystemColor(FileSystem::typeForName(fsName), 8), fsName); dialogWidget().fileSystem().setCurrentIndex(dialogWidget().fileSystem().findText(selected)); + + const FileSystem* fs = FileSystemFactory::create(FileSystem::typeForName(dialogWidget().fileSystem().currentText()), -1, -1, -1, ""); + dialogWidget().m_EditLabel->setMaxLength(fs->maxLabelLength()); } void PartPropsDialog::updatePartitionFileSystem() @@ -331,6 +334,9 @@ void PartPropsDialog::onFilesystemChanged(int) updateHideAndShow(); setWarnFileSystemChange(); updatePartitionFileSystem(); + + const FileSystem* fs = FileSystemFactory::create(FileSystem::typeForName(dialogWidget().fileSystem().currentText()), -1, -1, -1, ""); + dialogWidget().m_EditLabel->setMaxLength(fs->maxLabelLength()); } else { diff --git a/src/gui/partpropswidgetbase.ui b/src/gui/partpropswidgetbase.ui index 1ea3bdc..275ac3b 100644 --- a/src/gui/partpropswidgetbase.ui +++ b/src/gui/partpropswidgetbase.ui @@ -74,9 +74,6 @@ - - 16 - diff --git a/src/gui/sizedialogwidget.h b/src/gui/sizedialogwidget.h index b281b08..cef7c40 100644 --- a/src/gui/sizedialogwidget.h +++ b/src/gui/sizedialogwidget.h @@ -50,7 +50,7 @@ class SizeDialogWidget : public QWidget, public Ui::SizeDialogWidgetBase QRadioButton& radioExtended() { Q_ASSERT(m_RadioExtended); return *m_RadioExtended; } QRadioButton& radioLogical() { Q_ASSERT(m_RadioLogical); return *m_RadioLogical; } - QComboBox& comboFileSystem() { Q_ASSERT(m_ComboFileSystem); return *m_ComboFileSystem; } + KComboBox& comboFileSystem() { Q_ASSERT(m_ComboFileSystem); return *m_ComboFileSystem; } QLabel& textLabel() { Q_ASSERT(m_LabelTextLabel); return *m_LabelTextLabel; } KLineEdit& label() { Q_ASSERT(m_EditLabel); return *m_EditLabel; } diff --git a/src/gui/sizedialogwidgetbase.ui b/src/gui/sizedialogwidgetbase.ui index 5d9df02..61009af 100644 --- a/src/gui/sizedialogwidgetbase.ui +++ b/src/gui/sizedialogwidgetbase.ui @@ -126,9 +126,6 @@ - - 16 -