Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
474ce28737 | |||
fca3410f26 | |||
44773c2f1c | |||
41e9161e2b | |||
2d7bf9f05d | |||
40c9506ee2 | |||
b3a8539afa | |||
4d641485a5 |
66
README.md
66
README.md
@ -1,4 +1,64 @@
|
||||
turboeditor
|
||||
===========
|
||||
# Turbo Editor
|
||||
Simple, powerful and Open Source file editor for Android.
|
||||
|
||||
simple and beatiful android file editor
|
||||
### Contribute
|
||||
You can contribute to this project in many ways:
|
||||
* Browse our issues, comment on proposals, report bugs.
|
||||
* Clone the balanced-dashboard repo, make some changes according to our
|
||||
development guidelines and issue a pull-request with your changes.
|
||||
* Help to translate the application on [Crowdin][crowdin]
|
||||
* [Donate][donate]
|
||||
|
||||
------
|
||||
|
||||
### Development guidelines
|
||||
1. Fork it (`git clone git://github.com/vmihalachi/turbo-editor.git`)
|
||||
2. Create your feature branch (`git checkout -b my-new-feature`)
|
||||
3. Write your code
|
||||
4. Commit your changes (`git commit -am 'Add some feature'`)
|
||||
5. Push to the branch (`git push origin my-new-feature`)
|
||||
6. Create new [pull request](https://help.github.com/articles/using-pull-requests)
|
||||
|
||||
------
|
||||
|
||||
###Donate
|
||||
* Make a [Paypal][donate paypal] donation
|
||||
* Flattr this project [](https://flattr.com/submit/auto?user_id=vmihalachi&url=https://raw.github.com/vmihalachi/turbo-editor&title=Turbo Editor&language=&tags=github&category=software)
|
||||
|
||||
------
|
||||
|
||||
###Download
|
||||
* From the [Play Store][download playstore]
|
||||
* Want to try beta releases? Be a part of the Google Plus [Community][community googleplus]!
|
||||
|
||||
------
|
||||
|
||||
### Developer
|
||||
[Vlad Mihalachi][developer site]
|
||||
|
||||
------
|
||||
|
||||
### A special thanks to..
|
||||
* [Dumitru Grubii][contributor dumitru grubii] for the icon
|
||||
* All the translators
|
||||
* You?
|
||||
|
||||
------
|
||||
|
||||
### License
|
||||
Turbo Client is made available under the terms of the [GPLv3][gplv3].
|
||||
|
||||
See the [LICENSE][license] file that accompanies this distribution for the full text of the license.
|
||||
|
||||
[gplv3]: http://www.gnu.org/licenses/gpl.html
|
||||
[license]: https://github.com/vmihalachi/turbo-editor/LICENSE
|
||||
[donate]: https://github.com/vmihalachi/turbo-editor#donate
|
||||
[donate paypal]: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=PUQXSX6MTXHZ2
|
||||
[community googleplus]: https://plus.google.com/u/0/communities/111974095419108178946
|
||||
[download playstore]: https://play.google.com/store/apps/details?id=com.vmihalachi.turboeditor
|
||||
[crowdin]: https://crowdin.net/project/turbo-client
|
||||
[developer site]: http://vmihalachi.com/
|
||||
[crowdin]: https://crowdin.net/project/turbo-client
|
||||
[contributor dumitru grubii]: https://twitter.com/DumitruGrubii
|
||||
[project issues]: https://github.com/vmihalachi/turbo-editor/issues
|
||||
[project wiki]: https://github.com/vmihalachi/turbo-editor/wiki
|
||||
|
@ -24,5 +24,7 @@ android {
|
||||
|
||||
dependencies {
|
||||
compile 'com.github.gabrielemariotti.changeloglib:library:1.2.0'
|
||||
compile 'com.android.support:support-v13:18.0.0'
|
||||
compile "commons-io:commons-io:2.4"
|
||||
compile fileTree(dir: 'libs', include: '*.jar')
|
||||
}
|
||||
|
@ -21,7 +21,7 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.vmihalachi.turboeditor"
|
||||
android:versionCode="2"
|
||||
android:versionName="0.2"
|
||||
android:versionName="0.3"
|
||||
android:installLocation="auto">
|
||||
|
||||
<uses-sdk
|
||||
@ -39,7 +39,7 @@
|
||||
android:theme="@style/AppStyle">
|
||||
|
||||
<activity
|
||||
android:name=".HomeActivity"
|
||||
android:name=".activity.HomeActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize"
|
||||
android:hardwareAccelerated="false"
|
||||
@ -72,12 +72,17 @@
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name="com.vmihalachi.turboeditor.PreferenceAbout"
|
||||
android:name=".activity.PreferenceAbout"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize"
|
||||
android:label="@string/aboutactivity_info_category"/>
|
||||
|
||||
<activity
|
||||
android:name="com.vmihalachi.turboeditor.SelectFileActivity"
|
||||
android:name=".activity.LicensesActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize"
|
||||
android:label="@string/open_source_license"/>
|
||||
|
||||
<activity
|
||||
android:name=".activity.SelectFileActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize"
|
||||
android:label="@string/open_a_file"/>
|
||||
|
||||
|
@ -1,16 +0,0 @@
|
||||
package com.vmihalachi.turboeditor;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
|
||||
public class LicensesActivity extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_licenses);
|
||||
ListView listView = (ListView) findViewById(android.R.id.list);
|
||||
listView.setAdapter(adapter);
|
||||
}
|
||||
}
|
@ -17,15 +17,17 @@
|
||||
* along with Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.vmihalachi.turboeditor;
|
||||
package com.vmihalachi.turboeditor.activity;
|
||||
|
||||
import android.app.ActionBar;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.app.ActionBarDrawerToggle;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.text.TextUtils;
|
||||
@ -36,10 +38,15 @@ import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
|
||||
import com.vmihalachi.turboeditor.R;
|
||||
import com.vmihalachi.turboeditor.event.ErrorOpeningFileEvent;
|
||||
import com.vmihalachi.turboeditor.event.FileSavedEvent;
|
||||
import com.vmihalachi.turboeditor.event.FileSelectedEvent;
|
||||
import com.vmihalachi.turboeditor.event.NewFileOpened;
|
||||
import com.vmihalachi.turboeditor.fragment.ChangelogDialogFragment;
|
||||
import com.vmihalachi.turboeditor.fragment.EditorFragment;
|
||||
import com.vmihalachi.turboeditor.fragment.NoFileOpenedFragment;
|
||||
import com.vmihalachi.turboeditor.helper.AppInfoHelper;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
|
||||
@ -59,22 +66,20 @@ public class HomeActivity extends Activity {
|
||||
*/
|
||||
protected DrawerLayout mDrawerLayout;
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
//
|
||||
checkTaskRoot();
|
||||
//
|
||||
setContentView(R.layout.activity_home);
|
||||
//
|
||||
setupDrawerLayout();
|
||||
// setup the navigation drawer
|
||||
setupNavigationDrawer();
|
||||
// Replace fragment
|
||||
getFragmentManager()
|
||||
.beginTransaction()
|
||||
.replace(R.id.fragment_editor, new NoFileOpenedFragment())
|
||||
.replace(R.id.fragment_editor, new NoFileOpenedFragment())
|
||||
.commit();
|
||||
/* First Time we open this activity */
|
||||
if (savedInstanceState == null) {
|
||||
@ -83,8 +88,10 @@ public class HomeActivity extends Activity {
|
||||
// Set the default title
|
||||
getActionBar().setTitle(getString(R.string.nome_app_turbo_editor));
|
||||
}
|
||||
//
|
||||
receiveIntent();
|
||||
// parse the intent
|
||||
parseIntent(getIntent());
|
||||
// show a dialog with the changelog
|
||||
showChangeLog();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -96,6 +103,7 @@ public class HomeActivity extends Activity {
|
||||
mDrawerToggle.syncState();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -106,6 +114,7 @@ public class HomeActivity extends Activity {
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -116,6 +125,7 @@ public class HomeActivity extends Activity {
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -129,6 +139,7 @@ public class HomeActivity extends Activity {
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -138,6 +149,7 @@ public class HomeActivity extends Activity {
|
||||
mDrawerToggle.onConfigurationChanged(newConfig);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -147,6 +159,7 @@ public class HomeActivity extends Activity {
|
||||
return super.onCreateOptionsMenu(menu);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -155,7 +168,7 @@ public class HomeActivity extends Activity {
|
||||
/* If we clicked on the Navigation Drawer Menu item */
|
||||
if (mDrawerToggle.onOptionsItemSelected(item)) {
|
||||
return true;
|
||||
} else switch (item.getItemId()){
|
||||
} else switch (item.getItemId()) {
|
||||
case R.id.im_open:
|
||||
startActivityForResult(new Intent(HomeActivity.this, SelectFileActivity.class)
|
||||
.putExtra("path", "")
|
||||
@ -170,6 +183,7 @@ public class HomeActivity extends Activity {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -177,33 +191,42 @@ public class HomeActivity extends Activity {
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (resultCode == RESULT_OK && requestCode == SELECT_FILE_CODE) {
|
||||
String path = data.getStringExtra("path");
|
||||
if(!TextUtils.isEmpty(path)){
|
||||
EventBus.getDefault().postSticky(new NewFileOpened(path));
|
||||
String path = data.getStringExtra("path");
|
||||
if (!TextUtils.isEmpty(path)) {
|
||||
EventBus.getDefault().postSticky(new NewFileOpened(path));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected void onNewIntent(Intent intent) {
|
||||
super.onNewIntent(intent);
|
||||
parseIntent(intent);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param event
|
||||
*/
|
||||
public void onEvent(FileSelectedEvent event){
|
||||
public void onEvent(FileSelectedEvent event) {
|
||||
// Close the drawer
|
||||
mDrawerLayout.closeDrawer(Gravity.LEFT);
|
||||
// Replace fragment
|
||||
getFragmentManager()
|
||||
.beginTransaction()
|
||||
.replace(R.id.fragment_editor, EditorFragment.newInstance(event.getPath()))
|
||||
.replace(R.id.fragment_editor, EditorFragment.newInstance(event.getPath()))
|
||||
.commit();
|
||||
}
|
||||
|
||||
/**
|
||||
* When a file is saved
|
||||
* Invoked by the EditorFragment
|
||||
*
|
||||
* @param event The event called
|
||||
*/
|
||||
public void onEvent(FileSavedEvent event){
|
||||
public void onEvent(FileSavedEvent event) {
|
||||
try {
|
||||
closeKeyBoard();
|
||||
} catch (NullPointerException e) {
|
||||
@ -232,15 +255,18 @@ public class HomeActivity extends Activity {
|
||||
// Replace fragment
|
||||
getFragmentManager()
|
||||
.beginTransaction()
|
||||
.replace(R.id.fragment_editor, new NoFileOpenedFragment())
|
||||
.replace(R.id.fragment_editor, new NoFileOpenedFragment())
|
||||
.commit();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* When a file can't be opened
|
||||
* Invoked by the EditorFragment
|
||||
*
|
||||
* @param event The event called
|
||||
*/
|
||||
public void onEvent(ErrorOpeningFileEvent event){
|
||||
public void onEvent(ErrorOpeningFileEvent event) {
|
||||
//
|
||||
mDrawerLayout.openDrawer(Gravity.LEFT);
|
||||
//
|
||||
@ -248,7 +274,7 @@ public class HomeActivity extends Activity {
|
||||
// Replace fragment
|
||||
getFragmentManager()
|
||||
.beginTransaction()
|
||||
.replace(R.id.fragment_editor, new NoFileOpenedFragment())
|
||||
.replace(R.id.fragment_editor, new NoFileOpenedFragment())
|
||||
.commit();
|
||||
}
|
||||
|
||||
@ -268,16 +294,9 @@ public class HomeActivity extends Activity {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Setup the navigation drawer
|
||||
*/
|
||||
private void checkTaskRoot(){
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private void setupDrawerLayout(){
|
||||
final String defaultTitle = getString(R.string.nome_app_turbo_editor);
|
||||
private void setupNavigationDrawer() {
|
||||
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
/* Action Bar */
|
||||
final ActionBar ab = getActionBar();
|
||||
@ -292,11 +311,17 @@ public class HomeActivity extends Activity {
|
||||
R.string.nome_app_turbo_editor,
|
||||
R.string.nome_app_turbo_editor) {
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void onDrawerClosed(View view) {
|
||||
invalidateOptionsMenu();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void onDrawerOpened(View drawerView) {
|
||||
invalidateOptionsMenu();
|
||||
@ -306,27 +331,23 @@ public class HomeActivity extends Activity {
|
||||
mDrawerLayout.setDrawerListener(mDrawerToggle);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNewIntent(Intent intent) {
|
||||
super.onNewIntent(intent);
|
||||
final String action = intent.getAction();
|
||||
final String type = intent.getType();
|
||||
|
||||
if (Intent.ACTION_VIEW.equals(action)
|
||||
|| Intent.ACTION_EDIT.equals(action)
|
||||
|| Intent.ACTION_PICK.equals(action)
|
||||
&& type != null) {
|
||||
// Post the NewFileOpened Event
|
||||
EventBus.getDefault().postSticky(new NewFileOpened(intent.getData().getPath()));
|
||||
/**
|
||||
* Show a dialog with the changelog
|
||||
*/
|
||||
private void showChangeLog() {
|
||||
final String currentVersion = AppInfoHelper.getCurrentVersion(this);
|
||||
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
final String lastVersion = preferences.getString("last_version", currentVersion);
|
||||
preferences.edit().putString("last_version", currentVersion).commit();
|
||||
if (!lastVersion.equals(currentVersion)) {
|
||||
ChangelogDialogFragment.showChangeLogDialog(getFragmentManager());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Parses the intent
|
||||
*/
|
||||
private void receiveIntent(){
|
||||
// Get intent, action and MIME type
|
||||
final Intent intent = getIntent();
|
||||
private void parseIntent(Intent intent) {
|
||||
final String action = intent.getAction();
|
||||
final String type = intent.getType();
|
||||
|
@ -0,0 +1,50 @@
|
||||
package com.vmihalachi.turboeditor.activity;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.vmihalachi.turboeditor.R;
|
||||
|
||||
public class LicensesActivity extends Activity implements AdapterView.OnItemClickListener {
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_licenses);
|
||||
ListView listView = (ListView) findViewById(android.R.id.list);
|
||||
listView.setOnItemClickListener(this);
|
||||
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.open_source_libs));
|
||||
listView.setAdapter(adapter);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
String openSourceLib = ((TextView) view.findViewById(android.R.id.text1)).getText().toString();
|
||||
Intent browserIntent = null;
|
||||
if (openSourceLib.equals("ChangeLog Library")) {
|
||||
browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/gabrielemariotti/changeloglib?source=c#license"));
|
||||
} else if (openSourceLib.equals("EventBus")) {
|
||||
browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/greenrobot/EventBus?source=c#license"));
|
||||
} else if (openSourceLib.equals("commons-io")) {
|
||||
browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://commons.apache.org/proper/commons-io/"));
|
||||
}
|
||||
if (browserIntent != null) {
|
||||
startActivity(browserIntent);
|
||||
}
|
||||
}
|
||||
}
|
@ -17,22 +17,22 @@
|
||||
* along with Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.vmihalachi.turboeditor;
|
||||
package com.vmihalachi.turboeditor.activity;
|
||||
|
||||
import android.app.Fragment;
|
||||
import android.app.FragmentManager;
|
||||
import android.app.FragmentTransaction;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.preference.Preference;
|
||||
import android.preference.PreferenceActivity;
|
||||
|
||||
import com.vmihalachi.turboeditor.R;
|
||||
import com.vmihalachi.turboeditor.fragment.ChangelogDialogFragment;
|
||||
import com.vmihalachi.turboeditor.helper.AppInfoHelper;
|
||||
|
||||
public class PreferenceAbout extends PreferenceActivity {
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void onCreate(final Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@ -47,12 +47,15 @@ public class PreferenceAbout extends PreferenceActivity {
|
||||
market = findPreference("aboutactivity_authormarket");
|
||||
if (email != null) {
|
||||
email.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean onPreferenceClick(final Preference preference) {
|
||||
Intent i = new Intent(Intent.ACTION_SEND);
|
||||
i.setType("message/rfc822");
|
||||
i.putExtra(Intent.EXTRA_EMAIL, new String[]{"app.feedback.mail@gmail.com"});
|
||||
i.putExtra(Intent.EXTRA_SUBJECT, getApplicationName(getBaseContext()) + " " + getCurrentVersion(getBaseContext()));
|
||||
i.putExtra(Intent.EXTRA_SUBJECT, AppInfoHelper.getApplicationName(getBaseContext()) + " " + AppInfoHelper.getCurrentVersion(getBaseContext()));
|
||||
i.putExtra(Intent.EXTRA_TEXT, "");
|
||||
try {
|
||||
startActivity(Intent.createChooser(i, getString(R.string.aboutactivity_authoremail_summary)));
|
||||
@ -64,15 +67,21 @@ public class PreferenceAbout extends PreferenceActivity {
|
||||
}
|
||||
if (changelog != null) {
|
||||
changelog.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean onPreferenceClick(final Preference preference) {
|
||||
openDialogFragment(new DialogStandardFragment());
|
||||
ChangelogDialogFragment.showChangeLogDialog(getFragmentManager());
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
if (open_source_licenses != null) {
|
||||
open_source_licenses.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean onPreferenceClick(final Preference preference) {
|
||||
startActivity(new Intent(PreferenceAbout.this, LicensesActivity.class));
|
||||
@ -82,6 +91,9 @@ public class PreferenceAbout extends PreferenceActivity {
|
||||
}
|
||||
if (market != null) {
|
||||
market.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean onPreferenceClick(final Preference preference) {
|
||||
try {
|
||||
@ -94,33 +106,4 @@ public class PreferenceAbout extends PreferenceActivity {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void openDialogFragment(DialogStandardFragment dialogStandardFragment) {
|
||||
if (dialogStandardFragment != null) {
|
||||
FragmentManager fm = getFragmentManager();
|
||||
FragmentTransaction ft = fm.beginTransaction();
|
||||
Fragment prev = fm.findFragmentByTag("changelogdemo_dialog");
|
||||
if (prev != null) {
|
||||
ft.remove(prev);
|
||||
}
|
||||
ft.addToBackStack(null);
|
||||
|
||||
dialogStandardFragment.show(ft, "changelogdemo_dialog");
|
||||
}
|
||||
}
|
||||
|
||||
public static String getApplicationName(final Context context) {
|
||||
final ApplicationInfo applicationInfo = context.getApplicationInfo();
|
||||
return context.getString(applicationInfo.labelRes);
|
||||
}
|
||||
|
||||
public static String getCurrentVersion(final Context context) {
|
||||
try {
|
||||
final PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(),
|
||||
0);
|
||||
return packageInfo.versionName;
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
@ -17,7 +17,7 @@
|
||||
* along with Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.vmihalachi.turboeditor;
|
||||
package com.vmihalachi.turboeditor.activity;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
@ -32,6 +32,7 @@ import android.widget.AdapterView;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.vmihalachi.turboeditor.R;
|
||||
import com.vmihalachi.turboeditor.adapter.AdapterDetailedList;
|
||||
import com.vmihalachi.turboeditor.util.AlphanumComparator;
|
||||
|
||||
@ -45,9 +46,6 @@ import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
|
||||
/**
|
||||
* Created by Vlad on 9/24/13.
|
||||
*/
|
||||
public class SelectFileActivity extends Activity implements AdapterView.OnItemClickListener {
|
||||
private String currentFolder;
|
||||
private ListView listView;
|
||||
@ -59,6 +57,9 @@ public class SelectFileActivity extends Activity implements AdapterView.OnItemCl
|
||||
.getAbsolutePath();
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@ -87,6 +88,9 @@ public class SelectFileActivity extends Activity implements AdapterView.OnItemCl
|
||||
finish();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent,
|
||||
View view, int position, long id) {
|
||||
@ -108,6 +112,9 @@ public class SelectFileActivity extends Activity implements AdapterView.OnItemCl
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.activity_select_file, menu);
|
||||
@ -116,6 +123,9 @@ public class SelectFileActivity extends Activity implements AdapterView.OnItemCl
|
||||
return super.onCreateOptionsMenu(menu);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
int i = item.getItemId();
|
||||
@ -147,6 +157,9 @@ public class SelectFileActivity extends Activity implements AdapterView.OnItemCl
|
||||
private class UpdateList extends
|
||||
AsyncTask<String, Void, LinkedList<AdapterDetailedList.FileDetail>> {
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected LinkedList<AdapterDetailedList.FileDetail> doInBackground(final String... params) {
|
||||
try {
|
||||
@ -198,6 +211,9 @@ public class SelectFileActivity extends Activity implements AdapterView.OnItemCl
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected void onPostExecute(final LinkedList<AdapterDetailedList.FileDetail> names) {
|
||||
boolean isRoot = currentFolder.equals("/");
|
||||
@ -209,6 +225,9 @@ public class SelectFileActivity extends Activity implements AdapterView.OnItemCl
|
||||
|
||||
public final Comparator<File> getFileNameComparator() {
|
||||
return new AlphanumComparator() {
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public String getTheString(Object obj) {
|
||||
return ((File) obj).getName()
|
@ -20,7 +20,6 @@
|
||||
package com.vmihalachi.turboeditor.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Typeface;
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@ -30,70 +29,53 @@ import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.vmihalachi.turboeditor.R;
|
||||
import com.vmihalachi.turboeditor.helper.FileHelper;
|
||||
import com.vmihalachi.turboeditor.util.MimeTypes;
|
||||
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Set;
|
||||
|
||||
public class AdapterDetailedList extends
|
||||
ArrayAdapter<AdapterDetailedList.FileDetail> {
|
||||
|
||||
// Layout Inflater
|
||||
final LayoutInflater inflater;
|
||||
private final LayoutInflater inflater;
|
||||
|
||||
// The Context to get drawables from resources
|
||||
private final Context context;
|
||||
|
||||
// The list of names
|
||||
final LinkedList<FileDetail> fileDetails;
|
||||
|
||||
// Change HashMap<Integer, Boolean> to SparseBooleanArray
|
||||
private HashMap<String, Boolean> mSelection =
|
||||
new HashMap<String, Boolean>();
|
||||
|
||||
private final int default_text_color;
|
||||
private final int highlight_text_color;
|
||||
// List of file details
|
||||
private final LinkedList<FileDetail> fileDetails;
|
||||
|
||||
public static class ViewHolder {
|
||||
|
||||
// Text view with the name of the file
|
||||
public TextView label;
|
||||
// Name of the file
|
||||
public TextView nameLabel;
|
||||
|
||||
// Text view with the name of the file
|
||||
// Size of the file
|
||||
public TextView sizeLabel;
|
||||
|
||||
// Date of the file
|
||||
public TextView dateLabel;
|
||||
|
||||
// The icon of the file
|
||||
// Icon of the file
|
||||
public ImageView icon;
|
||||
}
|
||||
|
||||
public AdapterDetailedList(final Context context,
|
||||
final LinkedList<FileDetail> fileDetails,
|
||||
final boolean isRoot) {
|
||||
// super
|
||||
super(context,
|
||||
R.layout.item_file_list,
|
||||
fileDetails);
|
||||
this.context = context;
|
||||
super(context, R.layout.item_file_list, fileDetails);
|
||||
this.fileDetails = fileDetails;
|
||||
// Cache the LayoutInflate to avoid asking for a new one each time.
|
||||
this.inflater = LayoutInflater.from(context);
|
||||
this.default_text_color = context.getResources().getColor(android.R.color.primary_text_dark);
|
||||
this.highlight_text_color = context.getResources().getColor(android.R.color.holo_blue_dark);
|
||||
if (!isRoot) {
|
||||
this.fileDetails.addFirst(new FileDetail("..",
|
||||
context.getString(R.string.folder), ""));
|
||||
this.fileDetails.addFirst(new FileDetail("..", context.getString(R.string.folder), ""));
|
||||
} else {
|
||||
this.fileDetails.addFirst(new FileDetail(context.getString(R.string.home),
|
||||
context.getString(R.string.folder),
|
||||
""));
|
||||
this.fileDetails.addFirst(new FileDetail(context.getString(R.string.home), context.getString(R.string.folder), ""));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public View getView(final int position,
|
||||
View convertView, final ViewGroup parent) {
|
||||
@ -102,7 +84,7 @@ public class AdapterDetailedList extends
|
||||
.inflate(R.layout.item_file_list,
|
||||
null);
|
||||
final ViewHolder hold = new ViewHolder();
|
||||
hold.label = (TextView) convertView.findViewById(android.R.id.title);
|
||||
hold.nameLabel = (TextView) convertView.findViewById(android.R.id.title);
|
||||
hold.sizeLabel = (TextView) convertView.findViewById(android.R.id.text1);
|
||||
hold.dateLabel = (TextView) convertView.findViewById(android.R.id.text2);
|
||||
hold.icon = (ImageView) convertView.findViewById(android.R.id.icon);
|
||||
@ -110,119 +92,46 @@ public class AdapterDetailedList extends
|
||||
final FileDetail fileDetail = fileDetails.get(position);
|
||||
final String fileName = fileDetail.getName();
|
||||
setIcon(hold, fileDetail);
|
||||
hold.label
|
||||
.setText(fileName);
|
||||
hold.sizeLabel
|
||||
.setText(fileDetail.getSize());
|
||||
hold.dateLabel
|
||||
.setText(fileDetail.getDateModified());
|
||||
if (isPositionChecked(fileName)) {
|
||||
hold.label
|
||||
.setTextColor(this.highlight_text_color);
|
||||
hold.label
|
||||
.setTypeface(null, Typeface.ITALIC);
|
||||
} else {
|
||||
hold.label
|
||||
.setTextColor(this.default_text_color);
|
||||
hold.label
|
||||
.setTypeface(null, Typeface.NORMAL);
|
||||
}
|
||||
hold.nameLabel.setText(fileName);
|
||||
hold.sizeLabel.setText(fileDetail.getSize());
|
||||
hold.dateLabel.setText(fileDetail.getDateModified());
|
||||
} else {
|
||||
final ViewHolder hold = ((ViewHolder) convertView.getTag());
|
||||
final FileDetail fileDetail = fileDetails.get(position);
|
||||
final String fileName = fileDetail.getName();
|
||||
setIcon(hold, fileDetail);
|
||||
hold.label
|
||||
.setText(fileName);
|
||||
hold.sizeLabel
|
||||
.setText(fileDetail.getSize());
|
||||
hold.dateLabel
|
||||
.setText(fileDetail.getDateModified());
|
||||
if (isPositionChecked(fileName)) {
|
||||
hold.label
|
||||
.setTextColor(this.highlight_text_color);
|
||||
hold.label
|
||||
.setTypeface(null, Typeface.ITALIC);
|
||||
} else {
|
||||
hold.label
|
||||
.setTextColor(this.default_text_color);
|
||||
hold.label
|
||||
.setTypeface(null, Typeface.NORMAL);
|
||||
}
|
||||
hold.nameLabel.setText(fileName);
|
||||
hold.sizeLabel.setText(fileDetail.getSize());
|
||||
hold.dateLabel.setText(fileDetail.getDateModified());
|
||||
}
|
||||
return convertView;
|
||||
}
|
||||
|
||||
private void setIcon(final ViewHolder viewHolder,
|
||||
final FileDetail fileDetail) {
|
||||
private void setIcon(final ViewHolder viewHolder, final FileDetail fileDetail) {
|
||||
final String fileName = fileDetail.getName();
|
||||
final String ext = FileHelper.getExtension(fileName);
|
||||
final String ext = FilenameUtils.getExtension(fileName);
|
||||
if (fileDetail.isFolder()) {
|
||||
viewHolder.icon
|
||||
.setImageResource(R.color.file_folder);
|
||||
} else if (Arrays.asList(MimeTypes.MIME_HTML)
|
||||
.contains(ext) || ext.endsWith("html")) {
|
||||
viewHolder.icon
|
||||
.setImageResource(R.color.file_html);
|
||||
} else if (Arrays.asList(MimeTypes.MIME_CODE)
|
||||
.contains(ext)
|
||||
viewHolder.icon.setImageResource(R.color.file_folder);
|
||||
} else if (Arrays.asList(MimeTypes.MIME_HTML).contains(ext) || ext.endsWith("html")) {
|
||||
viewHolder.icon.setImageResource(R.color.file_html);
|
||||
} else if (Arrays.asList(MimeTypes.MIME_CODE).contains(ext)
|
||||
|| fileName.endsWith("css")
|
||||
|| fileName.endsWith("js")) {
|
||||
viewHolder.icon
|
||||
.setImageResource(R.color.file_code);
|
||||
viewHolder.icon.setImageResource(R.color.file_code);
|
||||
} else if (Arrays.asList(MimeTypes.MIME_ARCHIVE).contains(ext)) {
|
||||
viewHolder.icon
|
||||
.setImageResource(R.color.file_archive);
|
||||
viewHolder.icon.setImageResource(R.color.file_archive);
|
||||
} else if (Arrays.asList(MimeTypes.MIME_MUSIC)
|
||||
.contains(ext)) {
|
||||
viewHolder.icon
|
||||
.setImageResource(R.color.file_media_music);
|
||||
viewHolder.icon.setImageResource(R.color.file_media_music);
|
||||
} else if (Arrays.asList(MimeTypes.MIME_PICTURE).contains(ext)) {
|
||||
viewHolder.icon
|
||||
.setImageResource(R.color.file_media_picture);
|
||||
} else if (Arrays.asList(MimeTypes.MIME_VIDEO)
|
||||
.contains(ext)) {
|
||||
viewHolder.icon
|
||||
.setImageResource(R.color.file_media_video);
|
||||
viewHolder.icon.setImageResource(R.color.file_media_picture);
|
||||
} else if (Arrays.asList(MimeTypes.MIME_VIDEO).contains(ext)) {
|
||||
viewHolder.icon.setImageResource(R.color.file_media_video);
|
||||
} else {
|
||||
viewHolder.icon
|
||||
.setImageResource(R.color.file_text);
|
||||
viewHolder.icon.setImageResource(R.color.file_text);
|
||||
}
|
||||
}
|
||||
|
||||
public void checkPosition(final String name) {
|
||||
if (isPositionChecked(name)) {
|
||||
removeSelection(name);
|
||||
} else {
|
||||
setNewSelection(name, true);
|
||||
}
|
||||
}
|
||||
|
||||
void setNewSelection(final String name,
|
||||
final boolean value) {
|
||||
this.mSelection.put(name, value);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
boolean isPositionChecked(final String name) {
|
||||
final Boolean result = this.mSelection.get(name);
|
||||
return (result == null) ? false : result;
|
||||
}
|
||||
|
||||
public Set<String> getCurrentCheckedPosition() {
|
||||
return this.mSelection.keySet();
|
||||
}
|
||||
|
||||
private void removeSelection(final String name) {
|
||||
this.mSelection.remove(name);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void clearSelection() {
|
||||
this.mSelection = new HashMap<String, Boolean>();
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public static class FileDetail {
|
||||
private String name;
|
||||
private String size;
|
||||
|
@ -23,7 +23,7 @@ public class FileSelectedEvent {
|
||||
|
||||
private String path;
|
||||
|
||||
public FileSelectedEvent(String path){
|
||||
public FileSelectedEvent(String path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
|
@ -13,11 +13,14 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
******************************************************************************/
|
||||
package com.vmihalachi.turboeditor;
|
||||
package com.vmihalachi.turboeditor.fragment;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.app.DialogFragment;
|
||||
import android.app.Fragment;
|
||||
import android.app.FragmentManager;
|
||||
import android.app.FragmentTransaction;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
@ -25,18 +28,18 @@ import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
|
||||
import com.vmihalachi.turboeditor.R;
|
||||
|
||||
import it.gmariotti.changelibs.library.view.ChangeLogListView;
|
||||
|
||||
/**
|
||||
* Example with Dialog
|
||||
*
|
||||
* @author Gabriele Mariotti (gabri.mariotti@gmail.com)
|
||||
*/
|
||||
public class DialogStandardFragment extends DialogFragment {
|
||||
public class ChangelogDialogFragment extends DialogFragment {
|
||||
|
||||
public DialogStandardFragment() {
|
||||
public ChangelogDialogFragment() {
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
|
||||
@ -54,6 +57,9 @@ public class DialogStandardFragment extends DialogFragment {
|
||||
}
|
||||
)
|
||||
.setPositiveButton(R.string.vota, new DialogInterface.OnClickListener() {
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void onClick(final DialogInterface dialog, final int which) {
|
||||
try {
|
||||
@ -65,4 +71,15 @@ public class DialogStandardFragment extends DialogFragment {
|
||||
.create();
|
||||
|
||||
}
|
||||
|
||||
public static final void showChangeLogDialog(FragmentManager fragmentManager) {
|
||||
ChangelogDialogFragment changelogDialogFragment = new ChangelogDialogFragment();
|
||||
FragmentTransaction ft = fragmentManager.beginTransaction();
|
||||
Fragment prev = fragmentManager.findFragmentByTag("changelogdemo_dialog");
|
||||
if (prev != null) {
|
||||
ft.remove(prev);
|
||||
}
|
||||
ft.addToBackStack(null);
|
||||
changelogDialogFragment.show(ft, "changelogdemo_dialog");
|
||||
}
|
||||
}
|
@ -17,7 +17,7 @@
|
||||
* along with Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.vmihalachi.turboeditor;
|
||||
package com.vmihalachi.turboeditor.fragment;
|
||||
|
||||
import android.app.Fragment;
|
||||
import android.content.Context;
|
||||
@ -47,6 +47,7 @@ import android.view.ViewGroup;
|
||||
import android.widget.EditText;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.vmihalachi.turboeditor.R;
|
||||
import com.vmihalachi.turboeditor.event.ErrorOpeningFileEvent;
|
||||
import com.vmihalachi.turboeditor.event.FileSavedEvent;
|
||||
import com.vmihalachi.turboeditor.helper.PixelDipConverter;
|
||||
@ -67,7 +68,7 @@ import java.util.regex.Pattern;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
|
||||
public class EditorFragment extends Fragment implements EditTextDialog.EditDialogListener{
|
||||
public class EditorFragment extends Fragment implements EncodingDialogFragment.EditDialogListener {
|
||||
|
||||
private static final String TAG = "A0A";
|
||||
private Editor mEditor;
|
||||
@ -88,6 +89,7 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
|
||||
return frag;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -97,6 +99,7 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
|
||||
setHasOptionsMenu(true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -109,6 +112,7 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
|
||||
return rootView;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -150,6 +154,7 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
|
||||
super.onCreateOptionsMenu(menu, inflater);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -179,16 +184,17 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
|
||||
}
|
||||
|
||||
private void showEncodingDialog() {
|
||||
EditTextDialog dialogFrag = EditTextDialog.newInstance(this.mCurrentEncoding);
|
||||
EncodingDialogFragment dialogFrag = EncodingDialogFragment.newInstance(this.mCurrentEncoding);
|
||||
dialogFrag.setTargetFragment(this, 0);
|
||||
dialogFrag.show(getFragmentManager().beginTransaction(), "encodingDialog");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void onFinishEditDialog(final String inputText, final EditTextDialog.Actions action, final String hint) {
|
||||
public void onFinishEditDialog(final String inputText, final String hint) {
|
||||
PreferenceHelper.setEncoding(getActivity(), inputText);
|
||||
updateTextEditor();
|
||||
}
|
||||
@ -223,7 +229,7 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
|
||||
}
|
||||
}
|
||||
|
||||
private void configureEditText(){
|
||||
private void configureEditText() {
|
||||
this.mEditor.setHorizontallyScrolling(!this.sWrapText);
|
||||
if (!this.sWrapText) {
|
||||
int paddingLeft = (int) PixelDipConverter.convertDpToPixel(25, getActivity());
|
||||
@ -236,6 +242,9 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
|
||||
|
||||
class SaveFile extends AsyncTask<Void, Void, Void> {
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected Void doInBackground(final Void... voids) {
|
||||
try {
|
||||
@ -248,6 +257,9 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected void onPostExecute(final Void aVoid) {
|
||||
super.onPostExecute(aVoid);
|
||||
@ -256,11 +268,10 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static class Editor extends EditText {
|
||||
|
||||
protected static final int
|
||||
ID_SELECT_ALL =android. R.id.selectAll,
|
||||
ID_SELECT_ALL = android.R.id.selectAll,
|
||||
ID_CUT = android.R.id.cut,
|
||||
ID_COPY = android.R.id.copy,
|
||||
ID_PASTE = android.R.id.paste,
|
||||
@ -299,6 +310,9 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
|
||||
|
||||
private final Runnable updateRunnable =
|
||||
new Runnable() {
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void run() {
|
||||
replaceTextKeepCursor(getText());
|
||||
@ -331,6 +345,9 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
|
||||
// Syntax editor
|
||||
setFilters(new InputFilter[]{
|
||||
new InputFilter() {
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public CharSequence filter(
|
||||
CharSequence source,
|
||||
@ -354,6 +371,9 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
|
||||
}});
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean onKeyShortcut(
|
||||
final int keyCode, final KeyEvent event) {
|
||||
@ -382,6 +402,9 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
|
||||
return super.onKeyShortcut(keyCode, event);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean onTextContextMenuItem(
|
||||
final int id) {
|
||||
@ -396,6 +419,9 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void onDraw(final Canvas canvas) {
|
||||
if (!EditorFragment.sWrapText) {
|
@ -17,7 +17,7 @@
|
||||
* along with Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.vmihalachi.turboeditor;
|
||||
package com.vmihalachi.turboeditor.fragment;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.app.DialogFragment;
|
||||
@ -32,14 +32,15 @@ import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.vmihalachi.turboeditor.R;
|
||||
|
||||
// ...
|
||||
public class EditTextDialog extends DialogFragment implements TextView.OnEditorActionListener {
|
||||
public class EncodingDialogFragment extends DialogFragment implements TextView.OnEditorActionListener {
|
||||
|
||||
private EditText mEditText;
|
||||
|
||||
public static EditTextDialog newInstance(final String hint) {
|
||||
final EditTextDialog f = new EditTextDialog();
|
||||
|
||||
public static EncodingDialogFragment newInstance(final String hint) {
|
||||
final EncodingDialogFragment f = new EncodingDialogFragment();
|
||||
// Supply num input as an argument.
|
||||
final Bundle args = new Bundle();
|
||||
args.putString("hint", hint);
|
||||
@ -47,6 +48,9 @@ public class EditTextDialog extends DialogFragment implements TextView.OnEditorA
|
||||
return f;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
|
||||
final Bundle savedInstanceState) {
|
||||
@ -67,6 +71,9 @@ public class EditTextDialog extends DialogFragment implements TextView.OnEditorA
|
||||
|
||||
final Button button = (Button) view.findViewById(android.R.id.button1);
|
||||
button.setOnClickListener(new View.OnClickListener() {
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void onClick(final View v) {
|
||||
returnData();
|
||||
@ -81,11 +88,13 @@ public class EditTextDialog extends DialogFragment implements TextView.OnEditorA
|
||||
if (target == null) {
|
||||
target = (EditDialogListener) getActivity();
|
||||
}
|
||||
target.onFinishEditDialog(this.mEditText.getText().toString(),
|
||||
(Actions) getArguments().getSerializable("action"), getArguments().getString("hint"));
|
||||
target.onFinishEditDialog(this.mEditText.getText().toString(), getArguments().getString("hint"));
|
||||
this.dismiss();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean onEditorAction(final TextView v, final int actionId, final KeyEvent event) {
|
||||
if (EditorInfo.IME_ACTION_DONE == actionId) {
|
||||
@ -95,12 +104,8 @@ public class EditTextDialog extends DialogFragment implements TextView.OnEditorA
|
||||
return false;
|
||||
}
|
||||
|
||||
public enum Actions {
|
||||
NewRemoteFolder, NewRemoteFile, NewLocalFolder, Rename, Move, EditEncoding
|
||||
}
|
||||
|
||||
public interface EditDialogListener {
|
||||
void onFinishEditDialog(String inputText, Actions action, String hint);
|
||||
void onFinishEditDialog(String inputText, String hint);
|
||||
}
|
||||
}
|
||||
|
@ -17,12 +17,10 @@
|
||||
* along with Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.vmihalachi.turboeditor;
|
||||
package com.vmihalachi.turboeditor.fragment;
|
||||
|
||||
import android.app.ListFragment;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.util.SparseBooleanArray;
|
||||
import android.view.ActionMode;
|
||||
import android.view.LayoutInflater;
|
||||
@ -35,8 +33,10 @@ import android.widget.AbsListView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
|
||||
import com.vmihalachi.turboeditor.R;
|
||||
import com.vmihalachi.turboeditor.event.FileSelectedEvent;
|
||||
import com.vmihalachi.turboeditor.event.NewFileOpened;
|
||||
import com.vmihalachi.turboeditor.helper.PreferenceHelper;
|
||||
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
|
||||
@ -48,19 +48,21 @@ import de.greenrobot.event.EventBus;
|
||||
|
||||
public class NavigationDrawerListFragment extends ListFragment implements AbsListView.MultiChoiceModeListener {
|
||||
|
||||
List<String> fileNames;
|
||||
ArrayAdapter<String> arrayAdapter;
|
||||
private List<String> fileNames;
|
||||
private ArrayAdapter<String> arrayAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
// Out custom layout
|
||||
// Our custom layout
|
||||
View rootView = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
|
||||
return rootView;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -70,6 +72,7 @@ public class NavigationDrawerListFragment extends ListFragment implements AbsLis
|
||||
getListView().setMultiChoiceModeListener(this);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -78,10 +81,11 @@ public class NavigationDrawerListFragment extends ListFragment implements AbsLis
|
||||
super.onResume();
|
||||
// Register the Event Bus for events
|
||||
EventBus.getDefault().registerSticky(this);
|
||||
//
|
||||
// Refresh the list view
|
||||
refreshList();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -92,26 +96,22 @@ public class NavigationDrawerListFragment extends ListFragment implements AbsLis
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void onListItemClick(ListView l, View v, int position, long id) {
|
||||
super.onListItemClick(l, v, position, id);
|
||||
// don't open the same file twice
|
||||
//if(this.mCurrentCheckedPosition == position) return;
|
||||
// set current checked position
|
||||
//this.mCurrentCheckedPosition = position;
|
||||
// Shared Preferences
|
||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||
// File paths saved in preferences
|
||||
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(",");
|
||||
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 FileSelectedEvent(filePath));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -119,6 +119,7 @@ public class NavigationDrawerListFragment extends ListFragment implements AbsLis
|
||||
public void onItemCheckedStateChanged(ActionMode actionMode, int position, long l, boolean isChecked) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -129,6 +130,7 @@ public class NavigationDrawerListFragment extends ListFragment implements AbsLis
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -137,6 +139,7 @@ public class NavigationDrawerListFragment extends ListFragment implements AbsLis
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -144,21 +147,23 @@ public class NavigationDrawerListFragment extends ListFragment implements AbsLis
|
||||
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
|
||||
switch (menuItem.getItemId()) {
|
||||
case R.id.im_remove:
|
||||
// Shared Preferences
|
||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||
// File paths saved in preferences
|
||||
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(",");
|
||||
//
|
||||
String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
|
||||
// We get the checked positions
|
||||
SparseBooleanArray checkedItems = getListView().getCheckedItemPositions();
|
||||
//
|
||||
// If we have some checked positions
|
||||
if (checkedItems != null) {
|
||||
for (int i=0; i<checkedItems.size(); i++) {
|
||||
for (int i = 0; i < checkedItems.size(); i++) {
|
||||
// check if the value is checked
|
||||
if (checkedItems.valueAt(i)) {
|
||||
// remove the checked path, but don't refresh the list
|
||||
removePath(savedPaths[checkedItems.keyAt(i)], false);
|
||||
}
|
||||
}
|
||||
// In the end refresh the list
|
||||
refreshList();
|
||||
}
|
||||
// Close the action mode
|
||||
actionMode.finish();
|
||||
return true;
|
||||
default:
|
||||
@ -166,6 +171,7 @@ public class NavigationDrawerListFragment extends ListFragment implements AbsLis
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -178,111 +184,92 @@ public class NavigationDrawerListFragment extends ListFragment implements AbsLis
|
||||
/**
|
||||
* When a new file is opened
|
||||
* Invoked by the main activity which receive the intent
|
||||
*
|
||||
* @param event The event called
|
||||
*/
|
||||
public void onEvent(NewFileOpened event){
|
||||
public void onEvent(NewFileOpened event) {
|
||||
EventBus.getDefault().removeStickyEvent(event);
|
||||
// Shared Preferences
|
||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||
// File paths saved in preferences
|
||||
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(",");
|
||||
|
||||
for(int i = 0; i < savedPaths.length; i++){
|
||||
if(savedPaths[i].equals(event.getFilePath())){
|
||||
String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
|
||||
for (int i = 0; i < savedPaths.length; i++) {
|
||||
// We don't need to save the file path twice
|
||||
if (savedPaths[i].equals(event.getFilePath())) {
|
||||
// Send the event that a file was selected
|
||||
EventBus.getDefault().post(new FileSelectedEvent(event.getFilePath()));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Add the path if it wasn't added before
|
||||
addPath(event.getFilePath());
|
||||
// Send the event that a file was selected
|
||||
EventBus.getDefault().post(new FileSelectedEvent(event.getFilePath()));
|
||||
}
|
||||
|
||||
private void addPath(String path){
|
||||
private void addPath(String path) {
|
||||
// Add a path and refresh the list
|
||||
addPath(path, true);
|
||||
}
|
||||
|
||||
private void addPath(String path, boolean refresh){
|
||||
// Shared Preferences
|
||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||
// Editor
|
||||
SharedPreferences.Editor editor = sharedPreferences.edit();
|
||||
private void addPath(String path, boolean refreshTheList) {
|
||||
// File paths saved in preferences
|
||||
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(",");
|
||||
String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
|
||||
// StringBuilder
|
||||
StringBuilder sb = new StringBuilder();
|
||||
// for cycle
|
||||
for (int count = 0; count < savedPaths.length; count++) {
|
||||
// Append the file path and a comma
|
||||
sb.append(savedPaths[count]).append(",");
|
||||
}
|
||||
// Append new path
|
||||
sb.append(path);
|
||||
// Put the string
|
||||
editor.putString("savedPaths", sb.toString());
|
||||
// Commit
|
||||
editor.commit();
|
||||
// Put the string and commit
|
||||
PreferenceHelper.setSavedPaths(getActivity(), sb);
|
||||
// Update list
|
||||
//arrayAdapter.add(FilenameUtils.getName(path));
|
||||
//arrayAdapter.notifyDataSetChanged();
|
||||
if(refresh){
|
||||
if (refreshTheList) {
|
||||
refreshList();
|
||||
}
|
||||
}
|
||||
|
||||
private void removePath(String path){
|
||||
private void removePath(String path) {
|
||||
// Remove the path and refresh the list
|
||||
removePath(path, true);
|
||||
}
|
||||
|
||||
private void removePath(String path, boolean refresh){
|
||||
// Shared Preferences
|
||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||
// Editor
|
||||
SharedPreferences.Editor editor = sharedPreferences.edit();
|
||||
private void removePath(String path, boolean refresh) {
|
||||
// File paths saved in preferences
|
||||
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(",");
|
||||
String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
|
||||
// StringBuilder
|
||||
StringBuilder sb = new StringBuilder();
|
||||
// for cycle
|
||||
for (int count = 0; count < savedPaths.length; count++) {
|
||||
if(path.equals(savedPaths[count])) continue;
|
||||
if (path.equals(savedPaths[count])) continue;
|
||||
sb.append(savedPaths[count]).append(",");
|
||||
}
|
||||
// Put the string
|
||||
editor.putString("savedPaths", sb.toString());
|
||||
// Commit
|
||||
editor.commit();
|
||||
// Put the string and commit
|
||||
PreferenceHelper.setSavedPaths(getActivity(), sb);
|
||||
// Update list
|
||||
//arrayAdapter.remove(FilenameUtils.getName(path));
|
||||
//arrayAdapter.notifyDataSetChanged();
|
||||
if(refresh){
|
||||
if (refresh) {
|
||||
refreshList();
|
||||
}
|
||||
}
|
||||
|
||||
/* package */ void refreshList(){
|
||||
// Shared Preferences
|
||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||
private void refreshList() {
|
||||
// File paths saved in preferences
|
||||
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(",");
|
||||
String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
|
||||
// File names for the list
|
||||
fileNames = new ArrayList<String>(savedPaths.length);
|
||||
//
|
||||
// StringBuilder that will contain the file paths
|
||||
StringBuilder sb = new StringBuilder();
|
||||
// for cycle to convert paths to names
|
||||
for(String path : savedPaths){
|
||||
|
||||
if(!path.isEmpty()){
|
||||
File file = new File(path);
|
||||
if(file.exists()){
|
||||
fileNames.add(FilenameUtils.getName(path));
|
||||
sb.append(path).append(",");
|
||||
}
|
||||
for (String path : savedPaths) {
|
||||
File file = new File(path);
|
||||
// Check that the file exist
|
||||
if (file.exists()) {
|
||||
fileNames.add(FilenameUtils.getName(path));
|
||||
sb.append(path).append(",");
|
||||
}
|
||||
}
|
||||
// save list without empty or non existed files
|
||||
sharedPreferences.edit().putString("savedPaths", sb.toString()).commit();
|
||||
PreferenceHelper.setSavedPaths(getActivity(), sb);
|
||||
// Adapter
|
||||
arrayAdapter = new ArrayAdapter<String>(getActivity(), R.layout.item_drawer_list, fileNames);
|
||||
// Set adapter
|
@ -17,7 +17,7 @@
|
||||
* along with Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.vmihalachi.turboeditor;
|
||||
package com.vmihalachi.turboeditor.fragment;
|
||||
|
||||
import android.app.Fragment;
|
||||
import android.os.Bundle;
|
||||
@ -25,11 +25,11 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
/**
|
||||
* Created by Vlad on 9/23/13.
|
||||
*/
|
||||
import com.vmihalachi.turboeditor.R;
|
||||
|
||||
public class NoFileOpenedFragment extends Fragment {
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
@ -0,0 +1,23 @@
|
||||
package com.vmihalachi.turboeditor.helper;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
|
||||
public class AppInfoHelper {
|
||||
public static String getApplicationName(final Context context) {
|
||||
final ApplicationInfo applicationInfo = context.getApplicationInfo();
|
||||
return context.getString(applicationInfo.labelRes);
|
||||
}
|
||||
|
||||
public static String getCurrentVersion(final Context context) {
|
||||
try {
|
||||
final PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(),
|
||||
0);
|
||||
return packageInfo.versionName;
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2013 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.vmihalachi.turboeditor.helper;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class FileHelper {
|
||||
/**
|
||||
* Get the extension of a file
|
||||
* @param f the file
|
||||
* @return the extension of a file
|
||||
*/
|
||||
public static String getExtension(File f) {
|
||||
return getExtension(f.getAbsolutePath());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the extension from a file path
|
||||
* @param path the path
|
||||
* @return the extension from a file path
|
||||
*/
|
||||
public static String getExtension(String path) {
|
||||
String ext = null;
|
||||
String s = path;
|
||||
int i = s.lastIndexOf('.');
|
||||
|
||||
if (i > 0 && i < s.length() - 1) {
|
||||
ext = s.substring(i+1).toLowerCase();
|
||||
}
|
||||
return ext;
|
||||
}
|
||||
}
|
@ -28,9 +28,8 @@ public final class PreferenceHelper {
|
||||
private PreferenceHelper() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter Methods
|
||||
*/
|
||||
// Getter Methods
|
||||
|
||||
public static SharedPreferences getPrefs(Context context) {
|
||||
return PreferenceManager.getDefaultSharedPreferences(context);
|
||||
}
|
||||
@ -50,9 +49,12 @@ public final class PreferenceHelper {
|
||||
public static String getEncoding(Context context) {
|
||||
return getPrefs(context).getString("editor_encoding", "UTF-8");
|
||||
}
|
||||
/**
|
||||
* Setter Methods
|
||||
*/
|
||||
|
||||
public static String[] getSavedPaths(Context context) {
|
||||
return getPrefs(context).getString("savedPaths", "").split(",");
|
||||
}
|
||||
|
||||
// Setter methods
|
||||
|
||||
public static void setWrapText(Context context, boolean value) {
|
||||
getEditor(context).putBoolean("editor_wrap_text", value).commit();
|
||||
@ -65,4 +67,8 @@ public final class PreferenceHelper {
|
||||
public static void setEncoding(Context context, String value) {
|
||||
getEditor(context).putString("editor_encoding", value).commit();
|
||||
}
|
||||
|
||||
public static void setSavedPaths(Context context, StringBuilder stringBuilder) {
|
||||
getEditor(context).putString("savedPaths", stringBuilder.toString()).commit();
|
||||
}
|
||||
}
|
||||
|
@ -1,22 +1,3 @@
|
||||
/*
|
||||
* Copyright (C) 2013 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.vmihalachi.turboeditor.util;/*
|
||||
* The Alphanum Algorithm is an improved sorting algorithm for strings
|
||||
* containing numbers. Instead of sorting numbers in ASCII order like
|
||||
|
@ -21,126 +21,24 @@ package com.vmihalachi.turboeditor.util;
|
||||
|
||||
public class MimeTypes {
|
||||
public static final String[] MIME_TEXT = {
|
||||
"ajx",
|
||||
"am",
|
||||
"asa",
|
||||
"asc",
|
||||
"asp",
|
||||
"aspx",
|
||||
"awk",
|
||||
"bat",
|
||||
"c",
|
||||
"cdf",
|
||||
"cf",
|
||||
"cfg",
|
||||
"cfm",
|
||||
"cgi",
|
||||
"cnf",
|
||||
"conf",
|
||||
"cpp",
|
||||
"css",
|
||||
"csv",
|
||||
"ctl",
|
||||
"dat",
|
||||
"dhtml",
|
||||
"diz",
|
||||
"file",
|
||||
"forward",
|
||||
"grp",
|
||||
"h",
|
||||
"hpp",
|
||||
"hqx",
|
||||
"hta",
|
||||
"htaccess",
|
||||
"htc",
|
||||
"htm",
|
||||
"html",
|
||||
"htpasswd",
|
||||
"htt",
|
||||
"htx",
|
||||
"in",
|
||||
"inc",
|
||||
"info",
|
||||
"ini",
|
||||
"ink",
|
||||
"java",
|
||||
"js",
|
||||
"jsp",
|
||||
"key",
|
||||
"log",
|
||||
"logfile",
|
||||
"m3u",
|
||||
"m4",
|
||||
"m4a",
|
||||
"mak",
|
||||
"map",
|
||||
"model",
|
||||
"msg",
|
||||
"nfo",
|
||||
"nsi",
|
||||
"info",
|
||||
"old",
|
||||
"pas",
|
||||
"patch",
|
||||
"perl",
|
||||
"php",
|
||||
"php2",
|
||||
"php3",
|
||||
"php4",
|
||||
"php5",
|
||||
"php6",
|
||||
"phtml",
|
||||
"pix",
|
||||
"pl",
|
||||
"pm",
|
||||
"po",
|
||||
"pwd",
|
||||
"py",
|
||||
"qmail",
|
||||
"rb",
|
||||
"rbl",
|
||||
"rbw",
|
||||
"readme",
|
||||
"reg",
|
||||
"rss",
|
||||
"rtf",
|
||||
"ruby",
|
||||
"session",
|
||||
"setup",
|
||||
"sh",
|
||||
"shtm",
|
||||
"shtml",
|
||||
"sql",
|
||||
"ssh",
|
||||
"stm",
|
||||
"style",
|
||||
"svg",
|
||||
"tcl",
|
||||
"text",
|
||||
"threads",
|
||||
"tmpl",
|
||||
"tpl",
|
||||
"txt",
|
||||
"ubb",
|
||||
"vbs",
|
||||
"xhtml",
|
||||
"xml",
|
||||
"xrc",
|
||||
"xsl"};
|
||||
public static final String[] MIME_CODE =
|
||||
{"xml", "php", "asp", "json", "wiki"};
|
||||
public static final String[] MIME_HTML =
|
||||
{"htm"};
|
||||
public static final String[] MIME_PICTURE = {
|
||||
"png", "jpeg", "jpg", "ico", "gif", "bmp",
|
||||
"tiff"
|
||||
"ajx", "am", "asa", "asc", "asp", "aspx", "awk", "bat", "c", "cdf", "cf", "cfg", "cfm", "cgi", "cnf", "conf", "cpp", "css", "csv", "ctl", "dat", "dhtml", "diz", "file", "forward", "grp", "h", "hpp", "hqx", "hta", "htaccess", "htc", "htm", "html", "htpasswd", "htt", "htx", "in", "inc", "info", "ini", "ink", "java", "js", "jsp", "key", "log", "logfile", "m3u", "m4", "m4a", "mak", "map", "model", "msg", "nfo", "nsi", "info", "old", "pas", "patch", "perl", "php", "php2", "php3", "php4", "php5", "php6", "phtml", "pix", "pl", "pm", "po", "pwd", "py", "qmail", "rb", "rbl", "rbw", "readme", "reg", "rss", "rtf", "ruby", "session", "setup", "sh", "shtm", "shtml", "sql", "ssh", "stm", "style", "svg", "tcl", "text", "threads", "tmpl", "tpl", "txt", "ubb", "vbs", "xhtml", "xml", "xrc", "xsl"
|
||||
};
|
||||
public static final String[] MIME_CODE = {
|
||||
"xml", "php", "asp", "json", "wiki"
|
||||
};
|
||||
public static final String[] MIME_HTML = {
|
||||
"htm"
|
||||
};
|
||||
public static final String[] MIME_PICTURE = {
|
||||
"png", "jpeg", "jpg", "ico", "gif", "bmp", "tiff"
|
||||
};
|
||||
public static final String[] MIME_MUSIC = {
|
||||
"mp3", "avi", "flac", "mpga"
|
||||
};
|
||||
public static final String[] MIME_VIDEO = {
|
||||
"mp4", "mkv", "wmw"
|
||||
};
|
||||
public static final String[] MIME_MUSIC =
|
||||
{"mp3", "avi", "flac", "mpga"};
|
||||
public static final String[] MIME_VIDEO =
|
||||
{"mp4", "mkv", "wmw"};
|
||||
public static final String[] MIME_ARCHIVE = {
|
||||
"zip", "tar", "gz", "bz2", "rar", "7z"
|
||||
};
|
||||
public static String[] USER_MIME_TEXT;
|
||||
}
|
||||
|
@ -37,6 +37,9 @@ public class CapitalizedTextView extends TextView {
|
||||
super(context, attrs, defStyle);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void setText(final CharSequence text, final BufferType type) {
|
||||
super.setText(text.toString().toUpperCase(), type);
|
||||
|
@ -31,7 +31,7 @@
|
||||
|
||||
<fragment android:layout_width="@dimen/navigation_drawer_width"
|
||||
android:layout_height="match_parent"
|
||||
android:name="com.vmihalachi.turboeditor.NavigationDrawerListFragment"
|
||||
android:name="com.vmihalachi.turboeditor.fragment.NavigationDrawerListFragment"
|
||||
android:id="@id/drawer_list"
|
||||
android:layout_gravity="left"/>
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
android:fillViewport="true">
|
||||
|
||||
<view
|
||||
class="com.vmihalachi.turboeditor.EditorFragment$Editor"
|
||||
class="com.vmihalachi.turboeditor.fragment.EditorFragment$Editor"
|
||||
android:id="@id/editor"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
16
Turbo Editor/src/main/res/raw/changelog.xml
Normal file
16
Turbo Editor/src/main/res/raw/changelog.xml
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<changelog bulletedList="true">
|
||||
|
||||
<changelogversion versionName="0.3" changeDate="Sep 27, 2013">
|
||||
<changelogtext>Improved the about page</changelogtext>
|
||||
</changelogversion>
|
||||
|
||||
<changelogversion versionName="0.2" changeDate="Sep 25, 2013">
|
||||
<changelogtext>Keyboard now closes when you save a file</changelogtext>
|
||||
<changelogtext>Fixed some issues when launching the app</changelogtext>
|
||||
</changelogversion>
|
||||
|
||||
<changelogversion versionName="0.1" changeDate="Sep 24, 2013">
|
||||
<changelogtext>First release</changelogtext>
|
||||
</changelogversion>
|
||||
</changelog>
|
@ -112,6 +112,6 @@
|
||||
<string name="open_source_license">Licenze Open Source</string>
|
||||
<string name="open_source_license_summary">Visualizza licenze open source</string>
|
||||
<string name="show_navigation_breadcrumb">Visualizza navigazione breadcrumb</string>
|
||||
<string name="open_a_file">Apri come file</string>
|
||||
<string name="open_a_file">Apri un file</string>
|
||||
<string name="open_this_time_only">Apri solo questa volta</string>
|
||||
</resources>
|
||||
|
8
Turbo Editor/src/main/res/values/arrays.xml
Normal file
8
Turbo Editor/src/main/res/values/arrays.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string-array name="open_source_libs">
|
||||
<item>ChangeLog Library</item>
|
||||
<item>EventBus</item>
|
||||
<item>commons-io</item>
|
||||
</string-array>
|
||||
</resources>
|
Reference in New Issue
Block a user