Skip to content

Commit 6723618

Browse files
committed
Implemented Restore Project from APK
1 parent 192780e commit 6723618

12 files changed

Lines changed: 304 additions & 19 deletions

File tree

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
@@ -212,6 +212,7 @@ protected void setUpTemplateEditor() {
212212
try {
213213
Object templateObject = templateClass.newInstance();
214214
selectedTemplate = (TemplateInterface) templateObject;
215+
selectedTemplate.setTemplateId(templateId);
215216
populateListView(selectedTemplate.newTemplateEditorAdapter(this));
216217
setUpActionBar();
217218
} catch (InstantiationException e) {
@@ -315,7 +316,7 @@ public void onClick(DialogInterface dialog, int id) {
315316
String aliasName = getString(R.string.alias_name);
316317
String aliaspassword = getString(R.string.alias_password);
317318
KeyStoreDetails keyStoreDetails = new KeyStoreDetails("TestKeyStore.jks", keyPassword, aliasName, aliaspassword);
318-
SignerThread signer = new SignerThread(getApplicationContext(), selectedTemplate.getApkFilePath(), saveProject(), keyStoreDetails, selectedTemplate.getAssetsFilePath(), selectedTemplate.getAssetsFileName());
319+
SignerThread signer = new SignerThread(getApplicationContext(), selectedTemplate.getApkFilePath(), saveProject(), keyStoreDetails, selectedTemplate.getAssetsFilePath(), selectedTemplate.getAssetsFileName(TemplateEditor.this));
319320

320321
mApkGenerationDialog = new MaterialDialog.Builder(TemplateEditor.this)
321322
.title(R.string.apk_progress_dialog)
@@ -374,7 +375,7 @@ public void onFail(Exception e) {
374375
aliasName = getString(R.string.alias_name);
375376
aliaspassword = getString(R.string.alias_password);
376377
keyStoreDetails = new KeyStoreDetails("TestKeyStore.jks", keyPassword, aliasName, aliaspassword);
377-
signer = new SignerThread(getApplicationContext(), selectedTemplate.getApkFilePath(), saveProject(), keyStoreDetails, selectedTemplate.getAssetsFilePath(), selectedTemplate.getAssetsFileName());
378+
signer = new SignerThread(getApplicationContext(), selectedTemplate.getApkFilePath(), saveProject(), keyStoreDetails, selectedTemplate.getAssetsFilePath(), selectedTemplate.getAssetsFileName(TemplateEditor.this));
378379

379380
mApkGenerationDialog = new MaterialDialog.Builder(TemplateEditor.this)
380381
.title(R.string.apk_progress_dialog)

source-code/app/src/main/java/org/buildmlearn/toolkit/fragment/SettingsFragment.java

Lines changed: 94 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,25 @@
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;
16+
import org.buildmlearn.toolkit.activity.DeepLinkerActivity;
17+
import org.buildmlearn.toolkit.utilities.RestoreThread;
18+
19+
import java.io.File;
20+
import java.io.FileInputStream;
21+
import java.io.FileNotFoundException;
22+
import java.io.InputStream;
1123

1224
/**
1325
* Created by abhishek on 21/06/15 at 9:51 PM.
@@ -17,21 +29,32 @@ public class SettingsFragment extends PreferenceFragment {
1729
private Preference prefUsername;
1830
private SharedPreferences preferences;
1931

32+
private static final int REQUEST_PICK_APK = 9985;
33+
2034
@Override
2135
public void onCreate(Bundle savedInstanceState) {
2236
super.onCreate(savedInstanceState);
2337
addPreferencesFromResource(R.xml.fragment_settings);
2438
preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
2539

26-
Preference button = findPreference(getString(R.string.key_delete_temporary_files));
27-
button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
40+
Preference deleteTempFiles = findPreference(getString(R.string.key_delete_temporary_files));
41+
deleteTempFiles.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
2842
@Override
2943
public boolean onPreferenceClick(Preference preference) {
3044
Toast.makeText(SettingsFragment.this.getActivity(), "Deleting temp files", Toast.LENGTH_SHORT).show();
3145
return true;
3246
}
3347
});
3448

49+
Preference restoreProject = findPreference(getString(R.string.key_restore_project));
50+
restoreProject.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
51+
@Override
52+
public boolean onPreferenceClick(Preference preference) {
53+
initRestoreProjectDialog();
54+
return true;
55+
}
56+
});
57+
3558
prefUsername = findPreference(getString(R.string.key_user_name));
3659
}
3760

@@ -40,4 +63,73 @@ public void onResume() {
4063
super.onResume();
4164
prefUsername.setSummary(preferences.getString(getString(R.string.key_user_name), ""));
4265
}
66+
67+
void initRestoreProjectDialog() {
68+
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
69+
intent.setType("application/*");
70+
startActivityForResult(intent, REQUEST_PICK_APK);
71+
}
72+
73+
@Override
74+
public void onActivityResult(int requestCode, int resultCode, Intent data) {
75+
super.onActivityResult(requestCode, resultCode, data);
76+
77+
switch (requestCode) {
78+
case REQUEST_PICK_APK :
79+
80+
if (resultCode == Activity.RESULT_OK) {
81+
82+
try {
83+
final MaterialDialog processDiaglog = new MaterialDialog.Builder(getActivity())
84+
.title(R.string.restore_progress_dialog)
85+
.content(R.string.restore_msg)
86+
.cancelable(false)
87+
.progress(true, 0)
88+
.show();
89+
90+
91+
InputStream inputStream = getActivity().getContentResolver().openInputStream(data.getData());
92+
RestoreThread restore = new RestoreThread(getActivity(), inputStream);
93+
94+
restore.setRestoreListener(new RestoreThread.OnRestoreComplete() {
95+
@Override
96+
public void onSuccess(File assetFile) {
97+
processDiaglog.dismiss();
98+
Intent intentProject = new Intent(getActivity(), DeepLinkerActivity.class);
99+
intentProject.setData(Uri.fromFile(assetFile));
100+
getActivity().startActivity(intentProject);
101+
}
102+
103+
@Override
104+
public void onFail(Exception e) {
105+
processDiaglog.dismiss();
106+
final MaterialDialog dialog = new MaterialDialog.Builder(getActivity())
107+
.title(R.string.dialog_restore_title)
108+
.content(R.string.dialog_restore_failed)
109+
.positiveText(R.string.OkButtonLabel)
110+
.build();
111+
dialog.show();
112+
}
113+
});
114+
115+
restore.start();
116+
117+
} catch (FileNotFoundException e) {
118+
e.printStackTrace();
119+
120+
final MaterialDialog dialog = new MaterialDialog.Builder(getActivity())
121+
.title(R.string.dialog_restore_title)
122+
.content(R.string.dialog_restore_fileerror)
123+
.positiveText(R.string.OkButtonLabel)
124+
.build();
125+
dialog.show();
126+
}
127+
128+
129+
}
130+
131+
break;
132+
}
133+
134+
}
43135
}

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

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
*/
1717
public enum Template {
1818

19-
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),
20-
LEARN_SPELLING(R.string.learn_spellings_title, R.string.learn_spellings_description, R.drawable.basic_m_learning, R.string.spelling_type, LearnSpellingTemplate.class),
21-
QUIZ(R.string.quiz_title, R.string.quiz_description, R.drawable.basic_m_learning, R.string.quiz_type, QuizTemplate.class),
22-
FLASH_CARD(R.string.flash_card_title, R.string.flash_card_description, R.drawable.basic_m_learning, R.string.flash_card_template, FlashTemplate.class);
19+
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),
20+
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),
21+
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),
22+
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);
2323

