Update the File chooser widget
This commit is contained in:
parent
56926c5f96
commit
ac54987af9
@ -73,7 +73,7 @@ class FileChooserFolderList : public ewol::List
|
||||
ClearElements();
|
||||
};
|
||||
|
||||
void AddElement(etk::String &element)
|
||||
void AddElement(etk::String element)
|
||||
{
|
||||
etk::String* tmpEmement = new etk::String(element);
|
||||
m_listDirectory.PushBack(tmpEmement);
|
||||
@ -180,13 +180,20 @@ class FileChooserFolderList : public ewol::List
|
||||
#undef __class__
|
||||
#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
|
||||
{
|
||||
private:
|
||||
etk::VectorType<etk::String *> m_listFile;
|
||||
int32_t m_selectedLine;
|
||||
public:
|
||||
FileChooserFileList(void)
|
||||
{
|
||||
m_selectedLine = -1;
|
||||
AddEventId(ewolEventFileChooserSelectFile);
|
||||
AddEventId(ewolEventFileChooserValidateFile);
|
||||
};
|
||||
~FileChooserFileList(void)
|
||||
{
|
||||
@ -200,7 +207,7 @@ class FileChooserFileList : public ewol::List
|
||||
bg.alpha = 1.0;
|
||||
return bg;
|
||||
}
|
||||
void AddElement(etk::String &element)
|
||||
void AddElement(etk::String element)
|
||||
{
|
||||
etk::String* tmpEmement = new etk::String(element);
|
||||
m_listFile.PushBack(tmpEmement);
|
||||
@ -217,6 +224,15 @@ class FileChooserFileList : public ewol::List
|
||||
OnRegenerateDisplay();
|
||||
}
|
||||
|
||||
etk::String GetSelectedLine(void)
|
||||
{
|
||||
etk::String tmpVal = "";
|
||||
if (m_selectedLine >= 0) {
|
||||
tmpVal = *(m_listFile[m_selectedLine]);
|
||||
}
|
||||
return tmpVal;
|
||||
}
|
||||
|
||||
|
||||
uint32_t GetNuberOfColomn(void) {
|
||||
return 1;
|
||||
@ -249,13 +265,43 @@ class FileChooserFileList : public ewol::List
|
||||
bg.blue = 0.7;
|
||||
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;
|
||||
};
|
||||
|
||||
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) {
|
||||
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;
|
||||
}
|
||||
|
||||
@ -281,7 +327,7 @@ ewol::FileChooser::FileChooser(void)
|
||||
m_widgetCurrentFolderId = -1;
|
||||
m_widgetListFolderId = -1;
|
||||
m_widgetListFileId = -1;
|
||||
|
||||
m_hasSelectedFile = false;
|
||||
|
||||
ewol::SizerVert * mySizerVert = NULL;
|
||||
ewol::SizerHori * mySizerHori = NULL;
|
||||
@ -328,6 +374,8 @@ ewol::FileChooser::FileChooser(void)
|
||||
mySizerHori->SubWidgetAdd(mySpacer);
|
||||
myListFile = new FileChooserFileList();
|
||||
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->SetFillX(true);
|
||||
myListFile->SetExpendY(true);
|
||||
@ -407,9 +455,35 @@ bool ewol::FileChooser::OnEventAreaExternal(int32_t widgetID, const char * gener
|
||||
//==> this is an internal event ...
|
||||
FileChooserFolderList * myListFolder = (FileChooserFolderList *)ewol::widgetManager::Get(m_widgetListFolderId);
|
||||
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();
|
||||
m_hasSelectedFile = false;
|
||||
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);
|
||||
};
|
||||
@ -426,7 +500,8 @@ void ewol::FileChooser::UpdateCurrentFolder(void)
|
||||
myListFolder->ClearElements();
|
||||
|
||||
myEntry->SetValue(m_folder);
|
||||
|
||||
myListFolder->AddElement(etk::String("."));
|
||||
myListFolder->AddElement(etk::String(".."));
|
||||
DIR *dir;
|
||||
struct dirent *ent;
|
||||
dir = opendir(m_folder.c_str());
|
||||
@ -437,7 +512,9 @@ void ewol::FileChooser::UpdateCurrentFolder(void)
|
||||
if (DT_REG == ent->d_type) {
|
||||
myListFile->AddElement(tmpString);
|
||||
} else if (DT_DIR == ent->d_type) {
|
||||
myListFolder->AddElement(tmpString);
|
||||
if (tmpString != "." && tmpString != "..") {
|
||||
myListFolder->AddElement(tmpString);
|
||||
}
|
||||
}
|
||||
}
|
||||
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 SetCancelLabel(etk::String label);
|
||||
void SetFolder(etk::String folder);
|
||||
etk::String GetCompleateFileName(void);
|
||||
void UpdateCurrentFolder(void);
|
||||
private:
|
||||
int32_t m_widgetTitleId;
|
||||
@ -48,7 +49,9 @@ namespace ewol {
|
||||
int32_t m_widgetCurrentFolderId;
|
||||
int32_t m_widgetListFolderId;
|
||||
int32_t m_widgetListFileId;
|
||||
bool m_hasSelectedFile;
|
||||
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