transmission/web/javascript/dialog.js

150 lines
4.3 KiB
JavaScript
Raw Normal View History

2010-09-05 03:02:02 +00:00
/*
* Copyright © Dave Perrett and Malcolm Jarvis
* This code is licensed under the GPL version 2.
* For more details, see http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Class Dialog
*/
function Dialog(){
this.initialize();
2010-09-05 03:02:02 +00:00
}
Dialog.prototype = {
/*
* Constructor
*/
initialize: function() {
2010-09-05 03:02:02 +00:00
/*
* 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_function = '';
this._callback_data = null;
// Observe the buttons
this._cancel_button.bind('click', {dialog: this}, this.onCancelClicked);
this._confirm_button.bind('click', {dialog: this}, this.onConfirmClicked);
2010-09-05 03:02:02 +00:00
},
/*--------------------------------------------
*
* E V E N T F U N C T I O N S
*
*--------------------------------------------*/
2010-09-05 03:02:02 +00:00
hideDialog: function()
2010-09-05 03:02:02 +00:00
{
$('body.dialog_showing').removeClass('dialog_showing');
if (Safari3) {
$('div#dialog_container div.dialog_window').css('top', '-150px');
setTimeout("dialog._container.hide();",500);
} else {
this._container.hide();
transmission.hideiPhoneAddressbar();
}
transmission.updateButtonStates();
},
onCancelClicked: function(event)
2010-09-05 03:02:02 +00:00
{
event.data.dialog.hideDialog();
2010-09-05 03:02:02 +00:00
},
onConfirmClicked: function(event)
2010-09-05 03:02:02 +00:00
{
var dialog = event.data.dialog;
eval(dialog._callback_function + "(dialog._callback_data)");
dialog.hideDialog();
2010-09-05 03:02:02 +00:00
},
/*--------------------------------------------
*
* I N T E R F A C E F U N C T I O N S
*
*--------------------------------------------*/
2010-09-05 03:02:02 +00:00
/*
* Display a confirm dialog
*/
confirm: function(dialog_heading, dialog_message, confirm_button_label,
callback_function, callback_data, cancel_button_label)
{
2010-09-05 03:02:02 +00:00
if (!iPhone && Safari3) {
$('div#upload_container div.dialog_window').css('top', '-205px');
$('div#prefs_container div.dialog_window').css('top', '-425px');
setTimeout("$('#upload_container').hide();",500);
setTimeout("$('#prefs_container').hide();",500);
} else if (!iPhone) {
$('.dialog_container').hide();
}
setInnerHTML(this._heading[0], dialog_heading);
setInnerHTML(this._message[0], dialog_message);
setInnerHTML(this._cancel_button[0], (cancel_button_label == null) ? 'Cancel' : cancel_button_label);
setInnerHTML(this._confirm_button[0], confirm_button_label);
2010-09-05 03:02:02 +00:00
this._confirm_button.show();
this._callback_function = callback_function;
this._callback_data = callback_data;
$('body').addClass('dialog_showing');
this._container.show();
transmission.updateButtonStates();
if (iPhone) {
transmission.hideiPhoneAddressbar();
} else if (Safari3) {
setTimeout("$('div#dialog_container div.dialog_window').css('top', '0px');",10);
}
},
/*
* Display an alert dialog
*/
alert: function(dialog_heading, dialog_message, cancel_button_label) {
2010-09-05 03:02:02 +00:00
if (!iPhone && Safari3) {
$('div#upload_container div.dialog_window').css('top', '-205px');
$('div#prefs_container div.dialog_window').css('top', '-425px');
setTimeout("$('#upload_container').hide();",500);
setTimeout("$('#prefs_container').hide();",500);
} else if (!iPhone) {
$('.dialog_container').hide();
}
setInnerHTML(this._heading[0], dialog_heading);
setInnerHTML(this._message[0], dialog_message);
2010-09-05 03:02:02 +00:00
// jquery::hide() doesn't work here in Safari for some odd reason
this._confirm_button.css('display', 'none');
setInnerHTML(this._cancel_button[0], cancel_button_label);
2010-09-05 03:02:02 +00:00
// Just in case
if (!iPhone && Safari3) {
$('div#upload_container div.dialog_window').css('top', '-205px');
setTimeout("$('#upload_container').hide();",500);
} else {
$('#upload_container').hide();
}
$('body').addClass('dialog_showing');
transmission.updateButtonStates();
if (iPhone) {
transmission.hideiPhoneAddressbar();
this._container.show();
} else if (Safari3) {
// long pause as we just hid all the dialogs on a timeout - we'll get the error
// scrolling in and immediately disappearing if we're not careful!
//dialogTimeout = null;
this._container.show();
setTimeout("$('div#dialog_container div.dialog_window').css('top', '0px');",500);
} else {
this._container.show();
}
}
}