Add support for feedback

Change-Id: I6de8c0117f79c0be05d3db2fc108f8bf61415783
This commit is contained in:
Paul Westbrook 2013-03-08 16:54:50 -08:00
parent 95bb350f38
commit 5a3d863a43
4 changed files with 69 additions and 28 deletions

View File

@ -309,6 +309,8 @@
android:theme="@style/PhotoViewTheme" >
</activity>
<!-- additional activities -->
<provider
android:authorities="com.android.email2.conversation.provider"
android:label="@string/conversation_content_provider"

21
res/values/constants.xml Normal file
View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2013 Google Inc.
Licensed to The Android Open Source Project.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
<!-- Boolean value indicating whether the feedback is supported. -->
<bool name="feedback_supported">false</bool>
</resources>

View File

@ -1294,4 +1294,7 @@ as <xliff:g id="filename">%s</xliff:g>.</string>
<string name="sent_folder_selection_title">Select server sent items folder for <xliff:g id="account">%s</xliff:g></string>
<string name="create_new_folder">Create folder</string>
<string name="account_waiting_for_folders_msg">Loading folder list&#8230;</string>
<!-- Feedback uri to be used when feedback is enabled -->
<string name="email_feedback_uri" translatable="false"></string>
</resources>

View File

@ -28,6 +28,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.OperationApplicationException;
import android.content.UriMatcher;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.database.Cursor;
import android.database.CursorWrapper;
@ -2313,33 +2314,41 @@ outer:
* Constructs the map of default entries for accounts. These values can be overridden in
* {@link #genQueryAccount(String[], String)}.
*/
private static ProjectionMap getAccountListMap() {
private static ProjectionMap getAccountListMap(Context context) {
if (sAccountListMap == null) {
sAccountListMap = ProjectionMap.builder()
.add(BaseColumns._ID, AccountColumns.ID)
.add(UIProvider.AccountColumns.FOLDER_LIST_URI, uriWithId("uifolders"))
.add(UIProvider.AccountColumns.FULL_FOLDER_LIST_URI, uriWithId("uiallfolders"))
.add(UIProvider.AccountColumns.NAME, AccountColumns.DISPLAY_NAME)
.add(UIProvider.AccountColumns.UNDO_URI,
("'content://" + UIProvider.AUTHORITY + "/uiundo'"))
.add(UIProvider.AccountColumns.URI, uriWithId("uiaccount"))
.add(UIProvider.AccountColumns.SEARCH_URI, uriWithId("uisearch"))
// TODO: Is provider version used?
.add(UIProvider.AccountColumns.PROVIDER_VERSION, "1")
.add(UIProvider.AccountColumns.SYNC_STATUS, "0")
.add(UIProvider.AccountColumns.RECENT_FOLDER_LIST_URI, uriWithId("uirecentfolders"))
.add(UIProvider.AccountColumns.DEFAULT_RECENT_FOLDER_LIST_URI,
uriWithId("uidefaultrecentfolders"))
.add(UIProvider.AccountColumns.SettingsColumns.SIGNATURE, AccountColumns.SIGNATURE)
.add(UIProvider.AccountColumns.SettingsColumns.SNAP_HEADERS,
Integer.toString(UIProvider.SnapHeaderValue.ALWAYS))
.add(UIProvider.AccountColumns.SettingsColumns.REPLY_BEHAVIOR,
Integer.toString(UIProvider.DefaultReplyBehavior.REPLY))
.add(UIProvider.AccountColumns.SettingsColumns.CONFIRM_ARCHIVE, "0")
.add(UIProvider.AccountColumns.SettingsColumns.CONVERSATION_VIEW_MODE,
Integer.toString(UIProvider.ConversationViewMode.UNDEFINED))
.add(UIProvider.AccountColumns.SettingsColumns.VEILED_ADDRESS_PATTERN, null)
.build();
final ProjectionMap.Builder builder = ProjectionMap.builder()
.add(BaseColumns._ID, AccountColumns.ID)
.add(UIProvider.AccountColumns.FOLDER_LIST_URI, uriWithId("uifolders"))
.add(UIProvider.AccountColumns.FULL_FOLDER_LIST_URI, uriWithId("uiallfolders"))
.add(UIProvider.AccountColumns.NAME, AccountColumns.DISPLAY_NAME)
.add(UIProvider.AccountColumns.UNDO_URI,
("'content://" + UIProvider.AUTHORITY + "/uiundo'"))
.add(UIProvider.AccountColumns.URI, uriWithId("uiaccount"))
.add(UIProvider.AccountColumns.SEARCH_URI, uriWithId("uisearch"))
// TODO: Is provider version used?
.add(UIProvider.AccountColumns.PROVIDER_VERSION, "1")
.add(UIProvider.AccountColumns.SYNC_STATUS, "0")
.add(UIProvider.AccountColumns.RECENT_FOLDER_LIST_URI,
uriWithId("uirecentfolders"))
.add(UIProvider.AccountColumns.DEFAULT_RECENT_FOLDER_LIST_URI,
uriWithId("uidefaultrecentfolders"))
.add(UIProvider.AccountColumns.SettingsColumns.SIGNATURE,
AccountColumns.SIGNATURE)
.add(UIProvider.AccountColumns.SettingsColumns.SNAP_HEADERS,
Integer.toString(UIProvider.SnapHeaderValue.ALWAYS))
.add(UIProvider.AccountColumns.SettingsColumns.REPLY_BEHAVIOR,
Integer.toString(UIProvider.DefaultReplyBehavior.REPLY))
.add(UIProvider.AccountColumns.SettingsColumns.CONFIRM_ARCHIVE, "0")
.add(UIProvider.AccountColumns.SettingsColumns.CONVERSATION_VIEW_MODE,
Integer.toString(UIProvider.ConversationViewMode.UNDEFINED))
.add(UIProvider.AccountColumns.SettingsColumns.VEILED_ADDRESS_PATTERN, null);
final String feedbackUri = context.getString(R.string.email_feedback_uri);
if (!TextUtils.isEmpty(feedbackUri)) {
builder.add(UIProvider.AccountColumns.SEND_FEEDBACK_INTENT_URI, feedbackUri);
}
sAccountListMap = builder.build();
}
return sAccountListMap;
}
@ -2770,7 +2779,7 @@ outer:
}
private int getCapabilities(Context context, long accountId) {
EmailServiceProxy service = EmailServiceUtils.getServiceForAccount(context,
final EmailServiceProxy service = EmailServiceUtils.getServiceForAccount(context,
mServiceCallback, accountId);
int capabilities = 0;
Account acct = null;
@ -2789,6 +2798,12 @@ outer:
// Nothing to do
Log.w(TAG, "getCapabilities() for " + acct.mDisplayName + ": RemoteException");
}
// If the configuration states that feedback is supported, add that capability
final Resources res = context.getResources();
if (res.getBoolean(R.bool.feedback_supported)) {
capabilities |= UIProvider.AccountCapabilities.SEND_FEEDBACK;
}
return capabilities;
}
@ -2896,7 +2911,7 @@ outer:
}
}
}
final StringBuilder sb = genSelect(getAccountListMap(), uiProjection, values);
final StringBuilder sb = genSelect(getAccountListMap(getContext()), uiProjection, values);
sb.append(" FROM " + Account.TABLE_NAME + " WHERE " + AccountColumns.ID + "=?");
return sb.toString();
}