Update the File chooser widget
This commit is contained in:
parent
56926c5f96
commit
ac54987af9
@ -73,7 +73,7 @@ class FileChooserFolderList : public ewol::List
|
|||||||
ClearElements();
|
ClearElements();
|
||||||
};
|
};
|
||||||
|
|
||||||
void AddElement(etk::String &element)
|
void AddElement(etk::String element)
|
||||||
{
|
{
|
||||||
etk::String* tmpEmement = new etk::String(element);
|
etk::String* tmpEmement = new etk::String(element);
|
||||||
m_listDirectory.PushBack(tmpEmement);
|
m_listDirectory.PushBack(tmpEmement);
|
||||||
@ -180,13 +180,20 @@ class FileChooserFolderList : public ewol::List
|
|||||||
#undef __class__
|
#undef __class__
|
||||||
#define __class__ "ewol::FileChooser(FileList)"
|
#define __class__ "ewol::FileChooser(FileList)"
|
||||||
|
|
||||||
|
const char * const ewolEventFileChooserSelectFile = "ewol event file chooser Select File";
|
||||||
|
const char * const ewolEventFileChooserValidateFile = "ewol event file chooser Validate File";
|
||||||
|
|
||||||
class FileChooserFileList : public ewol::List
|
class FileChooserFileList : public ewol::List
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
etk::VectorType<etk::String *> m_listFile;
|
etk::VectorType<etk::String *> m_listFile;
|
||||||
|
int32_t m_selectedLine;
|
||||||
public:
|
public:
|
||||||
FileChooserFileList(void)
|
FileChooserFileList(void)
|
||||||
{
|
{
|
||||||
|
m_selectedLine = -1;
|
||||||
|
AddEventId(ewolEventFileChooserSelectFile);
|
||||||
|
AddEventId(ewolEventFileChooserValidateFile);
|
||||||
};
|
};
|
||||||
~FileChooserFileList(void)
|
~FileChooserFileList(void)
|
||||||
{
|
{
|
||||||
@ -200,7 +207,7 @@ class FileChooserFileList : public ewol::List
|
|||||||
bg.alpha = 1.0;
|
bg.alpha = 1.0;
|
||||||
return bg;
|
return bg;
|
||||||
}
|
}
|
||||||
void AddElement(etk::String &element)
|
void AddElement(etk::String element)
|
||||||
{
|
{
|
||||||
etk::String* tmpEmement = new etk::String(element);
|
etk::String* tmpEmement = new etk::String(element);
|
||||||
m_listFile.PushBack(tmpEmement);
|
m_listFile.PushBack(tmpEmement);
|
||||||
@ -217,6 +224,15 @@ class FileChooserFileList : public ewol::List
|
|||||||
OnRegenerateDisplay();
|
OnRegenerateDisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
etk::String GetSelectedLine(void)
|
||||||
|
{
|
||||||
|
etk::String tmpVal = "";
|
||||||
|
if (m_selectedLine >= 0) {
|
||||||
|
tmpVal = *(m_listFile[m_selectedLine]);
|
||||||
|
}
|
||||||
|
return tmpVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32_t GetNuberOfColomn(void) {
|
uint32_t GetNuberOfColomn(void) {
|
||||||
return 1;
|
return 1;
|
||||||
@ -249,13 +265,43 @@ class FileChooserFileList : public ewol::List
|
|||||||
bg.blue = 0.7;
|
bg.blue = 0.7;
|
||||||
bg.alpha = 1.0;
|
bg.alpha = 1.0;
|
||||||
}
|
}
|
||||||
|
if (m_selectedLine == raw) {
|
||||||
|
bg.red = 0.6;
|
||||||
|
bg.green = 0.6;
|
||||||
|
bg.blue = 1.0;
|
||||||
|
bg.alpha = 1.0;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool OnItemEvent(int32_t IdInput, ewol::eventInputType_te typeEvent, int32_t colomn, int32_t raw, etkFloat_t x, etkFloat_t y) {
|
bool OnItemEvent(int32_t IdInput, ewol::eventInputType_te typeEvent, int32_t colomn, int32_t raw, etkFloat_t x, etkFloat_t y) {
|
||||||
if (typeEvent == ewol::EVENT_INPUT_TYPE_SINGLE) {
|
if (typeEvent == ewol::EVENT_INPUT_TYPE_SINGLE) {
|
||||||
EWOL_INFO("Event on List : IdInput=" << IdInput << " colomn=" << colomn << " raw=" << raw );
|
EWOL_INFO("Event on List : IdInput=" << IdInput << " colomn=" << colomn << " raw=" << raw );
|
||||||
|
if (1 == IdInput) {
|
||||||
|
if (raw > m_listFile.Size() ) {
|
||||||
|
m_selectedLine = -1;
|
||||||
|
} else {
|
||||||
|
m_selectedLine = raw;
|
||||||
|
}
|
||||||
|
// need to regenerate the display of the list :
|
||||||
|
OnRegenerateDisplay();
|
||||||
|
if (m_selectedLine >=0 ) {
|
||||||
|
// generate event extern :
|
||||||
|
return GenEventInputExternal(ewolEventFileChooserSelectFile, x, y);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if (typeEvent == ewol::EVENT_INPUT_TYPE_DOUBLE) {
|
||||||
|
EWOL_INFO("Event Double on List : IdInput=" << IdInput << " colomn=" << colomn << " raw=" << raw );
|
||||||
|
if (1 == IdInput) {
|
||||||
|
if (m_selectedLine >=0 ) {
|
||||||
|
// generate event extern :
|
||||||
|
return GenEventInputExternal(ewolEventFileChooserValidateFile, x, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -281,7 +327,7 @@ ewol::FileChooser::FileChooser(void)
|
|||||||
m_widgetCurrentFolderId = -1;
|
m_widgetCurrentFolderId = -1;
|
||||||
m_widgetListFolderId = -1;
|
m_widgetListFolderId = -1;
|
||||||
m_widgetListFileId = -1;
|
m_widgetListFileId = -1;
|
||||||
|
m_hasSelectedFile = false;
|
||||||
|
|
||||||
ewol::SizerVert * mySizerVert = NULL;
|
ewol::SizerVert * mySizerVert = NULL;
|
||||||
ewol::SizerHori * mySizerHori = NULL;
|
ewol::SizerHori * mySizerHori = NULL;
|
||||||
@ -328,6 +374,8 @@ ewol::FileChooser::FileChooser(void)
|
|||||||
mySizerHori->SubWidgetAdd(mySpacer);
|
mySizerHori->SubWidgetAdd(mySpacer);
|
||||||
myListFile = new FileChooserFileList();
|
myListFile = new FileChooserFileList();
|
||||||
m_widgetListFileId = myListFile->GetWidgetId();
|
m_widgetListFileId = myListFile->GetWidgetId();
|
||||||
|
myListFile->ExternLinkOnEvent("ewol event file chooser Select File", GetWidgetId(), ewolEventFileChooserSelectFile);
|
||||||
|
myListFile->ExternLinkOnEvent("ewol event file chooser Validate File", GetWidgetId(), ewolEventFileChooserValidateFile);
|
||||||
myListFile->SetExpendX(true);
|
myListFile->SetExpendX(true);
|
||||||
myListFile->SetFillX(true);
|
myListFile->SetFillX(true);
|
||||||
myListFile->SetExpendY(true);
|
myListFile->SetExpendY(true);
|
||||||
@ -407,9 +455,35 @@ bool ewol::FileChooser::OnEventAreaExternal(int32_t widgetID, const char * gener
|
|||||||
//==> this is an internal event ...
|
//==> this is an internal event ...
|
||||||
FileChooserFolderList * myListFolder = (FileChooserFolderList *)ewol::widgetManager::Get(m_widgetListFolderId);
|
FileChooserFolderList * myListFolder = (FileChooserFolderList *)ewol::widgetManager::Get(m_widgetListFolderId);
|
||||||
etk::String tmpString = myListFolder->GetSelectedLine();
|
etk::String tmpString = myListFolder->GetSelectedLine();
|
||||||
m_folder = m_folder + "/" + tmpString;
|
m_folder = m_folder + tmpString;
|
||||||
|
char buf[MAX_FILE_NAME];
|
||||||
|
memset(buf, 0, MAX_FILE_NAME);
|
||||||
|
char * ok;
|
||||||
|
ok = realpath(m_folder.c_str(), buf);
|
||||||
|
if (!ok) {
|
||||||
|
EWOL_ERROR("Error to get the real path");
|
||||||
|
m_folder = "/";
|
||||||
|
} else {
|
||||||
|
m_folder = buf;
|
||||||
|
}
|
||||||
|
if (m_folder != "/" ) {
|
||||||
|
m_folder += "/";
|
||||||
|
}
|
||||||
UpdateCurrentFolder();
|
UpdateCurrentFolder();
|
||||||
|
m_hasSelectedFile = false;
|
||||||
return true;
|
return true;
|
||||||
|
} else if (ewolEventFileChooserSelectFile == eventExternId) {
|
||||||
|
m_hasSelectedFile = true;
|
||||||
|
FileChooserFileList * myListFile = (FileChooserFileList *)ewol::widgetManager::Get(m_widgetListFileId);
|
||||||
|
m_file = myListFile->GetSelectedLine();
|
||||||
|
} else if (ewolEventFileChooserValidateFile == eventExternId) {
|
||||||
|
m_hasSelectedFile = true;
|
||||||
|
FileChooserFileList * myListFile = (FileChooserFileList *)ewol::widgetManager::Get(m_widgetListFileId);
|
||||||
|
m_file = myListFile->GetSelectedLine();
|
||||||
|
// select the File ==> generate a validate
|
||||||
|
return GenEventInputExternal(ewolEventFileChooserValidate, x, y);;
|
||||||
|
} else if (ewolEventFileChooserValidate == eventExternId && false == m_hasSelectedFile) {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return GenEventInputExternal(eventExternId, x, y);
|
return GenEventInputExternal(eventExternId, x, y);
|
||||||
};
|
};
|
||||||
@ -426,7 +500,8 @@ void ewol::FileChooser::UpdateCurrentFolder(void)
|
|||||||
myListFolder->ClearElements();
|
myListFolder->ClearElements();
|
||||||
|
|
||||||
myEntry->SetValue(m_folder);
|
myEntry->SetValue(m_folder);
|
||||||
|
myListFolder->AddElement(etk::String("."));
|
||||||
|
myListFolder->AddElement(etk::String(".."));
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
struct dirent *ent;
|
struct dirent *ent;
|
||||||
dir = opendir(m_folder.c_str());
|
dir = opendir(m_folder.c_str());
|
||||||
@ -437,7 +512,9 @@ void ewol::FileChooser::UpdateCurrentFolder(void)
|
|||||||
if (DT_REG == ent->d_type) {
|
if (DT_REG == ent->d_type) {
|
||||||
myListFile->AddElement(tmpString);
|
myListFile->AddElement(tmpString);
|
||||||
} else if (DT_DIR == ent->d_type) {
|
} else if (DT_DIR == ent->d_type) {
|
||||||
myListFolder->AddElement(tmpString);
|
if (tmpString != "." && tmpString != "..") {
|
||||||
|
myListFolder->AddElement(tmpString);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
@ -446,3 +523,14 @@ void ewol::FileChooser::UpdateCurrentFolder(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
etk::String ewol::FileChooser::GetCompleateFileName(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
etk::String tmpString = m_folder;
|
||||||
|
tmpString += "/";
|
||||||
|
tmpString += m_file;
|
||||||
|
return tmpString;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -40,6 +40,7 @@ namespace ewol {
|
|||||||
void SetValidateLabel(etk::String label);
|
void SetValidateLabel(etk::String label);
|
||||||
void SetCancelLabel(etk::String label);
|
void SetCancelLabel(etk::String label);
|
||||||
void SetFolder(etk::String folder);
|
void SetFolder(etk::String folder);
|
||||||
|
etk::String GetCompleateFileName(void);
|
||||||
void UpdateCurrentFolder(void);
|
void UpdateCurrentFolder(void);
|
||||||
private:
|
private:
|
||||||
int32_t m_widgetTitleId;
|
int32_t m_widgetTitleId;
|
||||||
@ -48,7 +49,9 @@ namespace ewol {
|
|||||||
int32_t m_widgetCurrentFolderId;
|
int32_t m_widgetCurrentFolderId;
|
||||||
int32_t m_widgetListFolderId;
|
int32_t m_widgetListFolderId;
|
||||||
int32_t m_widgetListFileId;
|
int32_t m_widgetListFileId;
|
||||||
|
bool m_hasSelectedFile;
|
||||||
etk::String m_folder;
|
etk::String m_folder;
|
||||||
|
etk::String m_file;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
58
tutorial.boo
Normal file
58
tutorial.boo
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
## Build the NDK part ...
|
||||||
|
cd /home/edupin/progperso/android/ndk-r7/
|
||||||
|
export NDK_PROJECT_PATH=/home/edupin/progperso/android/ndk-r7/samples/hello-jni/
|
||||||
|
./ndk-build
|
||||||
|
## ==> now all is OK
|
||||||
|
|
||||||
|
|
||||||
|
# basic SDK folder :
|
||||||
|
export PATH=$PATH:/home/edupin/progperso/android/sdk-r15/tools/:/home/edupin/progperso/android/sdk-r15/platform-tools/
|
||||||
|
|
||||||
|
# configure angroide SDK :
|
||||||
|
# run :
|
||||||
|
android
|
||||||
|
# ==> add the SDK needed for android you will use like android 2.3.3 for xperia X10
|
||||||
|
# ... wait download ...
|
||||||
|
|
||||||
|
#Display list of target ...
|
||||||
|
android list targets
|
||||||
|
|
||||||
|
# need to generate the application APK ...
|
||||||
|
cd /home/edupin/progperso/android/ndk-r7/samples/hello-jni/
|
||||||
|
android update project -p . -s --target 1
|
||||||
|
|
||||||
|
#install ant with aptitude ...
|
||||||
|
|
||||||
|
ant -Dsdk.dir=/home/edupin/progperso/android/sdk-r15/ release
|
||||||
|
|
||||||
|
# pb : warning: 'includeantruntime' is not set
|
||||||
|
# solve with set : <javac .... includeantruntime="false" .../>
|
||||||
|
|
||||||
|
# missing javac
|
||||||
|
# solve : install openjdk
|
||||||
|
|
||||||
|
# kill adb
|
||||||
|
adb kill-server
|
||||||
|
# install application
|
||||||
|
sudo /home/edupin/progperso/android/sdk-r15/platform-tools/adb install ./bin/HelloJni-release-unsigned.apk
|
||||||
|
# result : Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
|
||||||
|
|
||||||
|
|
||||||
|
export PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/edupin/.bin:/prog/prog/hexViewer:/home/edupin/progperso/android/sdk-r15/tools/:/home/edupin/progperso/android/sdk-r15/platform-tools/
|
||||||
|
|
||||||
|
|
||||||
|
pb avec la table Sony S:
|
||||||
|
|
||||||
|
Faire la manip :
|
||||||
|
The following procedure has confirmed that ubuntu 11.04.
|
||||||
|
1. Enable debug mode for sony tablet S
|
||||||
|
2. Add line /etc/udev/rules.d/51-android.rules
|
||||||
|
SUBSYSTEM=="usb", ATTR{idVendor}=="054c", MODE="0666", GROUP="plugdev"
|
||||||
|
3. Change file mode
|
||||||
|
sudo chmod a+r /etc/udev/rules.d/51-android.rules
|
||||||
|
4. Add line idVendor to ~/.android/adb_usb.ini
|
||||||
|
0x054C
|
||||||
|
5. adb kill-server ; sudo adb start-server
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user