diff options
Diffstat (limited to 'lumina-fm')
-rw-r--r-- | lumina-fm/MainUI.cpp | 67 | ||||
-rw-r--r-- | lumina-fm/MainUI.h | 3 | ||||
-rw-r--r-- | lumina-fm/MainUI.ui | 169 |
3 files changed, 206 insertions, 33 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(){ diff --git a/lumina-fm/MainUI.h b/lumina-fm/MainUI.h index 7efc9faa..9dab45ed 100644 --- a/lumina-fm/MainUI.h +++ b/lumina-fm/MainUI.h @@ -170,6 +170,9 @@ private slots: void prevPicture(); void nextPicture(); void lastPicture(); + void removePicture(); + void rotatePictureLeft(); + void rotatePictureRight(); //ZFS Restore Functions void snapshotLoaded(); diff --git a/lumina-fm/MainUI.ui b/lumina-fm/MainUI.ui index 3102915a..9dae7a56 100644 --- a/lumina-fm/MainUI.ui +++ b/lumina-fm/MainUI.ui @@ -15,13 +15,22 @@ </property> <widget class="QWidget" name="centralwidget"> <layout class="QHBoxLayout" name="horizontalLayout_2"> - <property name="margin"> + <property name="leftMargin"> + <number>1</number> + </property> + <property name="topMargin"> + <number>1</number> + </property> + <property name="rightMargin"> + <number>1</number> + </property> + <property name="bottomMargin"> <number>1</number> </property> <item> <widget class="QStackedWidget" name="stackedWidget"> <property name="currentIndex"> - <number>0</number> + <number>2</number> </property> <widget class="QWidget" name="page_browser"> <layout class="QGridLayout" name="gridLayout"> @@ -53,6 +62,18 @@ <property name="frameShape"> <enum>QFrame::NoFrame</enum> </property> + <property name="showDropIndicator" stdset="0"> + <bool>true</bool> + </property> + <property name="dragEnabled"> + <bool>true</bool> + </property> + <property name="dragDropMode"> + <enum>QAbstractItemView::NoDragDrop</enum> + </property> + <property name="defaultDropAction"> + <enum>Qt::IgnoreAction</enum> + </property> <property name="selectionMode"> <enum>QAbstractItemView::ExtendedSelection</enum> </property> @@ -96,6 +117,18 @@ <property name="frameShadow"> <enum>QFrame::Sunken</enum> </property> + <property name="showDropIndicator" stdset="0"> + <bool>true</bool> + </property> + <property name="dragEnabled"> + <bool>true</bool> + </property> + <property name="dragDropMode"> + <enum>QAbstractItemView::NoDragDrop</enum> + </property> + <property name="defaultDropAction"> + <enum>Qt::IgnoreAction</enum> + </property> <property name="selectionMode"> <enum>QAbstractItemView::ExtendedSelection</enum> </property> @@ -136,7 +169,16 @@ <string/> </property> <layout class="QVBoxLayout" name="verticalLayout_3"> - <property name="margin"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> <number>0</number> </property> <item> @@ -643,32 +685,99 @@ <widget class="QWidget" name="page_image_view"> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <widget class="QLabel" name="label_image"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="styleSheet"> - <string notr="true">QLabel{ background: grey; }</string> - </property> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <property name="text"> - <string notr="true"/> - </property> - <property name="scaledContents"> - <bool>false</bool> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> + <layout class="QHBoxLayout" name="horizontalLayout_5"> + <item> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <widget class="QToolButton" name="tool_image_remove"> + <property name="toolTip"> + <string>Delete this image file</string> + </property> + <property name="text"> + <string notr="true">...</string> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="Line" name="line_8"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="tool_image_rotateleft"> + <property name="toolTip"> + <string>Rotate this image file counter-clockwise</string> + </property> + <property name="text"> + <string notr="true">...</string> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="tool_image_rotateright"> + <property name="toolTip"> + <string>Rotate this image file clockwise</string> + </property> + <property name="text"> + <string notr="true">...</string> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <widget class="QLabel" name="label_image"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="styleSheet"> + <string notr="true">QLabel{ background: grey; }</string> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <property name="text"> + <string notr="true"/> + </property> + <property name="scaledContents"> + <bool>false</bool> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_3"> @@ -977,7 +1086,7 @@ <x>0</x> <y>0</y> <width>567</width> - <height>20</height> + <height>18</height> </rect> </property> <widget class="QMenu" name="menuFile"> |