Prefs: implement profile export and import

pull/227/head
Georg Lukas 2018-05-25 18:57:56 +02:00
rodzic 17448937b8
commit 5e1efe4bfe
3 zmienionych plików z 59 dodań i 0 usunięć

Wyświetl plik

@ -0,0 +1,8 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/profile_load"
android:title="@string/profile_load"
android:icon="@android:drawable/ic_menu_set_as" />
<item android:id="@+id/profile_export"
android:title="@string/profile_export"
android:icon="@android:drawable/ic_menu_save" />
</menu>

Wyświetl plik

@ -131,6 +131,8 @@
<string name="quit">Quit</string>
<string name="preferences">Preferences</string>
<!-- preferences -->
<string name="profile_load">Load profile...</string>
<string name="profile_export">Export profile...</string>
<string name="p__ham">Amateur Radio</string>
<string name="p_callsign">Callsign</string>
<string name="p_callsign_nossid">Callsign (without SSID)</string>

Wyświetl plik

@ -8,8 +8,35 @@ import _root_.android.preference.Preference
import _root_.android.preference.Preference.OnPreferenceClickListener
import _root_.android.preference.PreferenceActivity
import _root_.android.preference.PreferenceManager
import _root_.android.view.{Menu, MenuItem}
import _root_.android.widget.Toast
import java.text.SimpleDateFormat
import java.io.{PrintWriter, File}
import java.util.Date
import org.json.JSONObject
class PrefsAct extends PreferenceActivity {
def exportPrefs() {
val filename = "profile-%s.aprs".format(new SimpleDateFormat("yyyyMMdd-HHmm").format(new Date()))
val file = new File(Environment.getExternalStorageDirectory(), filename)
try {
val prefs = PreferenceManager.getDefaultSharedPreferences(this)
val json = new JSONObject(prefs.getAll)
val fo = new PrintWriter(file)
fo.println(json.toString(2))
fo.close()
startActivity(Intent.createChooser(new Intent(Intent.ACTION_SEND)
.setType("text/plain")
.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file))
.putExtra(Intent.EXTRA_SUBJECT, filename),
file.toString()))
} catch {
case e : Exception => Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show()
}
}
def fileChooserPreference(pref_name : String, reqCode : Int, titleId : Int) {
findPreference(pref_name).setOnPreferenceClickListener(new OnPreferenceClickListener() {
def onPreferenceClick(preference : Preference) = {
@ -76,7 +103,29 @@ class PrefsAct extends PreferenceActivity {
if (resultCode == android.app.Activity.RESULT_OK && reqCode == 123456) {
} else
if (resultCode == android.app.Activity.RESULT_OK && reqCode == 123457) {
} else
if (resultCode == android.app.Activity.RESULT_OK && reqCode == 123458) {
data.setClass(this, classOf[ProfileImportActivity])
startActivity(data)
} else
super.onActivityResult(reqCode, resultCode, data)
}
override def onCreateOptionsMenu(menu : Menu) : Boolean = {
getMenuInflater().inflate(R.menu.options_prefs, menu)
true
}
override def onOptionsItemSelected(mi : MenuItem) : Boolean = {
mi.getItemId match {
case R.id.profile_load =>
val get_file = new Intent(Intent.ACTION_GET_CONTENT).setType("*/*")
startActivityForResult(Intent.createChooser(get_file,
getString(R.string.profile_import_activity)), 123458)
true
case R.id.profile_export =>
exportPrefs()
true
case _ => super.onOptionsItemSelected(mi)
}
}
}