Move button to delete shortcuts from SelectAccelerator to KeyItem

This commit is contained in:
David Capello 2014-10-29 22:06:25 -03:00
parent f939ef5f02
commit d90150fed9
4 changed files with 42 additions and 32 deletions

View File

@ -27,7 +27,6 @@
<box horizontal="true" homogeneous="true">
<button text="OK" id="ok_button" magnet="true" width="60" />
<button text="Cancel" id="cancel_button" />
<button text="Delete" id="delete_button" />
</box>
</box>

View File

@ -60,6 +60,7 @@ public:
, m_menuitem(menuitem)
, m_level(level)
, m_changeButton(NULL)
, m_deleteButton(NULL)
, m_addButton(NULL)
, m_hotAccel(-1) {
this->border_width.t = this->border_width.b = 0;
@ -80,25 +81,33 @@ public:
private:
void onChangeAccel() {
Accelerator origAccel = m_key->accels()[m_hotAccel];
SelectAccelerator window(origAccel, true);
void onChangeAccel(int index) {
Accelerator origAccel = m_key->accels()[index];
SelectAccelerator window(origAccel);
window.openWindowInForeground();
if (window.isModified()) {
m_key->disableAccel(origAccel);
m_key->add(window.accel(), KeySource::UserDefined);
}
else if (window.isDeleted()) {
m_key->disableAccel(origAccel);
getRoot()->layout();
}
void onDeleteAccel(int index)
{
if (Alert::show("Warning"
"<<Do you really want to delete this keyboard shortcut?"
"||&Yes||&No") != 1)
return;
m_key->disableAccel(m_key->accels()[index]);
getRoot()->layout();
}
void onAddAccel() {
ui::Accelerator accel;
SelectAccelerator window(accel, false);
SelectAccelerator window(accel);
window.openWindowInForeground();
if (window.isModified()) {
@ -216,19 +225,38 @@ private:
6*jguiscale(), 1*jguiscale()));
if (accels && i < (int)accels->size() &&
itemBounds.contains(mouseMsg->position())) {
mouseMsg->position().y >= itemBounds.y &&
mouseMsg->position().y < itemBounds.y+itemBounds.h) {
hotAccel = i;
if (!m_changeButton) {
m_changeButton = new Button("");
m_changeButton->Click.connect(Bind<void>(&KeyItem::onChangeAccel, this));
m_changeButton->Click.connect(Bind<void>(&KeyItem::onChangeAccel, this, i));
setup_mini_look(m_changeButton);
addChild(m_changeButton);
}
if (!m_deleteButton) {
m_deleteButton = new Button("");
m_deleteButton->Click.connect(Bind<void>(&KeyItem::onDeleteAccel, this, i));
setup_mini_look(m_deleteButton);
addChild(m_deleteButton);
}
m_changeButton->setBgColor(gfx::ColorNone);
m_changeButton->setBounds(itemBounds);
m_changeButton->setText((*accels)[i].toString());
const char* label = "x";
m_deleteButton->setBgColor(gfx::ColorNone);
m_deleteButton->setBounds(gfx::Rect(
itemBounds.x + itemBounds.w + 2*jguiscale(),
itemBounds.y,
Graphics::measureUIStringLength(
label, getFont()) + 4*jguiscale(),
itemBounds.h));
m_deleteButton->setText(label);
invalidate();
}
@ -266,8 +294,10 @@ private:
void destroyButtons() {
delete m_changeButton;
delete m_deleteButton;
delete m_addButton;
m_changeButton = NULL;
m_deleteButton = NULL;
m_addButton = NULL;
}
@ -277,6 +307,7 @@ private:
int m_level;
ui::Accelerators m_newAccels;
ui::Button* m_changeButton;
ui::Button* m_deleteButton;
ui::Button* m_addButton;
int m_hotAccel;
};

View File

@ -76,10 +76,9 @@ protected:
Accelerator m_accel;
};
SelectAccelerator::SelectAccelerator(const ui::Accelerator& accel, bool canDelete)
SelectAccelerator::SelectAccelerator(const ui::Accelerator& accel)
: m_keyField(new KeyField(accel))
, m_accel(accel)
, m_deleted(false)
, m_modified(false)
{
updateModifiers();
@ -97,11 +96,6 @@ SelectAccelerator::SelectAccelerator(const ui::Accelerator& accel, bool canDelet
clearButton()->Click.connect(Bind<void>(&SelectAccelerator::onClear, this));
okButton()->Click.connect(Bind<void>(&SelectAccelerator::onOK, this));
cancelButton()->Click.connect(Bind<void>(&SelectAccelerator::onCancel, this));
if (canDelete)
deleteButton()->Click.connect(Bind<void>(&SelectAccelerator::onDelete, this));
else
deleteButton()->setVisible(false);
}
void SelectAccelerator::onModifierChange(KeyModifiers modifier, CheckBox* checkbox)
@ -146,17 +140,6 @@ void SelectAccelerator::onCancel()
closeWindow(NULL);
}
void SelectAccelerator::onDelete()
{
if (Alert::show("Warning"
"<<Do you really want to delete this keyboard shortcut?"
"||&Yes||&No") != 1)
return;
m_deleted = true;
closeWindow(NULL);
}
void SelectAccelerator::updateModifiers()
{
alt()->setSelected(m_accel.modifiers() & kKeyAltModifier ? true: false);

View File

@ -28,9 +28,8 @@ namespace app {
class SelectAccelerator : public app::gen::SelectAccelerator {
public:
explicit SelectAccelerator(const ui::Accelerator& accelerator, bool canDelete);
explicit SelectAccelerator(const ui::Accelerator& accelerator);
bool isDeleted() const { return m_deleted; }
bool isModified() const { return m_modified; }
const ui::Accelerator& accel() const { return m_accel; }
@ -40,7 +39,6 @@ namespace app {
void onClear();
void onOK();
void onCancel();
void onDelete();
void updateModifiers();
void updateAssignedTo();
@ -49,7 +47,6 @@ namespace app {
KeyField* m_keyField;
ui::Accelerator m_origAccel;
ui::Accelerator m_accel;
bool m_deleted;
bool m_modified;
};