mirror of https://github.com/ThmmyNoLife/mTHMMY
Apostolos Fanakis
7 years ago
16 changed files with 372 additions and 77 deletions
@ -0,0 +1,44 @@ |
|||
package gr.thmmy.mthmmy.activities.settings; |
|||
|
|||
import android.os.Bundle; |
|||
import android.support.v4.app.Fragment; |
|||
import android.support.v4.app.FragmentTransaction; |
|||
|
|||
import gr.thmmy.mthmmy.R; |
|||
import gr.thmmy.mthmmy.base.BaseActivity; |
|||
|
|||
public class SettingsActivity extends BaseActivity { |
|||
public static final String NOTIFICATION_VIBRATION_KEY = "pref_notification_vibration_enable_key"; |
|||
public static final String APP_SIGNATURE_ENABLE_KEY = "pref_posting_app_signature_enable_key"; |
|||
|
|||
@Override |
|||
protected void onCreate(Bundle savedInstanceState) { |
|||
super.onCreate(savedInstanceState); |
|||
setContentView(R.layout.activity_settings); |
|||
|
|||
//Initialize toolbar
|
|||
toolbar = findViewById(R.id.toolbar); |
|||
toolbar.setTitle("Settings"); |
|||
setSupportActionBar(toolbar); |
|||
if (getSupportActionBar() != null) { |
|||
getSupportActionBar().setDisplayHomeAsUpEnabled(true); |
|||
getSupportActionBar().setDisplayShowHomeEnabled(true); |
|||
} |
|||
|
|||
createDrawer(); |
|||
drawer.setSelection(SETTINGS_ID); |
|||
|
|||
if (savedInstanceState == null) { |
|||
Fragment preferenceFragment = new SettingsFragment(); |
|||
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); |
|||
fragmentTransaction.add(R.id.pref_container, preferenceFragment); |
|||
fragmentTransaction.commit(); |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
protected void onResume() { |
|||
drawer.setSelection(SETTINGS_ID); |
|||
super.onResume(); |
|||
} |
|||
} |
@ -0,0 +1,82 @@ |
|||
package gr.thmmy.mthmmy.activities.settings; |
|||
|
|||
import android.app.Activity; |
|||
import android.content.Context; |
|||
import android.content.Intent; |
|||
import android.content.SharedPreferences; |
|||
import android.media.RingtoneManager; |
|||
import android.net.Uri; |
|||
import android.os.Bundle; |
|||
import android.provider.Settings; |
|||
import android.support.v7.preference.Preference; |
|||
import android.support.v7.preference.PreferenceFragmentCompat; |
|||
import android.util.Log; |
|||
|
|||
import gr.thmmy.mthmmy.R; |
|||
|
|||
public class SettingsFragment extends PreferenceFragmentCompat { |
|||
private static final int REQUEST_CODE_ALERT_RINGTONE = 2; |
|||
public static final String SETTINGS_SHARED_PREFS = "settingsSharedPrefs"; |
|||
public static final String SELECTED_RINGTONE = "selectedRingtoneKey"; |
|||
private static final String SELECTED_NOTIFICATIONS_SOUND = "pref_notifications_select_sound_key"; |
|||
private static final String SILENT_SELECTED = "STFU"; |
|||
|
|||
private SharedPreferences settingsFile; |
|||
|
|||
@Override |
|||
public void onCreatePreferences(Bundle bundle, String s) { |
|||
// Load the Preferences from the XML file
|
|||
addPreferencesFromResource(R.xml.app_preferences); |
|||
} |
|||
|
|||
@Override |
|||
public boolean onPreferenceTreeClick(Preference preference) { |
|||
if (preference.getKey().equals(SELECTED_NOTIFICATIONS_SOUND)) { |
|||
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); |
|||
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION); |
|||
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true); |
|||
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true); |
|||
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, Settings.System.DEFAULT_NOTIFICATION_URI); |
|||
|
|||
Activity activity = this.getActivity(); |
|||
settingsFile = activity != null |
|||
? activity.getSharedPreferences(SETTINGS_SHARED_PREFS, Context.MODE_PRIVATE) |
|||
: null; |
|||
String existingValue = settingsFile != null |
|||
? settingsFile.getString(SELECTED_RINGTONE, null) |
|||
: null; |
|||
if (existingValue != null) { |
|||
if (existingValue.equals(SILENT_SELECTED)) { |
|||
//Selects "Silent"
|
|||
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri) null); |
|||
} else { |
|||
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, Uri.parse(existingValue)); |
|||
} |
|||
} else { |
|||
//No ringtone has been selected, set to the default
|
|||
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, Settings.System.DEFAULT_NOTIFICATION_URI); |
|||
} |
|||
|
|||
startActivityForResult(intent, REQUEST_CODE_ALERT_RINGTONE); |
|||
return true; |
|||
} else { |
|||
return super.onPreferenceTreeClick(preference); |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
public void onActivityResult(int requestCode, int resultCode, Intent data) { |
|||
if (requestCode == REQUEST_CODE_ALERT_RINGTONE && data != null) { |
|||
Uri ringtone = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); |
|||
SharedPreferences.Editor editor = settingsFile.edit(); |
|||
if (ringtone != null) { |
|||
editor.putString(SELECTED_RINGTONE, ringtone.toString()).apply(); |
|||
} else { |
|||
// "Silent" was selected
|
|||
editor.putString(SELECTED_RINGTONE, SILENT_SELECTED).apply(); |
|||
} |
|||
} else { |
|||
super.onActivityResult(requestCode, resultCode, data); |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,33 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" |
|||
xmlns:app="http://schemas.android.com/apk/res-auto" |
|||
xmlns:tools="http://schemas.android.com/tools" |
|||
android:id="@+id/main_content" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="match_parent" |
|||
android:fitsSystemWindows="true" |
|||
tools:context=".activities.settings.SettingsActivity"> |
|||
|
|||
<android.support.design.widget.AppBarLayout |
|||
android:id="@+id/appbar" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:paddingTop="@dimen/appbar_padding_top" |
|||
android:theme="@style/ToolbarTheme"> |
|||
|
|||
<android.support.v7.widget.Toolbar |
|||
android:id="@+id/toolbar" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="?attr/actionBarSize" |
|||
android:background="?attr/colorPrimary" |
|||
android:gravity="center" |
|||
app:popupTheme="@style/ToolbarTheme" /> |
|||
</android.support.design.widget.AppBarLayout> |
|||
|
|||
<FrameLayout |
|||
android:id="@+id/pref_container" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="match_parent" |
|||
app:layout_behavior="@string/appbar_scrolling_view_behavior" /> |
|||
|
|||
</android.support.design.widget.CoordinatorLayout> |
@ -0,0 +1,35 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> |
|||
|
|||
<android.support.v7.preference.PreferenceCategory android:title="@string/pref_category_notifications"> |
|||
|
|||
<!--<android.support.v7.preference.SwitchPreferenceCompat |
|||
android:defaultValue="true" |
|||
android:key="pref_notifications_enable_key" |
|||
android:summary="@string/pref_summary_notifications_enable" |
|||
android:title="@string/pref_title_notifications_enable" />--> |
|||
|
|||
<android.support.v7.preference.SwitchPreferenceCompat |
|||
android:defaultValue="true" |
|||
android:key="pref_notification_vibration_enable_key" |
|||
android:summary="@string/pref_summary_notification_vibration_enable" |
|||
android:title="@string/pref_title_notification_vibration_enable" /> |
|||
|
|||
<Preference |
|||
android:key="pref_notifications_select_sound_key" |
|||
android:summary="@string/pref_summary_notifications_sound" |
|||
android:title="@string/pref_title_notifications_sound" /> |
|||
|
|||
</android.support.v7.preference.PreferenceCategory> |
|||
|
|||
<android.support.v7.preference.PreferenceCategory android:title="@string/pref_category_posting"> |
|||
|
|||
<android.support.v7.preference.SwitchPreferenceCompat |
|||
android:defaultValue="true" |
|||
android:key="pref_posting_app_signature_enable_key" |
|||
android:summary="@string/pref_summary_posting_app_signature_enable" |
|||
android:title="@string/pref_title_posting_app_signature_enable" /> |
|||
|
|||
</android.support.v7.preference.PreferenceCategory> |
|||
|
|||
</android.support.v7.preference.PreferenceScreen> |
Loading…
Reference in new issue