OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * FileManager constructor. | 6 * FileManager constructor. |
7 * | 7 * |
8 * FileManager objects encapsulate the functionality of the file selector | 8 * FileManager objects encapsulate the functionality of the file selector |
9 * dialogs, as well as the full screen file manager application (though the | 9 * dialogs, as well as the full screen file manager application (though the |
10 * latter is not yet implemented). | 10 * latter is not yet implemented). |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
74 var DOWNLOADS_FAQ_URL = | 74 var DOWNLOADS_FAQ_URL = |
75 'http://support.google.com/chromeos/bin/answer.py?answer=1061547'; | 75 'http://support.google.com/chromeos/bin/answer.py?answer=1061547'; |
76 | 76 |
77 /** | 77 /** |
78 * Location of the FAQ about Google Drive. | 78 * Location of the FAQ about Google Drive. |
79 */ | 79 */ |
80 var GOOGLE_DRIVE_FAQ_URL = | 80 var GOOGLE_DRIVE_FAQ_URL = |
81 'https://support.google.com/chromeos/?p=filemanager_drive'; | 81 'https://support.google.com/chromeos/?p=filemanager_drive'; |
82 | 82 |
83 /** | 83 /** |
84 * Location of the Chromebook information page. | |
85 */ | |
86 var CHROMEBOOK_INFO_URL = 'http://google.com/chromebook'; | |
87 | |
88 /** | |
84 * Location of the page to buy more storage for Google Drive. | 89 * Location of the page to buy more storage for Google Drive. |
85 */ | 90 */ |
86 var GOOGLE_DRIVE_BUY_STORAGE = | 91 var GOOGLE_DRIVE_BUY_STORAGE = |
87 'https://www.google.com/settings/storage'; | 92 'https://www.google.com/settings/storage'; |
88 | 93 |
89 /** | 94 /** |
90 * Location of Google Drive specific help. | 95 * Location of Google Drive specific help. |
91 */ | 96 */ |
92 var GOOGLE_DRIVE_HELP = | 97 var GOOGLE_DRIVE_HELP = |
93 'https://support.google.com/chromeos/?p=filemanager_drivehelp'; | 98 'https://support.google.com/chromeos/?p=filemanager_drivehelp'; |
(...skipping 3930 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4024 }; | 4029 }; |
4025 | 4030 |
4026 FileManager.prototype.showGDataWelcome_ = function(type) { | 4031 FileManager.prototype.showGDataWelcome_ = function(type) { |
4027 if (this.dialogContainer_.getAttribute('gdrive-welcome') != type) { | 4032 if (this.dialogContainer_.getAttribute('gdrive-welcome') != type) { |
4028 this.dialogContainer_.setAttribute('gdrive-welcome', type); | 4033 this.dialogContainer_.setAttribute('gdrive-welcome', type); |
4029 this.requestResize_(200); // Resize only after the animation is done. | 4034 this.requestResize_(200); // Resize only after the animation is done. |
4030 } | 4035 } |
4031 }; | 4036 }; |
4032 | 4037 |
4033 FileManager.prototype.createGDataWelcomeHandler_ = function() { | 4038 FileManager.prototype.createGDataWelcomeHandler_ = function() { |
4039 var board = str('CHROMEOS_RELEASE_BOARD'); | |
4040 var new_welcome = board.match(/^(stumpy|lumpy)/i); | |
4041 | |
4034 var WELCOME_HEADER_COUNTER_KEY = 'gdataWelcomeHeaderCounter'; | 4042 var WELCOME_HEADER_COUNTER_KEY = 'gdataWelcomeHeaderCounter'; |
4035 var WELCOME_HEADER_COUNTER_LIMIT = 5; | 4043 var WELCOME_HEADER_COUNTER_LIMIT = 5; |
4036 | 4044 |
4037 function getHeaderCounter() { | 4045 function getHeaderCounter() { |
4038 return parseInt(localStorage[WELCOME_HEADER_COUNTER_KEY] || '0'); | 4046 return parseInt(localStorage[WELCOME_HEADER_COUNTER_KEY] || '0'); |
4039 } | 4047 } |
4040 | 4048 |
4041 if (getHeaderCounter() >= WELCOME_HEADER_COUNTER_LIMIT) | 4049 if (getHeaderCounter() >= WELCOME_HEADER_COUNTER_LIMIT) |
4042 return null; | 4050 return null; |
4043 | 4051 |
(...skipping 20 matching lines...) Expand all Loading... | |
4064 self.showGDataWelcome_(type); | 4072 self.showGDataWelcome_(type); |
4065 | 4073 |
4066 var container = self.dialogDom_.querySelector('.gdrive-welcome.' + type); | 4074 var container = self.dialogDom_.querySelector('.gdrive-welcome.' + type); |
4067 if (container.firstElementChild) | 4075 if (container.firstElementChild) |
4068 return; // Do not re-create. | 4076 return; // Do not re-create. |
4069 | 4077 |
4070 var wrapper = createDiv('gdrive-welcome-wrapper', container); | 4078 var wrapper = createDiv('gdrive-welcome-wrapper', container); |
4071 createDiv('gdrive-welcome-icon', wrapper); | 4079 createDiv('gdrive-welcome-icon', wrapper); |
4072 | 4080 |
4073 var close = createDiv('cr-dialog-close', wrapper); | 4081 var close = createDiv('cr-dialog-close', wrapper); |
4074 close.addEventListener('click', closeBanner); | 4082 close.addEventListener('click', dismissBanner); |
4075 | 4083 |
4076 var message = createDiv('gdrive-welcome-message', wrapper); | 4084 var message = createDiv('gdrive-welcome-message', wrapper); |
4077 | 4085 |
4078 var title = createDiv('gdrive-welcome-title', message); | 4086 var title = createDiv('gdrive-welcome-title', message); |
4079 title.textContent = str('GDATA_WELCOME_TITLE'); | |
4080 | 4087 |
4081 var text = createDiv('gdrive-welcome-text', message); | 4088 var text = createDiv('gdrive-welcome-text', message); |
4082 text.innerHTML = str(messageId); | 4089 text.innerHTML = str(messageId); |
4083 | 4090 |
4084 var links = createDiv('gdrive-welcome-links', message); | 4091 var links = createDiv('gdrive-welcome-links', message); |
4085 | 4092 |
4086 var more = createDiv('gdrive-welcome-more plain-link', links); | 4093 var more; |
4087 more.textContent = str('GDATA_LEARN_MORE'); | 4094 if (new_welcome) { |
4088 more.addEventListener('click', | 4095 title.textContent = str('GDATA_WELCOME_TITLE_ALTERNATIVE'); |
4089 self.onExternalLinkClick_.bind(self, GOOGLE_DRIVE_FAQ_URL)); | 4096 more = links.ownerDocument.createElement('a'); |
Dmitry Zvorygin
2012/07/25 15:15:46
Why not to use this.document(or self.document, alt
Vladislav Kaznacheev
2012/07/25 16:45:13
Changed to self.document_
On 2012/07/25 15:15:46,
| |
4097 more.className = 'gdata-welcome-button gdata-welcome-start'; | |
4098 more.textContent = str('GDATA_WELCOME_GET_STARTED'); | |
4099 more.addEventListener('click', | |
4100 self.onExternalLinkClick_.bind(self, CHROMEBOOK_INFO_URL)); | |
4101 more.addEventListener('click', hideBanner); | |
4102 } else { | |
4103 title.textContent = str('GDATA_WELCOME_TITLE'); | |
4104 more = links.ownerDocument.createElement('div'); | |
4105 more.className = 'plain-link'; | |
4106 more.textContent = str('GDATA_LEARN_MORE'); | |
4107 more.addEventListener('click', | |
4108 self.onExternalLinkClick_.bind(self, GOOGLE_DRIVE_FAQ_URL)); | |
4109 } | |
4110 links.appendChild(more); | |
4090 | 4111 |
4091 var dismiss = createDiv('gdrive-welcome-dismiss plain-link', links); | 4112 var dismiss; |
4113 if (new_welcome) { | |
4114 dismiss = links.ownerDocument.createElement('a'); | |
4115 dismiss.className = 'gdata-welcome-button'; | |
4116 } else { | |
4117 dismiss = links.ownerDocument.createElement('div'); | |
4118 dismiss.className = 'plain-link'; | |
4119 } | |
4120 dismiss.classList.add('gdrive-welcome-dismiss'); | |
4092 dismiss.textContent = str('GDATA_WELCOME_DISMISS'); | 4121 dismiss.textContent = str('GDATA_WELCOME_DISMISS'); |
4093 dismiss.addEventListener('click', closeBanner); | 4122 dismiss.addEventListener('click', dismissBanner); |
4123 links.appendChild(dismiss); | |
4094 } | 4124 } |
4095 | 4125 |
4096 var previousDirWasOnGData = false; | 4126 var previousDirWasOnGData = false; |
4097 | 4127 |
4098 function maybeShowBanner() { | 4128 function maybeShowBanner() { |
4099 if (!self.isOnGData()) { | 4129 if (!self.isOnGData()) { |
4100 self.showGDataWelcome_('none'); | 4130 self.showGDataWelcome_('none'); |
4101 previousDirWasOnGData = false; | 4131 previousDirWasOnGData = false; |
4102 return; | 4132 return; |
4103 } | 4133 } |
(...skipping 11 matching lines...) Expand all Loading... | |
4115 showBanner('page', 'GDATA_WELCOME_TEXT_LONG'); | 4145 showBanner('page', 'GDATA_WELCOME_TEXT_LONG'); |
4116 }, 2000); | 4146 }, 2000); |
4117 } else if (counter < WELCOME_HEADER_COUNTER_LIMIT) { | 4147 } else if (counter < WELCOME_HEADER_COUNTER_LIMIT) { |
4118 // We do not want to increment the counter when the user navigates | 4148 // We do not want to increment the counter when the user navigates |
4119 // between different directories on GDrive, but we increment the counter | 4149 // between different directories on GDrive, but we increment the counter |
4120 // once anyway to prevent the full page banner from showing. | 4150 // once anyway to prevent the full page banner from showing. |
4121 if (!previousDirWasOnGData || counter == 0) | 4151 if (!previousDirWasOnGData || counter == 0) |
4122 localStorage[WELCOME_HEADER_COUNTER_KEY] = ++counter; | 4152 localStorage[WELCOME_HEADER_COUNTER_KEY] = ++counter; |
4123 showBanner('header', 'GDATA_WELCOME_TEXT_SHORT'); | 4153 showBanner('header', 'GDATA_WELCOME_TEXT_SHORT'); |
4124 } else { | 4154 } else { |
4125 closeBanner(); | 4155 dismissBanner(); |
4126 } | 4156 } |
4127 previousDirWasOnGData = true; | 4157 previousDirWasOnGData = true; |
4128 } | 4158 } |
4129 | 4159 |
4130 function closeBanner() { | 4160 function hideBanner() { |
4131 self.cleanupGDataWelcome_(); | 4161 self.cleanupGDataWelcome_(); |
4132 // Stop showing the welcome banner. | 4162 } |
4163 | |
4164 // Hide the welcome banner and prevent it from showing again. | |
4165 function dismissBanner() { | |
4166 hideBanner(); | |
4133 localStorage[WELCOME_HEADER_COUNTER_KEY] = WELCOME_HEADER_COUNTER_LIMIT; | 4167 localStorage[WELCOME_HEADER_COUNTER_KEY] = WELCOME_HEADER_COUNTER_LIMIT; |
4134 } | 4168 } |
4135 | 4169 |
4136 return maybeShowBanner; | 4170 function checkSpaceAndShowBanner() { |
4171 if (new_welcome && self.isOnGData()) | |
4172 chrome.fileBrowserPrivate.getSizeStats(self.getCurrentDirectoryURL(), | |
4173 function(result) { | |
4174 if (result.totalSizeKB < 100 * 1024 * 1024) | |
Dmitry Zvorygin
2012/07/25 15:15:46
Consider using util.SCALE.
Vladislav Kaznacheev
2012/07/25 16:45:13
I tried and it looks even less readable. Added a c
| |
4175 maybeShowBanner(); | |
4176 else | |
4177 dismissBanner(); | |
4178 }); | |
4179 else | |
4180 maybeShowBanner(); | |
4181 } | |
4182 | |
4183 return checkSpaceAndShowBanner; | |
4137 }; | 4184 }; |
4138 | 4185 |
4139 /** | 4186 /** |
4140 * Listener invoked on gdata menu show event, to update gdata free/total | 4187 * Listener invoked on gdata menu show event, to update gdata free/total |
4141 * space info in opened menu. | 4188 * space info in opened menu. |
4142 * @private | 4189 * @private |
4143 */ | 4190 */ |
4144 FileManager.prototype.onGDataMenuShow_ = function() { | 4191 FileManager.prototype.onGDataMenuShow_ = function() { |
4145 this.updateCommands_(); | 4192 this.updateCommands_(); |
4146 this.gdataSpaceInfoBar_.setAttribute('pending', ''); | 4193 this.gdataSpaceInfoBar_.setAttribute('pending', ''); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4178 this.defaultActionMenuItem_.taskId = taskItem.taskId; | 4225 this.defaultActionMenuItem_.taskId = taskItem.taskId; |
4179 } | 4226 } |
4180 | 4227 |
4181 var defaultActionSeparator = | 4228 var defaultActionSeparator = |
4182 this.dialogDom_.querySelector('#default-action-separator'); | 4229 this.dialogDom_.querySelector('#default-action-separator'); |
4183 | 4230 |
4184 this.defaultActionMenuItem_.hidden = !taskItem; | 4231 this.defaultActionMenuItem_.hidden = !taskItem; |
4185 defaultActionSeparator.hidden = !taskItem; | 4232 defaultActionSeparator.hidden = !taskItem; |
4186 } | 4233 } |
4187 })(); | 4234 })(); |
OLD | NEW |