Correction of the sorting list in the file Chooser and compare unicode String with no A < a < B < b ...
This commit is contained in:
parent
be4970ecc6
commit
ed7eff92f8
@ -30,6 +30,7 @@
|
|||||||
#include <typeinfo>
|
#include <typeinfo>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
#include <etk/Types.h>
|
||||||
|
|
||||||
#if defined(__PLATFORM__Android)
|
#if defined(__PLATFORM__Android)
|
||||||
# include <android/log.h>
|
# include <android/log.h>
|
||||||
@ -73,6 +74,13 @@ namespace etk{
|
|||||||
strncat(m_tmpChar, tmp, MAX_LOG_SIZE);
|
strncat(m_tmpChar, tmp, MAX_LOG_SIZE);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
CCout& operator << (uniChar_t t) {
|
||||||
|
snprintf(tmp, MAX_LOG_SIZE_TMP, "%c", t);
|
||||||
|
strncat(m_tmpChar, tmp, MAX_LOG_SIZE);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
*/
|
||||||
CCout& operator << (long t) {
|
CCout& operator << (long t) {
|
||||||
snprintf(tmp, MAX_LOG_SIZE_TMP, "%ld", t);
|
snprintf(tmp, MAX_LOG_SIZE_TMP, "%ld", t);
|
||||||
strncat(m_tmpChar, tmp, MAX_LOG_SIZE);
|
strncat(m_tmpChar, tmp, MAX_LOG_SIZE);
|
||||||
|
@ -315,14 +315,37 @@ const etk::UString& etk::UString::operator= (etk::VectorType<uniChar_t> inputDat
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uniChar_t changeOrder(uniChar_t elemA)
|
||||||
|
{
|
||||||
|
if (elemA >= 'A' && elemA <= 'Z') {
|
||||||
|
return (elemA - (uniChar_t)'A')*2 + 'A';
|
||||||
|
}
|
||||||
|
if (elemA >= 'a' && elemA <= 'z') {
|
||||||
|
return (elemA - (uniChar_t)'a')*2 + 'A' + 1;
|
||||||
|
}
|
||||||
|
if (elemA >= ':' && elemA <= '@') {
|
||||||
|
return elemA + 52;
|
||||||
|
}
|
||||||
|
if (elemA >= '[' && elemA <= '`') {
|
||||||
|
return elemA +26;
|
||||||
|
}
|
||||||
|
return elemA;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool etk::UString::operator> (const etk::UString& etkS) const
|
bool etk::UString::operator> (const etk::UString& etkS) const
|
||||||
{
|
{
|
||||||
if( this != &etkS ) {
|
if( this != &etkS ) {
|
||||||
for (int32_t iii=0; iii < m_data.Size() && iii < etkS.m_data.Size(); iii++) {
|
for (int32_t iii=0; iii < m_data.Size() && iii < etkS.m_data.Size(); iii++) {
|
||||||
if (m_data[iii] > etkS.m_data[iii] ) {
|
//TK_DEBUG(" compare : '" << (char)m_data[iii] << "'>'" << (char)etkS.m_data[iii] << "' ==> " << changeOrder(m_data[iii]) << ">" << changeOrder(etkS.m_data[iii]) << "");
|
||||||
|
uniChar_t elemA = changeOrder(m_data[iii]);
|
||||||
|
uniChar_t elemB = changeOrder(etkS.m_data[iii]);
|
||||||
|
if (elemA != elemB) {
|
||||||
|
if (elemA > elemB) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (m_data.Size() > etkS.m_data.Size()) {
|
if (m_data.Size() > etkS.m_data.Size()) {
|
||||||
return true;
|
return true;
|
||||||
@ -331,6 +354,66 @@ bool etk::UString::operator> (const etk::UString& etkS) const
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool etk::UString::operator>= (const etk::UString& etkS) const
|
||||||
|
{
|
||||||
|
if( this != &etkS ) {
|
||||||
|
for (int32_t iii=0; iii < m_data.Size() && iii < etkS.m_data.Size(); iii++) {
|
||||||
|
uniChar_t elemA = changeOrder(m_data[iii]);
|
||||||
|
uniChar_t elemB = changeOrder(etkS.m_data[iii]);
|
||||||
|
if (elemA != elemB) {
|
||||||
|
if (elemA > elemB) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (m_data.Size() >= etkS.m_data.Size()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool etk::UString::operator< (const etk::UString& etkS) const
|
||||||
|
{
|
||||||
|
if( this != &etkS ) {
|
||||||
|
for (int32_t iii=0; iii < m_data.Size() && iii < etkS.m_data.Size(); iii++) {
|
||||||
|
uniChar_t elemA = changeOrder(m_data[iii]);
|
||||||
|
uniChar_t elemB = changeOrder(etkS.m_data[iii]);
|
||||||
|
if (elemA != elemB) {
|
||||||
|
if (elemA < elemB) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (m_data.Size() < etkS.m_data.Size()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool etk::UString::operator<= (const etk::UString& etkS) const
|
||||||
|
{
|
||||||
|
if( this != &etkS ) {
|
||||||
|
for (int32_t iii=0; iii < m_data.Size() && iii < etkS.m_data.Size(); iii++) {
|
||||||
|
uniChar_t elemA = changeOrder(m_data[iii]);
|
||||||
|
uniChar_t elemB = changeOrder(etkS.m_data[iii]);
|
||||||
|
if (elemA != elemB) {
|
||||||
|
if (elemA < elemB) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (m_data.Size() <= etkS.m_data.Size()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief
|
* @brief
|
||||||
|
@ -67,9 +67,12 @@ namespace etk
|
|||||||
bool operator!= (const uniChar_t * inputData) const;
|
bool operator!= (const uniChar_t * inputData) const;
|
||||||
bool operator!= (const char * inputData) const;
|
bool operator!= (const char * inputData) const;
|
||||||
/*****************************************************
|
/*****************************************************
|
||||||
* > operator
|
* > < >= <= operator
|
||||||
*****************************************************/
|
*****************************************************/
|
||||||
bool operator> (const etk::UString& etkS) const;
|
bool operator> (const etk::UString& etkS) const;
|
||||||
|
bool operator>= (const etk::UString& etkS) const;
|
||||||
|
bool operator< (const etk::UString& etkS) const;
|
||||||
|
bool operator<= (const etk::UString& etkS) const;
|
||||||
/*****************************************************
|
/*****************************************************
|
||||||
* += operator
|
* += operator
|
||||||
*****************************************************/
|
*****************************************************/
|
||||||
|
@ -152,9 +152,10 @@ void ewol::Button::OnRegenerateDisplay(void)
|
|||||||
ewol::OObject2DColored * tmpOObjects = new ewol::OObject2DColored;
|
ewol::OObject2DColored * tmpOObjects = new ewol::OObject2DColored;
|
||||||
tmpOObjects->SetColor(m_textColorBg);
|
tmpOObjects->SetColor(m_textColorBg);
|
||||||
tmpOObjects->Rectangle( tmpOriginX, tmpOriginY, tmpSizeX, tmpSizeY);
|
tmpOObjects->Rectangle( tmpOriginX, tmpOriginY, tmpSizeX, tmpSizeY);
|
||||||
|
/*
|
||||||
tmpOObjects->SetColor(m_textColorFg);
|
tmpOObjects->SetColor(m_textColorFg);
|
||||||
tmpOObjects->RectangleBorder( tmpOriginX, tmpOriginY, tmpSizeX, tmpSizeY, borderSize);
|
tmpOObjects->RectangleBorder( tmpOriginX, tmpOriginY, tmpSizeX, tmpSizeY, borderSize);
|
||||||
|
*/
|
||||||
AddOObject(tmpOObjects, "BouttonDecoration");
|
AddOObject(tmpOObjects, "BouttonDecoration");
|
||||||
|
|
||||||
AddOObject(tmpText, "BouttonText");
|
AddOObject(tmpText, "BouttonText");
|
||||||
|
@ -52,8 +52,9 @@ void SortList(etk::VectorType<etk::UString *> &m_listDirectory)
|
|||||||
|
|
||||||
int32_t findPos = 0;
|
int32_t findPos = 0;
|
||||||
for(int32_t jjj=0; jjj<m_listDirectory.Size(); jjj++) {
|
for(int32_t jjj=0; jjj<m_listDirectory.Size(); jjj++) {
|
||||||
|
//EWOL_DEBUG("compare : \""<<*tmpList[iii] << "\" and \"" << *m_listDirectory[jjj] << "\"");
|
||||||
if (*tmpList[iii] > *m_listDirectory[jjj]) {
|
if (*tmpList[iii] > *m_listDirectory[jjj]) {
|
||||||
findPos = jjj;
|
findPos = jjj+1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//EWOL_DEBUG("position="<<findPos);
|
//EWOL_DEBUG("position="<<findPos);
|
||||||
@ -86,6 +87,10 @@ class FileChooserFolderList : public ewol::List
|
|||||||
{
|
{
|
||||||
etk::UString* tmpEmement = new etk::UString(element);
|
etk::UString* tmpEmement = new etk::UString(element);
|
||||||
m_listDirectory.PushBack(tmpEmement);
|
m_listDirectory.PushBack(tmpEmement);
|
||||||
|
}
|
||||||
|
void EndGenerating(void)
|
||||||
|
{
|
||||||
|
SortList(m_listDirectory);
|
||||||
MarkToReedraw();
|
MarkToReedraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -222,21 +227,9 @@ class FileChooserFileList : public ewol::List
|
|||||||
etk::UString* tmpEmement = new etk::UString(element);
|
etk::UString* tmpEmement = new etk::UString(element);
|
||||||
m_listFile.PushBack(tmpEmement);
|
m_listFile.PushBack(tmpEmement);
|
||||||
}
|
}
|
||||||
void endGenerating(void)
|
void EndGenerating(void)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
EWOL_DEBUG("list before");
|
|
||||||
for (int32_t iii=0; iii<m_listFile.Size(); iii++) {
|
|
||||||
EWOL_DEBUG(" " << *m_listFile[iii] );
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
SortList(m_listFile);
|
SortList(m_listFile);
|
||||||
/*
|
|
||||||
EWOL_DEBUG("list after");
|
|
||||||
for (int32_t iii=0; iii<m_listFile.Size(); iii++) {
|
|
||||||
EWOL_DEBUG(" " << *m_listFile[iii] );
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
MarkToReedraw();
|
MarkToReedraw();
|
||||||
}
|
}
|
||||||
void ClearElements(void) {
|
void ClearElements(void) {
|
||||||
@ -616,7 +609,8 @@ void ewol::FileChooser::UpdateCurrentFolder(void)
|
|||||||
} else {
|
} else {
|
||||||
EWOL_ERROR("could not open directory : \"" << m_folder << "\"");
|
EWOL_ERROR("could not open directory : \"" << m_folder << "\"");
|
||||||
}
|
}
|
||||||
myListFile->endGenerating();
|
myListFile->EndGenerating();
|
||||||
|
myListFolder->EndGenerating();
|
||||||
MarkToReedraw();
|
MarkToReedraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user