New material things
@@ -19,8 +19,6 @@
|
||||
|
||||
package sharedcode.turboeditor.activity;
|
||||
|
||||
import android.app.ActionBar;
|
||||
import android.app.Activity;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Context;
|
||||
@@ -36,12 +34,18 @@ import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.app.ActionBarDrawerToggle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.view.MenuItemCompat;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.support.v7.app.ActionBarDrawerToggle;
|
||||
import android.support.v7.widget.ShareActionProvider;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.text.Editable;
|
||||
import android.text.InputType;
|
||||
import android.text.Selection;
|
||||
import android.text.Spannable;
|
||||
import android.text.TextPaint;
|
||||
import android.text.TextUtils;
|
||||
import android.text.TextWatcher;
|
||||
import android.text.method.KeyListener;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
@@ -54,13 +58,16 @@ import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.EditText;
|
||||
import android.widget.HorizontalScrollView;
|
||||
import android.widget.ListView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.faizmalkani.floatingactionbutton.FloatingActionButton;
|
||||
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.sufficientlysecure.rootcommands.Shell;
|
||||
import org.sufficientlysecure.rootcommands.Toolbox;
|
||||
|
||||
@@ -73,6 +80,7 @@ import java.util.regex.Pattern;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
import sharedcode.turboeditor.R;
|
||||
import sharedcode.turboeditor.adapter.AdapterDrawer;
|
||||
import sharedcode.turboeditor.fragment.ChangelogDialog;
|
||||
import sharedcode.turboeditor.fragment.FileInfoDialog;
|
||||
import sharedcode.turboeditor.fragment.FindTextDialog;
|
||||
@@ -108,11 +116,12 @@ import static sharedcode.turboeditor.util.EventBusEvents.APreferenceValueWasChan
|
||||
import static sharedcode.turboeditor.util.EventBusEvents.APreferenceValueWasChanged.Type.THEME_CHANGE;
|
||||
import static sharedcode.turboeditor.util.EventBusEvents.APreferenceValueWasChanged.Type.WRAP_CONTENT;
|
||||
|
||||
public abstract class BaseHomeActivity extends Activity implements FindTextDialog
|
||||
public abstract class BaseHomeActivity extends ActionBarActivity implements FindTextDialog
|
||||
.SearchDialogInterface, GoodScrollView.ScrollInterface, PageSystem.PageSystemInterface,
|
||||
PageSystemButtons.PageButtonsInterface, SeekbarDialog.ISeekbarDialog, SaveFileDialog.ISaveDialog {
|
||||
PageSystemButtons.PageButtonsInterface, SeekbarDialog.ISeekbarDialog, SaveFileDialog.ISaveDialog,
|
||||
AdapterView.OnItemClickListener, AdapterDrawer.Callbacks{
|
||||
|
||||
//region EDITOR VARIABLES
|
||||
//region VARIABLES
|
||||
static final int
|
||||
ID_SELECT_ALL = android.R.id.selectAll;
|
||||
static final int ID_CUT = android.R.id.cut;
|
||||
@@ -160,9 +169,18 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
private PageSystem pageSystem;
|
||||
private PageSystemButtons pageSystemButtons;
|
||||
private String currentEncoding = "UTF-8";
|
||||
private Toolbar toolbar;
|
||||
|
||||
/*
|
||||
Navigation Drawer
|
||||
*/
|
||||
private AdapterDrawer arrayAdapter;
|
||||
private LinkedList<File> files;
|
||||
private ListView listView;
|
||||
//endregion
|
||||
|
||||
//region Activity facts
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
// set the windows background
|
||||
@@ -171,6 +189,8 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
super.onCreate(savedInstanceState);
|
||||
// setup the layout
|
||||
setContentView(R.layout.activity_home);
|
||||
toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
// setup the navigation drawer
|
||||
setupNavigationDrawer();
|
||||
// reset text editor
|
||||
@@ -181,7 +201,7 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
// Open
|
||||
mDrawerLayout.openDrawer(Gravity.START);
|
||||
// Set the default title
|
||||
getActionBar().setTitle(getString(R.string.nome_app_turbo_editor));
|
||||
getSupportActionBar().setTitle(getString(R.string.nome_app_turbo_editor));
|
||||
}
|
||||
// parse the intent
|
||||
parseIntent(getIntent());
|
||||
@@ -201,6 +221,8 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
super.onResume();
|
||||
// Register the Event Bus for events
|
||||
EventBus.getDefault().registerSticky(this);
|
||||
// Refresh the list view
|
||||
refreshList();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -289,7 +311,7 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
hideTextEditor();
|
||||
|
||||
// Set the default title
|
||||
getActionBar().setTitle(getString(R.string.nome_app_turbo_editor));
|
||||
getSupportActionBar().setTitle(getString(R.string.nome_app_turbo_editor));
|
||||
|
||||
EventBus.getDefault().post(new EventBusEvents.ClosedAFile());
|
||||
|
||||
@@ -311,13 +333,15 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
String path = "";
|
||||
if (requestCode == SELECT_FILE_CODE) {
|
||||
path = data.getStringExtra("path");
|
||||
if(TextUtils.isEmpty(path))
|
||||
path = AccessStorageApi.getPath(getBaseContext(), data.getData());
|
||||
}
|
||||
|
||||
if (requestCode == KITKAT_OPEN_REQUEST_CODE) {
|
||||
path = AccessStorageApi.getPath(getBaseContext(), data.getData());
|
||||
}
|
||||
|
||||
if (!path.isEmpty()) {
|
||||
if (!TextUtils.isEmpty(path)) {
|
||||
File file = new File(path);
|
||||
if (file.isFile() && file.exists()) {
|
||||
EventBus.getDefault().postSticky(new EventBusEvents.NewFileToOpen(new File
|
||||
@@ -327,6 +351,15 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
// Path of the file selected
|
||||
String filePath = files.get(position).getAbsolutePath();
|
||||
// Send the event that a file was selected
|
||||
EventBus.getDefault().post(new EventBusEvents.NewFileToOpen(new File(filePath)));
|
||||
}
|
||||
|
||||
//endregion
|
||||
|
||||
//region MENU
|
||||
@@ -343,11 +376,6 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
@Override
|
||||
public boolean onPrepareOptionsMenu(Menu menu) {
|
||||
|
||||
ActionBar ab = getActionBar();
|
||||
if (ab == null)
|
||||
return false;
|
||||
|
||||
|
||||
if (fileOpened && searchingText) {
|
||||
MenuItem imReplace = menu.findItem(R.id.im_replace);
|
||||
MenuItem imPrev = menu.findItem(R.id.im_previous_item);
|
||||
@@ -379,6 +407,16 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
imUndo.setVisible(false);
|
||||
imRedo.setVisible(false);
|
||||
}
|
||||
|
||||
MenuItem item = (MenuItem) menu.findItem(R.id.im_share);
|
||||
ShareActionProvider shareAction = (ShareActionProvider) MenuItemCompat
|
||||
.getActionProvider(item);
|
||||
File f = new File(sFilePath);
|
||||
Intent shareIntent = new Intent();
|
||||
shareIntent.setAction(Intent.ACTION_SEND);
|
||||
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f));
|
||||
shareIntent.setType("text/plain");
|
||||
shareAction.setShareIntent(shareIntent);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -388,7 +426,8 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
int i = item.getItemId();
|
||||
if (mDrawerToggle.onOptionsItemSelected(item)) {
|
||||
mDrawerLayout.closeDrawer(Gravity.RIGHT);
|
||||
Toast.makeText(getBaseContext(), "drawer click", Toast.LENGTH_SHORT).show();
|
||||
mDrawerLayout.closeDrawer(Gravity.END);
|
||||
return true;
|
||||
} else if (i == R.id.im_save) {
|
||||
saveTheFile();
|
||||
@@ -432,15 +471,6 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
//
|
||||
}
|
||||
|
||||
} else if (i == R.id.im_share) {
|
||||
File f = new File(sFilePath);
|
||||
Intent shareIntent = new Intent();
|
||||
shareIntent.setAction(Intent.ACTION_SEND);
|
||||
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f));
|
||||
shareIntent.setType("text/plain");
|
||||
|
||||
startActivity(Intent.createChooser(shareIntent, getString(R.string.share)));
|
||||
|
||||
} else if (i == R.id.im_info) {
|
||||
FileInfoDialog dialogFrag = FileInfoDialog.newInstance(sFilePath);
|
||||
|
||||
@@ -543,25 +573,22 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
*/
|
||||
private void setupNavigationDrawer() {
|
||||
mDrawerLayout = (CustomDrawerLayout) findViewById(R.id.drawer_layout);
|
||||
/* Action Bar */
|
||||
final ActionBar ab = getActionBar();
|
||||
/* Action Bar
|
||||
final ActionBar ab = toolbar;
|
||||
ab.setDisplayHomeAsUpEnabled(true);
|
||||
ab.setHomeButtonEnabled(true);
|
||||
ab.setHomeButtonEnabled(true);*/
|
||||
/* Navigation drawer */
|
||||
mDrawerToggle =
|
||||
new ActionBarDrawerToggle(
|
||||
this,
|
||||
mDrawerLayout,
|
||||
R.drawable.ic_drawer,
|
||||
toolbar,
|
||||
R.string.nome_app_turbo_editor,
|
||||
R.string.nome_app_turbo_editor) {
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void onDrawerOpened(View drawerView) {
|
||||
invalidateOptionsMenu();
|
||||
supportInvalidateOptionsMenu();
|
||||
try {
|
||||
closeKeyBoard();
|
||||
} catch (NullPointerException e) {
|
||||
@@ -569,17 +596,21 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void onDrawerClosed(View view) {
|
||||
invalidateOptionsMenu();
|
||||
supportInvalidateOptionsMenu();
|
||||
}
|
||||
};
|
||||
/* link the mDrawerToggle to the Drawer Layout */
|
||||
mDrawerLayout.setDrawerListener(mDrawerToggle);
|
||||
//mDrawerLayout.setFocusableInTouchMode(false);
|
||||
|
||||
listView = (ListView) findViewById(android.R.id.list);
|
||||
listView.setEmptyView(findViewById(android.R.id.empty));
|
||||
files = new LinkedList<>();
|
||||
arrayAdapter = new AdapterDrawer(this, files, this);
|
||||
listView.setAdapter(arrayAdapter);
|
||||
listView.setOnItemClickListener(this);
|
||||
}
|
||||
|
||||
private void setupTextEditor() {
|
||||
@@ -696,7 +727,7 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
}
|
||||
|
||||
public void updateTextSyntax() {
|
||||
if (!PreferenceHelper.getSyntaxHiglight(getBaseContext()) || mEditor.hasSelection() ||
|
||||
if (!PreferenceHelper.getSyntaxHighlight(getBaseContext()) || mEditor.hasSelection() ||
|
||||
updateHandler == null || colorRunnable_duringEditing == null)
|
||||
return;
|
||||
|
||||
@@ -704,6 +735,48 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
updateHandler.removeCallbacks(colorRunnable_duringScroll);
|
||||
updateHandler.postDelayed(colorRunnable_duringEditing, SYNTAX_DELAY_MILLIS_LONG);
|
||||
}
|
||||
|
||||
private void refreshList(){
|
||||
refreshList(null, false, false);
|
||||
}
|
||||
|
||||
private void refreshList(@Nullable String path, boolean add, boolean delete) {
|
||||
int max_recent_files = 15;
|
||||
if(add)
|
||||
max_recent_files--;
|
||||
|
||||
// File paths saved in preferences
|
||||
String[] savedPaths = PreferenceHelper.getSavedPaths(this);
|
||||
int first_index_of_array = savedPaths.length > max_recent_files ? savedPaths.length - max_recent_files : 0;
|
||||
savedPaths = ArrayUtils.subarray(savedPaths, first_index_of_array, savedPaths.length);
|
||||
// File names for the list
|
||||
files.clear();
|
||||
// StringBuilder that will contain the file paths
|
||||
StringBuilder sb = new StringBuilder();
|
||||
// for cycle to convert paths to names
|
||||
|
||||
for(int i = 0; i < savedPaths.length; i++){
|
||||
String savedPath = savedPaths[i];
|
||||
File file = new File(savedPath);
|
||||
// Check that the file exist
|
||||
if (file.exists()) {
|
||||
if(path != null && path.equals(savedPath) && delete)
|
||||
continue;
|
||||
else {
|
||||
files.addFirst(file);
|
||||
sb.append(savedPath).append(",");
|
||||
}
|
||||
}
|
||||
}
|
||||
if(path != null && !path.isEmpty() && add && !ArrayUtils.contains(savedPaths, path)) {
|
||||
sb.append(path).append(",");
|
||||
files.addFirst(new File(path));
|
||||
}
|
||||
// save list without empty or non existed files
|
||||
PreferenceHelper.setSavedPaths(this, sb);
|
||||
// Set adapter
|
||||
arrayAdapter.notifyDataSetChanged();
|
||||
}
|
||||
//endregion
|
||||
|
||||
//region EVENTBUS
|
||||
@@ -718,8 +791,8 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
|
||||
new AsyncTask<Void, Void, Void>() {
|
||||
|
||||
File file;
|
||||
String message;
|
||||
File file = event.getFile();
|
||||
String message = "";
|
||||
String fileText;
|
||||
String encoding;
|
||||
ProgressDialog progressDialog;
|
||||
@@ -729,8 +802,6 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
super.onPreExecute();
|
||||
// Close the drawer
|
||||
mDrawerLayout.closeDrawer(Gravity.START);
|
||||
file = event.getFile();
|
||||
message = "";
|
||||
progressDialog = new ProgressDialog(BaseHomeActivity.this);
|
||||
progressDialog.setMessage(getString(R.string.please_wait));
|
||||
progressDialog.show();
|
||||
@@ -742,7 +813,7 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
try {
|
||||
boolean isRoot = false;
|
||||
|
||||
if (!file.exists()) {
|
||||
if (!file.exists() || !file.isFile()) {
|
||||
fileText = event.getFileText();
|
||||
return null;
|
||||
}
|
||||
@@ -811,15 +882,20 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
|
||||
String name = FilenameUtils.getName(sFilePath);
|
||||
if (name.isEmpty())
|
||||
getActionBar().setTitle("*");
|
||||
getSupportActionBar().setTitle(R.string.new_file);
|
||||
else
|
||||
getActionBar().setTitle(name);
|
||||
getSupportActionBar().setTitle(name);
|
||||
|
||||
if(!name.isEmpty()) {
|
||||
refreshList(sFilePath, true, false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}.execute();
|
||||
|
||||
EventBus.getDefault().removeStickyEvent(event);
|
||||
|
||||
}
|
||||
|
||||
public void onEvent(EventBusEvents.SavedAFile event) {
|
||||
@@ -833,7 +909,8 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
} catch (NullPointerException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
// Get intent, action and MIME type
|
||||
|
||||
/*// Get intent, action and MIME type
|
||||
final Intent intent = getIntent();
|
||||
final String action = intent.getAction();
|
||||
final String type = intent.getType();
|
||||
@@ -847,7 +924,10 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
setResult(Activity.RESULT_OK, returnIntent);
|
||||
// finish the activity
|
||||
finish();
|
||||
}
|
||||
}*/
|
||||
|
||||
refreshList(event.getPath(), true, false);
|
||||
arrayAdapter.selectView(event.getPath());
|
||||
|
||||
displayInterstitial();
|
||||
}
|
||||
@@ -862,7 +942,9 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
//
|
||||
mDrawerLayout.openDrawer(Gravity.LEFT);
|
||||
//
|
||||
getActionBar().setTitle(getString(R.string.nome_app_turbo_editor));
|
||||
getSupportActionBar().setTitle(getString(R.string.nome_app_turbo_editor));
|
||||
//
|
||||
supportInvalidateOptionsMenu();
|
||||
// Replace fragment
|
||||
hideTextEditor();
|
||||
}
|
||||
@@ -965,14 +1047,22 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onEvent(EventBusEvents.AFileIsSelected event) {
|
||||
arrayAdapter.selectView(event.getPath());
|
||||
|
||||
EventBus.getDefault().removeStickyEvent(event);
|
||||
}
|
||||
|
||||
public void onEvent(EventBusEvents.ClosedAFile event) {
|
||||
arrayAdapter.selectView("");
|
||||
}
|
||||
//endregion
|
||||
|
||||
//region Calls from the layout
|
||||
public void OpenFile(View view) {
|
||||
|
||||
Intent subActivity = new Intent(BaseHomeActivity.this, SelectFileActivity.class);
|
||||
subActivity.putExtra("action", SelectFileActivity.Actions.SelectFile);
|
||||
|
||||
AnimationUtils.startActivityWithScale(this, subActivity, true, SELECT_FILE_CODE, view);
|
||||
}
|
||||
|
||||
@@ -1093,7 +1183,7 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
public void onScrollChanged(int l, int t, int oldl, int oldt) {
|
||||
pageSystemButtons.updateVisibility(Math.abs(t) > 10);
|
||||
|
||||
if (!PreferenceHelper.getSyntaxHiglight(getBaseContext()) || (mEditor.hasSelection() &&
|
||||
if (!PreferenceHelper.getSyntaxHighlight(getBaseContext()) || (mEditor.hasSelection() &&
|
||||
!searchingText) || updateHandler == null || colorRunnable_duringScroll == null)
|
||||
return;
|
||||
|
||||
@@ -1139,8 +1229,16 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
mEditor.canSaveFile = false;
|
||||
if(openNewFile)
|
||||
onEvent(new EventBusEvents.NewFileToOpen(new File(pathOfNewFile)));
|
||||
else
|
||||
onEvent(new EventBusEvents.CannotOpenAFile());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void CancelItem(int position, boolean andCloseOpenedFile) {
|
||||
refreshList(files.get(position).getAbsolutePath(), false, true);
|
||||
if (andCloseOpenedFile)
|
||||
EventBus.getDefault().post(new EventBusEvents.CannotOpenAFile());
|
||||
}
|
||||
//endregion
|
||||
|
||||
public static class Editor extends EditText {
|
||||
@@ -1645,7 +1743,7 @@ public abstract class BaseHomeActivity extends Activity implements FindTextDialo
|
||||
disableTextChangedListener();
|
||||
modified = false;
|
||||
|
||||
if (PreferenceHelper.getSyntaxHiglight(getContext()))
|
||||
if (PreferenceHelper.getSyntaxHighlight(getContext()))
|
||||
setText(highlight(textToUpdate == null ? getEditableText() : Editable.Factory
|
||||
.getInstance().newEditable(textToUpdate), textToUpdate != null));
|
||||
else
|
||||
|
@@ -20,6 +20,7 @@
|
||||
package sharedcode.turboeditor.activity;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.FragmentManager;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
|
@@ -19,11 +19,13 @@
|
||||
|
||||
package sharedcode.turboeditor.activity;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.view.MenuItemCompat;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.support.v7.widget.SearchView;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.text.TextUtils;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
@@ -32,7 +34,6 @@ import android.widget.AdapterView;
|
||||
import android.widget.Filter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.PopupMenu;
|
||||
import android.widget.SearchView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
@@ -61,7 +62,7 @@ import sharedcode.turboeditor.util.AlphanumComparator;
|
||||
import sharedcode.turboeditor.util.Build;
|
||||
import sharedcode.turboeditor.util.ThemeUtils;
|
||||
|
||||
public class SelectFileActivity extends Activity implements SearchView.OnQueryTextListener, AdapterView.OnItemClickListener, EditTextDialog.EditDialogListener {
|
||||
public class SelectFileActivity extends ActionBarActivity implements SearchView.OnQueryTextListener, AdapterView.OnItemClickListener, EditTextDialog.EditDialogListener {
|
||||
private String currentFolder = PreferenceHelper.SD_CARD_ROOT;
|
||||
private ListView listView;
|
||||
private boolean wantAFile = true;
|
||||
@@ -78,7 +79,10 @@ public class SelectFileActivity extends Activity implements SearchView.OnQueryTe
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_select_file);
|
||||
|
||||
getActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
final Actions action = (Actions) getIntent().getExtras().getSerializable("action");
|
||||
wantAFile = action == Actions.SelectFile;
|
||||
|
@@ -30,7 +30,7 @@ import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import sharedcode.turboeditor.R;
|
||||
|
||||
@@ -41,11 +41,11 @@ public class AdapterDrawer extends
|
||||
// Layout Inflater
|
||||
private final LayoutInflater inflater;
|
||||
// List of file details
|
||||
private final ArrayList<File> files;
|
||||
private final List<File> files;
|
||||
private String selectedPath = "";
|
||||
|
||||
public AdapterDrawer(Context context,
|
||||
ArrayList<File> files,
|
||||
List<File> files,
|
||||
Callbacks callbacks) {
|
||||
super(context, R.layout.item_file_list, files);
|
||||
this.files = files;
|
||||
@@ -80,13 +80,9 @@ public class AdapterDrawer extends
|
||||
});
|
||||
|
||||
if (TextUtils.equals(selectedPath, files.get(position).getAbsolutePath())) {
|
||||
hold.nameLabel.setTypeface(hold.nameLabel.getTypeface(), Typeface.BOLD);
|
||||
convertView.setBackgroundColor((convertView.getResources()
|
||||
.getColor(R.color.item_selected)));
|
||||
hold.nameLabel.setTypeface(null, Typeface.BOLD);
|
||||
} else {
|
||||
hold.nameLabel.setTypeface(hold.nameLabel.getTypeface(), Typeface.NORMAL);
|
||||
convertView.setBackgroundColor((convertView.getResources()
|
||||
.getColor(android.R.color.transparent)));
|
||||
hold.nameLabel.setTypeface(null, Typeface.NORMAL);
|
||||
}
|
||||
|
||||
} else {
|
||||
@@ -105,12 +101,8 @@ public class AdapterDrawer extends
|
||||
|
||||
if (TextUtils.equals(selectedPath, files.get(position).getAbsolutePath())) {
|
||||
hold.nameLabel.setTypeface(null, Typeface.BOLD);
|
||||
convertView.setBackgroundColor((convertView.getResources()
|
||||
.getColor(R.color.item_selected)));
|
||||
} else {
|
||||
hold.nameLabel.setTypeface(null, Typeface.NORMAL);
|
||||
convertView.setBackgroundColor((convertView.getResources()
|
||||
.getColor(android.R.color.transparent)));
|
||||
}
|
||||
}
|
||||
return convertView;
|
||||
|
@@ -32,6 +32,7 @@ import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
|
||||
import sharedcode.turboeditor.R;
|
||||
import sharedcode.turboeditor.views.DialogHelper;
|
||||
|
||||
// ...
|
||||
public class EditTextDialog extends DialogFragment implements TextView.OnEditorActionListener {
|
||||
@@ -55,22 +56,25 @@ public class EditTextDialog extends DialogFragment implements TextView.OnEditorA
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
|
||||
final Actions action = (Actions) getArguments().getSerializable("action");
|
||||
final String hint;
|
||||
final String title;
|
||||
switch (action) {
|
||||
case NewFile:
|
||||
hint = getString(R.string.file);
|
||||
title = getString(R.string.file);
|
||||
break;
|
||||
case NewFolder:
|
||||
hint = getString(R.string.folder);
|
||||
title = getString(R.string.folder);
|
||||
break;
|
||||
default:
|
||||
hint = null;
|
||||
title = null;
|
||||
break;
|
||||
}
|
||||
|
||||
final View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_fragment_edittext, null);
|
||||
View view = new DialogHelper.Builder(getActivity())
|
||||
.setTitle(title)
|
||||
.setView(R.layout.dialog_fragment_edittext)
|
||||
.createSkeletonView();
|
||||
this.mEditText = (EditText) view.findViewById(android.R.id.edit);
|
||||
this.mEditText.setHint(hint);
|
||||
this.mEditText.setHint(R.string.name);
|
||||
|
||||
// Show soft keyboard automatically
|
||||
this.mEditText.setText(getArguments().getString("hint"));
|
||||
|
@@ -23,12 +23,12 @@ import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.app.DialogFragment;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.SwitchCompat;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.ListView;
|
||||
import android.widget.Switch;
|
||||
|
||||
import org.mozilla.universalchardet.Constants;
|
||||
|
||||
@@ -77,7 +77,7 @@ public class EncodingDialog extends DialogFragment implements AdapterView.OnItem
|
||||
|
||||
final View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_encoding_list, null);
|
||||
list = (ListView) view.findViewById(android.R.id.list);
|
||||
Switch autoencoding = (Switch) view.findViewById(android.R.id.checkbox);
|
||||
SwitchCompat autoencoding = (SwitchCompat) view.findViewById(android.R.id.checkbox);
|
||||
autoencoding.setChecked(PreferenceHelper.getAutoEncoding(getActivity()));
|
||||
|
||||
autoencoding.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
|
@@ -34,6 +34,7 @@ import java.util.Date;
|
||||
|
||||
import sharedcode.turboeditor.R;
|
||||
import sharedcode.turboeditor.adapter.AdapterTwoItem;
|
||||
import sharedcode.turboeditor.views.DialogHelper;
|
||||
|
||||
// ...
|
||||
public class FileInfoDialog extends DialogFragment {
|
||||
@@ -49,7 +50,12 @@ public class FileInfoDialog extends DialogFragment {
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
|
||||
final View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_fragment_file_info, null);
|
||||
View view = new DialogHelper.Builder(getActivity())
|
||||
.setTitle(R.string.info)
|
||||
.setView(R.layout.dialog_fragment_file_info)
|
||||
.createSkeletonView();
|
||||
//final View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_fragment_file_info, null);
|
||||
|
||||
ListView list = (ListView) view.findViewById(android.R.id.list);
|
||||
|
||||
File file = new File(getArguments().getString("filePath"));
|
||||
@@ -76,8 +82,8 @@ public class FileInfoDialog extends DialogFragment {
|
||||
|
||||
list.setAdapter(new AdapterTwoItem(getActivity(), lines1, lines2));
|
||||
|
||||
|
||||
return new AlertDialog.Builder(getActivity())
|
||||
//.setTitle(title)
|
||||
.setView(view)
|
||||
.setPositiveButton(android.R.string.ok,
|
||||
new DialogInterface.OnClickListener() {
|
||||
|
@@ -1,198 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2014 Vlad Mihalachi
|
||||
*
|
||||
* This file is part of Turbo Editor.
|
||||
*
|
||||
* Turbo Editor 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.
|
||||
*
|
||||
* Turbo Editor 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 sharedcode.turboeditor.fragment;
|
||||
|
||||
import android.app.Fragment;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ListView;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
import sharedcode.turboeditor.R;
|
||||
import sharedcode.turboeditor.adapter.AdapterDrawer;
|
||||
import sharedcode.turboeditor.preferences.PreferenceHelper;
|
||||
import sharedcode.turboeditor.util.EventBusEvents;
|
||||
|
||||
|
||||
public class NavigationDrawer extends Fragment implements AdapterView.OnItemClickListener, AdapterDrawer.Callbacks {
|
||||
|
||||
|
||||
private AdapterDrawer arrayAdapter;
|
||||
private ArrayList<File> files;
|
||||
private ListView listView;
|
||||
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
// Our custom layout
|
||||
View rootView = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
|
||||
listView = (ListView) rootView.findViewById(android.R.id.list);
|
||||
listView.setEmptyView(rootView.findViewById(android.R.id.empty));
|
||||
files = new ArrayList<>();
|
||||
arrayAdapter = new AdapterDrawer(getActivity(), files, this);
|
||||
listView.setAdapter(arrayAdapter);
|
||||
return rootView;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
listView.setOnItemClickListener(this);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
// Register the Event Bus for events
|
||||
EventBus.getDefault().registerSticky(this);
|
||||
// Refresh the list view
|
||||
refreshList();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
// Unregister the Event Bus
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
// File paths saved in preferences
|
||||
String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
|
||||
// Path of the file selected
|
||||
String filePath = savedPaths[position];
|
||||
// Send the event that a file was selected
|
||||
EventBus.getDefault().post(new EventBusEvents.NewFileToOpen(new File(filePath)));
|
||||
}
|
||||
|
||||
public void onEvent(EventBusEvents.AFileIsSelected event) {
|
||||
arrayAdapter.selectView(event.getPath());
|
||||
|
||||
EventBus.getDefault().removeStickyEvent(event);
|
||||
}
|
||||
|
||||
public void onEvent(EventBusEvents.NewFileToOpen event) {
|
||||
|
||||
// File paths saved in preferences
|
||||
String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
|
||||
String selectedPath = event.getFile().getAbsolutePath();
|
||||
boolean pathAlreadyExist = false;
|
||||
for (String savedPath : savedPaths) {
|
||||
// We don't need to save the file path twice
|
||||
if (savedPath.equals(selectedPath)) {
|
||||
pathAlreadyExist = true;
|
||||
}
|
||||
}
|
||||
// Add the path if it wasn't added before
|
||||
if (!pathAlreadyExist)
|
||||
addPath(selectedPath);
|
||||
|
||||
EventBus.getDefault().removeStickyEvent(event);
|
||||
}
|
||||
|
||||
public void onEvent(EventBusEvents.SavedAFile event) {
|
||||
if (addPath(event.getPath())) {
|
||||
arrayAdapter.selectView(event.getPath());
|
||||
}
|
||||
}
|
||||
|
||||
public void onEvent(EventBusEvents.ClosedAFile event) {
|
||||
arrayAdapter.selectView("");
|
||||
}
|
||||
|
||||
private boolean addPath(String path) {
|
||||
// File paths saved in preferences
|
||||
String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
|
||||
// StringBuilder
|
||||
StringBuilder sb = new StringBuilder();
|
||||
boolean pathAlreadyExist = false;
|
||||
for (String savedPath : savedPaths) {
|
||||
// Append the file path and a comma
|
||||
sb.append(savedPath).append(",");
|
||||
if (savedPath.equals(path))
|
||||
pathAlreadyExist = true;
|
||||
}
|
||||
// Append new path
|
||||
if (!pathAlreadyExist)
|
||||
sb.append(path);
|
||||
// Put the string and commit
|
||||
PreferenceHelper.setSavedPaths(getActivity(), sb);
|
||||
// Update list
|
||||
refreshList();
|
||||
|
||||
return pathAlreadyExist == false;
|
||||
}
|
||||
|
||||
private void removePath(String path) {
|
||||
// File paths saved in preferences
|
||||
String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
|
||||
// StringBuilder
|
||||
StringBuilder sb = new StringBuilder();
|
||||
// for cycle
|
||||
for (String savedPath : savedPaths) {
|
||||
if (path.equals(savedPath)) continue;
|
||||
sb.append(savedPath).append(",");
|
||||
}
|
||||
// Put the string and commit
|
||||
PreferenceHelper.setSavedPaths(getActivity(), sb);
|
||||
// Update list
|
||||
refreshList();
|
||||
}
|
||||
|
||||
private void refreshList() {
|
||||
// File paths saved in preferences
|
||||
String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
|
||||
// File names for the list
|
||||
files.clear();
|
||||
// StringBuilder that will contain the file paths
|
||||
StringBuilder sb = new StringBuilder();
|
||||
// for cycle to convert paths to names
|
||||
for (String path : savedPaths) {
|
||||
File file = new File(path);
|
||||
// Check that the file exist
|
||||
if (file.exists()) {
|
||||
files.add(file);
|
||||
sb.append(path).append(",");
|
||||
}
|
||||
}
|
||||
// save list without empty or non existed files
|
||||
PreferenceHelper.setSavedPaths(getActivity(), sb);
|
||||
// Set adapter
|
||||
arrayAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void CancelItem(int position, boolean andCloseOpenedFile) {
|
||||
String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
|
||||
removePath(savedPaths[position]);
|
||||
if (andCloseOpenedFile)
|
||||
EventBus.getDefault().post(new EventBusEvents.CannotOpenAFile());
|
||||
}
|
||||
}
|
@@ -1,211 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2014 Vlad Mihalachi
|
||||
*
|
||||
* This file is part of Turbo Editor.
|
||||
*
|
||||
* Turbo Editor 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.
|
||||
*
|
||||
* Turbo Editor 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 sharedcode.turboeditor.preferences;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.preference.ListPreference;
|
||||
import android.preference.Preference;
|
||||
import android.preference.PreferenceActivity;
|
||||
import android.preference.PreferenceFragment;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
import sharedcode.turboeditor.R;
|
||||
import sharedcode.turboeditor.util.EventBusEvents;
|
||||
import sharedcode.turboeditor.util.ThemeUtils;
|
||||
|
||||
/**
|
||||
* A {@link PreferenceActivity} that presents a set of application settings. On
|
||||
* handset devices, settings are presented as a single list. On tablets,
|
||||
* settings are split by category, with category headers shown to the left of
|
||||
* the list of settings.
|
||||
* <p/>
|
||||
* See <a href="http://developer.android.com/design/patterns/settings.html">
|
||||
* Android Design: Settings</a> for design guidelines and the <a
|
||||
* href="http://developer.android.com/guide/topics/ui/settings.html">Settings
|
||||
* API Guide</a> for more information on developing a Settings UI.
|
||||
*/
|
||||
public class ExtraSettingsActivity extends PreferenceActivity {
|
||||
/**
|
||||
* Determines whether to always show the simplified settings UI, where
|
||||
* settings are presented in a single list. When false, settings are shown
|
||||
* as a master/detail two-pane view on tablets. When true, a single pane is
|
||||
* shown on tablets.
|
||||
*/
|
||||
private static final boolean ALWAYS_SIMPLE_PREFS = true;
|
||||
boolean encodingChanged = false,
|
||||
themeChanged = false,
|
||||
keyboardSuggestionsChanged = false;
|
||||
/**
|
||||
* A preference value change listener that updates the preference's summary
|
||||
* to reflect its new value.
|
||||
*/
|
||||
private Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object value) {
|
||||
String stringValue = value.toString();
|
||||
|
||||
if (preference instanceof ListPreference) {
|
||||
// For list preferences, look up the correct display value in
|
||||
// the preference's 'entries' list.
|
||||
ListPreference listPreference = (ListPreference) preference;
|
||||
int index = listPreference.findIndexOfValue(stringValue);
|
||||
|
||||
// Set the summary to reflect the new value.
|
||||
preference.setSummary(
|
||||
index >= 0
|
||||
? listPreference.getEntries()[index]
|
||||
: null);
|
||||
|
||||
}
|
||||
switch (preference.getKey()) {
|
||||
case "light_theme":
|
||||
themeChanged = !themeChanged;
|
||||
break;
|
||||
case "suggestion_active":
|
||||
keyboardSuggestionsChanged = !keyboardSuggestionsChanged;
|
||||
break;
|
||||
case "editor_encoding":
|
||||
encodingChanged = true;
|
||||
break;
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Helper method to determine if the device has an extra-large screen. For
|
||||
* example, 10" tablets are extra-large.
|
||||
*/
|
||||
private static boolean isXLargeTablet(Context context) {
|
||||
return (context.getResources().getConfiguration().screenLayout
|
||||
& Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
ThemeUtils.setTheme(this);
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostCreate(Bundle savedInstanceState) {
|
||||
super.onPostCreate(savedInstanceState);
|
||||
|
||||
setupSimplePreferencesScreen();
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows the simplified settings UI if the device configuration if the
|
||||
* device configuration dictates that a simplified, single-pane UI should be
|
||||
* shown.
|
||||
*/
|
||||
private void setupSimplePreferencesScreen() {
|
||||
if (!isSimplePreferences(this)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// In the simplified UI, fragments are not used at all and we instead
|
||||
// use the older PreferenceActivity APIs.
|
||||
|
||||
// Add 'general' preferences.
|
||||
addPreferencesFromResource(R.xml.extra_options);
|
||||
|
||||
// Bind the summaries of EditText/List/Dialog/Ringtone preferences to
|
||||
// their values. When their values change, their summaries are updated
|
||||
// to reflect the new value, per the Android Design guidelines.
|
||||
bindPreferenceSummaryToValue(findPreference("editor_encoding"));
|
||||
|
||||
String[] checkBoxPreferences = {"light_theme", "suggestion_active"};
|
||||
for (String key : checkBoxPreferences) {
|
||||
// Set the listener to watch for value changes.
|
||||
findPreference(key).setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean onIsMultiPane() {
|
||||
return isXLargeTablet(this) && !isSimplePreferences(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines whether the simplified settings UI should be shown. This is
|
||||
* true if this is forced via {@link #ALWAYS_SIMPLE_PREFS}, or the device
|
||||
* doesn't have newer APIs like {@link PreferenceFragment}, or the device
|
||||
* doesn't have an extra-large screen. In these cases, a single-pane
|
||||
* "simplified" settings UI should be shown.
|
||||
*/
|
||||
private boolean isSimplePreferences(Context context) {
|
||||
return ALWAYS_SIMPLE_PREFS
|
||||
|| Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB
|
||||
|| !isXLargeTablet(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
List<EventBusEvents.APreferenceValueWasChanged.Type> listOfChanges = new ArrayList<>();
|
||||
if (themeChanged) {
|
||||
listOfChanges.add(EventBusEvents.APreferenceValueWasChanged.Type.THEME_CHANGE);
|
||||
}
|
||||
if (keyboardSuggestionsChanged) {
|
||||
listOfChanges.add(EventBusEvents.APreferenceValueWasChanged.Type.TEXT_SUGGESTIONS);
|
||||
}
|
||||
if (encodingChanged) {
|
||||
listOfChanges.add(EventBusEvents.APreferenceValueWasChanged.Type.ENCODING);
|
||||
}
|
||||
|
||||
|
||||
if (listOfChanges.size() > 0) {
|
||||
EventBus.getDefault().postSticky(new EventBusEvents.APreferenceValueWasChanged(listOfChanges));
|
||||
}
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
/**
|
||||
* Binds a preference's summary to its value. More specifically, when the
|
||||
* preference's value is changed, its summary (line of text below the
|
||||
* preference title) is updated to reflect the value. The summary is also
|
||||
* immediately updated upon calling this method. The exact display format is
|
||||
* dependent on the type of preference.
|
||||
*
|
||||
* @see #sBindPreferenceSummaryToValueListener
|
||||
*/
|
||||
private void bindPreferenceSummaryToValue(Preference preference) {
|
||||
// Set the listener to watch for value changes.
|
||||
preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);
|
||||
|
||||
// Trigger the listener immediately with the preference's
|
||||
// current value.
|
||||
sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
|
||||
PreferenceManager
|
||||
.getDefaultSharedPreferences(preference.getContext())
|
||||
.getString(preference.getKey(), ""));
|
||||
}
|
||||
}
|
@@ -49,7 +49,7 @@ public final class PreferenceHelper {
|
||||
return getPrefs(context).getBoolean("editor_line_numbers", true);
|
||||
}
|
||||
|
||||
public static boolean getSyntaxHiglight(Context context) {
|
||||
public static boolean getSyntaxHighlight(Context context) {
|
||||
return getPrefs(context).getBoolean("editor_syntax_highlight", false);
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ public final class PreferenceHelper {
|
||||
return getPrefs(context).getBoolean("ignore_back_button", false);
|
||||
}
|
||||
|
||||
public static boolean getPageSystemEnabled(Context context) {
|
||||
public static boolean getSplitText(Context context) {
|
||||
return getPrefs(context).getBoolean("page_system_active", true);
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ public final class PreferenceHelper {
|
||||
getEditor(context).putBoolean("editor_line_numbers", value).commit();
|
||||
}
|
||||
|
||||
public static void setSyntaxHiglight(Context context, boolean value) {
|
||||
public static void setSyntaxHighlight(Context context, boolean value) {
|
||||
getEditor(context).putBoolean("editor_syntax_highlight", value).commit();
|
||||
}
|
||||
|
||||
@@ -158,4 +158,31 @@ public final class PreferenceHelper {
|
||||
getEditor(context).putBoolean("has_donated", value);
|
||||
}
|
||||
|
||||
public static void setLightTheme(Context context, boolean value) {
|
||||
getEditor(context).putBoolean("light_theme", value).commit();
|
||||
}
|
||||
|
||||
public static void setSuggestionsActive(Context context, boolean value) {
|
||||
getEditor(context).putBoolean("suggestion_active", value).commit();
|
||||
}
|
||||
|
||||
public static void setAutoSave(Context context, boolean value) {
|
||||
getEditor(context).putBoolean("auto_save", value).commit();
|
||||
}
|
||||
|
||||
public static void setIgnoreBackButton(Context context, boolean value) {
|
||||
getEditor(context).putBoolean("ignore_back_button", value).commit();
|
||||
}
|
||||
|
||||
public static void setSplitText(Context context, boolean value) {
|
||||
getEditor(context).putBoolean("page_system_active", value).commit();
|
||||
}
|
||||
|
||||
public static void setSendErrorReport(Context context, boolean value) {
|
||||
getEditor(context).putBoolean("ignore_back_button", value).commit();
|
||||
}
|
||||
|
||||
public static void setEncoding(Context context, String value) {
|
||||
getEditor(context).putString("editor_encoding", value).commit();
|
||||
}
|
||||
}
|
||||
|
@@ -20,32 +20,34 @@
|
||||
package sharedcode.turboeditor.preferences;
|
||||
|
||||
import android.app.Fragment;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.SwitchCompat;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.TextView;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
import sharedcode.turboeditor.R;
|
||||
import sharedcode.turboeditor.fragment.EncodingDialog;
|
||||
import sharedcode.turboeditor.fragment.SeekbarDialog;
|
||||
import sharedcode.turboeditor.util.AnimationUtils;
|
||||
import sharedcode.turboeditor.util.ProCheckUtils;
|
||||
import sharedcode.turboeditor.util.ViewUtils;
|
||||
import sharedcode.turboeditor.views.DialogHelper;
|
||||
|
||||
import static sharedcode.turboeditor.util.EventBusEvents.APreferenceValueWasChanged;
|
||||
import static sharedcode.turboeditor.util.EventBusEvents.APreferenceValueWasChanged.Type.ENCODING;
|
||||
import static sharedcode.turboeditor.util.EventBusEvents.APreferenceValueWasChanged.Type.FONT_SIZE;
|
||||
import static sharedcode.turboeditor.util.EventBusEvents.APreferenceValueWasChanged.Type.LINE_NUMERS;
|
||||
import static sharedcode.turboeditor.util.EventBusEvents.APreferenceValueWasChanged.Type.MONOSPACE;
|
||||
import static sharedcode.turboeditor.util.EventBusEvents.APreferenceValueWasChanged.Type.READ_ONLY;
|
||||
import static sharedcode.turboeditor.util.EventBusEvents.APreferenceValueWasChanged.Type.SYNTAX;
|
||||
import static sharedcode.turboeditor.util.EventBusEvents.APreferenceValueWasChanged.Type.TEXT_SUGGESTIONS;
|
||||
import static sharedcode.turboeditor.util.EventBusEvents.APreferenceValueWasChanged.Type.THEME_CHANGE;
|
||||
import static sharedcode.turboeditor.util.EventBusEvents.APreferenceValueWasChanged.Type.WRAP_CONTENT;
|
||||
|
||||
public class SettingsFragment extends Fragment implements SeekbarDialog.ISeekbarDialog {
|
||||
public class SettingsFragment extends Fragment implements SeekbarDialog.ISeekbarDialog, EncodingDialog.DialogListener {
|
||||
|
||||
// Editor Variables
|
||||
private boolean sLineNumbers;
|
||||
@@ -54,71 +56,100 @@ public class SettingsFragment extends Fragment implements SeekbarDialog.ISeekbar
|
||||
private boolean sUseMonospace;
|
||||
private boolean sReadOnly;
|
||||
|
||||
private boolean sLightTheme;
|
||||
private boolean sSuggestions;
|
||||
private boolean sAutoSave;
|
||||
private boolean sIgnoreBackButton;
|
||||
private boolean sSplitText;
|
||||
private boolean sErrorReports;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
sUseMonospace = PreferenceHelper.getUseMonospace(getActivity());
|
||||
sColorSyntax = PreferenceHelper.getSyntaxHiglight(getActivity());
|
||||
sColorSyntax = PreferenceHelper.getSyntaxHighlight(getActivity());
|
||||
sWrapContent = PreferenceHelper.getWrapContent(getActivity());
|
||||
sLineNumbers = PreferenceHelper.getLineNumbers(getActivity());
|
||||
sReadOnly = PreferenceHelper.getReadOnly(getActivity());
|
||||
|
||||
sLightTheme = PreferenceHelper.getLightTheme(getActivity());
|
||||
sSuggestions = PreferenceHelper.getSuggestionActive(getActivity());
|
||||
sAutoSave = PreferenceHelper.getAutoSave(getActivity());
|
||||
sIgnoreBackButton = PreferenceHelper.getIgnoreBackButton(getActivity());
|
||||
sSplitText = PreferenceHelper.getSplitText(getActivity());
|
||||
sErrorReports = PreferenceHelper.getSendErrorReports(getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Our custom layout
|
||||
View rootView = inflater.inflate(R.layout.fragment_settings, container, false);
|
||||
final CheckBox switchLineNumbers, switchSyntax, switchWrapContent, switchMonospace, switchReadOnly;
|
||||
switchLineNumbers = (CheckBox) rootView.findViewById(R.id.switch_line_numbers);
|
||||
switchSyntax = (CheckBox) rootView.findViewById(R.id.switch_syntax);
|
||||
switchWrapContent = (CheckBox) rootView.findViewById(R.id.switch_wrap_content);
|
||||
switchMonospace = (CheckBox) rootView.findViewById(R.id.switch_monospace);
|
||||
switchReadOnly = (CheckBox) rootView.findViewById(R.id.switch_read_only);
|
||||
final View rootView = inflater.inflate(R.layout.fragment_settings, container, false);
|
||||
final SwitchCompat swLineNumbers, swSyntax, swWrapContent, swMonospace, swReadOnly;
|
||||
final SwitchCompat swLightTheme, swSuggestions, swAutoSave, swIgnoreBackButton, swSplitText, swErrorReports;
|
||||
|
||||
swLineNumbers = (SwitchCompat) rootView.findViewById(R.id.switch_line_numbers);
|
||||
swSyntax = (SwitchCompat) rootView.findViewById(R.id.switch_syntax);
|
||||
swWrapContent = (SwitchCompat) rootView.findViewById(R.id.switch_wrap_content);
|
||||
swMonospace = (SwitchCompat) rootView.findViewById(R.id.switch_monospace);
|
||||
swReadOnly = (SwitchCompat) rootView.findViewById(R.id.switch_read_only);
|
||||
|
||||
switchLineNumbers.setChecked(sLineNumbers);
|
||||
switchSyntax.setChecked(sColorSyntax);
|
||||
switchWrapContent.setChecked(sWrapContent);
|
||||
switchMonospace.setChecked(sUseMonospace);
|
||||
switchReadOnly.setChecked(sReadOnly);
|
||||
swLightTheme = (SwitchCompat) rootView.findViewById(R.id.switch_light_theme);
|
||||
swSuggestions = (SwitchCompat) rootView.findViewById(R.id.switch_suggestions_active);
|
||||
swAutoSave = (SwitchCompat) rootView.findViewById(R.id.switch_auto_save);
|
||||
swIgnoreBackButton = (SwitchCompat) rootView.findViewById(R.id.switch_ignore_backbutton);
|
||||
swSplitText = (SwitchCompat) rootView.findViewById(R.id.switch_page_system);
|
||||
swErrorReports = (SwitchCompat) rootView.findViewById(R.id.switch_send_error_reports);
|
||||
|
||||
TextView fontSizeView, donateView, extraOptionsView;
|
||||
swLineNumbers.setChecked(sLineNumbers);
|
||||
swSyntax.setChecked(sColorSyntax);
|
||||
swWrapContent.setChecked(sWrapContent);
|
||||
swMonospace.setChecked(sUseMonospace);
|
||||
swReadOnly.setChecked(sReadOnly);
|
||||
|
||||
swLightTheme.setChecked(sLightTheme);
|
||||
swSuggestions.setChecked(sSuggestions);
|
||||
swAutoSave.setChecked(sAutoSave);
|
||||
swIgnoreBackButton.setChecked(sIgnoreBackButton);
|
||||
swSplitText.setChecked(sSplitText);
|
||||
swErrorReports.setChecked(sErrorReports);
|
||||
|
||||
TextView fontSizeView, encodingView, donateView, extraOptionsView;
|
||||
fontSizeView = (TextView) rootView.findViewById(R.id.drawer_button_font_size);
|
||||
encodingView = (TextView) rootView.findViewById(R.id.drawer_button_encoding);
|
||||
extraOptionsView = (TextView) rootView.findViewById(R.id.drawer_button_extra_options);
|
||||
donateView = (TextView) rootView.findViewById(R.id.drawer_button_go_pro);
|
||||
|
||||
if(ProCheckUtils.isPro(getActivity(), false))
|
||||
ViewUtils.setVisible(donateView, false);
|
||||
|
||||
switchLineNumbers.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
swLineNumbers.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
sLineNumbers = isChecked;
|
||||
PreferenceHelper.setLineNumbers(getActivity(), isChecked);
|
||||
EventBus.getDefault().post(new APreferenceValueWasChanged(LINE_NUMERS));
|
||||
}
|
||||
});
|
||||
|
||||
switchSyntax.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
swSyntax.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
sColorSyntax = isChecked;
|
||||
PreferenceHelper.setSyntaxHiglight(getActivity(), isChecked);
|
||||
PreferenceHelper.setSyntaxHighlight(getActivity(), isChecked);
|
||||
EventBus.getDefault().post(new APreferenceValueWasChanged(SYNTAX));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
switchWrapContent.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
swWrapContent.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
sWrapContent = isChecked;
|
||||
PreferenceHelper.setWrapContent(getActivity(), isChecked);
|
||||
EventBus.getDefault().post(new APreferenceValueWasChanged(WRAP_CONTENT));
|
||||
}
|
||||
});
|
||||
|
||||
switchMonospace.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
swMonospace.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
sUseMonospace = isChecked;
|
||||
@@ -128,10 +159,9 @@ public class SettingsFragment extends Fragment implements SeekbarDialog.ISeekbar
|
||||
}
|
||||
});
|
||||
|
||||
switchReadOnly.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
swReadOnly.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
sReadOnly = isChecked;
|
||||
PreferenceHelper.setReadOnly(getActivity(), isChecked);
|
||||
EventBus.getDefault().post(new APreferenceValueWasChanged(READ_ONLY));
|
||||
}
|
||||
@@ -151,11 +181,21 @@ public class SettingsFragment extends Fragment implements SeekbarDialog.ISeekbar
|
||||
}
|
||||
});
|
||||
|
||||
encodingView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
EncodingDialog dialogFrag = EncodingDialog.newInstance();
|
||||
dialogFrag.setTargetFragment(SettingsFragment.this, 0);
|
||||
dialogFrag.show(getFragmentManager().beginTransaction(), "dialog");
|
||||
}
|
||||
});
|
||||
|
||||
extraOptionsView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
AnimationUtils.startActivityWithScale(getActivity(), new Intent(getActivity(),
|
||||
ExtraSettingsActivity.class), false, 0, v);
|
||||
View otherOptions = rootView.findViewById(R.id.other_options);
|
||||
boolean isVisible = otherOptions.getVisibility() == View.VISIBLE;
|
||||
ViewUtils.setVisible(otherOptions, !isVisible);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -166,6 +206,22 @@ public class SettingsFragment extends Fragment implements SeekbarDialog.ISeekbar
|
||||
}
|
||||
});
|
||||
|
||||
swLightTheme.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
PreferenceHelper.setLightTheme(getActivity(), isChecked);
|
||||
EventBus.getDefault().post(new APreferenceValueWasChanged(THEME_CHANGE));
|
||||
}
|
||||
});
|
||||
|
||||
swSuggestions.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
PreferenceHelper.setSuggestionsActive(getActivity(), isChecked);
|
||||
EventBus.getDefault().post(new APreferenceValueWasChanged(TEXT_SUGGESTIONS));
|
||||
}
|
||||
});
|
||||
|
||||
return rootView;
|
||||
}
|
||||
|
||||
@@ -175,4 +231,10 @@ public class SettingsFragment extends Fragment implements SeekbarDialog.ISeekbar
|
||||
EventBus.getDefault().post(new APreferenceValueWasChanged(FONT_SIZE));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEncodingSelected(String result) {
|
||||
PreferenceHelper.setEncoding(getActivity(), result);
|
||||
EventBus.getDefault().post(new APreferenceValueWasChanged(ENCODING));
|
||||
}
|
||||
}
|
||||
|
@@ -43,7 +43,7 @@ public class PageSystem {
|
||||
int to;
|
||||
int indexOfReturn;
|
||||
int textLenght = text.length();
|
||||
boolean pageSystemEnabled = PreferenceHelper.getPageSystemEnabled(context);
|
||||
boolean pageSystemEnabled = PreferenceHelper.getSplitText(context);
|
||||
if (pageSystemEnabled && textLenght > maxLenghtInOnePage) {
|
||||
while (i < textLenght && pageSystemEnabled) {
|
||||
to = i + charForPage;
|
||||
|
@@ -87,7 +87,7 @@ public class EventBusEvents {
|
||||
}
|
||||
|
||||
public enum Type {
|
||||
FONT_SIZE, ENCODING, SYNTAX, WRAP_CONTENT, MONOSPACE, LINE_NUMERS, THEME_CHANGE, TEXT_SUGGESTIONS, READ_ONLY
|
||||
FONT_SIZE, ENCODING, SYNTAX, WRAP_CONTENT, MONOSPACE, LINE_NUMERS, THEME_CHANGE, TEXT_SUGGESTIONS, READ_ONLY,
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -35,6 +35,15 @@ public class ThemeUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static void setPreferenceTheme(Activity activity){
|
||||
boolean light = PreferenceHelper.getLightTheme(activity);
|
||||
if (light) {
|
||||
activity.setTheme(R.style.PreferenceLight);
|
||||
} else {
|
||||
activity.setTheme(R.style.PreferenceDark);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setWindowsBackground(Activity activity) {
|
||||
boolean whiteTheme = PreferenceHelper.getLightTheme(activity);
|
||||
if (whiteTheme) {
|
||||
|
@@ -24,7 +24,7 @@ import android.support.v4.widget.DrawerLayout;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.KeyEvent;
|
||||
|
||||
public class CustomDrawerLayout extends DrawerLayout {
|
||||
public class CustomDrawerLayout extends DrawerLayout{
|
||||
public CustomDrawerLayout(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 2.9 KiB |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<size android:width="12dp" />
|
||||
<solid android:color="@android:color/transparent" />
|
||||
</shape>
|
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<size android:height="4dp" />
|
||||
<gradient
|
||||
android:angle="270"
|
||||
android:endColor="@android:color/transparent"
|
||||
android:startColor="@color/gradient_start" />
|
||||
</shape>
|
Before Width: | Height: | Size: 174 B |
Before Width: | Height: | Size: 691 B |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB |
@@ -1,30 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2014 Vlad Mihalachi
|
||||
~
|
||||
~ This file is part of Turbo Editor.
|
||||
~
|
||||
~ Turbo Editor 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.
|
||||
~
|
||||
~ Turbo Editor 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/>.
|
||||
-->
|
||||
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
|
||||
<item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/list_selector_disabled_holo_dark" />
|
||||
<item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/list_selector_disabled_holo_dark" />
|
||||
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition_holo_dark" />
|
||||
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition_holo_dark" />
|
||||
<item android:state_focused="true" android:drawable="@color/navigation_drawer_button_inverted" />
|
||||
<item android:drawable="@android:color/transparent" />
|
||||
</selector>
|
@@ -1,30 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2014 Vlad Mihalachi
|
||||
~
|
||||
~ This file is part of Turbo Editor.
|
||||
~
|
||||
~ Turbo Editor 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.
|
||||
~
|
||||
~ Turbo Editor 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/>.
|
||||
-->
|
||||
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
|
||||
<item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/list_selector_disabled_holo_dark" />
|
||||
<item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/list_selector_disabled_holo_dark" />
|
||||
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition_holo_dark" />
|
||||
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition_holo_dark" />
|
||||
<item android:state_focused="true" android:drawable="@color/navigation_drawer_button" />
|
||||
<item android:drawable="@color/navigation_drawer_button" />
|
||||
</selector>
|
Before Width: | Height: | Size: 203 B |
Before Width: | Height: | Size: 163 B |
Before Width: | Height: | Size: 163 B |
Before Width: | Height: | Size: 190 B |
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<size android:width="16dp" />
|
||||
<gradient
|
||||
android:endColor="@android:color/transparent"
|
||||
android:startColor="@color/gradient_light_start" />
|
||||
</shape>
|
@@ -17,17 +17,23 @@
|
||||
~ You should have received a copy of the GNU General Public License
|
||||
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include layout="@layout/toolbar"/>
|
||||
|
||||
<sharedcode.turboeditor.views.CustomDrawerLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
|
||||
android:id="@id/drawer_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:textSize="@dimen/text_size_mega_title"
|
||||
android:fontFamily="sans-serif-light"
|
||||
@@ -36,81 +42,311 @@
|
||||
android:textColor="@android:color/secondary_text_dark"
|
||||
android:id="@id/no_file_opened_messagge"/>
|
||||
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@id/text_editor"
|
||||
android:visibility="gone">
|
||||
|
||||
<sharedcode.turboeditor.views.GoodScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scrollbars="vertical"
|
||||
android:fillViewport="true"
|
||||
android:id="@id/vertical_scroll"
|
||||
android:background="@null">
|
||||
|
||||
<HorizontalScrollView
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:scrollbars="horizontal"
|
||||
android:fillViewport="true"
|
||||
android:id="@id/horizontal_scroll"
|
||||
android:background="@null">
|
||||
android:layout_height="match_parent"
|
||||
android:id="@id/text_editor"
|
||||
android:visibility="gone">
|
||||
|
||||
<view
|
||||
class="sharedcode.turboeditor.activity.BaseHomeActivity$Editor"
|
||||
android:id="@id/editor"
|
||||
<sharedcode.turboeditor.views.GoodScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:bufferType="spannable"
|
||||
android:textCursorDrawable="@null"
|
||||
android:cursorVisible="true"
|
||||
android:gravity="top|start"
|
||||
android:singleLine="false"
|
||||
android:background="@null"
|
||||
android:text=""
|
||||
android:textIsSelectable="true" />
|
||||
</HorizontalScrollView>
|
||||
</sharedcode.turboeditor.views.GoodScrollView>
|
||||
android:scrollbars="vertical"
|
||||
android:fillViewport="true"
|
||||
android:id="@id/vertical_scroll"
|
||||
android:background="@null">
|
||||
|
||||
<com.faizmalkani.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fabNext"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_gravity="bottom|right"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:visibility="invisible"/>
|
||||
<HorizontalScrollView
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:scrollbars="horizontal"
|
||||
android:fillViewport="true"
|
||||
android:id="@id/horizontal_scroll"
|
||||
android:background="@null">
|
||||
|
||||
<com.faizmalkani.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fabPrev"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_gravity="bottom|right"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_marginRight="100dp"
|
||||
android:layout_marginEnd="90dp"
|
||||
android:visibility="invisible"/>
|
||||
<view
|
||||
class="sharedcode.turboeditor.activity.BaseHomeActivity$Editor"
|
||||
android:id="@id/editor"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:bufferType="spannable"
|
||||
android:textCursorDrawable="@null"
|
||||
android:cursorVisible="true"
|
||||
android:gravity="top|start"
|
||||
android:singleLine="false"
|
||||
android:background="@null"
|
||||
android:text=""
|
||||
android:textIsSelectable="true" />
|
||||
</HorizontalScrollView>
|
||||
</sharedcode.turboeditor.views.GoodScrollView>
|
||||
|
||||
</FrameLayout>
|
||||
<com.faizmalkani.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fabNext"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_gravity="bottom|right"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:visibility="invisible"/>
|
||||
|
||||
<fragment android:layout_width="@dimen/navigation_drawer_width"
|
||||
android:layout_height="match_parent"
|
||||
android:name="sharedcode.turboeditor.fragment.NavigationDrawer"
|
||||
android:id="@id/drawer_files"
|
||||
android:layout_gravity="start"
|
||||
tools:layout="@layout/fragment_navigation_drawer"
|
||||
/>
|
||||
<com.faizmalkani.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fabPrev"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_gravity="bottom|right"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_marginRight="100dp"
|
||||
android:layout_marginEnd="90dp"
|
||||
android:visibility="invisible"/>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="@dimen/navigation_drawer_width"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/navigation_drawer_background_inverted"
|
||||
android:id="@id/drawer_files"
|
||||
android:layout_gravity="start"
|
||||
>
|
||||
|
||||
<ListView
|
||||
android:id="@id/android:list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fadingEdge="none"
|
||||
android:cacheColorHint="@android:color/transparent"
|
||||
android:layout_above="@id/drawer_buttons"
|
||||
android:divider="@color/divider"
|
||||
android:listSelector="?selectableItemBackground"
|
||||
android:choiceMode="singleChoice"
|
||||
android:background="@null"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@android:id/empty"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:textSize="@dimen/text_size_mega_title"
|
||||
android:fontFamily="sans-serif-light"
|
||||
android:text="@string/recent_files"
|
||||
android:textColor="@android:color/secondary_text_dark"
|
||||
android:layout_above="@id/drawer_buttons" />
|
||||
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="192dp"
|
||||
android:id="@id/drawer_buttons"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/line_dimension"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:text="@string/new_file"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:textSize="12sp"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"
|
||||
android:clickable="true"
|
||||
android:onClick="CreateFile"
|
||||
android:background="?selectableItemBackground"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:text="@string/open_a_file"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:textSize="12sp"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"
|
||||
android:clickable="true"
|
||||
android:onClick="OpenFile"
|
||||
android:background="?selectableItemBackground"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:text="@string/preferenze"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:textSize="12sp"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"
|
||||
android:clickable="true"
|
||||
android:onClick="OpenSettings"
|
||||
android:background="?selectableItemBackground"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:text="@string/info"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:textSize="12sp"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"
|
||||
android:clickable="true"
|
||||
android:onClick="OpenInfo"
|
||||
android:background="?selectableItemBackground"/>
|
||||
|
||||
|
||||
|
||||
<!--<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="52dp"
|
||||
android:orientation="horizontal"
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal"
|
||||
android:clickable="true"
|
||||
android:gravity="center_vertical"
|
||||
android:onClick="OpenFile"
|
||||
android:background="@drawable/item_background_holo_dark"
|
||||
android:layout_toLeftOf="@+id/ic_add_dark"
|
||||
>
|
||||
<ImageView
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:src="@drawable/ic_file_dark"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingLeft="16dp"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:text="@string/open_a_file"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:textSize="12sp"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
android:layout_width="@dimen/line_dimension"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_toLeftOf="@id/ic_add_dark"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ic_add_dark"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="match_parent"
|
||||
android:src="@drawable/ic_add_dark"
|
||||
android:padding="14dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:clickable="true"
|
||||
android:onClick="CreateFile"
|
||||
android:background="@drawable/item_background_holo_dark"
|
||||
/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/line_dimension"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="52dp"
|
||||
android:orientation="horizontal"
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal"
|
||||
android:clickable="true"
|
||||
android:gravity="center_vertical"
|
||||
android:onClick="OpenSettings"
|
||||
android:background="@drawable/item_background_holo_dark"
|
||||
android:layout_toLeftOf="@+id/ic_info_dark"
|
||||
>
|
||||
<ImageView
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:src="@drawable/ic_settings_dark"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingLeft="16dp"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:text="@string/preferenze"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:textSize="12sp"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
android:layout_width="@dimen/line_dimension"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_toLeftOf="@id/ic_info_dark"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ic_info_dark"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="match_parent"
|
||||
android:src="@drawable/ic_info_dark"
|
||||
android:padding="14dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:clickable="true"
|
||||
android:onClick="OpenInfo"
|
||||
android:background="@drawable/item_background_holo_dark"
|
||||
/>
|
||||
|
||||
</RelativeLayout>-->
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<fragment android:layout_width="@dimen/navigation_drawer_width"
|
||||
android:layout_height="match_parent"
|
||||
android:name="sharedcode.turboeditor.preferences.SettingsFragment"
|
||||
android:id="@id/drawer_settings"
|
||||
android:layout_gravity="end"
|
||||
tools:layout="@layout/fragment_navigation_drawer"/>
|
||||
android:layout_gravity="end"/>
|
||||
|
||||
|
||||
</sharedcode.turboeditor.views.CustomDrawerLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
@@ -18,27 +18,43 @@
|
||||
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:fab="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ListView
|
||||
android:cacheColorHint="@null"
|
||||
android:id="@android:id/list"
|
||||
android:layout_width="match_parent"
|
||||
<LinearLayout
|
||||
android:layout_height="match_parent"
|
||||
android:smoothScrollbar="true"/>
|
||||
android:layout_width="match_parent"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.faizmalkani.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fabbutton"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_gravity="bottom|right"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginEnd="16dp"/>
|
||||
<include layout="@layout/toolbar"/>
|
||||
|
||||
<FrameLayout
|
||||
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ListView
|
||||
android:cacheColorHint="@null"
|
||||
android:id="@android:id/list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:smoothScrollbar="true"
|
||||
android:listSelector="?selectableItemBackground"
|
||||
android:divider="@null"
|
||||
android:layout_marginLeft="@dimen/list_horizontal_margin"
|
||||
android:layout_marginRight="@dimen/list_horizontal_margin"
|
||||
android:layout_marginStart="@dimen/list_horizontal_margin"
|
||||
android:layout_marginEnd="@dimen/list_horizontal_margin"/>
|
||||
|
||||
<com.faizmalkani.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fabbutton"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_gravity="bottom|right"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginEnd="16dp"/>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@@ -24,7 +24,7 @@
|
||||
android:layout_gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<Switch
|
||||
<android.support.v7.widget.SwitchCompat
|
||||
android:id="@android:id/checkbox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
@@ -34,7 +34,7 @@
|
||||
android:paddingRight="16dp"
|
||||
android:text="@string/enable_autoencoding"
|
||||
android:textSize="12sp"
|
||||
android:textColor="@color/navigation_drawer_button_text_color"
|
||||
android:textColor="@color/textColor"
|
||||
android:textAllCaps="true"/>
|
||||
|
||||
<ListView
|
||||
|
@@ -28,10 +28,10 @@
|
||||
android:id="@+id/title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/activity_horizontal_margin"
|
||||
android:layout_marginEnd="@dimen/activity_horizontal_margin"
|
||||
android:layout_marginLeft="@dimen/activity_horizontal_margin"
|
||||
android:layout_marginRight="@dimen/activity_horizontal_margin"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:drawablePadding="8dp"
|
||||
|
@@ -1,192 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2014 Vlad Mihalachi
|
||||
~
|
||||
~ This file is part of Turbo Editor.
|
||||
~
|
||||
~ Turbo Editor 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.
|
||||
~
|
||||
~ Turbo Editor 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/>.
|
||||
-->
|
||||
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/navigation_drawer_background_inverted"
|
||||
>
|
||||
|
||||
<ListView
|
||||
android:id="@id/android:list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fadingEdge="none"
|
||||
android:cacheColorHint="@android:color/transparent"
|
||||
android:layout_above="@id/drawer_buttons"
|
||||
android:divider="@color/divider"
|
||||
android:listSelector="@android:color/transparent"
|
||||
android:choiceMode="singleChoice"
|
||||
android:background="@null"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@android:id/empty"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:textSize="@dimen/text_size_mega_title"
|
||||
android:fontFamily="sans-serif-light"
|
||||
android:text="@string/recent_files"
|
||||
android:textColor="@android:color/secondary_text_dark"
|
||||
android:layout_above="@id/drawer_buttons" />
|
||||
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="104dp"
|
||||
android:id="@id/drawer_buttons"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/line_dimension"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="52dp"
|
||||
android:orientation="horizontal"
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal"
|
||||
android:clickable="true"
|
||||
android:gravity="center_vertical"
|
||||
android:onClick="OpenFile"
|
||||
android:background="@drawable/item_background_holo_dark"
|
||||
android:layout_toLeftOf="@+id/ic_add_dark"
|
||||
>
|
||||
<ImageView
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:src="@drawable/ic_file_dark"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingLeft="16dp"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:text="@string/open_a_file"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:textSize="12sp"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
android:layout_width="@dimen/line_dimension"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_toLeftOf="@id/ic_add_dark"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ic_add_dark"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="match_parent"
|
||||
android:src="@drawable/ic_add_dark"
|
||||
android:padding="14dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:clickable="true"
|
||||
android:onClick="CreateFile"
|
||||
android:background="@drawable/item_background_holo_dark"
|
||||
/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/line_dimension"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="52dp"
|
||||
android:orientation="horizontal"
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal"
|
||||
android:clickable="true"
|
||||
android:gravity="center_vertical"
|
||||
android:onClick="OpenSettings"
|
||||
android:background="@drawable/item_background_holo_dark"
|
||||
android:layout_toLeftOf="@+id/ic_info_dark"
|
||||
>
|
||||
<ImageView
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:src="@drawable/ic_settings_dark"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingLeft="16dp"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:text="@string/preferenze"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:textSize="12sp"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
android:layout_width="@dimen/line_dimension"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_toLeftOf="@id/ic_info_dark"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ic_info_dark"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="match_parent"
|
||||
android:src="@drawable/ic_info_dark"
|
||||
android:padding="14dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:clickable="true"
|
||||
android:onClick="OpenInfo"
|
||||
android:background="@drawable/item_background_holo_dark"
|
||||
/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
@@ -23,7 +23,8 @@
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="match_parent"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:background="@color/navigation_drawer_background_inverted">
|
||||
android:background="@color/navigation_drawer_background_inverted"
|
||||
android:paddingTop="10dp">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -36,29 +37,22 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="72dp"
|
||||
android:text="@string/donate"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:textSize="12sp"
|
||||
android:textAllCaps="true"
|
||||
android:clickable="true"
|
||||
android:background="@drawable/item_background_holo_dark"
|
||||
android:background="?selectableItemBackground"
|
||||
android:textColor="@color/indigo"/>
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/line_dimension"/>
|
||||
|
||||
<CheckBox android:button="@null" android:drawableRight="?android:attr/listChoiceIndicatorMultiple"
|
||||
<android.support.v7.widget.SwitchCompat
|
||||
android:gravity="center_vertical"
|
||||
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:text="@string/line_numbers"
|
||||
android:textAllCaps="true"
|
||||
|
||||
android:textSize="12sp"
|
||||
android:id="@id/switch_line_numbers"
|
||||
android:layout_gravity="center_horizontal"
|
||||
@@ -69,18 +63,12 @@
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"
|
||||
/>
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/line_dimension"/>
|
||||
|
||||
<CheckBox android:button="@null" android:drawableRight="?android:attr/listChoiceIndicatorMultiple"
|
||||
<android.support.v7.widget.SwitchCompat
|
||||
android:gravity="center_vertical"
|
||||
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:text="@string/menu_syntax_highlight"
|
||||
android:textAllCaps="true"
|
||||
|
||||
android:textSize="12sp"
|
||||
android:id="@id/switch_syntax"
|
||||
android:layout_gravity="center_horizontal"
|
||||
@@ -90,18 +78,12 @@
|
||||
android:paddingRight="16dp"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/line_dimension"/>
|
||||
|
||||
<CheckBox android:button="@null" android:drawableRight="?android:attr/listChoiceIndicatorMultiple"
|
||||
<android.support.v7.widget.SwitchCompat
|
||||
android:gravity="center_vertical"
|
||||
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:text="@string/wrap_content"
|
||||
android:textAllCaps="true"
|
||||
|
||||
android:textSize="12sp"
|
||||
android:id="@id/switch_wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
@@ -111,19 +93,12 @@
|
||||
android:paddingRight="16dp"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/line_dimension"/>
|
||||
|
||||
<CheckBox android:button="@null" android:drawableRight="?android:attr/listChoiceIndicatorMultiple"
|
||||
<android.support.v7.widget.SwitchCompat
|
||||
android:gravity="center_vertical"
|
||||
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:text="@string/use_monospace"
|
||||
android:textAllCaps="true"
|
||||
|
||||
android:textSize="12sp"
|
||||
android:id="@id/switch_monospace"
|
||||
android:layout_gravity="center_horizontal"
|
||||
@@ -133,18 +108,12 @@
|
||||
android:paddingRight="16dp"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/line_dimension"/>
|
||||
|
||||
<CheckBox android:button="@null" android:drawableRight="?android:attr/listChoiceIndicatorMultiple"
|
||||
<android.support.v7.widget.SwitchCompat
|
||||
android:gravity="center_vertical"
|
||||
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:text="@string/read_only"
|
||||
android:textAllCaps="true"
|
||||
|
||||
android:textSize="12sp"
|
||||
android:id="@id/switch_read_only"
|
||||
android:layout_gravity="center_horizontal"
|
||||
@@ -154,55 +123,145 @@
|
||||
android:paddingRight="16dp"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
|
||||
|
||||
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/line_dimension"/>
|
||||
|
||||
<TextView
|
||||
<TextView
|
||||
android:id="@id/drawer_button_font_size"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:text="@string/font_size"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:textSize="12sp"
|
||||
android:textAllCaps="true"
|
||||
|
||||
android:clickable="true"
|
||||
android:background="@drawable/item_background_holo_dark"
|
||||
android:background="?selectableItemBackground"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/line_dimension"/>
|
||||
|
||||
<TextView
|
||||
android:id="@id/drawer_button_extra_options"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:text="@string/extra_options"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:textSize="12sp"
|
||||
android:textAllCaps="true"
|
||||
android:clickable="true"
|
||||
android:background="@drawable/item_background_holo_dark"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
android:background="?selectableItemBackground"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"
|
||||
android:drawableRight="@drawable/abc_spinner_mtrl_am_alpha"/>
|
||||
|
||||
<View
|
||||
android:background="@color/divider_inverted"
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/line_dimension"/>
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/other_options"
|
||||
android:visibility="gone"
|
||||
android:orientation="vertical">
|
||||
|
||||
<android.support.v7.widget.SwitchCompat
|
||||
android:gravity="center_vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:text="@string/light_theme"
|
||||
android:textSize="12sp"
|
||||
android:id="@id/switch_light_theme"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
|
||||
<android.support.v7.widget.SwitchCompat
|
||||
android:gravity="center_vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:text="@string/keyboard_suggestions_and_swipe"
|
||||
android:textSize="12sp"
|
||||
android:id="@id/switch_suggestions_active"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
|
||||
<android.support.v7.widget.SwitchCompat
|
||||
android:gravity="center_vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:text="@string/auto_save"
|
||||
android:textSize="12sp"
|
||||
android:id="@id/switch_auto_save"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
|
||||
<TextView
|
||||
android:id="@id/drawer_button_encoding"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:text="@string/codifica"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:textSize="12sp"
|
||||
android:clickable="true"
|
||||
android:background="?selectableItemBackground"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
|
||||
<android.support.v7.widget.SwitchCompat
|
||||
android:gravity="center_vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:text="@string/ignore_back_button"
|
||||
android:textSize="12sp"
|
||||
android:id="@id/switch_ignore_backbutton"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
|
||||
<android.support.v7.widget.SwitchCompat
|
||||
android:gravity="center_vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:text="@string/split_text_if_too_long"
|
||||
android:textSize="12sp"
|
||||
android:id="@id/switch_page_system"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
|
||||
<android.support.v7.widget.SwitchCompat
|
||||
android:gravity="center_vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:text="@string/send_error_reports"
|
||||
android:textSize="12sp"
|
||||
android:id="@id/switch_send_error_reports"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
@@ -18,7 +18,7 @@
|
||||
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<LinearLayout
|
||||
android:layout_height="72dp"
|
||||
android:layout_height="64dp"
|
||||
android:layout_width="match_parent"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="horizontal"
|
||||
@@ -29,20 +29,20 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="5"
|
||||
android:textSize="18sp"
|
||||
android:paddingStart="@dimen/item_drawer_list_padding"
|
||||
android:paddingEnd="@dimen/item_drawer_list_padding"
|
||||
android:paddingLeft="@dimen/item_drawer_list_padding"
|
||||
android:paddingRight="@dimen/item_drawer_list_padding"
|
||||
android:textSize="16sp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="8dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="8dp"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"
|
||||
android:ellipsize="end"/>
|
||||
android:textColor="@color/navigation_drawer_button_text_color_inverted"/>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="30dp"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@id/button_remove_from_list"
|
||||
android:src="@drawable/ic_close_dark"/>
|
||||
android:src="@drawable/ic_close_dark"
|
||||
android:padding="15dp"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
@@ -18,7 +18,14 @@
|
||||
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<transition xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@drawable/list_pressed_holo_dark" />
|
||||
<item android:drawable="@drawable/list_longpressed_holo_dark" />
|
||||
</transition>
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/my_awesome_toolbar"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:layout_width="match_parent"
|
||||
android:minHeight="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
|
||||
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
|
@@ -22,25 +22,25 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<item
|
||||
android:id="@id/im_select_folder"
|
||||
android:showAsAction="ifRoom"
|
||||
app:showAsAction="ifRoom"
|
||||
android:title="@string/seleziona">
|
||||
</item>
|
||||
<item
|
||||
android:id="@id/im_set_as_working_folder"
|
||||
android:showAsAction="ifRoom"
|
||||
app:showAsAction="ifRoom"
|
||||
android:icon="@drawable/ic_action_bookmark_outline"
|
||||
android:title="@string/set_as_working_folder">
|
||||
</item>
|
||||
<item
|
||||
android:id="@id/im_is_working_folder"
|
||||
android:showAsAction="ifRoom"
|
||||
app:showAsAction="ifRoom"
|
||||
android:icon="@drawable/ic_action_bookmark"
|
||||
android:title="@string/is_the_working_folder">
|
||||
</item>
|
||||
<item
|
||||
android:id="@id/im_search"
|
||||
android:actionViewClass="android.widget.SearchView"
|
||||
android:showAsAction="ifRoom|collapseActionView"
|
||||
app:actionViewClass="android.support.v7.widget.SearchView"
|
||||
app:showAsAction="ifRoom|collapseActionView"
|
||||
android:icon="@drawable/ic_action_search"
|
||||
android:title="@string/find">
|
||||
</item>
|
||||
|
@@ -22,44 +22,45 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<item
|
||||
android:id="@id/im_save"
|
||||
android:showAsAction="ifRoom"
|
||||
app:showAsAction="ifRoom"
|
||||
android:icon="@drawable/ic_action_save"
|
||||
android:title="@string/salva"/>
|
||||
<item
|
||||
android:id="@id/im_undo"
|
||||
android:showAsAction="ifRoom"
|
||||
app:showAsAction="ifRoom"
|
||||
android:icon="@drawable/ic_action_undo"
|
||||
android:title="@string/testo_indietro"
|
||||
/>
|
||||
<item
|
||||
android:id="@id/im_redo"
|
||||
android:showAsAction="ifRoom"
|
||||
app:showAsAction="ifRoom"
|
||||
android:icon="@drawable/ic_action_redo"
|
||||
android:title="@string/testo_rifai"
|
||||
/>
|
||||
<item
|
||||
android:id="@id/im_search"
|
||||
android:showAsAction="never"
|
||||
app:showAsAction="never"
|
||||
android:title="@string/find"
|
||||
/>
|
||||
<item
|
||||
android:id="@id/im_goto_line"
|
||||
android:showAsAction="never"
|
||||
app:showAsAction="never"
|
||||
android:title="@string/goto_line"
|
||||
/>
|
||||
<item
|
||||
android:id="@id/im_view_it_on_browser"
|
||||
android:showAsAction="never"
|
||||
app:showAsAction="never"
|
||||
android:title="@string/view_it_on_the_web"
|
||||
/>
|
||||
<item
|
||||
android:id="@id/im_share"
|
||||
android:showAsAction="never"
|
||||
app:showAsAction="never"
|
||||
android:title="@string/share"
|
||||
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
|
||||
/>
|
||||
<item
|
||||
android:id="@id/im_info"
|
||||
android:showAsAction="never"
|
||||
app:showAsAction="never"
|
||||
android:title="@string/info"
|
||||
/>
|
||||
|
||||
|
@@ -30,29 +30,29 @@
|
||||
</item>-->
|
||||
<item
|
||||
android:id="@id/im_cancel"
|
||||
android:showAsAction="always"
|
||||
app:showAsAction="always"
|
||||
android:title="@android:string/cancel">
|
||||
</item>
|
||||
|
||||
<item
|
||||
android:id="@id/im_previous_item"
|
||||
android:showAsAction="always"
|
||||
app:showAsAction="always"
|
||||
android:title="@string/previous">
|
||||
</item>
|
||||
<item
|
||||
android:id="@id/im_next_item"
|
||||
android:showAsAction="always"
|
||||
app:showAsAction="always"
|
||||
android:title="@string/next">
|
||||
</item>
|
||||
<item
|
||||
android:id="@id/im_replace"
|
||||
android:showAsAction="always"
|
||||
app:showAsAction="always"
|
||||
android:title="@string/replace">
|
||||
</item>
|
||||
<!--<item
|
||||
android:id="@id/im_cancel"
|
||||
android:icon="@drawable/ic_action_close"
|
||||
android:title="@android:string/cancel"
|
||||
android:title="@app:tring/cancel"
|
||||
app:showAsAction="always">
|
||||
</item>-->
|
||||
</menu>
|
||||
|
@@ -24,10 +24,10 @@
|
||||
<item
|
||||
android:id="@id/im_new_file"
|
||||
android:title="@string/file"
|
||||
android:showAsAction="ifRoom"/>
|
||||
app:showAsAction="ifRoom"/>
|
||||
|
||||
<item
|
||||
android:id="@id/im_new_folder"
|
||||
android:title="@string/folder"
|
||||
android:showAsAction="ifRoom"/>
|
||||
app:showAsAction="ifRoom"/>
|
||||
</menu>
|
@@ -20,11 +20,12 @@
|
||||
|
||||
<changelog bulletedList="true">
|
||||
|
||||
<changelogversion versionName="1.13" changeDate="Oct 17, 2014">
|
||||
<changelogversion versionName="1.13" changeDate="Oct 25, 2014">
|
||||
<changelogtext>Turbo Editor is a free and open source app. Now you can show your appreciation and support development by donating :)</changelogtext>
|
||||
<changelogtext>New visual changes</changelogtext>
|
||||
<changelogtext>New visual changes to make the app more "Material"</changelogtext>
|
||||
<changelogtext>New save dialog when you are about to close a file</changelogtext>
|
||||
<changelogtext>Many enchantments and fixes</changelogtext>
|
||||
<changelogtext>Have feedback? Please use xda or the email. Thanks!</changelogtext>
|
||||
</changelogversion>
|
||||
|
||||
<changelogversion versionName="1.12" changeDate="Oct 9, 2014">
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">فتح</string>
|
||||
<string name="file_saved_with_success">تم حفظ الملف % 1$ s مع النجاح!</string>
|
||||
<string name="open_a_file">فتح ملف</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Obre</string>
|
||||
<string name="file_saved_with_success">L\'arxiu %1$s s\'ha desat amb èxit!</string>
|
||||
<string name="open_a_file">Obre un arxiu</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Otevřít</string>
|
||||
<string name="file_saved_with_success">Soubor %1$s byl úspěšně uložen!</string>
|
||||
<string name="open_a_file">Otevřít soubor</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Öffnen</string>
|
||||
<string name="file_saved_with_success">Die Datei %1$s wurde erfolgreich gespeichert!</string>
|
||||
<string name="open_a_file">Datei öffnen</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Άνοιγμα</string>
|
||||
<string name="file_saved_with_success">Το αρχείο %1$s αποθηκεύτηκε με επιτυχία!</string>
|
||||
<string name="open_a_file">Άνοιγμα αρχείου</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Abrir</string>
|
||||
<string name="file_saved_with_success">¡El archivo %1$s fue guardado exitosamente!</string>
|
||||
<string name="open_a_file">Abrir archivo</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Avaa</string>
|
||||
<string name="file_saved_with_success">Tiedosto \'%1$s\' on tallennettu onnistuneesti!</string>
|
||||
<string name="open_a_file">Avaa tiedosto</string>
|
||||
<string name="no">Ei</string>
|
||||
<string name="new_file">Uusi tiedosto</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -31,7 +31,7 @@
|
||||
<string name="folder">Dossier </string>
|
||||
<string name="light_theme">Thème clair</string>
|
||||
<string name="goto_line">Aller à la ligne</string>
|
||||
<string name="goto_page">Go to Page…</string>
|
||||
<string name="goto_page">Aller à la Page…</string>
|
||||
<string name="find">Rechercher</string>
|
||||
<string name="replace">Remplacer</string>
|
||||
<string name="share">Partager</string>
|
||||
@@ -71,4 +71,6 @@
|
||||
<string name="open">Ouvrir</string>
|
||||
<string name="file_saved_with_success">Le fichier %1$s a été enregistré avec succès !</string>
|
||||
<string name="open_a_file">Ouvrir un fichier</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Megnyit</string>
|
||||
<string name="file_saved_with_success">A(z) %1$s fájl sikeresen mentve!</string>
|
||||
<string name="open_a_file">Fájl megnyitása</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Buka</string>
|
||||
<string name="file_saved_with_success">File %1$s berhasil disimpan!</string>
|
||||
<string name="open_a_file">Buka file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Apri</string>
|
||||
<string name="file_saved_with_success">Il file %1$s è stato salvato con successo!</string>
|
||||
<string name="open_a_file">Apri un file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">Nuovo file</string>
|
||||
</resources>
|
||||
|
@@ -21,11 +21,11 @@
|
||||
<resources>
|
||||
<string name="close">Chiudi</string>
|
||||
<string name="about_action">Informazioni</string>
|
||||
<string name="about_message"><![CDATA[Turbo Editor è un'app gratuita ed <a href="http://github.com/vmihalachi/turbo-editor">open source</a>.
|
||||
<string name="about_message"><![CDATA[Turbo Editor e un\'app gratuita ed <a href="http://github.com/vmihalachi/turbo-editor">open source</a>.
|
||||
Copyright 2013-2014 <a href="https://plus.google.com/+VladMihalachi">Vlad Mihalachi</a>. Tutti i diritti riservati.<br/>
|
||||
<br/>
|
||||
Grazie mille a tutti quelli che
|
||||
<a href="http://crowdin.net/project/turbo-client">hanno aiutato con le traduzioni</a> o hanno donato</a>.<br/>
|
||||
<br/>
|
||||
Se vuoi inviare consigli qui c'e il link al <a href="http://forum.xda-developers.com/android/apps-games/app-turbo-editor-text-editor-t2832016">XDA Thread</a>]]></string>
|
||||
Se vuoi inviare consigli qui c\'e il link al <a href="http://forum.xda-developers.com/android/apps-games/app-turbo-editor-text-editor-t2832016">XDA Thread</a>]]></string>
|
||||
</resources>
|
||||
|
@@ -21,7 +21,7 @@
|
||||
<resources>
|
||||
<string name="donation_action">Dona</string>
|
||||
<string name="donation_title">Fai una donazione allo sviluppatore</string>
|
||||
<string name="donation_info"><![CDATA[Turbo Editor è un'app gratuita e <a href="http://github.com/vmihalachi/turbo-editor/">open source</a>.
|
||||
<string name="donation_info"><![CDATA[Turbo Editor è un\'app gratuita e <a href="http://github.com/vmihalachi/turbo-editor/">open source</a>.
|
||||
Puoi mostrare il tuo apprezzamento e aiutare nello sviluppo donando:]]></string>
|
||||
<string name="donation_item_bought">Hai già effettuato la donazione di questo elemento.</string>
|
||||
<string name="donation_2">Un gelato</string>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -31,7 +31,7 @@
|
||||
<string name="folder">フォルダー</string>
|
||||
<string name="light_theme">ライトテーマ</string>
|
||||
<string name="goto_line">行へ移動</string>
|
||||
<string name="goto_page">Go to Page…</string>
|
||||
<string name="goto_page">ページを移動…</string>
|
||||
<string name="find">検索</string>
|
||||
<string name="replace">置換</string>
|
||||
<string name="share">共有</string>
|
||||
@@ -71,4 +71,6 @@
|
||||
<string name="open">開く</string>
|
||||
<string name="file_saved_with_success">ファイル %1$s は保存されました!</string>
|
||||
<string name="open_a_file">ファイルを開く</string>
|
||||
<string name="no">いいえ</string>
|
||||
<string name="new_file">新しいファイル</string>
|
||||
</resources>
|
||||
|
@@ -19,16 +19,15 @@
|
||||
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<resources>
|
||||
<string name="close">Close</string>
|
||||
<string name="about_action">About</string>
|
||||
<string name="close">閉じる</string>
|
||||
<string name="about_action">アプリについて</string>
|
||||
<string name="about_message"><![CDATA[
|
||||
Turbo Editor is a free and <a href="http://github.com/vmihalachi/turbo-editor">open source</a> app.
|
||||
Turbo Editor はフリーで <a href="http://github.com/vmihalachi/turbo-editor">オープン ソース</a> のアプリです.
|
||||
Copyright 2013-2014 <a href="https://plus.google.com/+VladMihalachi">Vlad Mihalachi</a>. All Rights Reserved.<br/>
|
||||
<br/>
|
||||
Many thanks to all who
|
||||
<a href="http://crowdin.net/project/turbo-client">helped with translations</a> or
|
||||
donated to me</a>.<br/>
|
||||
<a href="http://crowdin.net/project/turbo-client">翻訳にご協力いただいた</a> あるいは
|
||||
私に寄付をいただいた</a> すべての方に非常に感謝いたします.<br/>
|
||||
<br/>
|
||||
If you want to send feedback here is the <a href="http://forum.xda-developers.com/android/apps-games/app-turbo-editor-text-editor-t2832016">XDA thread</a>
|
||||
フィードバックを送りたい方は、こちら <a href="http://forum.xda-developers.com/android/apps-games/app-turbo-editor-text-editor-t2832016">XDA スレッド</a> へ
|
||||
]]></string>
|
||||
</resources>
|
||||
|
@@ -20,18 +20,18 @@
|
||||
-->
|
||||
<resources>
|
||||
<string name="donation_action">寄付</string>
|
||||
<string name="donation_title">Donate to developer</string>
|
||||
<string name="donation_title">開発者に寄付</string>
|
||||
<string name="donation_info"><![CDATA[
|
||||
Turbo Editor is a free and <a href="http://github.com/vmihalachi/turbo-editor/">open source</a> app.
|
||||
You can show your appreciation and support development by donating:
|
||||
Turbo Editor はフリーで <a href="http://github.com/vmihalachi/turbo-editor/">オープン ソース</a> のアプリです.
|
||||
あなたの寄付によって感謝の気持ちを表したり、開発をサポートすることができます:
|
||||
]]></string>
|
||||
<string name="donation_item_bought">You\'ve donated for this item already.</string>
|
||||
<string name="donation_2">An ice cream</string>
|
||||
<string name="donation_4">Cup of coffee</string>
|
||||
<string name="donation_10">Electricity bills</string>
|
||||
<string name="donation_20">The right pillow</string>
|
||||
<string name="donation_50">Solid-state drive</string>
|
||||
<string name="donation_99">Sound system</string>
|
||||
<string name="donation_error_iab_setup">Failed to setup in-app-billing service!</string>
|
||||
<string name="donation_no_responsibility">Notice that Google is not responsible for that payments method.</string>
|
||||
<string name="donation_item_bought">既にこのアイテムに寄付しています。</string>
|
||||
<string name="donation_2">アイスクリーム</string>
|
||||
<string name="donation_4">コーヒー1杯</string>
|
||||
<string name="donation_10">電気代</string>
|
||||
<string name="donation_20">ちょうど良い枕</string>
|
||||
<string name="donation_50">SSD</string>
|
||||
<string name="donation_99">サウンドシステム</string>
|
||||
<string name="donation_error_iab_setup">アプリ内課金サービスのセットアップに失敗しました。</string>
|
||||
<string name="donation_no_responsibility">この決済についてはGoogleが責任を負わないことに注意してください。</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">열기</string>
|
||||
<string name="file_saved_with_success">파일 %1$s 저장 완료!</string>
|
||||
<string name="open_a_file">파일 열기</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Openen</string>
|
||||
<string name="file_saved_with_success">Het bestand %1$s is met succes opgeslagen!</string>
|
||||
<string name="open_a_file">Open een bestand</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Open</string>
|
||||
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
|
||||
<string name="open_a_file">Open a file</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Otwórz</string>
|
||||
<string name="file_saved_with_success">Plik %1$s został pomyślnie zapisany!</string>
|
||||
<string name="open_a_file">Otwórz plik</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -71,4 +71,6 @@
|
||||
<string name="open">Abrir</string>
|
||||
<string name="file_saved_with_success">O arquivo %1$s foi salvo com sucesso!</string>
|
||||
<string name="open_a_file">Abrir um arquivo</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -31,7 +31,7 @@
|
||||
<string name="folder">Pasta</string>
|
||||
<string name="light_theme">Tema claro</string>
|
||||
<string name="goto_line">Ir para a linha</string>
|
||||
<string name="goto_page">Go to Page…</string>
|
||||
<string name="goto_page">Ir para a página…</string>
|
||||
<string name="find">Localizar</string>
|
||||
<string name="replace">Substituir</string>
|
||||
<string name="share">Partilhar</string>
|
||||
@@ -71,4 +71,6 @@
|
||||
<string name="open">Abrir</string>
|
||||
<string name="file_saved_with_success">O ficheiro %1$s foi gravado com sucesso!</string>
|
||||
<string name="open_a_file">Abrir um ficheiro</string>
|
||||
<string name="no">No</string>
|
||||
<string name="new_file">New file</string>
|
||||
</resources>
|
||||
|
@@ -19,16 +19,16 @@
|
||||
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<resources>
|
||||
<string name="close">Close</string>
|
||||
<string name="about_action">About</string>
|
||||
<string name="close">Fechar </string>
|
||||
<string name="about_action">Sobre</string>
|
||||
<string name="about_message"><![CDATA[
|
||||
Turbo Editor is a free and <a href="http://github.com/vmihalachi/turbo-editor">open source</a> app.
|
||||
Copyright 2013-2014 <a href="https://plus.google.com/+VladMihalachi">Vlad Mihalachi</a>. All Rights Reserved.<br/>
|
||||
O Turbo Editor é uma <a href="http://github.com/vmihalachi/turbo-editor">aplicação livre</a>.
|
||||
Copyright 2013-2014 <a href="https://plus.google.com/+VladMihalachi">Vlad Mihalachi</a>. Todos os direitos reservados.<br/>
|
||||
<br/>
|
||||
Many thanks to all who
|
||||
<a href="http://crowdin.net/project/turbo-client">helped with translations</a> or
|
||||
donated to me</a>.<br/>
|
||||
Muito obrigado a todos os que
|
||||
<a href="http://crowdin.net/project/turbo-client">ajudaram a traduzir</a> ou
|
||||
efetuaram donativos</a>.<br/>
|
||||
<br/>
|
||||
If you want to send feedback here is the <a href="http://forum.xda-developers.com/android/apps-games/app-turbo-editor-text-editor-t2832016">XDA thread</a>
|
||||
Se quiser fazer algum comentário aceda ao <a href="http://forum.xda-developers.com/android/apps-games/app-turbo-editor-text-editor-t2832016">fórum XDA</a>.
|
||||
]]></string>
|
||||
</resources>
|
||||
|