From 0ff7933eb7bcac2a11f1da34a160e3a1a71a2852 Mon Sep 17 00:00:00 2001 From: Tommi Asp Date: Mon, 22 Mar 2010 15:36:30 +0200 Subject: [PATCH] Initial commit --- cuteexplorer.desktop | 8 ++ cuteexplorer_icon.svg | 32 +++++ cuteexplorer_icon48.png | Bin 0 -> 972 bytes cuteexplorer_icon64.png | Bin 0 -> 1233 bytes cuteexplorertranslation_fi_FI.qm | Bin 0 -> 2573 bytes cuteexplorertranslation_fi_FI.ts | 154 ++++++++++++++++++++++ filelistwidget.cpp | 270 ++++++++++++++++++++++++++++++++++++++ filelistwidget.h | 47 +++++++ i18n.qrc | 5 + main.cpp | 29 ++++ mainwindow.cpp | 59 +++++++++ mainwindow.h | 28 ++++ mainwindow.ui | 162 +++++++++++++++++++++++ src.pro | 45 +++++++ 14 files changed, 839 insertions(+) create mode 100644 cuteexplorer.desktop create mode 100644 cuteexplorer_icon.svg create mode 100644 cuteexplorer_icon48.png create mode 100644 cuteexplorer_icon64.png create mode 100644 cuteexplorertranslation_fi_FI.qm create mode 100644 cuteexplorertranslation_fi_FI.ts create mode 100644 filelistwidget.cpp create mode 100644 filelistwidget.h create mode 100644 i18n.qrc create mode 100644 main.cpp create mode 100644 mainwindow.cpp create mode 100644 mainwindow.h create mode 100644 mainwindow.ui create mode 100644 src.pro diff --git a/cuteexplorer.desktop b/cuteexplorer.desktop new file mode 100644 index 0000000..51aa75b --- /dev/null +++ b/cuteexplorer.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=1.0 +Type=Application +Name=CuteExplorer +Comment=Explore your maemo +Exec=/usr/local/bin/cuteexplorer +Icon=cuteexplorer_icon64 diff --git a/cuteexplorer_icon.svg b/cuteexplorer_icon.svg new file mode 100644 index 0000000..9286d9e --- /dev/null +++ b/cuteexplorer_icon.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cuteexplorer_icon48.png b/cuteexplorer_icon48.png new file mode 100644 index 0000000000000000000000000000000000000000..bd653e7fc937f3650ee683b528af7e8168682f7f GIT binary patch literal 972 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 + + + + FileListWidget + + + Rename + Uudelleen nimeä + + + + New filename: + Uusi tiedoston nimi: + + + + + + + Error! + Virhe! + + + + Renaming file %1 failed + Tiedoston %1 uudelleen nimeäminen epäonnistui + + + + Copying file %1 failed + Tiedoston %1 kopiointi epäonnistui + + + + Moving file %1 failed + Tiedoston %1 siirto epäonnistui + + + + Deleting file + Tiedoston poisto + + + + You are about to delete %1 file(s). +Are you sure you want to continue? + Olet poistamassa %1 tiedostoa.\nOletko varma että tahdot jatkaa? + + + + Deleting file %1 failed + Tiedoston %1 poistaminen epäonnistui + + + + + Sending files + Tiedostojen lähetys + + + + To send files, select files you want to send and copy them. + Lähettääksesi tiedostoja; valitse tiedostot, kopioi ja lähetä tiedostot. + + + + Only in maemo5 for now + Vain maemo5:ssä tällähetkellä + + + + MainWindow + + + Maemo Explorer + Maemo Explorer + + + + Up + Ylös + + + + Backspace + Backspace + + + + File + Tiedosto + + + + Edit + Muokkaa + + + + View + Näkymä + + + + Exit + Lopeta + + + + Cut + Leikkaa + + + + Copy + Kopioi + + + + Paste + Liitä + + + + Delete + Poista + + + + Icon view + Kuvake näkymä + + + + Send files + Lähetä tiedostoja + + + Switch Mode + Vaihda näkymä + + + + Rename + Uudelleen nimeä + + + + Show hidden + Näytä piilotetut + + + diff --git a/filelistwidget.cpp b/filelistwidget.cpp new file mode 100644 index 0000000..22c75ea --- /dev/null +++ b/filelistwidget.cpp @@ -0,0 +1,270 @@ +#include "filelistwidget.h" +#include +#include +#include +#include +#include +#include +#include +#ifdef Q_WS_MAEMO_5 +# include +# include +#endif +/*! +Widget that shows filesystemmodel and handles navigation +in directory tree and opening files with assosiated programs + +@todo in symbian and windows filesystems navigating to "/" wont show drives + */ +FileListWidget::FileListWidget(QWidget *parent) : + QListView(parent), + fileSystemModel( new QFileSystemModel(this)), + currentDir(QDir::homePath()), + mode_cut(false), + mode_copy(false), + select(false) +{ + this->setModel(fileSystemModel); + this->setRootIndex(fileSystemModel->index(currentDir.absolutePath())); + fileSystemModel->setRootPath(currentDir.absolutePath()); + fileSystemModel->setFilter(fileSystemModel->filter() | QDir::System); + connect(this, SIGNAL(activated(QModelIndex)), this, SLOT(handleItemActivation(QModelIndex))); + +} + +/** + Switches view mode + @param iconmode true shows iconview, false shows listview + */ +void FileListWidget::actionSwitchMode(bool iconmode) +{ + if(iconmode) { + this->setViewMode(QListView::IconMode); + this->setWordWrap(true); + this->setGridSize(QSize(80,80)); + } else { + this->setViewMode(QListView::ListMode); + this->setWordWrap(false); + this->setGridSize(QSize()); + } +} +/** + Switches show hidden + @param show true shows hidden files + */ +void FileListWidget::actionShowHidden(bool show) +{ + if(show) + fileSystemModel->setFilter(fileSystemModel->filter() | QDir::Hidden); + else + fileSystemModel->setFilter(fileSystemModel->filter() &~ QDir::Hidden); + + this->clearSelection(); +} + +/** + Rename selected file + */ +void FileListWidget::actionRename() +{ + QFileInfo file = fileSystemModel->fileInfo(this->selectedIndexes().first()); + QString newName = QInputDialog::getText(this, tr("Rename"), tr("New filename: "), QLineEdit::Normal, file.fileName()); + if(newName != file.fileName()) + { + if(QFile::rename(file.absoluteFilePath(), file.absolutePath()+"/"+newName)) + return; + else + QMessageBox::critical(this,tr("Error!") + ,tr("Renaming file %1 failed") + .arg(file.fileName()) + ,QMessageBox::Ok); + } +} +/** + Selected files will be moved when actionPaste is called + */ +void FileListWidget::actionCut() +{ + mode_cut = true; + mode_copy = false; + selectedFiles = this->selectedIndexes(); +} +/** + Selected files will be copied when actionPaste is called + */ +void FileListWidget::actionCopy() +{ + mode_cut = false; + mode_copy = true; + selectedFiles = this->selectedIndexes(); +} + +/** + Moves or copies files that were selected when actionCut or actionCopy called + */ +void FileListWidget::actionPaste() +{ + fileSystemModel->setReadOnly(false); + if(mode_copy) { + //Copy files until filelist is empty or error occured + while(!selectedFiles.isEmpty()) { + if(QFile::copy(fileSystemModel->fileInfo(selectedFiles.first()).absoluteFilePath() + , fileSystemModel->rootPath()+"/"+fileSystemModel->fileName(selectedFiles.first()))) { + selectedFiles.removeFirst(); + } + else if(QFile::copy(fileSystemModel->fileInfo(selectedFiles.first()).absoluteFilePath() + , fileSystemModel->rootPath()+"/copy_"+fileSystemModel->fileName(selectedFiles.first()))) { + selectedFiles.removeFirst(); + } else { + QMessageBox::critical(this,tr("Error!") + ,tr("Copying file %1 failed") + .arg(fileSystemModel->fileName(selectedFiles.first())) + ,QMessageBox::Ok); + break; + } + } + if(selectedFiles.isEmpty()) + mode_copy = false; + } else if(mode_cut) { + //Move files until filelist is empty or error occured + while(!selectedFiles.isEmpty()) { + if(QFile::rename(fileSystemModel->fileInfo(selectedFiles.first()).absoluteFilePath() + , fileSystemModel->rootPath()+"/"+fileSystemModel->fileName(selectedFiles.first()))) { + selectedFiles.removeFirst(); + } else { + QMessageBox::critical(this,tr("Error!") + ,tr("Moving file %1 failed") + .arg(fileSystemModel->fileName(selectedFiles.first())) + ,QMessageBox::Ok); + break; + } + } + if(selectedFiles.isEmpty()) + mode_cut = false; + } + fileSystemModel->setReadOnly(true); + this->clearSelection(); +} + +/** + Deletes selected files + */ +void FileListWidget::actionDelete() +{ + mode_cut = false; + mode_copy = false; + if(QMessageBox::Yes == QMessageBox::warning(this, tr("Deleting file") + ,tr("You are about to delete %1 file(s).\nAre you sure you want to continue?") + .arg(this->selectedIndexes().count()) + , QMessageBox::Yes, QMessageBox::No)) { + fileSystemModel->setReadOnly(false); + selectedFiles = this->selectedIndexes(); + //delete files until filelist empty or error occured + while(!selectedFiles.isEmpty()) { + if(fileSystemModel->remove(selectedFiles.first())) { + selectedFiles.removeFirst(); + } else { + QMessageBox::critical(this,tr("Error!") + ,tr("Deleting file %1 failed") + .arg(fileSystemModel->fileName(selectedFiles.first())) + ,QMessageBox::Ok); + break; + } + } + fileSystemModel->setReadOnly(true); + this->clearSelection(); + } +} + +/** + @return Current directory + */ +QString FileListWidget::getPath() +{ + return currentDir.absolutePath(); +} + +/** + Changes current directory + @param path directory to change to + */ +void FileListWidget::changePath(QString path) +{ + currentDir.cd(path); + QString newPath = currentDir.absolutePath(); + fileSystemModel->setRootPath(newPath); + this->clearSelection(); + this->setRootIndex(fileSystemModel->index(newPath)); + emit pathChanged(newPath); +} + +/** + Equivalent to changePath("..") + */ +void FileListWidget::changePathUp() +{ + changePath(".."); +} + +void FileListWidget::handleItemActivation(QModelIndex index) +{ + if(!select) { + QFileInfo file = fileSystemModel->fileInfo(index); + if(file.isDir()) { + changePath(file.absoluteFilePath()); + } else if(file.isExecutable()) { + // Make process + QProcess::startDetached(file.absoluteFilePath()); + } else { +#ifdef Q_WS_MAEMO_5 // Uses native file opening method + DBusConnection* conn; + conn = dbus_bus_get(DBUS_BUS_SESSION, 0); + hildon_mime_open_file(conn, QUrl::fromLocalFile(file.absoluteFilePath()).toEncoded().constData()); +#else + /* + Not working with maemo5. + Uses hildon_uri_open function from + libhildonmime which should work, + but all files opened in browser. + */ + QDesktopServices::openUrl(QUrl::fromLocalFile(file.absoluteFilePath())); +#endif + } + } +} +/** + @param mode true activates file selection + */ +void FileListWidget::setSelectMode(bool mode) +{ + select = mode; +} + +void FileListWidget::actionSendFiles() +{ + if(!mode_copy) { + QMessageBox::information(this, + tr("Sending files"), + tr("To send files, select files you want to send and copy them."), + QMessageBox::Cancel); + } else { +#ifdef Q_WS_MAEMO_5 + // Create list of file urls + QStringList files; + while(!selectedFiles.isEmpty()) { + files.append(QUrl::fromLocalFile(fileSystemModel->fileInfo(selectedFiles.first()).absoluteFilePath()).toString()); + selectedFiles.removeFirst(); + } + + // Make dbuscall to send files + QDBusInterface interface("com.nokia.bt_ui", "/com/nokia/bt_ui", "com.nokia.bt_ui",QDBusConnection::systemBus()); + interface.call("show_send_file_dlg", files); +#else + QMessageBox::information(this, + tr("Sending files"), + tr("Only in maemo5 for now"), + QMessageBox::Cancel); +#endif + } +} + diff --git a/filelistwidget.h b/filelistwidget.h new file mode 100644 index 0000000..48304cf --- /dev/null +++ b/filelistwidget.h @@ -0,0 +1,47 @@ +#ifndef FILELISTWIDGET_H +#define FILELISTWIDGET_H + +#include +#include +#include +#include +#include + +class FileListWidget : public QListView +{ +Q_OBJECT +public: + explicit FileListWidget(QWidget *parent = 0); + + QString getPath(); + +signals: + void pathChanged(QString newPath); + +public slots: + void changePath(QString path); + void changePathUp(); + + void actionDelete(); + void actionCut(); + void actionCopy(); + void actionPaste(); + void actionSwitchMode(bool iconmode=true); + void actionRename(); + void actionShowHidden(bool show=true); + void actionSendFiles(); + + void setSelectMode(bool mode=true); +private slots: + void handleItemActivation(QModelIndex index); + +private: + QFileSystemModel *fileSystemModel; + QDir currentDir; + QModelIndexList selectedFiles; + bool mode_cut; + bool mode_copy; + bool select; +}; + +#endif // FILELISTWIDGET_H diff --git a/i18n.qrc b/i18n.qrc new file mode 100644 index 0000000..9962489 --- /dev/null +++ b/i18n.qrc @@ -0,0 +1,5 @@ + + + cuteexplorertranslation_fi_FI.qm + + diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..23f3386 --- /dev/null +++ b/main.cpp @@ -0,0 +1,29 @@ +#include +#include +#include +#include "mainwindow.h" +#include +#include +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + QTranslator translator; + + /* For some reason QLocale::system() returns + locale by LC_NUMERIC environment variable which is + meant for numerics like thousand separator etc. + + In this solution we get locale from LANG environment variable + and use QLocale::system() as fallback. + */ + if(QProcessEnvironment::systemEnvironment().contains("LANG")) + translator.load(":/cuteexplorertranslation_"+QLocale(QProcessEnvironment::systemEnvironment().value("LANG")).name()); + else + translator.load(":/cuteexplorertranslation_"+QLocale::system().name()); + + a.installTranslator(&translator); + + MainWindow w; + w.show(); + return a.exec(); +} diff --git a/mainwindow.cpp b/mainwindow.cpp new file mode 100644 index 0000000..a6c94c3 --- /dev/null +++ b/mainwindow.cpp @@ -0,0 +1,59 @@ +#include "mainwindow.h" +#include "ui_mainwindow.h" + +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainWindow) +{ + ui->setupUi(this); + connect(ui->actionExit, SIGNAL(triggered()), this, SLOT(close())); + connect(ui->upButton, SIGNAL(clicked()), ui->fileListWidget, SLOT(changePathUp())); + connect(ui->locationLine, SIGNAL(returnPressed()), this, SLOT(locationLineEnterKeyHandler())); + connect(ui->fileListWidget, SIGNAL(pathChanged(QString)), ui->locationLine, SLOT(setText(QString))); + connect(ui->actionDelete, SIGNAL(triggered()), ui->fileListWidget, SLOT(actionDelete())); + connect(ui->actionMode, SIGNAL(toggled(bool)), ui->fileListWidget, SLOT(actionSwitchMode(bool))); + connect(ui->actionCopy, SIGNAL(triggered()), ui->fileListWidget, SLOT(actionCopy())); + connect(ui->actionCut, SIGNAL(triggered()), ui->fileListWidget, SLOT(actionCut())); + connect(ui->actionPaste, SIGNAL(triggered()), ui->fileListWidget, SLOT(actionPaste())); + connect(ui->actionShow_hidden, SIGNAL(toggled(bool)), ui->fileListWidget, SLOT(actionShowHidden(bool))); + connect(ui->actionRename, SIGNAL(triggered()), ui->fileListWidget, SLOT(actionRename())); + connect(ui->actionSend, SIGNAL(triggered()), ui->fileListWidget, SLOT(actionSendFiles())); + ui->locationLine->setText(ui->fileListWidget->getPath()); +} + +MainWindow::~MainWindow() +{ + delete ui; +} + +void MainWindow::locationLineEnterKeyHandler() +{ + ui->fileListWidget->changePath(ui->locationLine->text()); +} +void MainWindow::keyPressEvent(QKeyEvent *e) +{ + if(e->key() == Qt::Key_Control || e->key() == Qt::Key_Shift) + ui->fileListWidget->setSelectMode(true); + else + QMainWindow::keyPressEvent(e); +} +void MainWindow::keyReleaseEvent(QKeyEvent *e) +{ + if(e->key() == Qt::Key_Control || e->key() == Qt::Key_Shift) + ui->fileListWidget->setSelectMode(false); + else + QMainWindow::keyPressEvent(e); +} + +void MainWindow::changeEvent(QEvent *e) +{ + QMainWindow::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } +} + diff --git a/mainwindow.h b/mainwindow.h new file mode 100644 index 0000000..8e9c517 --- /dev/null +++ b/mainwindow.h @@ -0,0 +1,28 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +namespace Ui { + class MainWindow; +} + +class MainWindow : public QMainWindow { + Q_OBJECT +public: + MainWindow(QWidget *parent = 0); + ~MainWindow(); + + +protected: + void changeEvent(QEvent *e); + void keyPressEvent(QKeyEvent *e); + void keyReleaseEvent(QKeyEvent *e); +private slots: + void locationLineEnterKeyHandler(); +private: + Ui::MainWindow *ui; + +}; + +#endif // MAINWINDOW_H diff --git a/mainwindow.ui b/mainwindow.ui new file mode 100644 index 0000000..2428f03 --- /dev/null +++ b/mainwindow.ui @@ -0,0 +1,162 @@ + + + MainWindow + + + + 0 + 0 + 600 + 400 + + + + CuteExplorer + + + + + + + + + + + + Up + + + Backspace + + + + + + + + + + + + + + Qt::NoContextMenu + + + QAbstractItemView::NoEditTriggers + + + false + + + QAbstractItemView::ExtendedSelection + + + Qt::ElideRight + + + + + + + + + + + 0 + 0 + 600 + 21 + + + + + Edit + + + + + + + + + + View + + + + + + + File + + + + + + + + + + + Exit + + + + + Cut + + + + + Copy + + + + + Paste + + + + + Delete + + + + + true + + + Icon view + + + + + Rename + + + + + true + + + Show hidden + + + + + Send files + + + + + + + FileListWidget + QListView +
filelistwidget.h
+
+
+ + +
diff --git a/src.pro b/src.pro new file mode 100644 index 0000000..03840aa --- /dev/null +++ b/src.pro @@ -0,0 +1,45 @@ +# ------------------------------------------------- +# Project created by QtCreator 2010-01-13T19:38:20 +# ------------------------------------------------- +TARGET = cuteexplorer +TEMPLATE = app + +SOURCES += main.cpp \ + mainwindow.cpp \ + filelistwidget.cpp +HEADERS += mainwindow.h \ + filelistwidget.h +FORMS += mainwindow.ui +TRANSLATIONS += cuteexplorertranslation_fi_FI.ts +RESOURCES += i18n.qrc + + +maemo5 { + #VARIABLES + CONFIG += link_pkgconfig + PKGCONFIG += dbus-1 gnome-vfs-2.0 + LIBS += -lhildonmime -ldbus-1 + QT += dbus + isEmpty(PREFIX) { + PREFIX = /usr + } +BINDIR = $$PREFIX/bin +DATADIR =$$PREFIX/share + +DEFINES += DATADIR=\\\"$$DATADIR\\\" PKGDATADIR=\\\"$$PKGDATADIR\\\" + +#MAKE INSTALL + +INSTALLS += target desktop icon icon64 + + target.path =$$BINDIR + + desktop.path = $$DATADIR/applications/hildon + desktop.files += $${TARGET}.desktop + + icon64.path = $$DATADIR/icons/hicolor/64x64/apps + icon64.files += $${TARGET}_icon64.png + + icon.path = $$DATADIR/icons/hicolor/scalable/apps + icon.files += $${TARGET}_icon.svg +} -- 1.7.9.5