| 14 | #include <QMessageBox> |
| 15 | |
| 16 | Widget::Widget(QWidget *parent) |
| 17 | : QWidget(parent) |
| 18 | , ui(new Ui::Widget) |
| 19 | { |
| 20 | ui->setupUi(this); |
| 21 | this->lw = ui->listWidget; |
| 22 | setWindowFlag(Qt::WindowMaximizeButtonHint, false); |
| 23 | setWindowTitle("Dr.Folder - MrBeanCpp"); |
| 24 | this->setAcceptDrops(true); |
| 25 | |
| 26 | // 创建状态栏 |
| 27 | statusBar = new QStatusBar(this); |
| 28 | statusBar->setFixedHeight(15); |
| 29 | this->layout()->addWidget(statusBar); |
| 30 | |
| 31 | lw->setAlternatingRowColors(true); |
| 32 | lw->hide(); |
| 33 | |
| 34 | ui->placeholder->setCursor(Qt::PointingHandCursor); |
| 35 | connect(ui->placeholder, &QPushButton::clicked, ui->btn_select, &QToolButton::click); |
| 36 | |
| 37 | connect(ui->lineEdit, &QLineEdit::returnPressed, this, [=]{ |
| 38 | ui->btn_subdir->click(); |
| 39 | }); |
| 40 | |
| 41 | connect(ui->btn_applyall, &QToolButton::clicked, this, [=]{ |
| 42 | if (lw->count() == 0 || lw->isHidden()) return; |
| 43 | |
| 44 | auto btn = QMessageBox::question(this, "Apply All", "Are you sure to apply all folder icons?", QMessageBox::Yes | QMessageBox::No); |
| 45 | if (btn == QMessageBox::Yes) { |
| 46 | int count = lw->count(); |
| 47 | for (int i = 0; i < count; ++i) { |
| 48 | QListWidgetItem *item = lw->item(i); |
| 49 | FolderIconSelector *widget = qobject_cast<FolderIconSelector*>(lw->itemWidget(item)); |
| 50 | if (widget) { |
| 51 | widget->applySelectedIcon(); |
| 52 | } |
| 53 | } |
| 54 | } |
| 55 | }); |
| 56 | |
| 57 | connect(ui->btn_select, &QToolButton::clicked, this, [=]{ |
| 58 | QString path = QFileDialog::getExistingDirectory(this, "Select a folder"); |
| 59 | if (path.isEmpty()) return; |
| 60 | ui->lineEdit->setText(QDir::toNativeSeparators(path)); |
| 61 | }); |
| 62 | |
| 63 | connect(ui->btn_subdir, &QToolButton::clicked, this, [=]{ |
| 64 | listFolders(ui->lineEdit->text()); |
| 65 | }); |
| 66 | |
| 67 | ui->btn_subdir->setPopupMode(QToolButton::MenuButtonPopup); |
| 68 | |
| 69 | QMenu *menu = new QMenu(ui->btn_subdir); |
| 70 | menu->addAction("Only Self", this, [=]{ listFolders(ui->lineEdit->text(), true); }); |
| 71 | |
| 72 | ui->btn_subdir->setMenu(menu); |
| 73 | } |
nothing calls this directly
no test coverage detected