1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #include "gui\rusificationwidget.h"
- #include "ui_rusificationwidget.h"
- #include "legacyapp.h"
- #include "rusificationtreeitem.h"
- #include <QDebug>
- void doStuffWithEveryItemInMyTree( QTreeWidgetItem *item )
- {
- item->setCheckState(0, Qt::Checked);
- for( int i = 0; i < item->childCount(); ++i )
- doStuffWithEveryItemInMyTree( item->child(i) );
- }
- QTreeWidgetItem* findItemByName(QTreeWidgetItem* item, QString name) {
- for (int i = 0; i < item->childCount(); i++) {
- if (((RusificationTreeItem*)item->child(i))->name == name)
- return item->child(i);
- QTreeWidgetItem* found_item = findItemByName(item->child(i), name);
- if (found_item)
- return found_item;
- }
- return nullptr;
- }
- RusificationWidget::RusificationWidget(LegacyApp *_app, QWidget *parent) :
- QWidget(parent),
- ui(new Ui::RusificationWidget),
- app(_app)
- {
- ui->setupUi(this);
- setupTreeWidget();
- ui_update_timer.setInterval(500);
- connect(&ui_update_timer, &QTimer::timeout, this, &RusificationWidget::updateUI);
- ui_update_timer.start();
- }
- RusificationWidget::~RusificationWidget()
- {
- delete ui;
- }
- void RusificationWidget::setupTreeWidget()
- {
- connect(ui->treeWidget_title, &QTreeWidget::itemEntered, this, &RusificationWidget::onHoveredTreeItemChanged);
- QSettings patch_list(qApp->applicationDirPath() + "/legacy_patches.ini", QSettings::IniFormat);
- patch_list.setIniCodec("UTF-8");
- ui->treeWidget_title->setMouseTracking(true);
- foreach (const QString &group, patch_list.childGroups()) {
- qDebug() << "Processing " << group << " patch item";
- RusificationTreeItem* item = new RusificationTreeItem(group);
- item->parseSettingsItem(patch_list);
- QTreeWidgetItem* parent_item = findItemByName(ui->treeWidget_title->invisibleRootItem(), item->parent_name);
- if (!parent_item)
- parent_item = ui->treeWidget_title->invisibleRootItem();
- parent_item->addChild(item);
- }
- ui->treeWidget_title->expandAll();
- doStuffWithEveryItemInMyTree(ui->treeWidget_title->invisibleRootItem());
- }
- void RusificationWidget::onHoveredTreeItemChanged(QTreeWidgetItem *item, int column)
- {
- RusificationTreeItem *tree_item = (RusificationTreeItem*)(item);
- ui->patch_hint->setText("Патч: " + tree_item->title + "\nОписание: " + tree_item->description);
- }
- void RusificationWidget::updateUI()
- {
- if (!qApp)
- return;
- QPoint pos = QCursor::pos();
- QWidget *hovered = qApp->widgetAt(pos);
- if (!hovered) {
- ui->patch_hint->setText("No object!");
- }
- if (hovered) {
- QWidget* parent = hovered->parentWidget();
- if (parent && (hovered->objectName() != "qt_scrollarea_viewport"
- || parent->objectName() != "treeWidget_title"))
- ui->patch_hint->setText(hovered->objectName() + "\n" + parent->objectName());
- }
- }
|