NewFileDialog::NewFileDialog(QWidget *parent) : QDialog(parent), ui(new Ui::NewFileDialog) { ui->setupUi(this); m_categoryModel = new QStandardItemModel(this); m_templateModel = new QStandardItemModel(this); m_pathModel = new QStringListModel(this); ui->categoryTreeView->setModel(m_categoryModel); ui->templateTreeView->setModel(m_templateModel); ui->pathTreeView->setModel(m_pathModel); ui->pathTreeView->setEditTriggers(0); ui->pathTreeView->setRootIsDecorated(false); ui->pathTreeView->setHeaderHidden(true); ui->categoryTreeView->setEditTriggers(0); ui->categoryTreeView->setRootIsDecorated(false); ui->categoryTreeView->setHeaderHidden(true); ui->templateTreeView->setEditTriggers(0); ui->templateTreeView->setRootIsDecorated(false); ui->templateTreeView->setHeaderHidden(true); connect(ui->categoryTreeView,SIGNAL(clicked(QModelIndex)),this,SLOT(activeCategory(QModelIndex))); connect(ui->templateTreeView,SIGNAL(clicked(QModelIndex)),this,SLOT(activeTemplate(QModelIndex))); connect(ui->nameLineEdit,SIGNAL(textChanged(QString)),this,SLOT(nameLineChanged(QString))); connect(ui->locationLineEdit,SIGNAL(textChanged(QString)),this,SLOT(locationLineChanged(QString))); connect(ui->pathTreeView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(activePath(QModelIndex))); }
QIcon generateIcon(const char* iconPath) { QIcon icon; QString normalPath(iconPath); auto tokens = normalPath.split('.'); TF_ASSERT(tokens.length() == 2); QString off(tokens[0]); QString on(tokens[0] + stateOn); QString ext("." + tokens[1]); QString disabledPath(off + modeDisabled + ext); QString activePath(off + modeActive + ext); QString selectedPath(off + modeSelected + ext); QString normalOnPath(on + ext); QString disabledOnPath(on + modeDisabled + ext); QString activeOnPath(on + modeActive + ext); QString selectedOnPath(on + modeSelected + ext); auto offIcon = QPixmap(normalPath); icon.addPixmap(offIcon, QIcon::Normal, QIcon::Off); icon.addPixmap(QPixmap(disabledPath), QIcon::Disabled, QIcon::Off); icon.addPixmap(QPixmap(activePath), QIcon::Active, QIcon::Off); icon.addPixmap(QPixmap(selectedPath), QIcon::Selected, QIcon::Off); auto onIcon = QPixmap(normalOnPath); if (onIcon.isNull()) { QPainter p; auto img = offIcon.toImage().convertToFormat(QImage::Format_ARGB32); auto mask(img); auto width = mask.width(); auto height = mask.height(); auto outerRect = mask.rect(); auto innerRect = QRect(width / 16, height / 16, width - width / 8, height - height / 8); p.begin(&mask); p.setCompositionMode(QPainter::CompositionMode_SourceIn); p.fillRect(outerRect, QApplication::palette().highlight()); p.fillRect(innerRect, Qt::transparent); p.end(); p.begin(&img); p.setCompositionMode(QPainter::CompositionMode_SourceOver); p.drawImage(0, 0, mask); p.end(); onIcon.convertFromImage(img); } icon.addPixmap(onIcon, QIcon::Normal, QIcon::On); icon.addPixmap(QPixmap(disabledOnPath), QIcon::Disabled, QIcon::On); icon.addPixmap(QPixmap(activeOnPath), QIcon::Active, QIcon::On); icon.addPixmap(QPixmap(selectedOnPath), QIcon::Selected, QIcon::On); return icon; }