[gnome-disk-utility] Move partition size helpers
- From: Kai Lüke <kailueke src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-disk-utility] Move partition size helpers
- Date: Tue, 1 Aug 2017 19:02:38 +0000 (UTC)
commit 96662722a1450622d128ce8d5b0cd181ac089fa4
Author: Kai Lüke <kailueke riseup net>
Date: Tue Jul 18 10:08:47 2017 +0200
Move partition size helpers
Finding the default partition size unit
and their respective sizes is used by many
dialogs at least for now.
src/disks/gducreatepartitiondialog.c | 49 +--------------------------------
src/disks/gdunewdiskimagedialog.c | 18 +------------
src/libgdu/gduutils.c | 33 +++++++++++++++++++++++
src/libgdu/gduutils.h | 32 ++++++++++++++++++++++
4 files changed, 68 insertions(+), 64 deletions(-)
---
diff --git a/src/disks/gducreatepartitiondialog.c b/src/disks/gducreatepartitiondialog.c
index 92a6e4d..ed2a237 100644
--- a/src/disks/gducreatepartitiondialog.c
+++ b/src/disks/gducreatepartitiondialog.c
@@ -16,26 +16,10 @@
#include "gduwindow.h"
#include "gducreatepartitiondialog.h"
#include "gducreatefilesystemwidget.h"
+#include "gduutils.h"
/* ---------------------------------------------------------------------------------------------------- */
-#define NUM_UNITS 11
-
-/* Keep in sync with Glade file */
-static const guint64 unit_sizes[NUM_UNITS] = {
- (1ULL), /* 0: bytes */
- (1000ULL), /* 1: kB */
- (1000000ULL), /* 2: MB */
- (1000000000ULL), /* 3: GB */
- (1000000000000ULL), /* 4: TB */
- (1000000000000000ULL), /* 5: PB */
- ((1ULL)<<10), /* 6: KiB */
- ((1ULL)<<20), /* 7: MiB */
- ((1ULL)<<30), /* 8: GiB */
- ((1ULL)<<40), /* 9: TiB */
- ((1ULL)<<50), /* 10: PiB */
-};
-
typedef struct
{
GduWindow *window;
@@ -261,36 +245,7 @@ set_unit_num (CreatePartitionData *data,
static void
create_partition_populate (CreatePartitionData *data)
{
- gint unit_num;
-
- /* figure out default unit */
- if (data->max_size > unit_sizes[4] * 100ULL)
- {
- /* size > 100TB -> TB */
- unit_num = 4;
- }
- else if (data->max_size > unit_sizes[3] * 100ULL)
- {
- /* 100TB > size > 100GB -> GB */
- unit_num = 3;
- }
- else if (data->max_size > unit_sizes[2] * 100ULL)
- {
- /* 100GB > size > 100MB -> MB */
- unit_num = 2;
- }
- else if (data->max_size > unit_sizes[1] * 100ULL)
- {
- /* 100MB > size > 100kB -> kB */
- unit_num = 1;
- }
- else
- {
- /* 100kB > size > 0 -> bytes */
- unit_num = 0;
- }
-
- set_unit_num (data, unit_num);
+ set_unit_num (data, gdu_utils_get_default_unit (data->max_size));
}
static void
diff --git a/src/disks/gdunewdiskimagedialog.c b/src/disks/gdunewdiskimagedialog.c
index a950d32..9bcbd21 100644
--- a/src/disks/gdunewdiskimagedialog.c
+++ b/src/disks/gdunewdiskimagedialog.c
@@ -24,23 +24,7 @@
#include "gduapplication.h"
#include "gduwindow.h"
#include "gdunewdiskimagedialog.h"
-
-#define NUM_UNITS 11
-
-/* Keep in sync with Glade file */
-static const guint64 unit_sizes[NUM_UNITS] = {
- (1ULL), /* 0: bytes */
- (1000ULL), /* 1: kB */
- (1000000ULL), /* 2: MB */
- (1000000000ULL), /* 3: GB */
- (1000000000000ULL), /* 4: TB */
- (1000000000000000ULL), /* 5: PB */
- ((1ULL)<<10), /* 6: KiB */
- ((1ULL)<<20), /* 7: MiB */
- ((1ULL)<<30), /* 8: GiB */
- ((1ULL)<<40), /* 9: TiB */
- ((1ULL)<<50), /* 10: PiB */
-};
+#include "gduutils.h"
/* TODOs / ideas for New Disk Image creation
* include a radio toggle to create either
diff --git a/src/libgdu/gduutils.c b/src/libgdu/gduutils.c
index fb36f26..6d7e945 100644
--- a/src/libgdu/gduutils.c
+++ b/src/libgdu/gduutils.c
@@ -1338,3 +1338,36 @@ gdu_utils_get_unused_for_block (UDisksClient *client,
out:
return ret;
}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+gint
+gdu_utils_get_default_unit (guint64 size)
+{
+ if (size > unit_sizes[TByte] * 10)
+ {
+ /* size > 10TB -> TB */
+ return TByte;
+ }
+ else if (size > unit_sizes[GByte] * 10)
+ {
+ /* 10TB > size > 10GB -> GB */
+ return GByte;
+ }
+ else if (size > unit_sizes[MByte] * 10)
+ {
+ /* 10GB > size > 10MB -> MB */
+ return MByte;
+ }
+ else if (size > unit_sizes[KByte] * 10)
+ {
+ /* 10MB > size > 10KB -> KB */
+ return KByte;
+ }
+ else
+ {
+ /* 10kB > size > 0 -> bytes */
+ return Byte;
+ }
+}
+
diff --git a/src/libgdu/gduutils.h b/src/libgdu/gduutils.h
index 707da51..6e0d63a 100644
--- a/src/libgdu/gduutils.h
+++ b/src/libgdu/gduutils.h
@@ -99,6 +99,38 @@ gint64 gdu_utils_get_unused_for_block (UDisksClient *client,
UDisksBlock *block);
+#define NUM_UNITS 11
+
+typedef enum {
+ Byte,
+ KByte,
+ MByte,
+ GByte,
+ TByte,
+ PByte,
+ KiByte,
+ MiByte,
+ GiByte,
+ TiByte,
+ PiByte
+} UnitSizeIndices;
+
+/* Keep in sync with Glade file */
+static const guint64 unit_sizes[NUM_UNITS] = {
+ (1ULL), /* 0: bytes */
+ (1000ULL), /* 1: kB */
+ (1000000ULL), /* 2: MB */
+ (1000000000ULL), /* 3: GB */
+ (1000000000000ULL), /* 4: TB */
+ (1000000000000000ULL), /* 5: PB */
+ ((1ULL)<<10), /* 6: KiB */
+ ((1ULL)<<20), /* 7: MiB */
+ ((1ULL)<<30), /* 8: GiB */
+ ((1ULL)<<40), /* 9: TiB */
+ ((1ULL)<<50), /* 10: PiB */
+};
+
+gint gdu_utils_get_default_unit (guint64 size);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]