[gnome-disk-utility] Move partition size helpers



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]