aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src-qt5/desktop-utils/lumina-archiver/MainUI.cpp19
-rw-r--r--src-qt5/desktop-utils/lumina-archiver/MainUI.h2
-rw-r--r--src-qt5/desktop-utils/lumina-archiver/MainUI.ui15
-rw-r--r--src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp15
4 files changed, 43 insertions, 8 deletions
diff --git a/src-qt5/desktop-utils/lumina-archiver/MainUI.cpp b/src-qt5/desktop-utils/lumina-archiver/MainUI.cpp
index e465cdf8..2972550c 100644
--- a/src-qt5/desktop-utils/lumina-archiver/MainUI.cpp
+++ b/src-qt5/desktop-utils/lumina-archiver/MainUI.cpp
@@ -42,6 +42,7 @@ MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){
connect(ui->actionAdd_Dirs, SIGNAL(triggered()), this, SLOT(addDirs()) );
connect(ui->tree_contents, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), this, SLOT(ViewFile(QTreeWidgetItem*)) );
connect(ui->actionUSB_Image, SIGNAL(triggered()), this, SLOT(BurnImgToUSB()) );
+ connect(ui->tree_contents, SIGNAL(itemSelectionChanged()), this, SLOT(selectionChanged()) );
//Set Keyboard Shortcuts
ui->action_New->setShortcut(tr("CTRL+N"));
@@ -88,7 +89,7 @@ void MainUI::loadIcons(){
ui->actionAdd_Dirs->setIcon( LXDG::findIcon("archive-insert-directory","") );
ui->actionRemove_File->setIcon( LXDG::findIcon("archive-remove","") );
ui->actionExtract_All->setIcon( LXDG::findIcon("archive-extract","") );
- ui->actionExtract_Sel->setIcon( LXDG::findIcon("archive-extract","") );
+ ui->actionExtract_Sel->setIcon( LXDG::findIcon("edit-select-all","") );
ui->actionUSB_Image->setIcon( LXDG::findIcon("drive-removable-media-usb-pendrive","drive-removable-media-usb") );
}
@@ -112,6 +113,12 @@ QTreeWidgetItem* MainUI::findItem(QString path, QTreeWidgetItem *start){
}
bool MainUI::cleanItems(QStringList list, QTreeWidgetItem *start){
+ //Quick detection for an empty list
+ if(list.isEmpty() && ui->tree_contents->topLevelItemCount()>0){
+ ui->tree_contents->clear();
+ return true;
+ }
+ //Recursive resolution of items
bool changed = false;
if(start==0){
for(int i=0; i<ui->tree_contents->topLevelItemCount(); i++){
@@ -154,7 +161,7 @@ QString MainUI::CreateFileTypes(){
QString MainUI::OpenFileTypes(){
QStringList types;
- types << QString(tr("All Types %1")).arg("(*.tar.gz *.tar.xz *.tar.bz *.tar.bz2 *.tar.lzma *.tar *.zip *.tgz *.txz *.tbz *.tbz2 *.tlz *.cpio *.pax *.ar *.shar *.7z *.iso *.img *.xar *.jar *.rpm)");
+ types << QString(tr("All Known Types %1")).arg("(*.tar.gz *.tar.xz *.tar.bz *.tar.bz2 *.tar.lzma *.tar *.zip *.tgz *.txz *.tbz *.tbz2 *.tlz *.cpio *.pax *.ar *.shar *.7z *.iso *.img *.xar *.jar *.rpm)");
types << tr("Uncompressed Archive (*.tar)");
types << tr("GZip Compressed Archive (*.tar.gz *.tgz)");
types << tr("BZip Compressed Archive (*.tar.bz *.tbz)");
@@ -171,6 +178,7 @@ QString MainUI::OpenFileTypes(){
types << tr("READ-ONLY: XAR archive (*.xar)");
types << tr("READ-ONLY: Java archive (*.jar)");
types << tr("READ-ONLY: RedHat Package (*.rpm)");
+ types << tr("Show All Files (*)");
return types.join(";;");
}
@@ -340,7 +348,8 @@ void MainUI::ProcFinished(bool success, QString msg){
canmodify = canmodify && BACKEND->canModify(); //also include the file type limitations
ui->actionAdd_File->setEnabled(canmodify);
ui->actionRemove_File->setEnabled(canmodify && info.exists());
- ui->actionExtract_All->setEnabled(info.exists());
+ ui->actionExtract_All->setEnabled(info.exists() && ui->tree_contents->topLevelItemCount()>0);
+ ui->actionExtract_Sel->setEnabled(info.exists() && !ui->tree_contents->selectedItems().isEmpty());
ui->actionAdd_Dirs->setEnabled(canmodify);
}
@@ -349,3 +358,7 @@ void MainUI::ProcUpdate(int percent, QString txt){
ui->progressBar->setValue(percent);
if(!txt.isEmpty()){ ui->label_progress->setText(txt); }
}
+
+void MainUI::selectionChanged(){
+ ui->actionExtract_Sel->setEnabled(!ui->tree_contents->selectedItems().isEmpty());
+}
diff --git a/src-qt5/desktop-utils/lumina-archiver/MainUI.h b/src-qt5/desktop-utils/lumina-archiver/MainUI.h
index bf37d26a..273078ea 100644
--- a/src-qt5/desktop-utils/lumina-archiver/MainUI.h
+++ b/src-qt5/desktop-utils/lumina-archiver/MainUI.h
@@ -55,6 +55,8 @@ private slots:
void ProcFinished(bool, QString);
void ProcUpdate(int percent, QString txt);
+ //UI Slots
+ void selectionChanged();
};
#endif
diff --git a/src-qt5/desktop-utils/lumina-archiver/MainUI.ui b/src-qt5/desktop-utils/lumina-archiver/MainUI.ui
index 6666b7cb..0fc9eadf 100644
--- a/src-qt5/desktop-utils/lumina-archiver/MainUI.ui
+++ b/src-qt5/desktop-utils/lumina-archiver/MainUI.ui
@@ -15,6 +15,15 @@
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>3</number>
+ </property>
+ <property name="topMargin">
+ <number>1</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
@@ -111,7 +120,7 @@
<x>0</x>
<y>0</y>
<width>403</width>
- <height>22</height>
+ <height>20</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
@@ -168,6 +177,7 @@
<addaction name="actionRemove_File"/>
<addaction name="separator"/>
<addaction name="actionExtract_All"/>
+ <addaction name="actionExtract_Sel"/>
</widget>
<action name="action_Open">
<property name="text">
@@ -226,6 +236,9 @@
<property name="text">
<string>Extract Selection</string>
</property>
+ <property name="statusTip">
+ <string>Extract Selected Items</string>
+ </property>
</action>
<action name="actionUSB_Image">
<property name="text">
diff --git a/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp b/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp
index 78efd51c..0659f8b1 100644
--- a/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp
+++ b/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp
@@ -27,6 +27,7 @@ Backend::~Backend(){
// PUBLIC
//===============
void Backend::loadFile(QString path){
+ //qDebug() << "Loading Archive:" << path;
filepath = path;
tmpfilepath = filepath.section("/",0,-2)+"/"+".tmp_larchiver_"+filepath.section("/",-1);
flags.clear();
@@ -149,7 +150,7 @@ void Backend::startViewFile(QString path){
args << "-x";
args << flags <<"--include" << path <<"--strip-components" << QString::number(path.count("/")) << "-C" << QDir::tempPath();
STARTING=true;
- qDebug() << "Starting command:" << "tar" << args;
+ //qDebug() << "Starting command:" << "tar" << args;
PROC.start("tar", args);
}
@@ -195,6 +196,7 @@ void Backend::startList(){
QStringList args;
args << "-tv";
LIST = STARTING=true;
+ //qDebug() << "Starting List:" << "tar "+args.join(" ")+" "+flags.join(" ");
PROC.start("tar", QStringList() << args << flags);
}
@@ -203,12 +205,17 @@ void Backend::startList(){
//===============
void Backend::procFinished(int retcode, QProcess::ExitStatus){
static QString result;
- processData();
//qDebug() << "Process Finished:" << PROC.arguments() << retcode;
+ processData();
LIST = STARTING = false;
if(PROC.arguments().contains("-tv")){
- if(retcode!=0){ contents.clear(); } //could not read archive
- emit ProcessFinished(true,result);
+ if(retcode!=0){ //could not read archive
+ contents.clear();
+ result = tr("Could not read archive");
+ }else if(result.isEmpty()){
+ result = tr("Archive Loaded");
+ }
+ emit ProcessFinished((retcode==0), result);
result.clear();
}else{
bool needupdate = true;
bgstack15