Skip to content

Commit 4f9c7b7

Browse files
committed
Merge branch 'restore' into bug-fixes
2 parents ec2e821 + a1eb32b commit 4f9c7b7

15 files changed

Lines changed: 347 additions & 41 deletions

source-code/app/src/main/java/org/buildmlearn/toolkit/activity/TemplateEditor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ private void setUpTemplateEditor() {
299299
try {
300300
Object templateObject = templateClass.newInstance();
301301
selectedTemplate = (TemplateInterface) templateObject;
302+
selectedTemplate.setTemplateId(templateId);
302303
populateListView(selectedTemplate.newTemplateEditorAdapter(this));
303304
if (templateId == 5) {
304305
populateMetaView(selectedTemplate.newMetaEditorAdapter(this));
@@ -410,7 +411,7 @@ public void onClick(DialogInterface dialog, int id) {
410411
String aliasName = getString(R.string.alias_name);
411412
String aliaspassword = getString(R.string.alias_password);
412413
KeyStoreDetails keyStoreDetails = new KeyStoreDetails("TestKeyStore.jks", keyPassword, aliasName, aliaspassword);
413-
SignerThread signer = new SignerThread(getApplicationContext(), selectedTemplate.getApkFilePath(), saveProject(), keyStoreDetails, selectedTemplate.getAssetsFilePath(), selectedTemplate.getAssetsFileName());
414+
SignerThread signer = new SignerThread(getApplicationContext(), selectedTemplate.getApkFilePath(), saveProject(), keyStoreDetails, selectedTemplate.getAssetsFilePath(), selectedTemplate.getAssetsFileName(TemplateEditor.this));
414415

415416
mApkGenerationDialog = new MaterialDialog.Builder(TemplateEditor.this)
416417
.title(R.string.apk_progress_dialog)
@@ -471,7 +472,7 @@ public void onFail(Exception e) {
471472
aliasName = getString(R.string.alias_name);
472473
aliaspassword = getString(R.string.alias_password);
473474
keyStoreDetails = new KeyStoreDetails("TestKeyStore.jks", keyPassword, aliasName, aliaspassword);
474-
signer = new SignerThread(getApplicationContext(), selectedTemplate.getApkFilePath(), saveProject(), keyStoreDetails, selectedTemplate.getAssetsFilePath(), selectedTemplate.getAssetsFileName());
475+
signer = new SignerThread(getApplicationContext(), selectedTemplate.getApkFilePath(), saveProject(), keyStoreDetails, selectedTemplate.getAssetsFilePath(), selectedTemplate.getAssetsFileName(TemplateEditor.this));
475476

476477
mApkGenerationDialog = new MaterialDialog.Builder(TemplateEditor.this)
477478
.title(R.string.apk_progress_dialog)
Lines changed: 103 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,61 @@
11
package org.buildmlearn.toolkit.fragment;
22

3+
import android.app.Activity;
4+
import android.content.Intent;
35
import android.content.SharedPreferences;
6+
import android.net.Uri;
47
import android.os.Bundle;
58
import android.preference.Preference;
69
import android.preference.PreferenceFragment;
710
import android.preference.PreferenceManager;
811
import android.widget.Toast;
912

13+
import com.afollestad.materialdialogs.MaterialDialog;
14+
1015
import org.buildmlearn.toolkit.R;
1116
import org.buildmlearn.toolkit.ToolkitApplication;
17+
import org.buildmlearn.toolkit.activity.DeepLinkerActivity;
18+
import org.buildmlearn.toolkit.utilities.RestoreThread;
1219

1320
import java.io.File;
21+
import java.io.FileNotFoundException;
22+
import java.io.InputStream;
1423

1524
/**
1625
* Created by abhishek on 21/06/15 at 9:51 PM.
1726
*/
1827
public class SettingsFragment extends PreferenceFragment {
1928

29+
private static final int REQUEST_PICK_APK = 9985;
2030
private Preference prefUsername;
2131
private SharedPreferences preferences;
2232

33+
public static float deleteDirectory(File file, float size) {
34+
if (file.exists()) {
35+
File[] listFiles = file.listFiles();
36+
if (listFiles == null) return 0;
37+
38+
for (int i = 0; i < listFiles.length; i++) {
39+
if (listFiles[i].isDirectory()) {
40+
size += deleteDirectory(listFiles[i], 0);
41+
} else {
42+
size += listFiles[i].length();
43+
listFiles[i].delete();
44+
}
45+
}
46+
}
47+
file.delete();
48+
return (size);
49+
}
50+
2351
@Override
2452
public void onCreate(Bundle savedInstanceState) {
2553
super.onCreate(savedInstanceState);
2654
addPreferencesFromResource(R.xml.fragment_settings);
2755
preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
2856

29-
Preference button = findPreference(getString(R.string.key_delete_temporary_files));
30-
button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
57+
Preference deleteTempFiles = findPreference(getString(R.string.key_delete_temporary_files));
58+
deleteTempFiles.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
3159
@Override
3260
public boolean onPreferenceClick(Preference preference) {
3361

@@ -43,6 +71,15 @@ public boolean onPreferenceClick(Preference preference) {
4371
}
4472
});
4573

74+
Preference restoreProject = findPreference(getString(R.string.key_restore_project));
75+
restoreProject.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
76+
@Override
77+
public boolean onPreferenceClick(Preference preference) {
78+
initRestoreProjectDialog();
79+
return true;
80+
}
81+
});
82+
4683
prefUsername = findPreference(getString(R.string.key_user_name));
4784
prefUsername.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
4885
@Override
@@ -54,22 +91,72 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
5491
prefUsername.setSummary(preferences.getString(getString(R.string.key_user_name), ""));
5592
}
5693

57-
public static float deleteDirectory(File file, float size) {
58-
if (file.exists()) {
59-
File[] listFiles = file.listFiles();
60-
if (listFiles == null) return 0;
94+
void initRestoreProjectDialog() {
95+
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
96+
intent.setType("application/*");
97+
startActivityForResult(intent, REQUEST_PICK_APK);
98+
}
99+
100+
@Override
101+
public void onActivityResult(int requestCode, int resultCode, Intent data) {
102+
super.onActivityResult(requestCode, resultCode, data);
103+
104+
switch (requestCode) {
105+
case REQUEST_PICK_APK:
106+
107+
if (resultCode == Activity.RESULT_OK) {
108+
109+
try {
110+
final MaterialDialog processDiaglog = new MaterialDialog.Builder(getActivity())
111+
.title(R.string.restore_progress_dialog)
112+
.content(R.string.restore_msg)
113+
.cancelable(false)
114+
.progress(true, 0)
115+
.show();
116+
117+
118+
InputStream inputStream = getActivity().getContentResolver().openInputStream(data.getData());
119+
RestoreThread restore = new RestoreThread(getActivity(), inputStream);
120+
121+
restore.setRestoreListener(new RestoreThread.OnRestoreComplete() {
122+
@Override
123+
public void onSuccess(File assetFile) {
124+
processDiaglog.dismiss();
125+
Intent intentProject = new Intent(getActivity(), DeepLinkerActivity.class);
126+
intentProject.setData(Uri.fromFile(assetFile));
127+
getActivity().startActivity(intentProject);
128+
}
129+
130+
@Override
131+
public void onFail(Exception e) {
132+
processDiaglog.dismiss();
133+
final MaterialDialog dialog = new MaterialDialog.Builder(getActivity())
134+
.title(R.string.dialog_restore_title)
135+
.content(R.string.dialog_restore_failed)
136+
.positiveText(R.string.info_template_ok)
137+
.build();
138+
dialog.show();
139+
}
140+
});
141+
142+
restore.start();
143+
144+
} catch (FileNotFoundException e) {
145+
e.printStackTrace();
146+
147+
final MaterialDialog dialog = new MaterialDialog.Builder(getActivity())
148+
.title(R.string.dialog_restore_title)
149+
.content(R.string.dialog_restore_fileerror)
150+
.positiveText(R.string.info_template_ok)
151+
.build();
152+
dialog.show();
153+
}
154+
61155

62-
for (int i = 0; i < listFiles.length; i++) {
63-
if (listFiles[i].isDirectory()) {
64-
size += deleteDirectory(listFiles[i], 0);
65-
} else {
66-
size += listFiles[i].length();
67-
listFiles[i].delete();
68156
}
69-
}
157+
158+
break;
70159
}
71-
file.delete();
72-
return (size);
73-
}
74160

161+
}
75162
}

source-code/app/src/main/java/org/buildmlearn/toolkit/model/Template.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@
1818
*/
1919
public enum Template {
2020

21-
BASIC_M_LEARNING(R.string.basic_m_learning_title, R.string.basic_m_learning_description, R.drawable.info_template, R.string.info_template, InfoTemplate.class),
22-
LEARN_SPELLING(R.string.learn_spellings_title, R.string.learn_spellings_description, R.drawable.basic_m_learning, R.string.spelling_type, LearnSpellingTemplate.class),
23-
QUIZ(R.string.quiz_title, R.string.quiz_description, R.drawable.basic_m_learning, R.string.quiz_type, QuizTemplate.class),
24-
FLASH_CARD(R.string.flash_card_title, R.string.flash_card_description, R.drawable.basic_m_learning, R.string.flash_card_template, FlashTemplate.class),
25-
VIDEO_COLLECTION(R.string.video_collection_title, R.string.video_collection_description, R.drawable.video_collection, R.string.video_collection_template, VideoCollectionTemplate.class),
26-
COMPREHENSION(R.string.comprehension_title, R.string.comprehension_description, R.drawable.comprehension, R.string.comprehension_template, ComprehensionTemplate.class);
21+
BASIC_M_LEARNING(R.string.basic_m_learning_title, R.string.basic_m_learning_description, R.drawable.basic_m_learning, R.string.info_template, InfoTemplate.class, R.string.info_assets_name),
22+
LEARN_SPELLING(R.string.learn_spellings_title, R.string.learn_spellings_description, R.drawable.basic_m_learning, R.string.spelling_type, LearnSpellingTemplate.class, R.string.spelling_assets_name),
23+
QUIZ(R.string.quiz_title, R.string.quiz_description, R.drawable.basic_m_learning, R.string.quiz_type, QuizTemplate.class, R.string.quiz_assets_name),
24+
FLASH_CARD(R.string.flash_card_title, R.string.flash_card_description, R.drawable.basic_m_learning, R.string.flash_card_template, FlashTemplate.class, R.string.flash_assets_name),
25+
VIDEO_COLLECTION(R.string.video_collection_title, R.string.video_collection_description, R.drawable.video_collection, R.string.video_collection_template, VideoCollectionTemplate.class, R.string.video_assets_name),
26+
COMPREHENSION(R.string.comprehension_title, R.string.comprehension_description, R.drawable.comprehension, R.string.comprehension_template, ComprehensionTemplate.class, R.string.comprehension_assets_name);
2727

2828
@StringRes
2929
final
@@ -42,12 +42,18 @@ public enum Template {
4242
int description;
4343
private final Class<? extends TemplateInterface> templateClass;
4444

45-
Template(@StringRes int title, @StringRes int description, @DrawableRes int image, @StringRes int type, Class<? extends TemplateInterface> templateClass) {
45+
private
46+
@StringRes
47+
final
48+
int assetsName;
49+
50+
Template(@StringRes int title, @StringRes int description, @DrawableRes int image, @StringRes int type, Class<? extends TemplateInterface> templateClass, @StringRes int assetsName) {
4651
this.image = image;
4752
this.title = title;
4853
this.description = description;
4954
this.type = type;
5055
this.templateClass = templateClass;
56+
this.assetsName = assetsName;
5157
}
5258

5359
public int getImage() {
@@ -69,4 +75,8 @@ public Class<? extends TemplateInterface> getTemplateClass() {
6975
public int getType() {
7076
return type;
7177
}
78+
79+
public int getAssetsName() {
80+
return assetsName;
81+
}
7282
}

source-code/app/src/main/java/org/buildmlearn/toolkit/model/TemplateInterface.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ public interface TemplateInterface extends Serializable {
5656
*/
5757
String onAttach();
5858

59+
/**
60+
* @brief Set templateId,that can be used to get Info about current template from enum Template
61+
* @param templateId
62+
*/
63+
void setTemplateId(int templateId);
64+
5965
/**
6066
* @return Title as a string
6167
* @brief Used to get the title of the templaye. Mainly used to update ActionBar in Template Editor
@@ -103,10 +109,11 @@ public interface TemplateInterface extends Serializable {
103109
android.support.v4.app.Fragment getSimulatorFragment(String filePathWithName);
104110

105111
/**
112+
* @param context For obtaining String from StringRes
106113
* @return Asset file name
107114
* @brief Name of the xml file congaing template data in the assets folders in the build apk.
108115
*/
109-
String getAssetsFileName();
116+
String getAssetsFileName(Context context);
110117

111118
/**
112119
* @return Assets folder path

source-code/app/src/main/java/org/buildmlearn/toolkit/templates/ComprehensionTemplate.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import org.buildmlearn.toolkit.R;
1818
import org.buildmlearn.toolkit.comprehensiontemplate.fragment.SplashFragment;
19+
import org.buildmlearn.toolkit.model.Template;
1920
import org.buildmlearn.toolkit.model.TemplateInterface;
2021
import org.buildmlearn.toolkit.utilities.FileDialog;
2122
import org.buildmlearn.toolkit.views.TextViewPlus;
@@ -41,6 +42,7 @@ public class ComprehensionTemplate implements TemplateInterface {
4142
transient private ComprehensionMetaAdapter metaAdapter;
4243
private ArrayList<ComprehensionModel> comprehensionData;
4344
transient private Context mContext;
45+
private int templateId;
4446

4547
public ComprehensionTemplate() {
4648
comprehensionData = new ArrayList<>();
@@ -472,8 +474,14 @@ public android.support.v4.app.Fragment getSimulatorFragment(String filePathWithN
472474
}
473475

474476
@Override
475-
public String getAssetsFileName() {
476-
return "comprehension_content.xml";
477+
public void setTemplateId(int templateId) {
478+
this.templateId = templateId;
479+
}
480+
481+
@Override
482+
public String getAssetsFileName(Context context) {
483+
Template[] templates = Template.values();
484+
return context.getString(templates[templateId].getAssetsName());
477485
}
478486

479487
@Override

source-code/app/src/main/java/org/buildmlearn/toolkit/templates/FlashTemplate.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.buildmlearn.toolkit.R;
2424
import org.buildmlearn.toolkit.ToolkitApplication;
2525
import org.buildmlearn.toolkit.flashcardtemplate.StartFragment;
26+
import org.buildmlearn.toolkit.model.Template;
2627
import org.buildmlearn.toolkit.model.TemplateInterface;
2728
import org.w3c.dom.Document;
2829
import org.w3c.dom.Element;
@@ -45,6 +46,7 @@ public class FlashTemplate implements TemplateInterface {
4546
transient private ImageView mBannerImage;
4647
private boolean mIsPhotoAttached;
4748
transient private FlashCardAdapter mAdapter;
49+
private int templateId;
4850

4951
public FlashTemplate() {
5052
mData = new ArrayList<>();
@@ -100,6 +102,11 @@ public String onAttach() {
100102
return "Flash card template";
101103
}
102104

105+
@Override
106+
public void setTemplateId(int templateId) {
107+
this.templateId = templateId;
108+
}
109+
103110
@Override
104111
public String getTitle() {
105112
return "Flash Template";
@@ -288,8 +295,9 @@ public android.support.v4.app.Fragment getSimulatorFragment(String filePathWithN
288295
}
289296

290297
@Override
291-
public String getAssetsFileName() {
292-
return "flash_content.xml";
298+
public String getAssetsFileName(Context context) {
299+
Template[] templates = Template.values();
300+
return context.getString(templates[templateId].getAssetsName());
293301
}
294302

295303
@Override

source-code/app/src/main/java/org/buildmlearn/toolkit/templates/InfoTemplate.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import org.buildmlearn.toolkit.R;
1515
import org.buildmlearn.toolkit.infotemplate.fragment.SplashFragment;
16+
import org.buildmlearn.toolkit.model.Template;
1617
import org.buildmlearn.toolkit.model.TemplateInterface;
1718
import org.w3c.dom.Document;
1819
import org.w3c.dom.Element;
@@ -28,6 +29,7 @@ public class InfoTemplate implements TemplateInterface {
2829

2930
transient private InfoAdapter adapter;
3031
private ArrayList<InfoModel> infoData;
32+
private int templateId;
3133

3234
public InfoTemplate() {
3335
infoData = new ArrayList<>();
@@ -97,6 +99,11 @@ public String onAttach() {
9799
return "Info Template";
98100
}
99101

102+
@Override
103+
public void setTemplateId(int templateId) {
104+
this.templateId = templateId;
105+
}
106+
100107
@Override
101108
public String getTitle() {
102109
return "Info Template";
@@ -209,8 +216,9 @@ public android.support.v4.app.Fragment getSimulatorFragment(String filePathWithN
209216
}
210217

211218
@Override
212-
public String getAssetsFileName() {
213-
return "info_content.xml";
219+
public String getAssetsFileName(Context context) {
220+
Template[] templates = Template.values();
221+
return context.getString(templates[templateId].getAssetsName());
214222
}
215223

216224
@Override

0 commit comments

Comments
 (0)