}
}
-void FolderMenu::addSortMenuItem(QString title, int id) {
+void FolderMenu::addSortMenuItem(const QString &title, int id) {
QAction* action = new QAction(title, this);
+ action->setData(QVariant(id));
sortMenu_->addAction(action);
action->setCheckable(true);
+ action->setChecked(id == view_->model()->sortColumn());
sortActionGroup_->addAction(action);
connect(action, &QAction::triggered, this, &FolderMenu::onSortActionTriggered);
- sortActions_[id] = action;
}
void FolderMenu::createSortMenu() {
sortActionGroup_ = new QActionGroup(sortMenu_);
sortActionGroup_->setExclusive(true);
- std::memset(sortActions_, 0, sizeof(sortActions_));
-
addSortMenuItem(tr("By File Name"), FolderModel::ColumnFileName);
addSortMenuItem(tr("By Modification Time"), FolderModel::ColumnFileMTime);
addSortMenuItem(tr("By File Size"), FolderModel::ColumnFileSize);
addSortMenuItem(tr("By File Type"), FolderModel::ColumnFileType);
addSortMenuItem(tr("By File Owner"), FolderModel::ColumnFileOwner);
-
- int col = model->sortColumn();
-
- if(col >= 0 && col < FolderModel::NumOfColumns) {
- sortActions_[col]->setChecked(true);;
- }
+ addSortMenuItem(tr("By File Group"), FolderModel::ColumnFileGroup);
sortMenu_->addSeparator();
void FolderMenu::onSortActionTriggered(bool /*checked*/) {
ProxyFolderModel* model = view_->model();
- if(model) {
+ if(model && sortActionGroup_) {
QAction* action = static_cast<QAction*>(sender());
- for(int col = 0; col < FolderModel::NumOfColumns; ++col) {
- if(action == sortActions_[col]) {
- model->sort(col, model->sortOrder());
+ const auto actions = sortActionGroup_->actions();
+ for(auto a : actions) {
+ if(a == action) {
+ int col = a->data().toInt();
+ if(col >= 0 && col < FolderModel::NumOfColumns) {
+ model->sort(col, model->sortOrder());
+ }
break;
}
}
private:
void createSortMenu();
- void addSortMenuItem(QString title, int id);
+ void addSortMenuItem(const QString &title, int id);
private:
FolderView* view_;
QAction* sortAction_;
QActionGroup* sortActionGroup_;
QMenu* sortMenu_;
- QAction* sortActions_[FolderModel::NumOfColumns];
QAction* actionAscending_;
QAction* actionDescending_;
QAction* showHiddenAction_;