Skip to content

Commit

Permalink
add : tooltip for export table item
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander Bychuk committed Sep 21, 2020
1 parent 924ac47 commit 065b10e
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 48 deletions.
2 changes: 1 addition & 1 deletion main.cpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#include "mainwindow.h"
#include <QApplication>
#include <QCommandLineParser>
#include "qldd.h"

int main(int argc, char *argv[]) {
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication app(argc, argv);

QApplication::setApplicationName("Qldd");
Expand Down
4 changes: 1 addition & 3 deletions mainwindow.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include <QTextStream>
#include <iostream>
#include <QFileDialog>
#include <QShortcut>
#include <QMessageBox>
Expand Down Expand Up @@ -54,7 +52,7 @@ void MainWindow::reset(const QString &fileName) {
QTreeWidgetItem *header = ui->treeWidget->headerItem();
header->setText(0, "Dependency");
qldd->fillDependency(*ui->treeWidget);
qldd->fillExportTable(*ui->listWidgetExportTable);
qldd->fillExportTable(*ui->listWidgetExportTable, "");

ui->lineEditFileName->setText(qldd->getBinaryName());
ui->lineEditFileSize->setText(qldd->getStringFileSize() + "( " + QString::number(qldd->getFileSize()) + " bytes )");
Expand Down
41 changes: 10 additions & 31 deletions mainwindow.ui
Original file line number Diff line number Diff line change
Expand Up @@ -24,36 +24,7 @@
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="0" rowspan="4" colspan="2">
<widget class="QGroupBox" name="groupBoxDependency">
<property name="font">
<font>
<family>Ubuntu Mono</family>
</font>
</property>
<property name="title">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignJustify|Qt::AlignTop</set>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>12</number>
</property>
</layout>
</widget>
</item>
<item row="1" column="0">
<item row="0" column="0">
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
Expand All @@ -69,6 +40,12 @@
<enum>Qt::Horizontal</enum>
</property>
<widget class="QTreeWidget" name="treeWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<column>
<property name="text">
<string notr="true">1</string>
Expand All @@ -77,6 +54,9 @@
</widget>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<property name="topMargin">
<number>18</number>
</property>
Expand Down Expand Up @@ -599,7 +579,6 @@
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
Expand Down
29 changes: 19 additions & 10 deletions qldd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,8 @@
#include <QDateTime>
#include <QTextStream>
#include <QDir>
#include <QProcess>
#include <cxxabi.h>

#define MAXBUFFER 512

#ifdef __APPLE__
#define CMD_LDD "otool -L"
#define NM "nm -g"
Expand All @@ -33,10 +30,14 @@ void execAndDoOnEveryLine(const std::string &execString, const Action &action) {
QTextStream nmOutStream(stream.get());
QString line;
do {
line = nmOutStream.readLine().trimmed();
line = nmOutStream.readLine();
if (line.isNull()) {
break;
}
line = line.trimmed();
if (line.isEmpty()) {
break;
}
action(line);
} while (!line.isNull());
}
Expand Down Expand Up @@ -64,6 +65,9 @@ QLdd::QLdd(QString fileName, QString lddDirPath)
_ownerName.append(_fileInfo.owner());
_groupName.append(_fileInfo.group());

_fileSize = getHumanReadableDataSize();
}
QString QLdd::getHumanReadableDataSize() const {
auto size = static_cast<double>(_fileInfo.size());
int i = 0;
const char *units[] = {"B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"};
Expand All @@ -73,11 +77,10 @@ QLdd::QLdd(QString fileName, QString lddDirPath)
}
char buf[512] = {0};
sprintf(buf, "%.*f %s", i, size, units[i]);
_fileSize.clear();
_fileSize.append(buf);
return QString::fromLocal8Bit(buf);
}

QLdd::~QLdd() {}
QLdd::~QLdd() = default;

int64_t QLdd::getFileSize() const { return _fileInfo.size(); }

Expand Down Expand Up @@ -157,13 +160,13 @@ void QLdd::fillDependency(QTreeWidget &treeWidget) {
QDir::setCurrent(_lddDirPath);
}

void QLdd::fillExportTable(QListWidget &listWidget) {
void QLdd::fillExportTable(QListWidget &listWidget, const QString &filter) {
listWidget.clear();
int status = 0;
std::stringstream ss;
ss << NM << " " << _fileName.toStdString() << " | grep \\ T\\ ";

execAndDoOnEveryLine(ss.str(), [&status, &listWidget](const QString &line) {
execAndDoOnEveryLine(ss.str(), [&status, &listWidget, &filter](const QString &line) {
QStringList info = line.split(" ");
QString demangled(info.at(2));
char *realname = abi::__cxa_demangle(info.at(2).toStdString().c_str(), nullptr, nullptr, &status);
Expand All @@ -174,7 +177,13 @@ void QLdd::fillExportTable(QListWidget &listWidget) {
demangled.replace(":__cxx11:", "");
demangled.replace("std::basic_string<char, std::char_traits<char>, std::allocator<char> >", "std::string");
}
listWidget.addItem(new QListWidgetItem(info.at(0) + " " + demangled));
QScopedPointer<QListWidgetItem> item(new QListWidgetItem(info.at(0) + " " + demangled));
item->setToolTip(demangled);
if (!filter.isEmpty() && demangled.contains(filter, Qt::CaseInsensitive)) {
listWidget.addItem(item.take());
} else if (filter.isEmpty()) {
listWidget.addItem(item.take());
}
});
}

Expand Down
15 changes: 12 additions & 3 deletions qldd.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,34 @@
#include <QListWidget>
#include <QFileInfo>

typedef struct _QMOD {
struct QMOD {
bool read;
bool write;
bool execute;
} QMOD;
};

class QLdd {
public:

QLdd(QString fileName, QString lddDirPath);
virtual ~QLdd();

int64_t getFileSize() const;
const QString &getStringFileSize() const;

void fillDependency(QTreeWidget &treeWidget);
void fillExportTable(QListWidget &listWidget);

void fillExportTable(QListWidget &listWidget, const QString& filter);

QString getPathOfBinary();
QString getBinaryName();

const QString &getCreatedTime();
const QString &getAccessTime();
const QString &getModifyTime();

QString getInfo();

const QMOD &getOwnerMod() const;
void setOwnerMod(const QMOD &ownerMod);

Expand Down Expand Up @@ -55,6 +63,7 @@ class QLdd {
QMOD _otherMod{};
QString _ownerName;
QString _groupName;
QString getHumanReadableDataSize() const;
};

#endif // QLDD_H

0 comments on commit 065b10e

Please sign in to comment.