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 <string.h>
|
||||
#include <pthread.h>
|
||||
#include <etk/Types.h>
|
||||
|
||||
#if defined(__PLATFORM__Android)
|
||||
# include <android/log.h>
|
||||
@ -73,6 +74,13 @@ namespace etk{
|
||||
strncat(m_tmpChar, tmp, MAX_LOG_SIZE);
|
||||
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) {
|
||||
snprintf(tmp, MAX_LOG_SIZE_TMP, "%ld", t);
|
||||
strncat(m_tmpChar, tmp, MAX_LOG_SIZE);
|
||||
|
@ -315,13 +315,36 @@ 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
|
||||
{
|
||||
if( this != &etkS ) {
|
||||
for (int32_t iii=0; iii < m_data.Size() && iii < etkS.m_data.Size(); iii++) {
|
||||
if (m_data[iii] > etkS.m_data[iii] ) {
|
||||
return true;
|
||||
//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 false;
|
||||
}
|
||||
}
|
||||
if (m_data.Size() > etkS.m_data.Size()) {
|
||||
@ -331,6 +354,66 @@ bool etk::UString::operator> (const etk::UString& etkS) const
|
||||
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
|
||||
|
@ -67,9 +67,12 @@ namespace etk
|
||||
bool operator!= (const uniChar_t * 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
|
||||
*****************************************************/
|
||||
|
@ -152,9 +152,10 @@ void ewol::Button::OnRegenerateDisplay(void)
|
||||
ewol::OObject2DColored * tmpOObjects = new ewol::OObject2DColored;
|
||||
tmpOObjects->SetColor(m_textColorBg);
|
||||
tmpOObjects->Rectangle( tmpOriginX, tmpOriginY, tmpSizeX, tmpSizeY);
|
||||
/*
|
||||
tmpOObjects->SetColor(m_textColorFg);
|
||||
tmpOObjects->RectangleBorder( tmpOriginX, tmpOriginY, tmpSizeX, tmpSizeY, borderSize);
|
||||
|
||||
*/
|
||||
AddOObject(tmpOObjects, "BouttonDecoration");
|
||||
|
||||
AddOObject(tmpText, "BouttonText");
|
||||
|
@ -52,8 +52,9 @@ void SortList(etk::VectorType<etk::UString *> &m_listDirectory)
|
||||
|
||||
int32_t findPos = 0;
|
||||
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]) {
|
||||
findPos = jjj;
|
||||
findPos = jjj+1;
|
||||
}
|
||||
}
|
||||
//EWOL_DEBUG("position="<<findPos);
|
||||
@ -86,6 +87,10 @@ class FileChooserFolderList : public ewol::List
|
||||
{
|
||||
etk::UString* tmpEmement = new etk::UString(element);
|
||||
m_listDirectory.PushBack(tmpEmement);
|
||||
}
|
||||
void EndGenerating(void)
|
||||
{
|
||||
SortList(m_listDirectory);
|
||||
MarkToReedraw();
|
||||
}
|
||||
|
||||
@ -222,21 +227,9 @@ class FileChooserFileList : public ewol::List
|
||||
etk::UString* tmpEmement = new etk::UString(element);
|
||||
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);
|
||||
/*
|
||||
EWOL_DEBUG("list after");
|
||||
for (int32_t iii=0; iii<m_listFile.Size(); iii++) {
|
||||
EWOL_DEBUG(" " << *m_listFile[iii] );
|
||||
}
|
||||
*/
|
||||
MarkToReedraw();
|
||||
}
|
||||
void ClearElements(void) {
|
||||
@ -616,7 +609,8 @@ void ewol::FileChooser::UpdateCurrentFolder(void)
|
||||
} else {
|
||||
EWOL_ERROR("could not open directory : \"" << m_folder << "\"");
|
||||
}
|
||||
myListFile->endGenerating();
|
||||
myListFile->EndGenerating();
|
||||
myListFolder->EndGenerating();
|
||||
MarkToReedraw();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user