#include "listitem.h" #include #include #include #include #include /** * Constructor. Sets the itemname. */ ListItem::ListItem( const QPixmap & pixmap, QFileInfo fileinfo, QString prog) :QListBoxPixmap(pixmap){ fi = fileinfo; program = substArgs(prog); if(fi.isDir()){ if(fi.fileName() == ".."){ name = "<- .."; }else{ name = fi.fileName(); } }else{ name = fi.baseName(true); } name.replace("_"," "); setText(name); }; /** * Escapes all special character in a string for usage on the Shell */ QString ListItem::ShellEscape(QString str){ QRegExp rx ("([^\\w\\.\\-/])"); str.replace(rx,"\\\\1"); return str; } /** * Substitutes the placeholders in the given String by their (shell * quoted) fileparts */ QString ListItem::substArgs(QString cmd){ cmd.replace("%f",ShellEscape(fi.absFilePath())); cmd.replace("%d",ShellEscape(fi.dirPath(true))); cmd.replace("%l",ShellEscape(fi.fileName())); cmd.replace("%b",ShellEscape(fi.baseName(true))); if(fi.isDir()){ cmd.replace("%e","_dir_"); }else{ cmd.replace("%e",ShellEscape(fi.extension(false))); } return cmd; }