ist ja ziemlich lästig, daß im neutrino filebrowser bei Auswahl von ".."
oder "Taste links" ohne Einhalt bis auf's root Verzeichnis runtergesprungen
wird.
Das betrifft vor allem Computer Laien, die dadurch schnell überfordert werden
und z.B. nicht mehr zu den Videofiles (im movieplayer) o.ä. zurückfinden.
Da man ja im Setup für die Player/Bildbetrachter jeweils Startverzeichnisse
einstellen kann, wären diese auch sinnvoll als "untere Schranke" benutzbar,
über die nicht hinwegegangen werden kann.
Also würde man nun im Setup für Player/Bildbetrachter überall z.B. /mnt als
Startverzeichnis einstellen und hätte folgende Struktur
/mnt/bilder
/mnt/musik
/mnt/filme
so wäre ne prima Navigation innerhalb des "/mnt"-Astes möglich ...
Grundlegende Vorraussetzung wäre der nachfolgende Patch in filebrowser.h/.cpp.
Der stellt einen weiteren Konstruktor "CFileBrowser(const std::string &base)"
zur Verfügung, der im Coding von audioplayer/movieplayer/pictureviewer
alternativ zu "CFileBrowser()" verwendet werden könnte, wobei "base" der Wert
des im Setup gewählten directories sein sollte.
Ansonsten wäre die Funktionalität trotz des filebrowser patches genauso wie
zuvor. also keine "Gefahr" (sofern ich nicht völlig daneben liegen), wenn's
so ins CVS reinkäme ...
Code: Alles auswählen
*** filebrowser.h Mon Jun 28 16:54:08 2004
--- filebrowser.h Mon Jun 28 16:55:30 2004
***************
*** 140,145 ****
--- 140,146 ----
int theight; // Fonthoehe Filelist-Titel
int foheight; // Hoehe der button leiste
std::string name;
+ std::string base;
std::string m_baseurl;
int width;
int height;
***************
*** 171,176 ****
--- 172,178 ----
CFileFilter * Filter;
CFileBrowser();
+ CFileBrowser(const std::string &base);
~CFileBrowser();
bool exec(std::string Dirname);
*** filebrowser.cpp Mon Jun 28 16:34:45 2004
--- filebrowser.cpp Mon Jun 28 16:34:40 2004
***************
*** 264,269 ****
--- 264,276 ----
m_oldKeyTime = 0;
m_oldKey = 0;
+ base = "/";
+ }
+
+ CFileBrowser::CFileBrowser(const std::string &base)
+ {
+ ::CFileBrowser();
+ CFileBrowser::base = base;
}
//------------------------------------------------------------------------
***************
*** 312,317 ****
--- 319,328 ----
pos = Path.length();
newpath = Path.substr(0,pos);
// printf("path: %s filename: %s newpath: %s\n",Path.c_str(),filename.c_str(),newpath.c_str());
+
+ // check, if it's a subdir of the home dir (base)
+ pos = newpath.find(base);
+ if (pos!=0) return;
}
else
{