replace ABS with AppCompat

// FREEBIE
master
Jake McGinty 2014-06-28 20:40:57 -07:00
parent ff2ac8a66e
commit 7df49811b7
63 changed files with 499 additions and 511 deletions

View File

@ -114,12 +114,12 @@
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
<activity android:name=".DatabaseMigrationActivity"
android:theme="@style/NoAnimation.Theme.Sherlock.Light.DarkActionBar"
android:theme="@style/NoAnimation.Theme.AppCompat.Light.DarkActionBar"
android:launchMode="singleTask"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
<activity android:name=".DatabaseUpgradeActivity"
android:theme="@style/NoAnimation.Theme.Sherlock.Light.DarkActionBar"
android:theme="@style/NoAnimation.Theme.AppCompat.Light.DarkActionBar"
android:launchMode="singleTask"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
@ -194,7 +194,6 @@
<activity android:name=".MediaPreviewActivity"
android:label="@string/AndroidManifest__media_preview"
android:theme="@style/TextSecure.DarkTheme"
android:windowSoftInputMode="stateHidden"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>

View File

@ -18,7 +18,7 @@ repositories {
url "https://repo1.maven.org/maven2"
}
maven {
url "https://raw.github.com/whispersystems/maven/master/gcm-client/releases/"
url "https://raw.github.com/whispersystems/maven/master/preferencefragment/releases/"
}
maven {
url "https://raw.github.com/whispersystems/maven/master/gson/releases/"
@ -29,14 +29,16 @@ repositories {
}
dependencies {
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
compile 'com.android.support:support-v4:20.0.0'
compile 'se.emilsjolander:stickylistheaders:2.2.0'
compile 'com.google.android.gms:play-services:5.0.89'
compile 'com.google.android.gms:play-services:6.1.71'
compile 'com.astuetz:pagerslidingtabstrip:1.0.1'
compile 'org.w3c:smil:1.0.0'
compile 'org.apache.httpcomponents:httpclient-android:4.3.5'
compile 'com.github.chrisbanes.photoview:library:1.2.3'
compile 'com.android.support:appcompat-v7:21.0.0'
compile ('com.android.support:support-v4-preferencefragment:1.0.0@aar'){
exclude module: 'support-v4'
}
androidTestCompile 'com.squareup:fest-android:1.0.8'
androidTestCompile 'com.google.dexmaker:dexmaker:1.1'
@ -48,29 +50,30 @@ dependencies {
dependencyVerification {
verify = [
'com.actionbarsherlock:actionbarsherlock:5ab04d74101f70024b222e3ff9c87bee151ec43331b4a2134b6cc08cf8565819',
'com.android.support:support-v4:81f2b1c2c94efd5a4ec7fcd97b6cdcd00e87a933905c5c86103c7319eb024572',
'se.emilsjolander:stickylistheaders:89146b46c96fea0e40200474a2625cda10fe94891e4128f53cdb42375091b9b6',
'com.google.android.gms:play-services:38f326e525830f1d70f60f594ceafcbdf5b312287ddbecd338fd1ed7958a4b1e',
'com.google.android.gms:play-services:32e7d1834a1cf8fa4b17e8d359db580c286e26c1eefbf84fdb9996eac8d74919',
'com.astuetz:pagerslidingtabstrip:f1641396732c7132a7abb837e482e5ee2b0ebb8d10813fc52bbaec2c15c184c2',
'org.w3c:smil:085dc40f2bb249651578bfa07499fd08b16ad0886dbe2c4078586a408da62f9b',
'org.apache.httpcomponents:httpclient-android:6f56466a9bd0d42934b90bfbfe9977a8b654c058bf44a12bdc2877c4e1f033f1',
'com.android.support:support-annotations:1aa96ef0cc4a445bfc2f93ccf762305bc57fa107b12afe9d11f3863ae8a11036',
'com.android.support:appcompat-v7:45e999dda55fe81d9cc1c7342b7b70480ff3f307baa8da0df767f92fc5c52cd1',
'com.android.support:support-v4-preferencefragment:5470f5872514a6226fa1fc6f4e000991f38805691c534cf0bd2778911fc773ad',
'com.google.protobuf:protobuf-java:e0c1c64575c005601725e7c6a02cebf9e1285e888f756b2a1d73ffa8d725cc74',
'com.madgag:sc-light-jdk15on:931f39d351429fb96c2f749e7ecb1a256a8ebbf5edca7995c9cc085b94d1841d',
'com.googlecode.libphonenumber:libphonenumber:eba17eae81dd622ea89a00a3a8c025b2f25d342e0d9644c5b62e16f15687c3ab',
'org.whispersystems:gson:08f4f7498455d1539c9233e5aac18e9b1805815ef29221572996508eb512fe51',
'com.github.chrisbanes.photoview:library:8b5344e206f125e7ba9d684008f36c4992d03853c57e5814125f88496126e3cc'
'com.github.chrisbanes.photoview:library:8b5344e206f125e7ba9d684008f36c4992d03853c57e5814125f88496126e3cc',
'com.android.support:support-v4:199ef7bb169386c80b4836354df6747ce2ae3d24434db923c22439e47106a1e2',
'com.android.support:support-annotations:e9e817959d1b846349e93b796537bdaef84aef2c67d8b8b2acc31c6ef540d559',
]
}
android {
compileSdkVersion 19
buildToolsVersion '19.1.0'
compileSdkVersion 21
buildToolsVersion '21.0.2'
defaultConfig {
minSdkVersion 9
targetSdkVersion 19
targetSdkVersion 21
}
compileOptions {

View File

@ -2,7 +2,8 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:background="@color/gray95">
<ImageView android:id="@+id/image"
android:layout_width="match_parent"

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/contact_selection__menu_finished"
android:id="@+id/menu_selection_finished"
android:icon="?menu_accept_icon"
android:showAsAction="ifRoom"
app:showAsAction="ifRoom"
/>
</menu>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/conversation_callable__menu_call"
android:id="@+id/menu_call"
android:icon="?menu_call_icon"
android:showAsAction="ifRoom" />
app:showAsAction="ifRoom" />
</menu>

View File

@ -1,33 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/conversation_context__menu_message_details"
android:id="@+id/menu_context_details"
android:icon="?menu_info_icon"
android:showAsAction="always" />
app:showAsAction="always" />
<item android:title="@string/conversation_context__menu_delete_message"
android:id="@+id/menu_context_delete_message"
android:icon="?menu_trash_icon"
android:showAsAction="always" />
app:showAsAction="always" />
<item android:title="@string/conversation_context__menu_copy_text"
android:id="@+id/menu_context_copy"
android:icon="?menu_copy_icon"
android:showAsAction="always" />
app:showAsAction="always" />
<item android:title="@string/conversation_context__menu_forward_message"
android:id="@+id/menu_context_forward"
android:icon="?menu_forward_icon"
android:showAsAction="ifRoom" />
app:showAsAction="ifRoom" />
<item android:title="@string/conversation_context__menu_resend_message"
android:id="@+id/menu_context_resend"
android:visible="false"
android:showAsAction="never" />
app:showAsAction="never" />
<item android:title="@string/conversation_context_image__save_attachment"
android:id="@+id/menu_context_save_attachment"
android:visible="false"
android:icon="?menu_save_icon"
android:showAsAction="always" />
app:showAsAction="always" />
</menu>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/convesation_group_options__recipients_list"
android:id="@+id/menu_group_recipients"
android:icon="?menu_group_icon"
android:showAsAction="ifRoom" />
app:showAsAction="ifRoom" />
</menu>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="Security"
android:id="@+id/menu_security"
android:icon="?menu_unlock_icon"
android:showAsAction="ifRoom">
app:showAsAction="ifRoom">
<menu>
<item android:title="@string/conversation_insecure__menu_start_secure_session"
android:id="@+id/menu_start_secure_session" />

View File

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/conversation_list__menu_search"
android:id="@+id/menu_search"
android:icon="?attr/menu_search_icon"
android:actionViewClass="com.actionbarsherlock.widget.SearchView"
android:showAsAction="ifRoom|collapseActionView" />
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom|collapseActionView" />
</menu>

View File

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/conversation_list_batch__menu_delete_selected"
android:id="@+id/menu_delete_selected"
android:icon="?menu_trash_icon"
android:showAsAction="ifRoom" />
app:showAsAction="ifRoom" />
<item android:title="@string/conversation_list_batch__menu_select_all"
android:id="@+id/menu_select_all"

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/fake_menu_item"
android:actionLayout="@layout/empty2"
android:showAsAction="ifRoom" />
app:actionLayout="@layout/empty2"
app:showAsAction="ifRoom" />
</menu>

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/conversation_group_options__delivery"
android:id="@+id/menu_group_delivery"
android:icon="?menu_split_icon"
android:showAsAction="ifRoom" >
app:showAsAction="ifRoom" >
<menu>
<group android:id="@+id/distribution_group"

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/menu_edit_group"
android:title="@string/conversation__menu_update_group"
android:showAsAction="collapseActionView" />
app:showAsAction="collapseActionView" />
<item android:id="@+id/menu_leave"
android:title="@string/conversation__menu_leave_group"
android:showAsAction="collapseActionView"/>
app:showAsAction="collapseActionView"/>
</menu>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/conversation_secure_verified__menu_security"
android:id="@+id/menu_security"
android:icon="?menu_lock_icon"
android:showAsAction="ifRoom">
app:showAsAction="ifRoom">
<menu>
<item android:title="@string/conversation_secure_verified__menu_verify_identity"
android:id="@+id/menu_verify_identity"/>

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/GroupCreateActivity_menu_create_title"
android:id="@+id/menu_create_group"
android:icon="?menu_accept_icon"
android:showAsAction="always|withText"/>
app:showAsAction="always|withText"/>
</menu>

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/key_scanning__menu_compare"
android:id="@+id/menu_barcode"
android:icon="@drawable/ic_menu_barcode"
android:showAsAction="ifRoom">
app:showAsAction="ifRoom">
<menu>
<item android:title="@string/key_scanning__menu_scan_to_compare"

View File

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/save"
android:title="@string/media_preview__save_title"
android:icon="@drawable/ic_action_save_holo_dark"
android:showAsAction="always"/>
app:showAsAction="always"/>
</menu>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/push_directory__menu_refresh"
android:id="@+id/menu_refresh_directory"
android:icon="?menu_refresh_directory"
android:showAsAction="ifRoom"
app:showAsAction="ifRoom"
/>
</menu>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/text_secure_normal__menu_new_message"
android:id="@+id/menu_new_message"
android:icon="?attr/menu_new_conversation_icon"
android:showAsAction="always" />
app:showAsAction="always" />
</menu>

View File

@ -1,9 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/text_secure_normal__menu_new_message"
android:id="@+id/menu_new_message"
android:icon="?attr/menu_new_conversation_icon"
android:showAsAction="always" />
app:showAsAction="always" />
<item android:title="@string/text_secure_normal__menu_new_group"
android:id="@+id/menu_new_group"

View File

@ -3,6 +3,11 @@
<color name="white">#ffffffff</color>
<color name="black">#ff000000</color>
<color name="gray5">#ffeeeeee</color>
<color name="gray10">#ffdddddd</color>
<color name="gray95">#ff111111</color>
<color name="gray95_transparent50">#7F111111</color>
<color name="conversation_list_item_background_read_light">#fff3f3f3</color>
<color name="conversation_list_item_background_unread_light">#ffffffff</color>

View File

@ -1,59 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="NoAnimation.Theme.BlackScreen" parent="@style/Theme.Sherlock.NoActionBar">
<style name="Theme.AppCompat.NoActionBar" parent="@style/Theme.AppCompat">
<item name="android:windowNoTitle">true</item>
</style>
<style name="NoAnimation.Theme.BlackScreen" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowBackground">@android:color/black</item>
</style>
<style name="NoAnimation.Theme.Sherlock.Light.DarkActionBar" parent="@style/Theme.Sherlock.Light.DarkActionBar">
<style name="NoAnimation.Theme.AppCompat.Light.DarkActionBar" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowAnimationStyle">@null</item>
</style>
<!-- the theme applied to the application or activity -->
<style name="TextSecure.Dark"
parent="@style/Theme.Sherlock">
<item name="android:actionBarStyle">@style/TextSecure.DarkActionBar</item>
<item name="actionBarStyle">@style/TextSecure.DarkActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="TextSecure.DarkActionBar"
parent="@style/Widget.Sherlock.ActionBar">
<item name="android:background">#ff111111</item>
<item name="background">#ff111111</item>
<item name="android:icon">@drawable/actionbar_icon_holo_dark</item>
<item name="icon">@drawable/actionbar_icon_holo_dark</item>
parent="@style/Widget.AppCompat.ActionBar">
<item name="background">@color/gray95</item>
<item name="elevation">1dp</item>
</style>
<style name="TextSecure.ClearTitleTextStyle" parent="TextAppearance.Sherlock.Widget.ActionBar.Title">
<style name="TextSecure.LightActionBar"
parent="@style/Widget.AppCompat.ActionBar">
<item name="background">@color/gray5</item>
<item name="elevation">1dp</item>
</style>
<style name="TextSecure.ClearTitleTextStyle" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@android:color/transparent</item>
</style>
<style name="TextSecure.TitleTextStyle" parent="TextAppearance.Sherlock.Widget.ActionBar.Title">
<style name="TextSecure.TitleTextStyle" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">#ff555555</item>
<item name="android:textSize">19sp</item>
</style>
<style name="TextSecure.SubtitleTextStyle" parent="TextAppearance.Sherlock.Widget.ActionBar.Subtitle">
<style name="TextSecure.SubtitleTextStyle" parent="TextAppearance.AppCompat.Widget.ActionBar.Subtitle">
<item name="android:textColor">#ff555555</item>
</style>
<style name="TextSecure.LightActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid">
<item name="android:titleTextStyle">@style/TextSecure.TitleTextStyle</item>
<item name="titleTextStyle">@style/TextSecure.TitleTextStyle</item>
<item name="android:subtitleTextStyle">@style/TextSecure.SubtitleTextStyle</item>
<item name="subtitleTextStyle">@style/TextSecure.SubtitleTextStyle</item>
<item name="android:icon">@drawable/actionbar_icon_holo_light</item>
<item name="icon">@drawable/actionbar_icon_holo_light</item>
</style>
<style name="TextSecure.IntroActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid">
<item name="android:titleTextStyle">@style/TextSecure.ClearTitleTextStyle</item>
<item name="titleTextStyle">@style/TextSecure.ClearTitleTextStyle</item>
<item name="android:background">@drawable/background_pattern_repeat</item>
<style name="TextSecure.IntroActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid">
<item name="background">@drawable/background_pattern_repeat</item>
<item name="android:icon">@android:color/transparent</item>
<item name="icon">@android:color/transparent</item>
<item name="elevation">0dp</item>
</style>
<style name="transparent_progress">
@ -68,7 +56,6 @@
<item name="android:background">@android:color/transparent</item>
</style>
<style name="NotificationText">
<item name="android:textColor">?android:attr/textColorPrimary</item>
</style>

View File

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="TextSecure.IntroTheme" parent="@style/Theme.Sherlock.Light">
<item name="android:actionBarStyle">@style/TextSecure.IntroActionBar</item>
<style name="TextSecure.IntroTheme" parent="@style/Theme.AppCompat.Light">
<item name="colorPrimary">@android:color/transparent</item>
<item name="actionBarStyle">@style/TextSecure.IntroActionBar</item>
<item name="android:windowContentOverlay">@null</item>
<item name="windowContentOverlay">@null</item>
</style>
<style name="TextSecure.LightTheme" parent="@style/Theme.Sherlock.Light">
<item name="android:actionBarStyle">@style/TextSecure.LightActionBar</item>
<style name="TextSecure.LightTheme" parent="@style/Theme.AppCompat.Light">
<item name="actionBarStyle">@style/TextSecure.LightActionBar</item>
<item name="android:windowContentOverlay">@null</item>
<item name="windowContentOverlay">@null</item>
<item name="colorPrimary">@color/gray5</item>
<item name="colorPrimaryDark">@color/gray95</item>
<item name="colorAccent">#ff259b24</item>
<item name="conversation_list_item_background_read">@drawable/conversation_list_item_background_read_light</item>
<item name="conversation_list_item_background_unread">@drawable/conversation_list_item_background_unread_light</item>
<item name="conversation_list_item_background_selected">@drawable/list_selected_holo_light</item>
@ -83,7 +83,11 @@
<item name="reminder_header_background">#ff5a8800</item>
</style>
<style name="TextSecure.DarkTheme" parent="@style/TextSecure.Dark">
<style name="TextSecure.DarkTheme" parent="@style/Theme.AppCompat">
<item name="actionBarStyle">@style/TextSecure.DarkActionBar</item>
<item name="colorPrimary">@color/gray95</item>
<item name="colorPrimaryDark">@color/gray95</item>
<item name="colorAccent">#ff259b24</item>
<item name="conversation_list_item_background_read">@drawable/conversation_list_item_background_read_dark</item>
<item name="conversation_list_item_background_unread">@drawable/conversation_list_item_background_unread_dark</item>
<item name="conversation_list_item_background_selected">@drawable/list_selected_holo_dark</item>
@ -155,16 +159,6 @@
<item name="reminder_header_background">#ff385400</item>
</style>
<style name="TextSecure.LightTheme.ConversationActivity"
parent="@style/TextSecure.LightTheme">
<item name="android:windowBackground">@null</item>
</style>
<style name="TextSecure.DarkTheme.ConversationActivity"
parent="@style/TextSecure.DarkTheme">
<item name="android:windowBackground">@null</item>
</style>
<style name="TextSecure.Light.Dialog"
parent="@android:style/Theme.Dialog"
tools:ignore="NewApi">

View File

@ -0,0 +1,36 @@
package org.thoughtcrime.securesms;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.HeaderViewListAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
public abstract class ActionBarListActivity extends ActionBarActivity {
private ListView mListView;
protected ListView getListView() {
if (mListView == null) {
mListView = (ListView) findViewById(android.R.id.list);
}
return mListView;
}
protected void setListAdapter(ListAdapter adapter) {
getListView().setAdapter(adapter);
}
protected ListAdapter getListAdapter() {
ListAdapter adapter = getListView().getAdapter();
if (adapter instanceof HeaderViewListAdapter) {
return ((HeaderViewListAdapter)adapter).getWrappedAdapter();
} else {
return adapter;
}
}
protected void onListItemClick(ListView lv, View v, int position, long id) {
getListView().getOnItemClickListener().onItemClick(lv, v, position, id);
}
}

View File

@ -40,11 +40,15 @@ import android.preference.RingtonePreference;
import android.provider.ContactsContract;
import android.provider.Settings;
import android.provider.Telephony;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.preference.PreferenceFragment;
import android.text.TextUtils;
import android.util.Log;
import android.view.MenuItem;
import android.widget.Toast;
import com.actionbarsherlock.view.MenuItem;
import com.google.android.gms.gcm.GoogleCloudMessaging;
import org.thoughtcrime.securesms.components.OutgoingSmsPreference;
@ -73,7 +77,7 @@ import java.io.IOException;
*
*/
public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPreferenceActivity
public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarActivity
implements SharedPreferences.OnSharedPreferenceChangeListener
{
private static final String TAG = "Preferences";
@ -99,6 +103,55 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Fragment fragment = new ApplicationPreferenceFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(android.R.id.content, fragment);
fragmentTransaction.commit();
}
@Override
public void onResume() {
super.onResume();
dynamicTheme.onResume(this);
dynamicLanguage.onResume(this);
}
@Override
public void onDestroy() {
MemoryCleaner.clean((MasterSecret) getIntent().getParcelableExtra("master_secret"));
super.onDestroy();
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals(TextSecurePreferences.THEME_PREF)) {
dynamicTheme.onResume(this);
} else if (key.equals(TextSecurePreferences.LANGUAGE_PREF)) {
dynamicLanguage.onResume(this);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent intent = new Intent(this, ConversationListActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
return true;
}
return false;
}
public static class ApplicationPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.preferences);
initializeIdentitySelection();
@ -134,14 +187,12 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
@Override
public void onStart() {
super.onStart();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener((ApplicationPreferencesActivity)getActivity());
}
@Override
public void onResume() {
super.onResume();
dynamicTheme.onResume(this);
dynamicLanguage.onResume(this);
initializePlatformSpecificOptions();
}
@ -149,13 +200,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
@Override
public void onStop() {
super.onStop();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onDestroy() {
MemoryCleaner.clean((MasterSecret) getIntent().getParcelableExtra("master_secret"));
super.onDestroy();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener((ApplicationPreferencesActivity)getActivity());
}
@Override
@ -167,25 +212,11 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
if (resultCode == Activity.RESULT_OK) {
switch (reqCode) {
case PICK_IDENTITY_CONTACT: handleIdentitySelection(data); break;
case ENABLE_PASSPHRASE_ACTIVITY: finish(); break;
case ENABLE_PASSPHRASE_ACTIVITY: getActivity().finish(); break;
}
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent intent = new Intent(this, ConversationListActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
return true;
}
return false;
}
private void initializePlatformSpecificOptions() {
PreferenceGroup pushSmsCategory = (PreferenceGroup) findPreference("push_sms_category");
PreferenceGroup advancedCategory = (PreferenceGroup) findPreference("advanced_category");
@ -198,13 +229,13 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
if (allSmsPreference != null) pushSmsCategory.removePreference(allSmsPreference);
if (allMmsPreference != null) pushSmsCategory.removePreference(allMmsPreference);
if (Util.isDefaultSmsProvider(this)) {
if (Util.isDefaultSmsProvider(getActivity())) {
defaultPreference.setIntent(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
defaultPreference.setTitle(getString(R.string.ApplicationPreferencesActivity_sms_enabled));
defaultPreference.setSummary(getString(R.string.ApplicationPreferencesActivity_touch_to_change_your_default_sms_app));
} else {
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, getPackageName());
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, getActivity().getPackageName());
defaultPreference.setIntent(intent);
defaultPreference.setTitle(getString(R.string.ApplicationPreferencesActivity_sms_disabled));
defaultPreference.setSummary(getString(R.string.ApplicationPreferencesActivity_touch_to_make_textsecure_your_default_sms_app));
@ -239,12 +270,12 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
private void initializePushMessagingToggle() {
CheckBoxPreference preference = (CheckBoxPreference)this.findPreference(PUSH_MESSAGING_PREF);
preference.setChecked(TextSecurePreferences.isPushRegistered(this));
preference.setChecked(TextSecurePreferences.isPushRegistered(getActivity()));
preference.setOnPreferenceChangeListener(new PushMessagingClickListener());
}
private void initializeIdentitySelection() {
ContactIdentityManager identity = ContactIdentityManager.getInstance(this);
ContactIdentityManager identity = ContactIdentityManager.getInstance(getActivity());
if (identity.isSelfIdentityAutoDetected()) {
Preference preference = this.findPreference(DISPLAY_CATEGORY_PREF);
@ -253,7 +284,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
Uri contactUri = identity.getSelfIdentityUri();
if (contactUri != null) {
String contactName = ContactAccessor.getInstance().getNameFromContact(this, contactUri);
String contactName = ContactAccessor.getInstance().getNameFromContact(getActivity(), contactUri);
this.findPreference(TextSecurePreferences.IDENTITY_PREF)
.setSummary(String.format(getString(R.string.ApplicationPreferencesActivity_currently_s),
contactName));
@ -271,7 +302,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
private void initializeRingtoneSummary(RingtonePreference pref) {
RingtoneSummaryListener listener =
(RingtoneSummaryListener) pref.getOnPreferenceChangeListener();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
listener.onPreferenceChange(pref, sharedPreferences.getString(pref.getKey(), ""));
}
@ -284,20 +315,11 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
Uri contactUri = data.getData();
if (contactUri != null) {
TextSecurePreferences.setIdentityContactUri(this, contactUri.toString());
TextSecurePreferences.setIdentityContactUri(getActivity(), contactUri.toString());
initializeIdentitySelection();
}
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals(TextSecurePreferences.THEME_PREF)) {
dynamicTheme.onResume(this);
} else if (key.equals(TextSecurePreferences.LANGUAGE_PREF)) {
dynamicLanguage.onResume(this);
}
}
private class PushMessagingClickListener implements Preference.OnPreferenceChangeListener {
private static final int SUCCESS = 0;
@ -313,7 +335,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
@Override
protected void onPreExecute() {
dialog = ProgressDialog.show(ApplicationPreferencesActivity.this,
dialog = ProgressDialog.show(getActivity(),
getString(R.string.ApplicationPreferencesActivity_unregistering),
getString(R.string.ApplicationPreferencesActivity_unregistering_for_data_based_communication),
true, false);
@ -326,13 +348,13 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
switch (result) {
case NETWORK_ERROR:
Toast.makeText(ApplicationPreferencesActivity.this,
Toast.makeText(getActivity(),
getString(R.string.ApplicationPreferencesActivity_error_connecting_to_server),
Toast.LENGTH_LONG).show();
break;
case SUCCESS:
((CheckBoxPreference)preference).setChecked(false);
TextSecurePreferences.setPushRegistered(ApplicationPreferencesActivity.this, false);
TextSecurePreferences.setPushRegistered(getActivity(), false);
break;
}
}
@ -340,7 +362,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
@Override
protected Integer doInBackground(Void... params) {
try {
Context context = ApplicationPreferencesActivity.this;
Context context = getActivity();
PushServiceSocket socket = PushServiceSocketFactory.create(context);
socket.unregisterGcmId();
@ -360,8 +382,8 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
@Override
public boolean onPreferenceChange(final Preference preference, Object newValue) {
if (((CheckBoxPreference)preference).isChecked()) {
AlertDialog.Builder builder = new AlertDialog.Builder(ApplicationPreferencesActivity.this);
builder.setIcon(Dialogs.resolveIcon(ApplicationPreferencesActivity.this, R.attr.dialog_info_icon));
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setIcon(Dialogs.resolveIcon(getActivity(), R.attr.dialog_info_icon));
builder.setTitle(getString(R.string.ApplicationPreferencesActivity_disable_push_messages));
builder.setMessage(getString(R.string.ApplicationPreferencesActivity_this_will_disable_push_messages));
builder.setNegativeButton(android.R.string.cancel, null);
@ -373,8 +395,8 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
});
builder.show();
} else {
Intent intent = new Intent(ApplicationPreferencesActivity.this, RegistrationActivity.class);
intent.putExtra("master_secret", getIntent().getParcelableExtra("master_secret"));
Intent intent = new Intent(getActivity(), RegistrationActivity.class);
intent.putExtra("master_secret", getActivity().getIntent().getParcelableExtra("master_secret"));
startActivity(intent);
}
@ -396,10 +418,10 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
private class ChangePassphraseClickListener implements Preference.OnPreferenceClickListener {
@Override
public boolean onPreferenceClick(Preference preference) {
if (MasterSecretUtil.isPassphraseInitialized(ApplicationPreferencesActivity.this)) {
startActivity(new Intent(ApplicationPreferencesActivity.this, PassphraseChangeActivity.class));
if (MasterSecretUtil.isPassphraseInitialized(getActivity())) {
startActivity(new Intent(getActivity(), PassphraseChangeActivity.class));
} else {
Toast.makeText(ApplicationPreferencesActivity.this,
Toast.makeText(getActivity(),
R.string.ApplicationPreferenceActivity_you_havent_set_a_passphrase_yet,
Toast.LENGTH_LONG).show();
}
@ -411,8 +433,8 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
private class TrimNowClickListener implements Preference.OnPreferenceClickListener {
@Override
public boolean onPreferenceClick(Preference preference) {
final int threadLengthLimit = TextSecurePreferences.getThreadTrimLength(ApplicationPreferencesActivity.this);
AlertDialog.Builder builder = new AlertDialog.Builder(ApplicationPreferencesActivity.this);
final int threadLengthLimit = TextSecurePreferences.getThreadTrimLength(getActivity());
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.ApplicationPreferencesActivity_delete_all_old_messages_now);
builder.setMessage(String.format(getString(R.string.ApplicationPreferencesActivity_are_you_sure_you_would_like_to_immediately_trim_all_conversation_threads_to_the_s_most_recent_messages),
threadLengthLimit));
@ -420,7 +442,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Trimmer.trimAllThreads(ApplicationPreferencesActivity.this, threadLengthLimit);
Trimmer.trimAllThreads(getActivity(), threadLengthLimit);
}
});
@ -436,31 +458,31 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
@Override
public boolean onPreferenceChange(final Preference preference, Object newValue) {
if (!((CheckBoxPreference)preference).isChecked()) {
AlertDialog.Builder builder = new AlertDialog.Builder(ApplicationPreferencesActivity.this);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.ApplicationPreferencesActivity_disable_storage_encryption);
builder.setMessage(R.string.ApplicationPreferencesActivity_warning_this_will_disable_storage_encryption_for_all_messages);
builder.setIcon(Dialogs.resolveIcon(ApplicationPreferencesActivity.this, R.attr.dialog_alert_icon));
builder.setIcon(Dialogs.resolveIcon(getActivity(), R.attr.dialog_alert_icon));
builder.setPositiveButton(R.string.ApplicationPreferencesActivity_disable, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
MasterSecret masterSecret = getIntent().getParcelableExtra("master_secret");
MasterSecretUtil.changeMasterSecretPassphrase(ApplicationPreferencesActivity.this,
MasterSecret masterSecret = getActivity().getIntent().getParcelableExtra("master_secret");
MasterSecretUtil.changeMasterSecretPassphrase(getActivity(),
masterSecret,
MasterSecretUtil.UNENCRYPTED_PASSPHRASE);
TextSecurePreferences.setPasswordDisabled(ApplicationPreferencesActivity.this, true);
TextSecurePreferences.setPasswordDisabled(getActivity(), true);
((CheckBoxPreference)preference).setChecked(true);
Intent intent = new Intent(ApplicationPreferencesActivity.this, KeyCachingService.class);
Intent intent = new Intent(getActivity(), KeyCachingService.class);
intent.setAction(KeyCachingService.DISABLE_ACTION);
startService(intent);
getActivity().startService(intent);
}
});
builder.setNegativeButton(android.R.string.cancel, null);
builder.show();
} else {
Intent intent = new Intent(ApplicationPreferencesActivity.this,
Intent intent = new Intent(getActivity(),
PassphraseChangeActivity.class);
startActivityForResult(intent, ENABLE_PASSPHRASE_ACTIVITY);
}
@ -504,7 +526,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
@Override
public boolean onPreferenceClick(Preference preference) {
startActivity(new Intent(ApplicationPreferencesActivity.this, MmsPreferencesActivity.class));
startActivity(new Intent(getActivity(), MmsPreferencesActivity.class));
return true;
}
}
@ -534,10 +556,10 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
if (TextUtils.isEmpty(value)) {
preference.setSummary(R.string.preferences__default);
} else {
Ringtone tone = RingtoneManager.getRingtone(ApplicationPreferencesActivity.this,
Ringtone tone = RingtoneManager.getRingtone(getActivity(),
Uri.parse(value));
if (tone != null) {
preference.setSummary(tone.getTitle(ApplicationPreferencesActivity.this));
preference.setSummary(tone.getTitle(getActivity()));
}
}
@ -548,7 +570,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
private class SubmitDebugLogListener implements Preference.OnPreferenceClickListener {
@Override
public boolean onPreferenceClick(Preference preference) {
final Intent intent = new Intent(ApplicationPreferencesActivity.this, LogSubmitActivity.class);
final Intent intent = new Intent(getActivity(), LogSubmitActivity.class);
startActivity(intent);
return true;
}
@ -566,9 +588,9 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
private String buildOutgoingSmsDescription() {
final StringBuilder builder = new StringBuilder();
final boolean dataFallback = TextSecurePreferences.isFallbackSmsAllowed(this);
final boolean dataFallbackAsk = TextSecurePreferences.isFallbackSmsAskRequired(this);
final boolean nonData = TextSecurePreferences.isDirectSmsAllowed(this);
final boolean dataFallback = TextSecurePreferences.isFallbackSmsAllowed(getActivity());
final boolean dataFallbackAsk = TextSecurePreferences.isFallbackSmsAskRequired(getActivity());
final boolean nonData = TextSecurePreferences.isDirectSmsAllowed(getActivity());
if (dataFallback) {
builder.append(getString(R.string.preferences__sms_outgoing_push_users));
@ -593,8 +615,8 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
if (preference!=null)
if (preference instanceof PreferenceScreen)
if (((PreferenceScreen)preference).getDialog()!=null)
((PreferenceScreen)preference).getDialog().getWindow().getDecorView().setBackgroundDrawable(this.getWindow().getDecorView().getBackground().getConstantState().newDrawable());
((PreferenceScreen)preference).getDialog().getWindow().getDecorView().setBackgroundDrawable(getActivity().getWindow().getDecorView().getBackground().getConstantState().newDrawable());
return false;
}
}
}

View File

@ -22,13 +22,12 @@ import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.ActionBar.TabListener;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBar.Tab;
import android.support.v7.app.ActionBar.TabListener;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import org.thoughtcrime.securesms.util.DynamicTheme;
@ -45,7 +44,7 @@ import static org.thoughtcrime.securesms.contacts.ContactAccessor.ContactData;
* @author Moxie Marlinspike
*
*/
public class ContactSelectionActivity extends PassphraseRequiredSherlockFragmentActivity {
public class ContactSelectionActivity extends PassphraseRequiredActionBarActivity {
private final DynamicTheme dynamicTheme = new DynamicTheme();
@ -78,7 +77,7 @@ public class ContactSelectionActivity extends PassphraseRequiredSherlockFragment
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = this.getSupportMenuInflater();
MenuInflater inflater = this.getMenuInflater();
inflater.inflate(R.menu.contact_selection, menu);
return true;

View File

@ -19,6 +19,7 @@ package org.thoughtcrime.securesms;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;
import android.util.Log;
@ -30,8 +31,6 @@ import android.widget.CursorAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import com.actionbarsherlock.app.SherlockListFragment;
import org.thoughtcrime.securesms.contacts.ContactAccessor;
import org.thoughtcrime.securesms.contacts.ContactAccessor.ContactData;
import org.thoughtcrime.securesms.contacts.ContactAccessor.GroupData;
@ -51,7 +50,7 @@ import java.util.List;
* @author Moxie Marlinspike
*
*/
public class ContactSelectionGroupsFragment extends SherlockListFragment
public class ContactSelectionGroupsFragment extends ListFragment
implements LoaderManager.LoaderCallbacks<Cursor>
{

View File

@ -22,10 +22,14 @@ import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckedTextView;
@ -34,11 +38,6 @@ import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockListFragment;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import org.thoughtcrime.securesms.contacts.ContactAccessor;
import org.thoughtcrime.securesms.contacts.ContactAccessor.ContactData;
import org.thoughtcrime.securesms.contacts.ContactAccessor.NumberData;
@ -59,7 +58,7 @@ import java.util.List;
*
*/
public class ContactSelectionListFragment extends SherlockListFragment
public class ContactSelectionListFragment extends ListFragment
implements LoaderManager.LoaderCallbacks<Cursor>
{

View File

@ -20,6 +20,7 @@ import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.CallLog.Calls;
import android.support.v4.app.ListFragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
@ -34,8 +35,6 @@ import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockListFragment;
import org.thoughtcrime.securesms.contacts.ContactAccessor;
import org.thoughtcrime.securesms.contacts.ContactAccessor.ContactData;
import org.thoughtcrime.securesms.contacts.ContactAccessor.NumberData;
@ -55,7 +54,7 @@ import java.util.List;
* @author Moxie Marlinspike
*
*/
public class ContactSelectionRecentFragment extends SherlockListFragment
public class ContactSelectionRecentFragment extends ListFragment
implements LoaderManager.LoaderCallbacks<Cursor>
{

View File

@ -43,6 +43,9 @@ import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextThemeWrapper;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
@ -54,9 +57,6 @@ import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.google.protobuf.ByteString;
import org.thoughtcrime.securesms.components.EmojiDrawer;
@ -127,7 +127,7 @@ import static org.whispersystems.textsecure.push.PushMessageProtos.PushMessageCo
* @author Moxie Marlinspike
*
*/
public class ConversationActivity extends PassphraseRequiredSherlockFragmentActivity
public class ConversationActivity extends PassphraseRequiredActionBarActivity
implements ConversationFragment.ConversationFragmentListener,
AttachmentManager.AttachmentListener
{
@ -257,7 +257,7 @@ public class ConversationActivity extends PassphraseRequiredSherlockFragmentActi
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = this.getSupportMenuInflater();
MenuInflater inflater = this.getMenuInflater();
menu.clear();
boolean pushRegistered = TextSecurePreferences.isPushRegistered(this);
@ -621,7 +621,7 @@ public class ConversationActivity extends PassphraseRequiredSherlockFragmentActi
if (subtitle != null && !Util.isEmpty(subtitle))
this.getSupportActionBar().setSubtitle(PhoneNumberUtils.formatNumber(subtitle));
this.invalidateOptionsMenu();
this.supportInvalidateOptionsMenu();
}
private void initializeDraft() {

View File

@ -8,11 +8,17 @@ import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.ListFragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.view.ActionMode;
import android.text.ClipboardManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.support.v4.widget.CursorAdapter;
@ -20,12 +26,6 @@ import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import com.actionbarsherlock.app.SherlockListFragment;
import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.loaders.ConversationLoader;
import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord;
@ -44,7 +44,7 @@ import org.whispersystems.textsecure.util.FutureTaskListener;
import java.sql.Date;
import java.text.SimpleDateFormat;
public class ConversationFragment extends SherlockListFragment
public class ConversationFragment extends ListFragment
implements LoaderManager.LoaderCallbacks<Cursor>
{
private static final String TAG = ConversationFragment.class.getSimpleName();
@ -104,7 +104,7 @@ public class ConversationFragment extends SherlockListFragment
return false;
}
actionMode = getSherlockActivity().startActionMode(actionModeCallback);
actionMode = ((ActionBarActivity)getActivity()).startSupportActionMode(actionModeCallback);
view.setSelected(true);
return true;
}
@ -209,12 +209,12 @@ public class ConversationFragment extends SherlockListFragment
builder.setCancelable(true);
if (dateReceived == dateSent || message.isOutgoing()) {
builder.setMessage(String.format(getSherlockActivity()
builder.setMessage(String.format(getActivity()
.getString(R.string.ConversationFragment_transport_s_sent_received_s),
transport.toUpperCase(),
dateFormatter.format(new Date(dateSent))));
} else {
builder.setMessage(String.format(getSherlockActivity()
builder.setMessage(String.format(getActivity()
.getString(R.string.ConversationFragment_sender_s_transport_s_sent_s_received_s),
message.getIndividualRecipient().getNumber(),
transport.toUpperCase(),

View File

@ -22,10 +22,21 @@ import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import android.provider.Telephony;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.widget.SearchView;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import org.thoughtcrime.securesms.service.DirectoryRefreshListener;
import org.thoughtcrime.securesms.database.DatabaseFactory;
@ -41,7 +52,7 @@ import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.whispersystems.textsecure.crypto.MasterSecret;
public class ConversationListActivity extends PassphraseRequiredSherlockFragmentActivity
public class ConversationListActivity extends PassphraseRequiredActionBarActivity
implements ConversationListFragment.ConversationSelectedListener
{
private final DynamicTheme dynamicTheme = new DynamicTheme ();
@ -97,17 +108,45 @@ public class ConversationListActivity extends PassphraseRequiredSherlockFragment
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = this.getSupportMenuInflater();
MenuInflater inflater = this.getMenuInflater();
menu.clear();
inflater.inflate(R.menu.text_secure_normal, menu);
menu.findItem(R.id.menu_clear_passphrase).setVisible(!TextSecurePreferences.isPasswordDisabled(this));
if (this.masterSecret != null) {
inflater.inflate(R.menu.conversation_list, menu);
MenuItem menuItem = menu.findItem(R.id.menu_search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(menuItem);
initializeSearch(searchView);
} else {
inflater.inflate(R.menu.conversation_list_empty, menu);
}
super.onPrepareOptionsMenu(menu);
return true;
}
private void initializeSearch(SearchView searchView) {
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
ConversationListFragment fragment = (ConversationListFragment)getSupportFragmentManager()
.findFragmentById(R.id.fragment_content);
if (fragment != null) {
fragment.setQueryFilter(query);
return true;
}
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return onQueryTextSubmit(newText);
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
@ -221,7 +260,7 @@ public class ConversationListActivity extends PassphraseRequiredSherlockFragment
this.masterSecret = getIntent().getParcelableExtra("master_secret");
this.fragment = (ConversationListFragment)this.getSupportFragmentManager()
.findFragmentById(R.id.fragment_content);
.findFragmentById(R.id.fragment_content);
this.fragment.setMasterSecret(masterSecret);
}

View File

@ -23,22 +23,25 @@ import android.content.DialogInterface;
import android.database.Cursor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;
import android.text.TextUtils;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.view.ActionMode;
import android.support.v7.widget.SearchView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.CursorAdapter;
import android.widget.ListView;
import com.actionbarsherlock.app.SherlockListFragment;
import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.actionbarsherlock.widget.SearchView;
import org.thoughtcrime.securesms.components.DefaultSmsReminder;
import org.thoughtcrime.securesms.components.PushRegistrationReminder;
import org.thoughtcrime.securesms.components.ReminderView;
@ -53,7 +56,7 @@ import org.whispersystems.textsecure.crypto.MasterSecret;
import java.util.Set;
public class ConversationListFragment extends SherlockListFragment
public class ConversationListFragment extends ListFragment
implements LoaderManager.LoaderCallbacks<Cursor>, ActionMode.Callback
{
@ -102,20 +105,6 @@ public class ConversationListFragment extends SherlockListFragment
this.listener = (ConversationSelectedListener)activity;
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = this.getSherlockActivity().getSupportMenuInflater();
if (this.masterSecret != null) {
inflater.inflate(R.menu.conversation_list, menu);
initializeSearch((SearchView)menu.findItem(R.id.menu_search).getActionView());
} else {
inflater.inflate(R.menu.conversation_list_empty, menu);
}
super.onPrepareOptionsMenu(menu);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
if (v instanceof ConversationListItem) {
@ -146,27 +135,15 @@ public class ConversationListFragment extends SherlockListFragment
}
}
private void setQueryFilter(String query) {
public void setQueryFilter(String query) {
this.queryFilter = query;
getLoaderManager().restartLoader(0, null, this);
}
private void initializeSearch(SearchView searchView) {
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
if (isAdded()) {
setQueryFilter(query);
return true;
}
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return onQueryTextSubmit(newText);
}
});
public void resetQueryFilter() {
if (!TextUtils.isEmpty(this.queryFilter)) {
setQueryFilter("");
}
}
private void initializeBatchListener() {
@ -174,7 +151,7 @@ public class ConversationListFragment extends SherlockListFragment
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View v, int position, long id) {
ConversationListAdapter adapter = (ConversationListAdapter)getListAdapter();
actionMode = getSherlockActivity().startActionMode(ConversationListFragment.this);
actionMode = ((ActionBarActivity)getActivity()).startSupportActionMode(ConversationListFragment.this);
adapter.initializeBatchMode(true);
adapter.toggleThreadInBatchSet(((ConversationListItem) v).getThreadId());
@ -223,8 +200,8 @@ public class ConversationListFragment extends SherlockListFragment
@Override
protected void onPreExecute() {
dialog = ProgressDialog.show(getActivity(),
getSherlockActivity().getString(R.string.ConversationListFragment_deleting),
getSherlockActivity().getString(R.string.ConversationListFragment_deleting_selected_threads),
getActivity().getString(R.string.ConversationListFragment_deleting),
getActivity().getString(R.string.ConversationListFragment_deleting_selected_threads),
true, false);
}
@ -289,7 +266,7 @@ public class ConversationListFragment extends SherlockListFragment
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = getSherlockActivity().getSupportMenuInflater();
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.conversation_list_batch, menu);
mode.setTitle(R.string.conversation_fragment_cab__batch_selection_mode);

View File

@ -3,11 +3,11 @@ package org.thoughtcrime.securesms;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import org.thoughtcrime.securesms.util.DynamicTheme;
public class CountrySelectionActivity extends SherlockFragmentActivity
public class CountrySelectionActivity extends FragmentActivity
implements CountrySelectionFragment.CountrySelectedListener
{

View File

@ -2,6 +2,7 @@ package org.thoughtcrime.securesms;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;
import android.text.Editable;
@ -13,14 +14,13 @@ import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import com.actionbarsherlock.app.SherlockListFragment;
import org.thoughtcrime.securesms.database.loaders.CountryListLoader;
import java.util.ArrayList;
import java.util.Map;
public class CountrySelectionFragment extends SherlockListFragment implements LoaderManager.LoaderCallbacks<ArrayList<Map<String, String>>> {
public class CountrySelectionFragment extends ListFragment implements LoaderManager.LoaderCallbacks<ArrayList<Map<String, String>>> {
private EditText countryFilter;
private CountrySelectedListener listener;

View File

@ -20,7 +20,7 @@ import org.thoughtcrime.securesms.database.SmsMigrator.ProgressDescription;
import org.thoughtcrime.securesms.service.ApplicationMigrationService;
import org.thoughtcrime.securesms.service.ApplicationMigrationService.ImportState;
public class DatabaseMigrationActivity extends PassphraseRequiredSherlockActivity {
public class DatabaseMigrationActivity extends PassphraseRequiredActionBarActivity {
private final ImportServiceConnection serviceConnection = new ImportServiceConnection();
private final ImportStateHandler importStateHandler = new ImportStateHandler();

View File

@ -7,13 +7,13 @@ import android.content.Context;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.actionbarsherlock.app.SherlockFragment;
import org.whispersystems.textsecure.crypto.MasterSecret;
import org.thoughtcrime.securesms.util.Dialogs;
//import org.thoughtcrime.securesms.database.EncryptedBackupExporter;
@ -23,7 +23,7 @@ import org.thoughtcrime.securesms.database.PlaintextBackupExporter;
import java.io.IOException;
public class ExportFragment extends SherlockFragment {
public class ExportFragment extends Fragment {
private static final int SUCCESS = 0;
private static final int NO_SD_CARD = 1;

View File

@ -31,6 +31,9 @@ import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.Log;
import android.util.Pair;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
@ -38,9 +41,6 @@ import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.google.protobuf.ByteString;
import org.thoughtcrime.securesms.components.PushRecipientsPanel;
@ -88,7 +88,7 @@ import static org.whispersystems.textsecure.push.PushMessageProtos.PushMessageCo
*
* @author Jake McGinty
*/
public class GroupCreateActivity extends PassphraseRequiredSherlockFragmentActivity {
public class GroupCreateActivity extends PassphraseRequiredActionBarActivity {
private final static String TAG = GroupCreateActivity.class.getSimpleName();
@ -294,7 +294,7 @@ public class GroupCreateActivity extends PassphraseRequiredSherlockFragmentActiv
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = this.getSupportMenuInflater();
MenuInflater inflater = this.getMenuInflater();
menu.clear();
inflater.inflate(R.menu.group_create, menu);

View File

@ -6,14 +6,13 @@ import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.view.MenuItem;
import android.support.v7.app.ActionBar;
import android.view.MenuItem;
import org.whispersystems.textsecure.crypto.MasterSecret;
public class ImportExportActivity extends PassphraseRequiredSherlockFragmentActivity {
public class ImportExportActivity extends PassphraseRequiredActionBarActivity {
private TabPagerAdapter tabPagerAdapter;
private ViewPager viewPager;

View File

@ -7,13 +7,13 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.actionbarsherlock.app.SherlockFragment;
import org.whispersystems.textsecure.crypto.MasterSecret;
import org.thoughtcrime.securesms.util.Dialogs;
import org.thoughtcrime.securesms.database.EncryptedBackupExporter;
@ -26,7 +26,7 @@ import org.thoughtcrime.securesms.service.KeyCachingService;
import java.io.IOException;
public class ImportFragment extends SherlockFragment {
public class ImportFragment extends Fragment {
private static final int SUCCESS = 0;
private static final int NO_SD_CARD = 1;

View File

@ -18,6 +18,9 @@ package org.thoughtcrime.securesms;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
import org.whispersystems.libaxolotl.IdentityKey;
@ -25,9 +28,6 @@ import org.whispersystems.textsecure.util.Base64;
import org.thoughtcrime.securesms.util.Dialogs;
import org.thoughtcrime.securesms.util.DynamicTheme;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import org.whispersystems.textsecure.zxing.integration.IntentIntegrator;
import org.whispersystems.textsecure.zxing.integration.IntentResult;
@ -36,7 +36,7 @@ import org.whispersystems.textsecure.zxing.integration.IntentResult;
*
* @author Moxie Marlinspike
*/
public abstract class KeyScanningActivity extends PassphraseRequiredSherlockActivity {
public abstract class KeyScanningActivity extends PassphraseRequiredActionBarActivity {
private final DynamicTheme dynamicTheme = new DynamicTheme();
@ -56,7 +56,7 @@ public abstract class KeyScanningActivity extends PassphraseRequiredSherlockActi
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
MenuInflater inflater = this.getSupportMenuInflater();
MenuInflater inflater = this.getMenuInflater();
menu.clear();
inflater.inflate(R.menu.key_scanning, menu);

View File

@ -1,6 +1,7 @@
package org.thoughtcrime.securesms;
import android.app.AlertDialog;
import android.support.v7.app.ActionBarActivity;
import android.text.ClipboardManager;
import android.content.DialogInterface;
import android.os.AsyncTask;
@ -8,14 +9,13 @@ import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.util.TypedValue;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.MenuItem;
import com.google.thoughtcrimegson.Gson;
import com.google.thoughtcrimegson.JsonIOException;
import com.google.thoughtcrimegson.JsonSyntaxException;
@ -38,7 +38,7 @@ import java.util.Map;
/**
* Activity for submitting logcat logs to a pastebin service.
*/
public class LogSubmitActivity extends SherlockActivity {
public class LogSubmitActivity extends ActionBarActivity {
private static final String TAG = LogSubmitActivity.class.getSimpleName();
private static final String HASTEBIN_ENDPOINT = "http://hastebin.com/documents";

View File

@ -25,21 +25,19 @@ import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.Toast;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.providers.PartProvider;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.DateUtils;
import org.thoughtcrime.securesms.util.DynamicLanguage;
import org.thoughtcrime.securesms.util.DynamicTheme;
import org.thoughtcrime.securesms.util.SaveAttachmentTask;
import org.thoughtcrime.securesms.util.SaveAttachmentTask.Attachment;
import org.whispersystems.textsecure.crypto.MasterSecret;
@ -52,14 +50,13 @@ import uk.co.senab.photoview.PhotoViewAttacher;
/**
* Activity for displaying media attachments in-app
*/
public class MediaPreviewActivity extends PassphraseRequiredSherlockActivity {
public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity {
private final static String TAG = MediaPreviewActivity.class.getSimpleName();
public final static String MASTER_SECRET_EXTRA = "master_secret";
public final static String RECIPIENT_EXTRA = "recipient";
public final static String DATE_EXTRA = "date";
private final DynamicTheme dynamicTheme = new DynamicTheme();
private final DynamicLanguage dynamicLanguage = new DynamicLanguage();
private MasterSecret masterSecret;
@ -76,17 +73,17 @@ public class MediaPreviewActivity extends PassphraseRequiredSherlockActivity {
setFullscreenIfPossible();
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
dynamicTheme.onCreate(this);
dynamicLanguage.onCreate(this);
this.setTheme(R.style.TextSecure_DarkTheme);
super.onCreate(bundle);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.media_preview_activity);
initializeResources();
}
@TargetApi(VERSION_CODES.HONEYCOMB)
@TargetApi(VERSION_CODES.JELLY_BEAN)
private void setFullscreenIfPossible() {
if (VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB) {
if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
}
}
@ -94,11 +91,9 @@ public class MediaPreviewActivity extends PassphraseRequiredSherlockActivity {
@Override
public void onResume() {
super.onResume();
dynamicTheme.onResume(this);
dynamicLanguage.onResume(this);
masterSecret = getIntent().getParcelableExtra(MASTER_SECRET_EXTRA);
mediaUri = getIntent().getData();
mediaType = getIntent().getType();
recipient = getIntent().getParcelableExtra(RECIPIENT_EXTRA);
@ -175,7 +170,7 @@ public class MediaPreviewActivity extends PassphraseRequiredSherlockActivity {
super.onPrepareOptionsMenu(menu);
menu.clear();
MenuInflater inflater = this.getSupportMenuInflater();
MenuInflater inflater = this.getMenuInflater();
inflater.inflate(R.menu.media_preview, menu);
return true;

View File

@ -18,21 +18,18 @@ package org.thoughtcrime.securesms;
import android.content.Intent;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.Preference;
import android.widget.Toast;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.MenuItem;
import com.actionbarsherlock.view.MenuItem;
import org.thoughtcrime.securesms.mms.IncomingMmsConnection;
import org.thoughtcrime.securesms.service.SendReceiveService;
import org.thoughtcrime.securesms.util.DynamicLanguage;
import org.thoughtcrime.securesms.util.DynamicTheme;
import org.thoughtcrime.securesms.util.MemoryCleaner;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.whispersystems.textsecure.crypto.MasterSecret;
public class MmsPreferencesActivity extends PassphraseRequiredSherlockPreferenceActivity {
public class MmsPreferencesActivity extends PassphraseRequiredActionBarActivity {
private MasterSecret masterSecret;
@ -46,11 +43,15 @@ public class MmsPreferencesActivity extends PassphraseRequiredSherlockPreference
super.onCreate(icicle);
this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
initializePreferences();
masterSecret = getIntent().getParcelableExtra("master_secret");
initializeEditTextSummaries();
Fragment fragment = new MmsPreferencesFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(android.R.id.content, fragment);
fragmentTransaction.commit();
}
@Override
@ -85,51 +86,9 @@ public class MmsPreferencesActivity extends PassphraseRequiredSherlockPreference
super.onBackPressed();
}
private void initializePreferences() {
if (!IncomingMmsConnection.isConnectionPossible(this, null)) {
TextSecurePreferences.setUseLocalApnsEnabled(this, true);
addPreferencesFromResource(R.xml.mms_preferences);
this.findPreference(TextSecurePreferences.ENABLE_MANUAL_MMS_PREF).setOnPreferenceChangeListener(new OverrideMmsChangeListener());
} else {
addPreferencesFromResource(R.xml.mms_preferences);
}
}
private void initializeEditTextSummary(final EditTextPreference preference) {
if (preference.getText() == null) {
preference.setSummary("Not set");
} else {
preference.setSummary(preference.getText());
}
preference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference pref, Object newValue) {
preference.setSummary(newValue == null ? "Not set" : ((String) newValue));
return true;
}
});
}
private void initializeEditTextSummaries() {
initializeEditTextSummary((EditTextPreference)this.findPreference(TextSecurePreferences.MMSC_HOST_PREF));
initializeEditTextSummary((EditTextPreference)this.findPreference(TextSecurePreferences.MMSC_PROXY_HOST_PREF));
initializeEditTextSummary((EditTextPreference)this.findPreference(TextSecurePreferences.MMSC_PROXY_PORT_PREF));
}
private void handleDownloadMmsPendingApn() {
Intent intent = new Intent(this, SendReceiveService.class);
intent.setAction(SendReceiveService.DOWNLOAD_MMS_PENDING_APN_ACTION);
startService(intent);
}
private class OverrideMmsChangeListener implements Preference.OnPreferenceChangeListener {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
TextSecurePreferences.setUseLocalApnsEnabled(MmsPreferencesActivity.this, true);
Toast.makeText(MmsPreferencesActivity.this, R.string.mms_preferences_activity__manual_mms_settings_are_required, Toast.LENGTH_SHORT).show();
return false;
}
}
}

View File

@ -0,0 +1,78 @@
/**
* Copyright (C) 2014 Open Whisper Systems
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.thoughtcrime.securesms;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.Preference;
import android.support.v4.preference.PreferenceFragment;
import android.widget.Toast;
import org.thoughtcrime.securesms.mms.OutgoingMmsConnection;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
public class MmsPreferencesFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
initializePreferences();
initializeEditTextSummaries();
}
private void initializePreferences() {
if (!OutgoingMmsConnection.isConnectionPossible(getActivity())) {
TextSecurePreferences.setUseLocalApnsEnabled(getActivity(), true);
addPreferencesFromResource(R.xml.mms_preferences);
this.findPreference(TextSecurePreferences.ENABLE_MANUAL_MMS_PREF).setOnPreferenceChangeListener(new OverrideMmsChangeListener());
} else {
addPreferencesFromResource(R.xml.mms_preferences);
}
}
private void initializeEditTextSummary(final EditTextPreference preference) {
if (preference.getText() == null) {
preference.setSummary("Not set");
} else {
preference.setSummary(preference.getText());
}
preference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference pref, Object newValue) {
preference.setSummary(newValue == null ? "Not set" : ((String) newValue));
return true;
}
});
}
private void initializeEditTextSummaries() {
initializeEditTextSummary((EditTextPreference)this.findPreference(TextSecurePreferences.MMSC_HOST_PREF));
initializeEditTextSummary((EditTextPreference)this.findPreference(TextSecurePreferences.MMSC_PROXY_HOST_PREF));
initializeEditTextSummary((EditTextPreference)this.findPreference(TextSecurePreferences.MMSC_PROXY_PORT_PREF));
}
private class OverrideMmsChangeListener implements Preference.OnPreferenceChangeListener {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
TextSecurePreferences.setUseLocalApnsEnabled(getActivity(), true);
Toast.makeText(getActivity(), R.string.mms_preferences_activity__manual_mms_settings_are_required, Toast.LENGTH_SHORT).show();
return false;
}
}
}

View File

@ -19,10 +19,9 @@ package org.thoughtcrime.securesms;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import org.thoughtcrime.securesms.contacts.ContactAccessor;
import org.thoughtcrime.securesms.database.DatabaseFactory;
@ -50,7 +49,7 @@ import static org.thoughtcrime.securesms.contacts.ContactAccessor.ContactData;
* @author Moxie Marlinspike
*
*/
public class NewConversationActivity extends PassphraseRequiredSherlockFragmentActivity {
public class NewConversationActivity extends PassphraseRequiredActionBarActivity {
private final static String TAG = "ContactSelectActivity";
public final static String MASTER_SECRET_EXTRA = "master_secret";
@ -83,7 +82,7 @@ public class NewConversationActivity extends PassphraseRequiredSherlockFragmentA
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = this.getSupportMenuInflater();
MenuInflater inflater = this.getMenuInflater();
menu.clear();
if (TextSecurePreferences.isPushRegistered(this)) inflater.inflate(R.menu.push_directory, menu);

View File

@ -21,19 +21,19 @@ import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.support.v7.app.ActionBarActivity;
import org.whispersystems.textsecure.crypto.MasterSecret;
import org.thoughtcrime.securesms.service.KeyCachingService;
import org.thoughtcrime.securesms.util.MemoryCleaner;
import com.actionbarsherlock.app.SherlockActivity;
/**
* Base Activity for changing/prompting local encryption passphrase.
*
* @author Moxie Marlinspike
*/
public abstract class PassphraseActivity extends SherlockActivity {
public abstract class PassphraseActivity extends ActionBarActivity {
private KeyCachingService keyCachingService;
private MasterSecret masterSecret;

View File

@ -20,13 +20,7 @@ import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.actionbarsherlock.app.ActionBar;
import android.support.v7.app.ActionBar;
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil;
import org.thoughtcrime.securesms.util.TextSecurePreferences;

View File

@ -20,6 +20,7 @@ import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.text.Editable;
import android.text.SpannableString;
import android.text.Spanned;
@ -27,6 +28,9 @@ import android.text.style.ForegroundColorSpan;
import android.text.style.RelativeSizeSpan;
import android.text.style.TypefaceSpan;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.EditorInfo;
@ -35,11 +39,6 @@ import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import org.thoughtcrime.securesms.crypto.InvalidPassphraseException;
import org.thoughtcrime.securesms.crypto.MasterSecretUtil;
import org.thoughtcrime.securesms.util.MemoryCleaner;
@ -65,7 +64,7 @@ public class PassphrasePromptActivity extends PassphraseActivity {
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = this.getSupportMenuInflater();
MenuInflater inflater = this.getMenuInflater();
menu.clear();
inflater.inflate(R.menu.log_submit, menu);

View File

@ -1,12 +1,11 @@
package org.thoughtcrime.securesms;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import org.whispersystems.textsecure.crypto.MasterSecret;
import com.actionbarsherlock.app.SherlockActivity;
public class PassphraseRequiredSherlockActivity extends SherlockActivity implements PassphraseRequiredActivity {
public class PassphraseRequiredActionBarActivity extends ActionBarActivity implements PassphraseRequiredActivity {
private final PassphraseRequiredMixin delegate = new PassphraseRequiredMixin();

View File

@ -1,44 +0,0 @@
package org.thoughtcrime.securesms;
import android.os.Bundle;
import org.whispersystems.textsecure.crypto.MasterSecret;
import com.actionbarsherlock.app.SherlockFragmentActivity;
public class PassphraseRequiredSherlockFragmentActivity extends SherlockFragmentActivity implements PassphraseRequiredActivity {
private final PassphraseRequiredMixin delegate = new PassphraseRequiredMixin();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
delegate.onCreate(this);
}
@Override
protected void onResume() {
super.onResume();
delegate.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
delegate.onPause(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
delegate.onDestroy(this);
}
@Override
public void onMasterSecretCleared() {
finish();
}
@Override
public void onNewMasterSecret(MasterSecret masterSecret) {}
}

View File

@ -1,12 +1,12 @@
package org.thoughtcrime.securesms;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import org.whispersystems.textsecure.crypto.MasterSecret;
import com.actionbarsherlock.app.SherlockListActivity;
public class PassphraseRequiredSherlockListActivity extends SherlockListActivity implements PassphraseRequiredActivity {
public class PassphraseRequiredSherlockListActivity extends ActionBarListActivity implements PassphraseRequiredActivity {
private final PassphraseRequiredMixin delegate = new PassphraseRequiredMixin();

View File

@ -1,48 +0,0 @@
package org.thoughtcrime.securesms;
import android.os.Bundle;
import org.whispersystems.textsecure.crypto.MasterSecret;
import com.actionbarsherlock.app.SherlockPreferenceActivity;
public abstract class PassphraseRequiredSherlockPreferenceActivity
extends SherlockPreferenceActivity
implements PassphraseRequiredActivity
{
private final PassphraseRequiredMixin delegate = new PassphraseRequiredMixin();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
delegate.onCreate(this);
}
@Override
protected void onResume() {
super.onResume();
delegate.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
delegate.onPause(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
delegate.onDestroy(this);
}
@Override
public void onMasterSecretCleared() {
finish();
}
@Override
public void onNewMasterSecret(MasterSecret masterSecret) {}
}

View File

@ -5,7 +5,7 @@ import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class PromptMmsActivity extends PassphraseRequiredSherlockActivity {
public class PromptMmsActivity extends PassphraseRequiredActionBarActivity {
private Button okButton;
private Button cancelButton;

View File

@ -19,15 +19,15 @@ package org.thoughtcrime.securesms;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import org.thoughtcrime.securesms.util.DirectoryHelper;
import org.thoughtcrime.securesms.util.DynamicLanguage;
import org.thoughtcrime.securesms.util.DynamicTheme;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import java.util.ArrayList;
import java.util.List;
@ -40,7 +40,7 @@ import static org.thoughtcrime.securesms.contacts.ContactAccessor.ContactData;
* @author Moxie Marlinspike
*
*/
public class PushContactSelectionActivity extends PassphraseRequiredSherlockFragmentActivity {
public class PushContactSelectionActivity extends PassphraseRequiredActionBarActivity {
private final static String TAG = "ContactSelectActivity";
public final static String PUSH_ONLY_EXTRA = "push_only";
@ -71,7 +71,7 @@ public class PushContactSelectionActivity extends PassphraseRequiredSherlockFrag
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = this.getSupportMenuInflater();
MenuInflater inflater = this.getMenuInflater();
menu.clear();
if (TextSecurePreferences.isPushRegistered(this)) inflater.inflate(R.menu.push_directory, menu);

View File

@ -5,6 +5,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.telephony.TelephonyManager;
import android.text.Editable;
import android.text.TextWatcher;
@ -17,7 +18,6 @@ import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.actionbarsherlock.app.SherlockActivity;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.i18n.phonenumbers.AsYouTypeFormatter;
@ -38,7 +38,7 @@ import org.whispersystems.textsecure.util.Util;
* @author Moxie Marlinspike
*
*/
public class RegistrationActivity extends SherlockActivity {
public class RegistrationActivity extends ActionBarActivity {
private static final int PICK_COUNTRY = 1;

View File

@ -1,12 +1,12 @@
package org.thoughtcrime.securesms;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import com.actionbarsherlock.app.SherlockActivity;
public class RegistrationProblemsActivity extends SherlockActivity {
public class RegistrationProblemsActivity extends ActionBarActivity {
@Override
public void onCreate(Bundle bundle) {

View File

@ -13,6 +13,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
@ -28,7 +29,6 @@ import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.actionbarsherlock.app.SherlockActivity;
import org.thoughtcrime.securesms.push.PushServiceSocketFactory;
import org.thoughtcrime.securesms.service.RegistrationService;
@ -45,7 +45,7 @@ import java.io.IOException;
import static org.thoughtcrime.securesms.service.RegistrationService.RegistrationState;
public class RegistrationProgressActivity extends SherlockActivity {
public class RegistrationProgressActivity extends ActionBarActivity {
private static final int FOCUSED_COLOR = Color.parseColor("#ff333333");
private static final int UNFOCUSED_COLOR = Color.parseColor("#ff808080");

View File

@ -12,7 +12,7 @@ import org.thoughtcrime.securesms.recipients.Recipients;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.whispersystems.textsecure.crypto.MasterSecret;
public class RoutingActivity extends PassphraseRequiredSherlockActivity {
public class RoutingActivity extends PassphraseRequiredActionBarActivity {
private static final int STATE_CREATE_PASSPHRASE = 1;
private static final int STATE_PROMPT_PASSPHRASE = 2;

View File

@ -21,12 +21,11 @@ import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.WindowManager;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import org.thoughtcrime.securesms.recipients.Recipients;
import org.thoughtcrime.securesms.util.DynamicLanguage;
import org.thoughtcrime.securesms.util.DynamicTheme;
@ -39,7 +38,7 @@ import org.whispersystems.textsecure.crypto.MasterSecret;
*
* @author Jake McGinty
*/
public class ShareActivity extends PassphraseRequiredSherlockFragmentActivity
public class ShareActivity extends PassphraseRequiredActionBarActivity
implements ShareFragment.ConversationSelectedListener
{
public final static String MASTER_SECRET_EXTRA = "master_secret";
@ -88,7 +87,7 @@ public class ShareActivity extends PassphraseRequiredSherlockFragmentActivity
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = this.getSupportMenuInflater();
MenuInflater inflater = this.getMenuInflater();
menu.clear();
inflater.inflate(R.menu.share, menu);

View File

@ -19,6 +19,7 @@ package org.thoughtcrime.securesms;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;
import android.support.v4.widget.CursorAdapter;
@ -27,7 +28,6 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.actionbarsherlock.app.SherlockListFragment;
import org.thoughtcrime.securesms.database.loaders.ConversationListLoader;
import org.thoughtcrime.securesms.recipients.Recipients;
@ -38,7 +38,7 @@ import org.whispersystems.textsecure.crypto.MasterSecret;
*
* @author Jake McGinty
*/
public class ShareFragment extends SherlockListFragment implements LoaderManager.LoaderCallbacks<Cursor> {
public class ShareFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> {
private ConversationSelectedListener listener;
private MasterSecret masterSecret;

View File

@ -18,10 +18,10 @@
package org.thoughtcrime.securesms;
import android.os.Bundle;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil;
import org.whispersystems.textsecure.crypto.IdentityKeyParcelable;
@ -45,7 +45,7 @@ public class ViewLocalIdentityActivity extends ViewIdentityActivity {
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
MenuInflater inflater = this.getSupportMenuInflater();
MenuInflater inflater = this.getMenuInflater();
inflater.inflate(R.menu.local_identity, menu);
return true;

View File

@ -31,13 +31,7 @@ public class DynamicTheme {
private static int getSelectedTheme(Activity activity) {
String theme = TextSecurePreferences.getTheme(activity);
if (theme.equals("light")) {
if (activity instanceof ConversationActivity) return R.style.TextSecure_LightTheme_ConversationActivity;
else return R.style.TextSecure_LightTheme;
} else if (theme.equals("dark")) {
if (activity instanceof ConversationActivity) return R.style.TextSecure_DarkTheme_ConversationActivity;
else return R.style.TextSecure_DarkTheme;
}
if (theme.equals("dark")) return R.style.TextSecure_DarkTheme;
return R.style.TextSecure_LightTheme;
}