-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBankWidget.h
More file actions
61 lines (51 loc) · 1.39 KB
/
BankWidget.h
File metadata and controls
61 lines (51 loc) · 1.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#pragma once
#include <QWidget>
#include <QListWidget>
#include <QByteArray>
#include <QVector>
#include <QPushButton>
struct RomPart {
QString name;
QByteArray data; // ggf. bereits swap16-konvertiert
bool swapped = false;
};
class MeterBar : public QWidget {
Q_OBJECT
public:
explicit MeterBar(QWidget* parent=nullptr);
void setSegments(const QVector<int>& sizes); // in Bytes
void setTotal(int total); // z.B. 512 KiB
protected:
void paintEvent(QPaintEvent*) override;
private:
QVector<int> m_sizes;
int m_total = 1;
};
class BankWidget : public QWidget {
Q_OBJECT
public:
explicit BankWidget(int bankIndex, QWidget* parent=nullptr);
static constexpr int SLOT_SIZE = 512 * 1024;
int bank() const { return m_bank; }
int usedBytes() const;
QByteArray buildTiled512k() const; // Kachelt bis exakt 512 KiB; leer -> 0xFF
void clear();
signals:
void requestWriteSlot(int bank, const QByteArray& img512k);
void log(const QString& line);
public slots:
void addFiles();
void removeSelected();
void doWriteSlot();
private:
static QByteArray swap16(const QByteArray& in);
void refreshUi();
int m_bank;
QListWidget* m_list;
MeterBar* m_meter;
QPushButton* m_btnAdd;
QPushButton* m_btnRemove;
QPushButton* m_btnClear;
QPushButton* m_btnWrite;
QVector<RomPart> m_parts;
};