[haiku-commits] haiku: hrev54440 - src/preferences/datatranslations

  • From: waddlesplash <waddlesplash@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 18 Jul 2020 15:35:22 -0400 (EDT)

hrev54440 adds 1 changeset to branch 'master'
old head: ebcb6f5f4fbfdc446c21783815fec2e1b27664df
new head: 24f8ae41567182dc1ba3521b5738ea34b87bb4f2
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=24f8ae415671+%5Eebcb6f5f4fbf

----------------------------------------------------------------------------

24f8ae415671: DataTranslations: sort by supertype before name
  
  Fixes #9618 (which suggested using a tree view, but I think that's not
  useful, just proper sorting of the items seems fine to me)
  
  Change-Id: Ie1298eec048f9cb42528b8420a91e807e8f00eab
  Reviewed-on: https://review.haiku-os.org/c/haiku/+/3030
  Reviewed-by: waddlesplash <waddlesplash@xxxxxxxxx>

                             [ Adrien Destugues <pulkomandy@xxxxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev54440
Commit:      24f8ae41567182dc1ba3521b5738ea34b87bb4f2
URL:         https://git.haiku-os.org/haiku/commit/?id=24f8ae415671
Author:      Adrien Destugues <pulkomandy@xxxxxxxxxxxxx>
Date:        Mon Jul 13 12:57:11 2020 UTC
Committer:   waddlesplash <waddlesplash@xxxxxxxxx>
Commit-Date: Sat Jul 18 19:35:19 2020 UTC

Ticket:      https://dev.haiku-os.org/ticket/9618

----------------------------------------------------------------------------

2 files changed, 26 insertions(+), 3 deletions(-)
.../datatranslations/TranslatorListView.cpp      | 26 +++++++++++++++++---
.../datatranslations/TranslatorListView.h        |  3 +++

----------------------------------------------------------------------------

diff --git a/src/preferences/datatranslations/TranslatorListView.cpp 
b/src/preferences/datatranslations/TranslatorListView.cpp
index d7cf40a9c6..b4a9df8f6d 100644
--- a/src/preferences/datatranslations/TranslatorListView.cpp
+++ b/src/preferences/datatranslations/TranslatorListView.cpp
@@ -14,15 +14,22 @@
 #include <string.h>
 
 #include <Application.h>
+#include <String.h>
+#include <TranslatorRoster.h>
 
 
 static int
 compare_items(const void* a, const void* b)
 {
-       const BStringItem* stringA = *(const BStringItem**)a;
-       const BStringItem* stringB = *(const BStringItem**)b;
+       const TranslatorItem* itemA = *(const TranslatorItem**)a;
+       const TranslatorItem* itemB = *(const TranslatorItem**)b;
 
-       return strcmp(stringA->Text(), stringB->Text());
+       // Compare by supertype, then by name
+       int typeDiff = itemA->Supertype().Compare(itemB->Supertype());
+       if (typeDiff != 0)
+               return typeDiff;
+
+       return strcmp(itemA->Text(), itemB->Text());
 }
 
 
@@ -34,6 +41,19 @@ TranslatorItem::TranslatorItem(translator_id id, const char* 
name)
        BStringItem(name),
        fID(id)
 {
+       static BTranslatorRoster* roster = BTranslatorRoster::Default();
+
+       const translation_format* format;
+       int32 count;
+       roster->GetOutputFormats(id, &format, &count);
+
+       // Find a supertype to categorize the item in ("application" is too 
generic,
+       // so exclude it unless it's the only one available)
+       do {
+               fSupertype = format->MIME;
+               int32 slash = fSupertype.FindFirst('/');
+               fSupertype.Truncate(slash);
+       } while (fSupertype == "application" && --count != 0);
 }
 
 
diff --git a/src/preferences/datatranslations/TranslatorListView.h 
b/src/preferences/datatranslations/TranslatorListView.h
index 60400d8ca8..ad9c06c006 100644
--- a/src/preferences/datatranslations/TranslatorListView.h
+++ b/src/preferences/datatranslations/TranslatorListView.h
@@ -12,6 +12,7 @@
 
 
 #include <ListView.h>
+#include <String.h>
 #include <TranslationDefs.h>
 
 
@@ -21,9 +22,11 @@ public:
        virtual                                 ~TranslatorItem();
 
                        translator_id   ID() const { return fID; }
+                       const BString&  Supertype() const { return fSupertype; }
 
 private:
                        translator_id   fID;
+                       BString                 fSupertype;
 };
 
 


Other related posts:

  • » [haiku-commits] haiku: hrev54440 - src/preferences/datatranslations - waddlesplash