2424
@StringRes
2525
int type;
@@ -33,13 +33,17 @@ public enum Template {
3333
@StringRes
3434
int description;
3535
private Class<? extends TemplateInterface> templateClass;
36+
private
37+
@StringRes
38+
int assetsName;
3639

37-
Template(@StringRes int title, @StringRes int description, @DrawableRes int image, @StringRes int type, Class<? extends TemplateInterface> templateClass) {
40+
Template(@StringRes int title, @StringRes int description, @DrawableRes int image, @StringRes int type, Class<? extends TemplateInterface> templateClass, @StringRes int assetsName) {
3841
this.image = image;
3942
this.title = title;
4043
this.description = description;
4144
this.type = type;
4245
this.templateClass = templateClass;
46+
this.assetsName = assetsName;
4347
}
4448

4549
public int getImage() {
@@ -61,4 +65,8 @@ public Class<? extends TemplateInterface> getTemplateClass() {
6165
public int getType() {
6266
return type;
6367
}
68+
69+
public int getAssetsName() {
70+
return assetsName;
71+
}
6472
}

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ public interface TemplateInterface extends Serializable {
4242
*/
4343
String onAttach();
4444

45+
/**
46+
* @brief Set templateId,that can be used to get Info about current template from enum Template
47+
* @param templateId
48+
*/
49+
void setTemplateId(int templateId);
4550
/**
4651
* @return Title as a string
4752
* @brief Used to get the title of the templaye. Mainly used to update ActionBar in Template Editor
@@ -81,10 +86,11 @@ public interface TemplateInterface extends Serializable {
8186
Fragment getSimulatorFragment(String filePathWithName);
8287

8388
/**
89+
* @param context For obtaining String from StringRes
8490
* @return Asset file name
8591
* @brief Name of the xml file congaing template data in the assets folders in the build apk.
8692
*/
87-
String getAssetsFileName();
93+
String getAssetsFileName(Context context);
8894

8995
/**
9096
* @return Assets folder path

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
@@ -24,6 +24,7 @@
2424
import org.buildmlearn.toolkit.R;
2525
import org.buildmlearn.toolkit.ToolkitApplication;
2626
import org.buildmlearn.toolkit.flashcardtemplate.StartFragment;
27+
import org.buildmlearn.toolkit.model.Template;
2728
import org.buildmlearn.toolkit.model.TemplateInterface;
2829
import org.w3c.dom.Document;
2930
import org.w3c.dom.Element;
@@ -46,6 +47,7 @@ public class FlashTemplate implements TemplateInterface {
4647
transient private ImageView mBannerImage;
4748
private boolean mIsPhotoAttached;
4849
transient private FlashCardAdapter mAdapter;
50+
private int templateId;
4951

5052
public FlashTemplate() {
5153
mData = new ArrayList<>();
@@ -84,6 +86,11 @@ public String onAttach() {
8486
return "Flash card template";
8587
}
8688

89+
@Override
90+
public void setTemplateId(int templateId) {
91+
this.templateId = templateId;
92+
}
93+
8794
@Override
8895
public String getTitle() {
8996
return "Flash Template";
@@ -265,8 +272,9 @@ public Fragment getSimulatorFragment(String filePathWithName) {
265272
}
266273

267274
@Override
268-
public String getAssetsFileName() {
269-
return "flash_content.xml";
275+
public String getAssetsFileName(Context context) {
276+
Template[] templates = Template.values();
277+
return context.getString(templates[templateId].getAssetsName());
270278
}
271279

272280
@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
@@ -14,6 +14,7 @@
1414

1515
import org.buildmlearn.toolkit.R;
1616
import org.buildmlearn.toolkit.infotemplate.TFTFragment;
17+
import org.buildmlearn.toolkit.model.Template;
1718
import org.buildmlearn.toolkit.model.TemplateInterface;
1819
import org.w3c.dom.Document;
1920
import org.w3c.dom.Element;
@@ -29,6 +30,7 @@ public class InfoTemplate implements TemplateInterface {
2930

3031
transient private InfoAdapter adapter;
3132
private ArrayList<InfoModel> infoData;
33+
private int templateId;
3234

3335
public InfoTemplate() {
3436
infoData = new ArrayList<>();
@@ -81,6 +83,11 @@ public String onAttach() {
8183
return "Info Template";
8284
}
8385

86+
@Override
87+
public void setTemplateId(int templateId) {
88+
this.templateId = templateId;
89+
}
90+
8491
@Override
8592
public String getTitle() {
8693
return "Info Template";
@@ -186,8 +193,9 @@ public Fragment getSimulatorFragment(String filePathWithName) {
186193
}
187194

188195
@Override
189-
public String getAssetsFileName() {
190-
return "info_content.xml";
196+
public String getAssetsFileName(Context context) {
197+
Template[] templates = Template.values();
198+
return context.getString(templates[templateId].getAssetsName());
191199
}
192200

193201
@Override

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

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

1515
import org.buildmlearn.toolkit.R;
1616
import org.buildmlearn.toolkit.learnspelling.SpellingMainFragment;
17+
import org.buildmlearn.toolkit.model.Template;
1718
import org.buildmlearn.toolkit.model.TemplateInterface;
1819
import org.w3c.dom.Document;
1920
import org.w3c.dom.Element;
@@ -29,6 +30,7 @@ public class LearnSpellingTemplate implements TemplateInterface {
2930

3031
transient private LearnSpellingAdapter adapter;
3132
private ArrayList<LearnSpellingModel> mLearnSpellingData;
33+
private int templateId;
3234

3335
public LearnSpellingTemplate() {
3436
mLearnSpellingData = new ArrayList<>();
@@ -81,6 +83,11 @@ public String onAttach() {
8183
return "Learn Spelling Template";
8284
}
8385

86+
@Override
87+
public void setTemplateId(int templateId) {
88+
this.templateId = templateId;
89+
}
90+
8491
@Override
8592
public String getTitle() {
8693
return "Learn Spelling Template";
@@ -186,8 +193,9 @@ public Fragment getSimulatorFragment(String filePathWithName) {
186193
}
187194

188195
@Override
189-
public String getAssetsFileName() {
190-
return "spelling_content.xml";
196+
public String getAssetsFileName(Context context) {
197+
Template[] templates = Template.values();
198+
return context.getString(templates[templateId].getAssetsName());
191199
}
192200

193201
@Override

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

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.afollestad.materialdialogs.MaterialDialog;
1515

1616
import org.buildmlearn.toolkit.R;
17+
import org.buildmlearn.toolkit.model.Template;
1718
import org.buildmlearn.toolkit.model.TemplateInterface;
1819
import org.buildmlearn.toolkit.quiztemplate.TFTQuizFragment;
1920
import org.w3c.dom.Document;
@@ -32,6 +33,7 @@ public class QuizTemplate implements TemplateInterface {
3233

3334
transient private QuizAdapter mAdapter;
3435
private ArrayList<QuizModel> quizData;
36+
private int templateId;
3537

3638
public QuizTemplate() {
3739
this.quizData = new ArrayList<>();
@@ -71,6 +73,11 @@ public String onAttach() {
7173
return "Quiz Template";
7274
}
7375

76+
@Override
77+
public void setTemplateId(int templateId) {
78+
this.templateId = templateId;
79+
}
80+
7481
@Override
7582
public String getTitle() {
7683
return "Quiz Template";
@@ -271,8 +278,9 @@ public Fragment getSimulatorFragment(String filePathWithName) {
271278
}
272279

273280
@Override
274-
public String getAssetsFileName() {
275-
return "quiz_content.xml";
281+
public String getAssetsFileName(Context context) {
282+
Template[] templates = Template.values();
283+
return context.getString(templates[templateId].getAssetsName());
276284
}
277285

278286
@Override

0 commit comments

Comments
 (0)