Skip to content

Commit

Permalink
qimageuploader: improve log window
Browse files Browse the repository at this point in the history
  • Loading branch information
zenden2k committed Apr 29, 2024
1 parent b2f4a48 commit 1895e38
Show file tree
Hide file tree
Showing 11 changed files with 220 additions and 58 deletions.
4 changes: 2 additions & 2 deletions Source/qimageuploader/CMakeLists.txt
Expand Up @@ -31,7 +31,7 @@ endif()

set(SOURCE_FILES
main.cpp
Gui/mainwindow.cpp
Gui/MainWindow.cpp
Gui/FrameGrabberDlg.cpp
Gui/ResultsWindow.cpp
Gui/LogWindow.cpp
Expand All @@ -54,7 +54,7 @@ set(SOURCE_FILES
Gui/ui/ResultsWindow.ui
Gui/ui/LogWindow.ui
Gui/ui/LoginDialog.ui
Gui/ui/AboutDialog.ui
Gui/ui/AboutDialog.ui
qimageuploader.qrc
)

Expand Down
7 changes: 7 additions & 0 deletions Source/qimageuploader/Gui/AboutDialog.cpp
Expand Up @@ -2,6 +2,7 @@

#include "ui_AboutDialog.h"
#include "Core/AppParams.h"
#include <QPushButton>

AboutDialog::AboutDialog(QWidget *parent):
QDialog(parent),
Expand All @@ -11,6 +12,12 @@ AboutDialog::AboutDialog(QWidget *parent):
auto version = AppParams::instance()->GetAppVersion();

ui->versionLabel->setText(QString::fromStdString(version->FullVersion) + " build " + QString::number(version->Build));
QPushButton * btn = new QPushButton(tr("About Qt"), this);
connect(btn, &QPushButton::clicked, this, [] {
qApp->aboutQt();
});

ui->buttonBox->addButton(btn, QDialogButtonBox::ActionRole);
}

AboutDialog::~AboutDialog() {
Expand Down
4 changes: 2 additions & 2 deletions Source/qimageuploader/Gui/FrameGrabberDlg.cpp
Expand Up @@ -25,7 +25,7 @@ FrameGrabberDlg::FrameGrabberDlg(QString fileName, QWidget *parent) :
ui->lineEdit->setText(fileName);
ui->comboBox->addItem("Auto", QVariant(int(VideoGrabber::veAuto)));
#ifdef IU_ENABLE_FFMPEG
ui->comboBox->addItem("Avcodec", QVariant(int(VideoGrabber::veAvcodec)));
ui->comboBox->addItem("FFmpeg", QVariant(int(VideoGrabber::veAvcodec)));
#endif

#ifdef _WIN32
Expand Down Expand Up @@ -147,4 +147,4 @@ void FrameGrabberDlg::itemDoubleClicked(const QModelIndex& index) {
QString fileName = item->data(Qt::UserRole).toString();
QDesktopServices::openUrl("file:///" + fileName);
}
}
}
19 changes: 17 additions & 2 deletions Source/qimageuploader/Gui/LogWindow.cpp
Expand Up @@ -2,12 +2,19 @@

#include "ui_LogWindow.h"

#include "Core/ServiceLocator.h"
#include "Core/Settings/BasicSettings.h"

LogWindow::LogWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::LogWindow)
{
ui->setupUi(this);
ui->plainTextEdit->setReadOnly(true);

connect(ui->clearButton, &QPushButton::clicked, ui->plainTextEdit, &QPlainTextEdit::clear);
connect(ui->hideButton, &QPushButton::clicked, this, &LogWindow::hide);

setWindowFlags(windowFlags() | Qt::Tool | Qt::WindowCloseButtonHint);
setAttribute(Qt::WA_QuitOnClose, false);
}
Expand All @@ -22,10 +29,18 @@ void LogWindow::writeLog(ILogger::LogMsgType MsgType, QString Sender, QString Ms
QString line;
line.fill('-', 70);
QString msg = "Sender:" + Sender + "\r\n" + Info + "\r\n" + Msg + "\r\n" + line + "\r\n";
QMetaObject::invokeMethod(this, "writeLogInMainThread", Q_ARG(QString, msg));
QMetaObject::invokeMethod(this, "writeLogInMainThread", Q_ARG(int, MsgType), Q_ARG(QString, msg));
}

void LogWindow::writeLogInMainThread(QString msg) {
void LogWindow::writeLogInMainThread(int msgType, QString msg) {
ui->plainTextEdit->appendPlainText(msg);
if (msgType == ILogger::logError) {
auto settings = ServiceLocator::instance()->basicSettings();
if (settings->AutoShowLog) {
show();
raise();
activateWindow();
}
}
}

2 changes: 1 addition & 1 deletion Source/qimageuploader/Gui/LogWindow.h
Expand Up @@ -19,7 +19,7 @@ class LogWindow : public QDialog
void writeLog(ILogger::LogMsgType MsgType, QString Sender, QString Msg, QString Info);
protected:
std::unique_ptr<Ui::LogWindow> ui;
Q_INVOKABLE void writeLogInMainThread(QString msg);
Q_INVOKABLE void writeLogInMainThread(int msgType, QString msg);

};

Expand Down
Expand Up @@ -104,14 +104,24 @@ void MainWindow::updateView() {
}

