Add rightclick context menus to sfx dropdown, iniswap dropdown and effects dropdown to open the ini's and respective folders

try to fix settings menu (I failed)
This commit is contained in:
Crystalwarrior 2019-10-02 20:28:42 +03:00
parent 4c23e15935
commit e3ddc41cc8
3 changed files with 123 additions and 1 deletions

View File

@ -55,6 +55,8 @@
#include <QPropertyAnimation> #include <QPropertyAnimation>
#include <QParallelAnimationGroup> #include <QParallelAnimationGroup>
#include <QMessageBox> #include <QMessageBox>
#include <QMenu>
#include <QDesktopServices>
//#include <QRandomGenerator> //#include <QRandomGenerator>
#include <stack> #include <stack>
@ -628,6 +630,9 @@ private slots:
void on_music_search_edited(QString p_text); void on_music_search_edited(QString p_text);
void on_music_list_double_clicked(QTreeWidgetItem *p_item, int column); void on_music_list_double_clicked(QTreeWidgetItem *p_item, int column);
void on_music_list_context_menu_requested(const QPoint &pos);
void music_list_expand_all();
void music_list_collapse_all();
void on_area_list_double_clicked(QModelIndex p_model); void on_area_list_double_clicked(QModelIndex p_model);
void select_emote(int p_id); void select_emote(int p_id);
@ -642,13 +647,20 @@ private slots:
void on_iniswap_dropdown_changed(int p_index); void on_iniswap_dropdown_changed(int p_index);
void set_iniswap_dropdown(); void set_iniswap_dropdown();
void on_iniswap_context_menu_requested(const QPoint &pos);
void on_iniswap_edit_requested();
void on_iniswap_remove_clicked(); void on_iniswap_remove_clicked();
void on_sfx_dropdown_changed(int p_index); void on_sfx_dropdown_changed(int p_index);
void set_sfx_dropdown(); void set_sfx_dropdown();
void on_sfx_context_menu_requested(const QPoint &pos);
void on_sfx_edit_requested();
void on_sfx_remove_clicked(); void on_sfx_remove_clicked();
void set_effects_dropdown(); void set_effects_dropdown();
void on_effects_context_menu_requested(const QPoint &pos);
void on_effects_edit_requested();
void on_character_effects_edit_requested();
void on_effects_dropdown_changed(int p_index); void on_effects_dropdown_changed(int p_index);
bool effects_dropdown_find_and_set(QString effect); bool effects_dropdown_find_and_set(QString effect);

View File

@ -12,7 +12,7 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi
ui_settings_buttons = new QDialogButtonBox(this); ui_settings_buttons = new QDialogButtonBox(this);
QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::Maximum); QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::MinimumExpanding);
sizePolicy1.setHorizontalStretch(0); sizePolicy1.setHorizontalStretch(0);
sizePolicy1.setVerticalStretch(0); sizePolicy1.setVerticalStretch(0);
sizePolicy1.setHeightForWidth(ui_settings_buttons->sizePolicy().hasHeightForWidth()); sizePolicy1.setHeightForWidth(ui_settings_buttons->sizePolicy().hasHeightForWidth());
@ -36,6 +36,7 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi
// Let's add the tabs one by one. // Let's add the tabs one by one.
// First, we'll start with 'Gameplay'. // First, we'll start with 'Gameplay'.
ui_gameplay_tab = new QWidget(); ui_gameplay_tab = new QWidget();
ui_gameplay_tab->setSizePolicy(sizePolicy1);
ui_settings_tabs->addTab(ui_gameplay_tab, tr("Gameplay")); ui_settings_tabs->addTab(ui_gameplay_tab, tr("Gameplay"));
ui_form_layout_widget = new QWidget(ui_gameplay_tab); ui_form_layout_widget = new QWidget(ui_gameplay_tab);
ui_form_layout_widget->setGeometry(QRect(10, 10, 361, 211)); ui_form_layout_widget->setGeometry(QRect(10, 10, 361, 211));
@ -45,6 +46,7 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi
ui_gameplay_form->setLabelAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter); ui_gameplay_form->setLabelAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter);
ui_gameplay_form->setFormAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop); ui_gameplay_form->setFormAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop);
ui_gameplay_form->setContentsMargins(0, 0, 0, 0); ui_gameplay_form->setContentsMargins(0, 0, 0, 0);
ui_gameplay_form->setSpacing(2);
int row = 0; int row = 0;

View File

