#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_actionQuit_triggered();
void on_actionTest_triggered();
void on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include
#include
#include
#include
#include
using namespace std;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->tabWidget->clear();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionQuit_triggered()
{
close ();
}
void showDir (QTreeWidgetItem * target, QDir dir)
{
auto branch = new QTreeWidgetItem;
branch->setText (0, dir.dirName());
QString s = dir.canonicalPath();
branch->setToolTip (0, s);
branch->setData (0, Qt::UserRole, s);
branch->setForeground (0, QColor ("red"));
branch->setIcon (0, QIcon::fromTheme ("folder"));
target->addChild(branch);
QFileInfoList list = dir.entryInfoList (QDir::AllEntries | QDir::NoDotAndDotDot);
for (QFileInfo file : list)
{
if (file.isDir())
{
showDir (branch, QDir (file.filePath()));
}
else
{
auto node = new QTreeWidgetItem;
node->setText (0, file.fileName());
QString t = file.absoluteFilePath();
node->setToolTip (0, t);
node->setData (0, Qt::UserRole, t);
node->setForeground (0, QColor ("blue"));
if (file.fileName().endsWith(".png") && file.size() <= 64*1024)
node->setIcon (0, QIcon (file.filePath()));
else
node->setIcon (0, QIcon::fromTheme ("document-open"));
node->setText (1, QString::number (file.size()));
node->setText (2, file.lastModified().toString ("yyyy-MM-dd HH:mm:ss"));
branch->addChild (node);
}
}
}
void MainWindow::on_actionTest_triggered()
{
QIcon::setThemeName("mate");
ui->treeWidget->setColumnCount(3);
QStringList names;
names << "Name" << "Size" << "Date";
ui->treeWidget->setHeaderLabels(names);
QDir d ("/usr/share/icons/mate");
// QDir d (".");
QDir dir (d.canonicalPath());
showDir (ui->treeWidget->invisibleRootItem(), dir);
}
void MainWindow::on_treeWidget_itemDoubleClicked (QTreeWidgetItem *item, int column)
{
QString p = item->data(0, Qt::UserRole).toString();
if (p != "")
{
QFileInfo info (p);
QString ext = info.completeSuffix();
if (ext == "txt" || ext == "h" || ext == "c" || ext == "cpp")
{
QTextEdit * edit = new QTextEdit ();
int inx = ui->tabWidget->addTab (edit, info.fileName());
ui->tabWidget->setCurrentIndex(inx);
QFile file (p);
if (file.open(QFile::ReadOnly))
{
QByteArray data = file.readAll();
QString text = data;
edit->setText(text);
}
}
else if (ext == "png")
{
QLabel * widget = new QLabel ();
int inx = ui->tabWidget->addTab (widget, info.fileName());
ui->tabWidget->setCurrentIndex(inx);
widget->setPixmap(QPixmap(p));
}
/*
else if (ext == "html")
{
QWebEngine * widget = new QWebEngine ();
int inx = ui->tabWidget->addTab (widget, info.fileName());
ui->tabWidget->setCurrentIndex(inx);
widget->setPixmap(QPixmap(p));
}
*/
}
}