diff options
Diffstat (limited to 'lumina-fm/MainUI.cpp')
-rw-r--r-- | lumina-fm/MainUI.cpp | 67 |
1 files changed, 64 insertions, 3 deletions
diff --git a/lumina-fm/MainUI.cpp b/lumina-fm/MainUI.cpp index f77d8290..289f2bb5 100644 --- a/lumina-fm/MainUI.cpp +++ b/lumina-fm/MainUI.cpp @@ -7,6 +7,8 @@ #include "MainUI.h" #include "ui_MainUI.h" +#include <QImageWriter> + MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){ ui->setupUi(this); //Be careful about the QSettings setup, it must match the lumina-desktop setup @@ -163,6 +165,9 @@ void MainUI::setupIcons(){ ui->tool_image_goEnd->setIcon( LXDG::findIcon("go-last-view","") ); ui->tool_image_goPrev->setIcon( LXDG::findIcon("go-previous-view","") ); ui->tool_image_goNext->setIcon( LXDG::findIcon("go-next-view","") ); + ui->tool_image_remove->setIcon( LXDG::findIcon("edit-delete","") ); + ui->tool_image_rotateleft->setIcon( LXDG::findIcon("object-rotate-left","") ); + ui->tool_image_rotateright->setIcon( LXDG::findIcon("object-rotate-right","") ); //ZFS Restore page ui->tool_zfs_nextSnap->setIcon( LXDG::findIcon("go-next-view","") ); @@ -218,6 +223,9 @@ void MainUI::setupConnections(){ connect(ui->tool_image_goEnd, SIGNAL(clicked()), this, SLOT(lastPicture()) ); connect(ui->tool_image_goNext, SIGNAL(clicked()), this, SLOT(nextPicture()) ); connect(ui->tool_image_goPrev, SIGNAL(clicked()), this, SLOT(prevPicture()) ); + connect(ui->tool_image_remove, SIGNAL(clicked()), this, SLOT(removePicture()) ); + connect(ui->tool_image_rotateleft, SIGNAL(clicked()), this, SLOT(rotatePictureLeft()) ); + connect(ui->tool_image_rotateright, SIGNAL(clicked()), this, SLOT(rotatePictureRight()) ); //ZFS Restore page connect(ui->slider_zfs_snapshot, SIGNAL(valueChanged(int)), this, SLOT(showSnapshot()) ); @@ -397,9 +405,9 @@ void MainUI::setCurrentDir(QString dir){ ui->tool_goToPlayer->setVisible(false); ui->tool_goToRestore->setVisible(false); ui->tool_goToImages->setVisible(false); - if(olddir!=rawdir){ + //if(olddir!=rawdir){ emit DirChanged(rawdir); //This will be automatically run when a new dir is loaded - } + //} if(isUserWritable){ ui->label_dir_stats->setText(""); } else{ ui->label_dir_stats->setText(tr("Limited Access Directory")); } ui->tool_addToDir->setVisible(isUserWritable); @@ -556,7 +564,8 @@ void MainUI::goToBrowserPage(){ ui->menuExternal_Devices->setEnabled(true); //Now go to the browser if(ui->stackedWidget->currentWidget()==ui->page_audioPlayer){ mediaObj->stop(); } - ui->stackedWidget->setCurrentWidget(ui->page_browser); + ui->stackedWidget->setCurrentWidget(ui->page_browser); + reloadDirectory(); } //--------------------- @@ -715,6 +724,7 @@ void MainUI::currentDirectoryLoaded(){ ui->tool_goToRestore->setVisible(false); ui->tool_goToImages->setVisible(false); emit DirChanged(getCurrentDir()); + ItemSelectionChanged(); } void MainUI::on_tool_addToDir_clicked(){ @@ -863,6 +873,15 @@ void MainUI::showNewPicture(){ ui->tool_image_goEnd->setEnabled(ui->combo_image_name->currentIndex()<(ui->combo_image_name->count()-1)); ui->tool_image_goNext->setEnabled(ui->combo_image_name->currentIndex()<(ui->combo_image_name->count()-1)); ui->label_image_index->setText( QString::number(ui->combo_image_name->currentIndex()+1)+"/"+QString::number(ui->combo_image_name->count()) ); + static QList<QByteArray> writeableformats; + if(writeableformats.isEmpty()){ + writeableformats = QImageWriter::supportedImageFormats(); + qDebug() << "Writeable image formats:" << writeableformats; + } + bool canwrite = writeableformats.contains(file.section(".",-1).toLocal8Bit()); //compare the suffix with the list + ui->tool_image_remove->setEnabled(isUserWritable); + ui->tool_image_rotateleft->setEnabled(isUserWritable && canwrite); + ui->tool_image_rotateright->setEnabled(isUserWritable && canwrite); } void MainUI::firstPicture(){ @@ -881,6 +900,46 @@ void MainUI::lastPicture(){ ui->combo_image_name->setCurrentIndex( ui->combo_image_name->count()-1 ); } +void MainUI::removePicture(){ + QString file = getCurrentDir(); + if(!file.endsWith("/")){ file.append("/"); } + file.append(ui->combo_image_name->currentText()); + if( QFile::remove(file) ){ + ui->combo_image_name->removeItem( ui->combo_image_name->currentIndex() ); + showNewPicture(); + } +} + +void MainUI::rotatePictureLeft(){ + //First load the file fresh (not the scaled version in the UI) + QString file = getCurrentDir(); + if(!file.endsWith("/")){ file.append("/"); } + file.append(ui->combo_image_name->currentText()); + QPixmap pix(file); + //Now rotate the image 90 degrees counter-clockwise + QTransform trans; + pix = pix.transformed( trans.rotate(-90) , Qt::SmoothTransformation); + //Now save the image back to the same file + pix.save(file); + //Now re-load the image in the UI + showNewPicture(); +} + +void MainUI::rotatePictureRight(){ + //First load the file fresh (not the scaled version in the UI) + QString file = getCurrentDir(); + if(!file.endsWith("/")){ file.append("/"); } + file.append(ui->combo_image_name->currentText()); + QPixmap pix(file); + //Now rotate the image 90 degrees counter-clockwise + QTransform trans; + pix = pix.transformed( trans.rotate(90) , Qt::SmoothTransformation); + //Now save the image back to the same file + pix.save(file); + //Now re-load the image in the UI + showNewPicture(); +} + //---------------------------------- //ZFS Restore Functions //---------------------------------- @@ -1170,6 +1229,8 @@ void MainUI::RenameItem(){ dlg.show(); dlg.exec(); CItem.clear(); + + ItemSelectionChanged(); } void MainUI::FavoriteItem(){ |