@ -131,6 +131,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
ui_music_list->setHeaderHidden(true); ui_music_list->setHeaderHidden(true);
ui_music_list->header()->setStretchLastSection(false); ui_music_list->header()->setStretchLastSection(false);
ui_music_list->header()->setSectionResizeMode(QHeaderView::ResizeToContents); ui_music_list->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
ui_music_list->setContextMenuPolicy(Qt::CustomContextMenu);
ui_music_display = new AOMovie(this, ao_app); ui_music_display = new AOMovie(this, ao_app);
ui_music_display->set_play_once(false); ui_music_display->set_play_once(false);
@ -182,12 +183,15 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
ui_pos_dropdown->addItem("sea"); ui_pos_dropdown->addItem("sea");
ui_iniswap_dropdown = new QComboBox(this); ui_iniswap_dropdown = new QComboBox(this);
ui_iniswap_dropdown->setContextMenuPolicy(Qt::CustomContextMenu);
ui_iniswap_remove = new AOButton(this, ao_app); ui_iniswap_remove = new AOButton(this, ao_app);
ui_sfx_dropdown = new QComboBox(this); ui_sfx_dropdown = new QComboBox(this);
ui_sfx_dropdown->setContextMenuPolicy(Qt::CustomContextMenu);
ui_sfx_remove = new AOButton(this, ao_app); ui_sfx_remove = new AOButton(this, ao_app);
ui_effects_dropdown = new QComboBox(this); ui_effects_dropdown = new QComboBox(this);
ui_effects_dropdown->setContextMenuPolicy(Qt::CustomContextMenu);
ui_defense_bar = new AOImage(this, ao_app); ui_defense_bar = new AOImage(this, ao_app);
ui_prosecution_bar = new AOImage(this, ao_app); ui_prosecution_bar = new AOImage(this, ao_app);
@ -301,12 +305,15 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
connect(ui_pos_dropdown, SIGNAL(currentIndexChanged(int)), this, SLOT(on_pos_dropdown_changed(int))); connect(ui_pos_dropdown, SIGNAL(currentIndexChanged(int)), this, SLOT(on_pos_dropdown_changed(int)));
connect(ui_iniswap_dropdown, SIGNAL(currentIndexChanged(int)), this, SLOT(on_iniswap_dropdown_changed(int))); connect(ui_iniswap_dropdown, SIGNAL(currentIndexChanged(int)), this, SLOT(on_iniswap_dropdown_changed(int)));
connect(ui_iniswap_dropdown, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(on_iniswap_context_menu_requested(QPoint)));
connect(ui_iniswap_remove, SIGNAL(clicked()), this, SLOT(on_iniswap_remove_clicked())); connect(ui_iniswap_remove, SIGNAL(clicked()), this, SLOT(on_iniswap_remove_clicked()));
connect(ui_sfx_dropdown, SIGNAL(currentIndexChanged(int)), this, SLOT(on_sfx_dropdown_changed(int))); connect(ui_sfx_dropdown, SIGNAL(currentIndexChanged(int)), this, SLOT(on_sfx_dropdown_changed(int)));
connect(ui_sfx_dropdown, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(on_sfx_context_menu_requested(QPoint)));
connect(ui_sfx_remove, SIGNAL(clicked()), this, SLOT(on_sfx_remove_clicked())); connect(ui_sfx_remove, SIGNAL(clicked()), this, SLOT(on_sfx_remove_clicked()));
connect(ui_effects_dropdown, SIGNAL(currentIndexChanged(int)), this, SLOT(on_effects_dropdown_changed(int))); connect(ui_effects_dropdown, SIGNAL(currentIndexChanged(int)), this, SLOT(on_effects_dropdown_changed(int)));
connect(ui_effects_dropdown, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(on_effects_context_menu_requested(QPoint)));
connect(ui_mute_list, SIGNAL(clicked(QModelIndex)), this, SLOT(on_mute_list_clicked(QModelIndex))); connect(ui_mute_list, SIGNAL(clicked(QModelIndex)), this, SLOT(on_mute_list_clicked(QModelIndex)));
@ -315,6 +322,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
connect(ui_ooc_chat_message, SIGNAL(returnPressed()), this, SLOT(on_ooc_return_pressed())); connect(ui_ooc_chat_message, SIGNAL(returnPressed()), this, SLOT(on_ooc_return_pressed()));
connect(ui_music_list, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), this, SLOT(on_music_list_double_clicked(QTreeWidgetItem*, int))); connect(ui_music_list, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), this, SLOT(on_music_list_double_clicked(QTreeWidgetItem*, int)));
connect(ui_music_list, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(on_music_list_context_menu_requested(QPoint)));
connect(ui_area_list, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(on_area_list_double_clicked(QModelIndex))); connect(ui_area_list, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(on_area_list_double_clicked(QModelIndex)));
connect(ui_hold_it, SIGNAL(clicked()), this, SLOT(on_hold_it_clicked())); connect(ui_hold_it, SIGNAL(clicked()), this, SLOT(on_hold_it_clicked()));
@ -3395,6 +3403,25 @@ void Courtroom::on_iniswap_dropdown_changed(int p_index)
ui_iniswap_remove->hide(); ui_iniswap_remove->hide();
} }
void Courtroom::on_iniswap_context_menu_requested(const QPoint &pos)
{
QMenu *menu = ui_iniswap_dropdown->lineEdit()->createStandardContextMenu();
menu->addSeparator();
if (file_exists(ao_app->get_character_path(current_char, "char.ini")))
menu->addAction(QString("Edit " + current_char + "/char.ini"), this, SLOT(on_iniswap_edit_requested()));
if (ui_iniswap_dropdown->itemText(ui_iniswap_dropdown->currentIndex()) != char_list.at(m_cid).name)
menu->addAction(QString("Remove " + current_char), this, SLOT(on_iniswap_remove_clicked()));
menu->popup(ui_iniswap_dropdown->mapToGlobal(pos));
}
void Courtroom::on_iniswap_edit_requested()
{
QString p_path = ao_app->get_character_path(current_char, "char.ini");
if (!file_exists(p_path))
return;
QDesktopServices::openUrl(QUrl(p_path));
}
void Courtroom::on_iniswap_remove_clicked() void Courtroom::on_iniswap_remove_clicked()
{ {
if (ui_iniswap_dropdown->count() <= 0) if (ui_iniswap_dropdown->count() <= 0)
@ -3476,6 +3503,37 @@ void Courtroom::on_sfx_dropdown_changed(int p_index)
ui_sfx_remove->hide(); ui_sfx_remove->hide();
} }
void Courtroom::on_sfx_context_menu_requested(const QPoint &pos)
{
QMenu *menu = ui_sfx_dropdown->lineEdit()->createStandardContextMenu();
menu->addSeparator();
if (file_exists(ao_app->get_character_path(current_char, "soundlist.ini")))
menu->addAction(QString("Edit " + current_char + "/soundlist.ini"), this, SLOT(on_sfx_edit_requested()));
else
menu->addAction(QString("Edit theme's character_soundlist.ini"), this, SLOT(on_sfx_edit_requested()));
if (ui_sfx_dropdown->currentIndex() != 0)
menu->addAction(QString("Remove " + ui_sfx_dropdown->itemText(ui_sfx_dropdown->currentIndex())), this, SLOT(on_sfx_remove_clicked()));
menu->popup(ui_sfx_dropdown->mapToGlobal(pos));
}
void Courtroom::on_sfx_edit_requested()
{
QString p_path = ao_app->get_character_path(current_char, "soundlist.ini");
if (!file_exists(p_path))
{
p_path = ao_app->get_theme_path("character_soundlist.ini");
if (!file_exists(p_path))
{
p_path = ao_app->get_default_theme_path("character_soundlist.ini");
if (!file_exists(p_path))
{
return;
}
}
}
QDesktopServices::openUrl(QUrl(p_path));
}
void Courtroom::on_sfx_remove_clicked() void Courtroom::on_sfx_remove_clicked()
{ {
if (ui_sfx_dropdown->count() <= 0) if (ui_sfx_dropdown->count() <= 0)
@ -3539,6 +3597,38 @@ void Courtroom::set_effects_dropdown()
ui_effects_dropdown->blockSignals(false); ui_effects_dropdown->blockSignals(false);
} }
void Courtroom::on_effects_context_menu_requested(const QPoint &pos)
{
QMenu *menu = new QMenu();
if (!ao_app->read_char_ini(current_char, "effects", "Options").isEmpty())
menu->addAction(QString("Open misc/" + ao_app->read_char_ini(current_char, "effects", "Options") + " folder"), this, SLOT(on_character_effects_edit_requested()));
menu->addAction(QString("Open theme's effects folder"), this, SLOT(on_effects_edit_requested()));
menu->popup(ui_effects_dropdown->mapToGlobal(pos));
}
void Courtroom::on_effects_edit_requested()
{
QString p_path = ao_app->get_theme_path("effects/");
if (!dir_exists(p_path))
{
p_path = ao_app->get_default_theme_path("effects/");
if (!dir_exists(p_path))
{
return;
}
}
QDesktopServices::openUrl(QUrl(p_path));
}
void Courtroom::on_character_effects_edit_requested()
{
QString p_effect = ao_app->read_char_ini(current_char, "effects", "Options");
QString p_path = ao_app->get_base_path() + "misc/" + p_effect + "/";
if (!dir_exists(p_path))
return;
QDesktopServices::openUrl(QUrl(p_path));
}
void Courtroom::on_effects_dropdown_changed(int p_index) void Courtroom::on_effects_dropdown_changed(int p_index)
{ {
effect = ui_effects_dropdown->itemText(p_index); effect = ui_effects_dropdown->itemText(p_index);
@ -3679,6 +3769,24 @@ void Courtroom::on_music_list_double_clicked(QTreeWidgetItem *p_item, int column
} }
} }
void Courtroom::on_music_list_context_menu_requested(const QPoint &pos)
{
QMenu *menu = new QMenu();
menu->addAction(QString("Expand All Categories"), this, SLOT(music_list_expand_all()));
menu->addAction(QString("Collapse All Categories"), this, SLOT(music_list_collapse_all()));
// menu->addSeparator();
menu->popup(ui_music_list->mapToGlobal(pos));
}
void Courtroom::music_list_expand_all()
{
ui_music_list->expandAll();
}
void Courtroom::music_list_collapse_all()
{
ui_music_list->collapseAll();
}
void Courtroom::on_area_list_double_clicked(QModelIndex p_model) void Courtroom::on_area_list_double_clicked(QModelIndex p_model)
{ {
QString p_area = area_list.at(area_row_to_number.at(p_model.row())); QString p_area = area_list.at(area_row_to_number.at(p_model.row()));