jnan77 / ebookdroid

Automatically exported from code.google.com/p/ebookdroid
0 stars 0 forks source link

Enhancement: отображать первыми папки с именами, начинающимися символом "_" #253

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
Можно ли сделать так, чтобы папки с именами, 
начинающимися символом "_", в файловом 
браузере отображались выше других? Во 
многих файловых менеджерах, в частности в 
total commander и root explorer, сортировка работает так, 
например папки _Books и _Documents находятся 
вверху списка, и к ним легко добраться, даже 
если папок на карте много. В EbookDroid эти папки 
находятся в самом низу, поэтому приходится 
долго пролистывать список.

Original issue reported on code.google.com by mindphaser2k6 on 7 Jul 2012 at 1:30

GoogleCodeExporter commented 8 years ago
вроде нормально сортирует - и русские и 
английские

Original comment by Alexander.V.Kasatkin@gmail.com on 8 Jul 2012 at 12:39

Attachments:

GoogleCodeExporter commented 8 years ago
А у меня почему-то вот так

Original comment by mindphaser2k6 on 8 Jul 2012 at 12:43

Attachments:

GoogleCodeExporter commented 8 years ago
Сдается мне это связано с региональными 
настройками сортировки.

 mindphaser2k6, нет желания поэкспериментировать с этим? Если да, то можно будет что-нибудь попробовать придумать. Писать самому с нуля юникодный сортировщик - увольте, там столько особенностей, что черт ногу сломит.

Original comment by Andrei.K...@gmail.com on 12 Jul 2012 at 7:18

GoogleCodeExporter commented 8 years ago
Да. Именно так. Сейчас используется 
следующая конструкция: 
Collator collator = Collator.getInstance();

Соответственно, очередность символов 
определяется текущей локалью.

Извини, но лично я категорически против 
вмешательства в это дело. Кому-то захочется 
_ в начало, кому-то !, а кому-то еще что-то. 

Пусть этим рулит система и настройки 
локали. Максимум на что мы можем пойти, это 
конфигурация локали, но и то в отдаленном 
будущем.

Original comment by Andrei.K...@gmail.com on 12 Jul 2012 at 7:28

GoogleCodeExporter commented 8 years ago
Я посмотрел декомпилированные исходники 
Total Commander, Root Explorer, Solid Explorer и OI FileManager. Ни в 
одном из них Collator не используется. Хотя я 
встречал одну статью, где его советовали 
использовать для сортировки списка файлов, 
но мне кажется это излишне, плюс он же при 
смене локали может по-разному сортировать 
файлы?
В OI FileManager используется Collections.sort(), в нем 
файлы с первым "_" показываются внизу 
списка, как и у вас.
В Total Commander и Root Explorer - сложно разобраться в 
коде, т.к. там все обфускированно. Файлы с 
первым "_" показываются в них вначале 
списка. Я почему считал, что _ должен быть 
вначале. Потому что привычно: в проводнике 
Windows7 он вначале, в консоли cygwin тоже, в 
десктопном и андроидном Total Commander вначале, в 
Root Explorer вначале, в Solid Explorer тоже. Хотя в Solid 
Explorer для сравнения используется 
String.compareToIgnoreCase(), там большие и маленькие 
имена вперемешку. В целом, идея была такая, 
чтобы можно было создать папки, которые 
всегда отображаются в топе.
Так что не знаю, может вы и правы, но если 
еще согласны обсуждать, то я завтра 
попробую поиграться со String.compareTo() например. 
Может хотя бы опцией сделать. Конфигурацию 
локали вряд ли стоит делать.
Кстати, зачем вы при сравнении цифры 
пропускаете?

Original comment by mindphaser2k6 on 12 Jul 2012 at 7:15

GoogleCodeExporter commented 8 years ago
> Кстати, зачем вы при сравнении цифры 
пропускаете?

Мы не пропускаем, а сравниваем их отдельно - 
именно как числа.
Что бы был нормальный порядок: 1, 2, 10.
А не: 1, 10, 2

Original comment by Alexander.V.Kasatkin@gmail.com on 12 Jul 2012 at 8:09

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
Понятно, просто у меня сегодня не было 
времени анализировать алгоритм :-)

Original comment by mindphaser2k6 on 12 Jul 2012 at 8:11

GoogleCodeExporter commented 8 years ago
Более того. Не просто цифры сортируем, а еще 
игнорируем лидирующие нули.

Original comment by Andrei.K...@gmail.com on 12 Jul 2012 at 8:27

GoogleCodeExporter commented 8 years ago
Понял, полезная вещь.

Original comment by mindphaser2k6 on 12 Jul 2012 at 8:45

GoogleCodeExporter commented 8 years ago
На самом деле оказалось вот что. В файловом 
браузере у вас collator не используется, и 
вообще compareNatural() не вызывается (и это 
хорошо).
Там работает BrowserAdapter, и сравнение делает он 
в строке 113:
return f1.getName().compareTo(f2.getName());
если это заменить на 
return f1.getName().compareToIgnoreCase(f2.getName());
то все будет так же, как в большинстве 
файловых менеджеров: проводнике Windows, Total 
Commander, Root Explorer, Solid Explorer.

Original comment by mindphaser2k6 on 13 Jul 2012 at 3:20

Attachments:

GoogleCodeExporter commented 8 years ago
А если там задействовать мой алгоритм с 
коллатором?

Original comment by Andrei.K...@gmail.com on 13 Jul 2012 at 5:26

GoogleCodeExporter commented 8 years ago
Не пробовал. Есть ли смысл? Но в любом 
случае надо делать ignoreCase, т.к. это как бы 
стандарт де факто получается. Т.е. если даже 
с коллатором, то, как я понимаю, надо в нем 
включать setStrength(Collator.PRIMARY), хотя может оно и 
по дефолту включено.

Original comment by mindphaser2k6 on 13 Jul 2012 at 5:48

GoogleCodeExporter commented 8 years ago
С файл-браузером вообще все плохо. Он с 
некоторого времени оказался на обочине.
Работали в основном над шкафом и все 
новинки и фиксы шли туда.
А в браузере и данные хранятся крайне 
примитивно, и рабочий код дублируется с 
идиотскими мелкими отличиями, и файлы 
сканирует он в основном потоке.
В  общем, плохо все

Original comment by Alexander.V.Kasatkin@gmail.com on 13 Jul 2012 at 6:08

GoogleCodeExporter commented 8 years ago
То, что он еще есть - уже хорошо :-)
К нему в общем-то и пожеланий немного: чтобы 
показывал привычную файловую структуру и 
может быть еще закладки/последние папки 
для быстрого перехода, и то необязательно. 
Просто я никак не привыкну к шкафу, папку 
книг скопировал выборочно из библиотеки на 
ПК, повторяя ту же структуру дерева, 
получилось около 900 Мб, ну и соответственно 
ориентироваться в этой беде проще, когда 
дерево папок выглядит также, как в 
программах на ПК. По скорости файл-браузер 
работает вполне нормально, и если он дальше 
развиваться не будет, то рефакторинг и 
фоновое сканирование может быть излишним. 
А так, если его развивать, то при желании 
там можно много чего нафантазировать из 
фич.

Original comment by mindphaser2k6 on 15 Jul 2012 at 1:14

GoogleCodeExporter commented 8 years ago

Original comment by Alexander.V.Kasatkin@gmail.com on 25 Sep 2012 at 2:27

GoogleCodeExporter commented 8 years ago
Implemented.

Original comment by Alexander.V.Kasatkin@gmail.com on 25 Dec 2013 at 10:05