mirror of
https://github.com/transmission/transmission.git
synced 2025-12-22 03:18:41 +00:00
Identifying a dialog by it's header title is kinda dirty and now we use the dialogs id instead. We also check if the dialog is visible before executing the hotkey action.
119 lines
3.4 KiB
JavaScript
119 lines
3.4 KiB
JavaScript
/**
|
|
* Copyright © Dave Perrett and Malcolm Jarvis
|
|
*
|
|
* This file is licensed under the GPLv2.
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
*/
|
|
|
|
function Dialog() {
|
|
this.initialize();
|
|
};
|
|
|
|
Dialog.prototype = {
|
|
|
|
/*
|
|
* Constructor
|
|
*/
|
|
initialize: function () {
|
|
|
|
/*
|
|
* Private Interface Variables
|
|
*/
|
|
this._container = $('#dialog_container');
|
|
this._heading = $('#dialog_heading');
|
|
this._message = $('#dialog_message');
|
|
this._cancel_button = $('#dialog_cancel_button');
|
|
this._confirm_button = $('#dialog_confirm_button');
|
|
this._callback = null;
|
|
|
|
// Observe the buttons
|
|
this._cancel_button.bind('click', {
|
|
dialog: this
|
|
}, this.onCancelClicked);
|
|
this._confirm_button.bind('click', {
|
|
dialog: this
|
|
}, this.onConfirmClicked);
|
|
},
|
|
|
|
/*--------------------------------------------
|
|
*
|
|
* E V E N T F U N C T I O N S
|
|
*
|
|
*--------------------------------------------*/
|
|
|
|
executeCallback: function () {
|
|
this._callback();
|
|
dialog.hideDialog();
|
|
},
|
|
|
|
hideDialog: function () {
|
|
$('body.dialog_showing').removeClass('dialog_showing');
|
|
this._container.hide();
|
|
transmission.hideMobileAddressbar();
|
|
transmission.updateButtonStates();
|
|
},
|
|
|
|
isVisible: function () {
|
|
return this._container.is(':visible');
|
|
},
|
|
|
|
onCancelClicked: function (event) {
|
|
event.data.dialog.hideDialog();
|
|
},
|
|
|
|
onConfirmClicked: function (event) {
|
|
event.data.dialog.executeCallback();
|
|
},
|
|
|
|
/*--------------------------------------------
|
|
*
|
|
* I N T E R F A C E F U N C T I O N S
|
|
*
|
|
*--------------------------------------------*/
|
|
|
|
/*
|
|
* Display a confirm dialog
|
|
*/
|
|
confirm: function (dialog_heading, dialog_message, confirm_button_label,
|
|
callback, cancel_button_label) {
|
|
if (!isMobileDevice) {
|
|
$('.dialog_container').hide();
|
|
};
|
|
setTextContent(this._heading[0], dialog_heading);
|
|
setTextContent(this._message[0], dialog_message);
|
|
setTextContent(this._cancel_button[0], cancel_button_label || 'Cancel');
|
|
setTextContent(this._confirm_button[0], confirm_button_label);
|
|
this._confirm_button.show();
|
|
this._callback = callback;
|
|
$('body').addClass('dialog_showing');
|
|
this._container.show();
|
|
transmission.updateButtonStates();
|
|
if (isMobileDevice) {
|
|
transmission.hideMobileAddressbar();
|
|
};
|
|
},
|
|
|
|
/*
|
|
* Display an alert dialog
|
|
*/
|
|
alert: function (dialog_heading, dialog_message, cancel_button_label) {
|
|
if (!isMobileDevice) {
|
|
$('.dialog_container').hide();
|
|
};
|
|
setTextContent(this._heading[0], dialog_heading);
|
|
setTextContent(this._message[0], dialog_message);
|
|
// jquery::hide() doesn't work here in Safari for some odd reason
|
|
this._confirm_button.css('display', 'none');
|
|
setTextContent(this._cancel_button[0], cancel_button_label);
|
|
// Just in case
|
|
$('#upload_container').hide();
|
|
$('#move_container').hide();
|
|
$('body').addClass('dialog_showing');
|
|
transmission.updateButtonStates();
|
|
if (isMobileDevice) {
|
|
transmission.hideMobileAddressbar();
|
|
};
|
|
this._container.show();
|
|
}
|
|
};
|