void MainWindow::on_actionGrab_frames_triggered() {
QString fileName = QFileDialog::getOpenFileName(this);
if (fileName.length()) {
FrameGrabberDlg dlg(fileName, this);
if (dlg.exec() == QDialog::Accepted) {
QStringList frames;
dlg.getGrabbedFrames(frames);
addMultipleFilesToList(frames);
}
QFileDialog fd(this,"Open multimedia file", QString(), tr("All files (*.*)"));
fd.setModal(true);
fd.setWindowModality(Qt::WindowModal);
fd.exec();
auto files = fd.selectedFiles();

if (files.empty()) {
return;
}
QString fileName = files.first();

FrameGrabberDlg dlg(fileName, this);
dlg.setModal(true);
dlg.setWindowModality(Qt::WindowModal);
if (dlg.exec() == QDialog::Accepted) {
QStringList frames;
dlg.getGrabbedFrames(frames);
addMultipleFilesToList(frames);
}
}

Expand Down Expand Up @@ -160,10 +170,17 @@ void MainWindow::on_actionScreenshot_triggered() {
}

void MainWindow::on_actionAdd_files_triggered() {
QStringList fileNames = QFileDialog::getOpenFileNames(this);
if (!fileNames.isEmpty()) {
addMultipleFilesToList(fileNames);
QFileDialog fd(this,"Open files", QString(), tr("All files (*.*)"));
fd.setModal(true);
fd.setWindowModality(Qt::WindowModal);
fd.exec();
auto fileNames = fd.selectedFiles();

if (fileNames.empty()) {
return;
}

addMultipleFilesToList(fileNames);
}

bool MainWindow::addFileToList(QString fileName) {
Expand Down Expand Up @@ -254,7 +271,9 @@ void MainWindow::showCodeForIndex(const QModelIndex& index) {
uploadTaskToUploadObject(item->task.get(), obj);
uploadObjects.push_back(obj);
}
ResultsWindow dlg(uploadObjects);
ResultsWindow dlg(uploadObjects, this);
dlg.setModal(true);
dlg.setWindowModality(Qt::WindowModal);
dlg.exec();
}

Expand Down Expand Up @@ -320,6 +339,8 @@ void MainWindow::onShowLog() {

void MainWindow::on_actionAboutProgram_triggered() {
AboutDialog dlg(this);
dlg.setModal(true);
dlg.setWindowModality(Qt::WindowModal);
dlg.exec();
}

Expand Down
File renamed without changes.
15 changes: 10 additions & 5 deletions Source/qimageuploader/Gui/models/uploadtreemodel.cpp
Expand Up @@ -29,7 +29,7 @@ int UploadTreeModel::columnCount(const QModelIndex &parent) const
QVariant UploadTreeModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
return {};

InternalItem * obj = reinterpret_cast<InternalItem*>(index.internalPointer());

Expand All @@ -42,13 +42,18 @@ QVariant UploadTreeModel::data(const QModelIndex &index, int role) const
ico = QIcon(":/icons/res/transfer_inactive.png");
else if(obj->task->status() == UploadTask::StatusRunning)
ico = QIcon(":/icons/res/transfer.png");
else return QVariant();
else return {};
return ico;
}
if (role == Qt::ForegroundRole && index.column()==1 && obj->task){
if(obj->task->status()== UploadTask::StatusFinished){
return QBrush(QColor(Qt::darkGreen));
}
}
if (role != Qt::DisplayRole)
return QVariant();
return {};

if(!obj) return QVariant();
if(!obj) return {};

QString result;
if(index.column() == 0)
Expand Down Expand Up @@ -118,7 +123,7 @@ QVariant UploadTreeModel::headerData(int section, Qt::Orientation orientation,
return headerLabels[section];
}

return QVariant();
return {};
}

QModelIndex UploadTreeModel::index(int row, int column, const QModelIndex &parent) const
Expand Down
91 changes: 70 additions & 21 deletions Source/qimageuploader/Gui/ui/AboutDialog.ui
Expand Up @@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>399</width>
<height>209</height>
<width>597</width>
<height>233</height>
</rect>
</property>
<property name="windowTitle">
Expand Down Expand Up @@ -36,7 +36,6 @@
<widget class="QLabel" name="programNameLabel">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
Expand Down Expand Up @@ -68,24 +67,74 @@
</layout>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Qt based port of Image Uploader&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Developed by Sergey Svistunov (&lt;a href=&quot;mailto:zenden2k@gmail.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;zenden2k@gmail.com&lt;/span&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;https://svistunov.dev/imageuploader-qt&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://svistunov.dev/imageuploader-qt&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Icons by &lt;a href=&quot;https://icons8.com/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://icons8.com/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Qt based port of Image Uploader</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="label_4">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;E-mail: &lt;a href=&quot;mailto:zenden2k@gmail.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;zenden2k@gmail.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Developed by Sergey Svistunov</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="label_5">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Website: &lt;a href=&quot;https://svistunov.dev/imageuploader-qt&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://svistunov.dev/imageuploader-qt&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="label_6">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Icons by &lt;a href=&quot;https://icons8.com/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://icons8.com/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
Expand Down
31 changes: 31 additions & 0 deletions Source/qimageuploader/Gui/ui/LogWindow.ui
Expand Up @@ -17,6 +17,37 @@
<item>
<widget class="QPlainTextEdit" name="plainTextEdit"/>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="clearButton">
<property name="text">
<string>Clear</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="hideButton">
<property name="text">
<string>Hide</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
Expand Down

0 comments on commit 1895e38

Please sign in to comment.