Commented some parts of the app

This commit is contained in:
Vlad Mihalachi 2013-09-28 09:33:15 +02:00
parent 41e9161e2b
commit 44773c2f1c
16 changed files with 184 additions and 425 deletions

View File

@ -39,7 +39,7 @@
android:theme="@style/AppStyle"> android:theme="@style/AppStyle">
<activity <activity
android:name=".HomeActivity" android:name=".activity.HomeActivity"
android:configChanges="keyboardHidden|orientation|screenSize" android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden|adjustResize" android:windowSoftInputMode="stateHidden|adjustResize"
android:hardwareAccelerated="false" android:hardwareAccelerated="false"
@ -72,17 +72,17 @@
</activity> </activity>
<activity <activity
android:name="com.vmihalachi.turboeditor.PreferenceAbout" android:name=".activity.PreferenceAbout"
android:configChanges="keyboardHidden|orientation|screenSize" android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/aboutactivity_info_category"/> android:label="@string/aboutactivity_info_category"/>
<activity <activity
android:name="com.vmihalachi.turboeditor.LicensesActivity" android:name=".activity.LicensesActivity"
android:configChanges="keyboardHidden|orientation|screenSize" android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/open_source_license"/> android:label="@string/open_source_license"/>
<activity <activity
android:name="com.vmihalachi.turboeditor.SelectFileActivity" android:name=".activity.SelectFileActivity"
android:configChanges="keyboardHidden|orientation|screenSize" android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/open_a_file"/> android:label="@string/open_a_file"/>

View File

@ -17,7 +17,7 @@
* along with Turbo Editor. If not, see <http://www.gnu.org/licenses/>. * 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.ActionBar;
import android.app.Activity; import android.app.Activity;
@ -38,10 +38,14 @@ import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import com.vmihalachi.turboeditor.R;
import com.vmihalachi.turboeditor.event.ErrorOpeningFileEvent; import com.vmihalachi.turboeditor.event.ErrorOpeningFileEvent;
import com.vmihalachi.turboeditor.event.FileSavedEvent; import com.vmihalachi.turboeditor.event.FileSavedEvent;
import com.vmihalachi.turboeditor.event.FileSelectedEvent; import com.vmihalachi.turboeditor.event.FileSelectedEvent;
import com.vmihalachi.turboeditor.event.NewFileOpened; 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 com.vmihalachi.turboeditor.helper.AppInfoHelper;
import de.greenrobot.event.EventBus; import de.greenrobot.event.EventBus;
@ -68,12 +72,9 @@ public class HomeActivity extends Activity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
//
checkTaskRoot();
//
setContentView(R.layout.activity_home); setContentView(R.layout.activity_home);
// // setup the navigation drawer
setupDrawerLayout(); setupNavigationDrawer();
// Replace fragment // Replace fragment
getFragmentManager() getFragmentManager()
.beginTransaction() .beginTransaction()
@ -86,9 +87,9 @@ public class HomeActivity extends Activity {
// Set the default title // Set the default title
getActionBar().setTitle(getString(R.string.nome_app_turbo_editor)); getActionBar().setTitle(getString(R.string.nome_app_turbo_editor));
} }
// // parse the intent
receiveIntent(); parseIntent(getIntent());
// // show a dialog with the changelog
showChangeLog(); showChangeLog();
} }
@ -189,6 +190,12 @@ public class HomeActivity extends Activity {
} }
} }
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
parseIntent(intent);
}
/** /**
* *
* @param event * @param event
@ -243,7 +250,9 @@ public class HomeActivity extends Activity {
} }
/** /**
* * 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){
// //
@ -273,16 +282,9 @@ public class HomeActivity extends Activity {
} }
/** /**
* * Setup the navigation drawer
*/ */
private void checkTaskRoot(){ private void setupNavigationDrawer(){
}
/**
*
*/
private void setupDrawerLayout(){
final String defaultTitle = getString(R.string.nome_app_turbo_editor);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
/* Action Bar */ /* Action Bar */
final ActionBar ab = getActionBar(); final ActionBar ab = getActionBar();
@ -311,41 +313,8 @@ public class HomeActivity extends Activity {
mDrawerLayout.setDrawerListener(mDrawerToggle); 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 receiveIntent(){
// Get intent, action and MIME type
final Intent intent = getIntent();
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()));
}
}
/**
*
*/ */
private void showChangeLog(){ private void showChangeLog(){
final String currentVersion = AppInfoHelper.getCurrentVersion(this); final String currentVersion = AppInfoHelper.getCurrentVersion(this);
@ -353,7 +322,23 @@ public class HomeActivity extends Activity {
final String lastVersion = preferences.getString("last_version", currentVersion); final String lastVersion = preferences.getString("last_version", currentVersion);
preferences.edit().putString("last_version", currentVersion).commit(); preferences.edit().putString("last_version", currentVersion).commit();
if (!lastVersion.equals(currentVersion)) { if (!lastVersion.equals(currentVersion)) {
DialogStandardFragment.showChangeLogDialog(getFragmentManager()); ChangelogDialogFragment.showChangeLogDialog(getFragmentManager());
}
}
/**
* Parses the intent
*/
private void parseIntent(Intent 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()));
} }
} }
} }

View File

@ -1,4 +1,4 @@
package com.vmihalachi.turboeditor; package com.vmihalachi.turboeditor.activity;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
@ -10,6 +10,8 @@ import android.widget.ArrayAdapter;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import com.vmihalachi.turboeditor.R;
public class LicensesActivity extends Activity implements AdapterView.OnItemClickListener{ public class LicensesActivity extends Activity implements AdapterView.OnItemClickListener{
/** /**

View File

@ -17,7 +17,7 @@
* along with Turbo Editor. If not, see <http://www.gnu.org/licenses/>. * along with Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/ */
package com.vmihalachi.turboeditor; package com.vmihalachi.turboeditor.activity;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
@ -25,6 +25,8 @@ import android.os.Bundle;
import android.preference.Preference; import android.preference.Preference;
import android.preference.PreferenceActivity; import android.preference.PreferenceActivity;
import com.vmihalachi.turboeditor.R;
import com.vmihalachi.turboeditor.fragment.ChangelogDialogFragment;
import com.vmihalachi.turboeditor.helper.AppInfoHelper; import com.vmihalachi.turboeditor.helper.AppInfoHelper;
public class PreferenceAbout extends PreferenceActivity { public class PreferenceAbout extends PreferenceActivity {
@ -61,7 +63,7 @@ public class PreferenceAbout extends PreferenceActivity {
changelog.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { changelog.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override @Override
public boolean onPreferenceClick(final Preference preference) { public boolean onPreferenceClick(final Preference preference) {
DialogStandardFragment.showChangeLogDialog(getFragmentManager()); ChangelogDialogFragment.showChangeLogDialog(getFragmentManager());
return false; return false;
} }
}); });

View File

@ -17,7 +17,7 @@
* along with Turbo Editor. If not, see <http://www.gnu.org/licenses/>. * 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.app.Activity;
import android.content.Intent; import android.content.Intent;
@ -32,6 +32,7 @@ import android.widget.AdapterView;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import com.vmihalachi.turboeditor.R;
import com.vmihalachi.turboeditor.adapter.AdapterDetailedList; import com.vmihalachi.turboeditor.adapter.AdapterDetailedList;
import com.vmihalachi.turboeditor.util.AlphanumComparator; import com.vmihalachi.turboeditor.util.AlphanumComparator;

View File

@ -20,7 +20,6 @@
package com.vmihalachi.turboeditor.adapter; package com.vmihalachi.turboeditor.adapter;
import android.content.Context; import android.content.Context;
import android.graphics.Typeface;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -35,63 +34,42 @@ import com.vmihalachi.turboeditor.util.MimeTypes;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.Set;
public class AdapterDetailedList extends public class AdapterDetailedList extends
ArrayAdapter<AdapterDetailedList.FileDetail> { ArrayAdapter<AdapterDetailedList.FileDetail> {
// Layout Inflater // Layout Inflater
final LayoutInflater inflater; private final LayoutInflater inflater;
// The Context to get drawables from resources // List of file details
private final Context context; private final LinkedList<FileDetail> fileDetails;
// 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;
public static class ViewHolder { public static class ViewHolder {
// Text view with the name of the file // Name of the file
public TextView label; public TextView nameLabel;
// Text view with the name of the file // Size of the file
public TextView sizeLabel; public TextView sizeLabel;
// Date of the file
public TextView dateLabel; public TextView dateLabel;
// The icon of the file // Icon of the file
public ImageView icon; public ImageView icon;
} }
public AdapterDetailedList(final Context context, public AdapterDetailedList(final Context context,
final LinkedList<FileDetail> fileDetails, final LinkedList<FileDetail> fileDetails,
final boolean isRoot) { final boolean isRoot) {
// super super(context, R.layout.item_file_list, fileDetails);
super(context,
R.layout.item_file_list,
fileDetails);
this.context = context;
this.fileDetails = fileDetails; this.fileDetails = fileDetails;
// Cache the LayoutInflate to avoid asking for a new one each time.
this.inflater = LayoutInflater.from(context); 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) { if (!isRoot) {
this.fileDetails.addFirst(new FileDetail("..", this.fileDetails.addFirst(new FileDetail("..", context.getString(R.string.folder), ""));
context.getString(R.string.folder), ""));
} else { } else {
this.fileDetails.addFirst(new FileDetail(context.getString(R.string.home), this.fileDetails.addFirst(new FileDetail(context.getString(R.string.home), context.getString(R.string.folder), ""));
context.getString(R.string.folder),
""));
} }
} }
@ -103,7 +81,7 @@ public class AdapterDetailedList extends
.inflate(R.layout.item_file_list, .inflate(R.layout.item_file_list,
null); null);
final ViewHolder hold = new ViewHolder(); 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.sizeLabel = (TextView) convertView.findViewById(android.R.id.text1);
hold.dateLabel = (TextView) convertView.findViewById(android.R.id.text2); hold.dateLabel = (TextView) convertView.findViewById(android.R.id.text2);
hold.icon = (ImageView) convertView.findViewById(android.R.id.icon); hold.icon = (ImageView) convertView.findViewById(android.R.id.icon);
@ -111,117 +89,51 @@ public class AdapterDetailedList extends
final FileDetail fileDetail = fileDetails.get(position); final FileDetail fileDetail = fileDetails.get(position);
final String fileName = fileDetail.getName(); final String fileName = fileDetail.getName();
setIcon(hold, fileDetail); setIcon(hold, fileDetail);
hold.label hold.nameLabel.setText(fileName);
.setText(fileName); hold.sizeLabel.setText(fileDetail.getSize());
hold.sizeLabel hold.dateLabel.setText(fileDetail.getDateModified());
.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);
}
} else { } else {
final ViewHolder hold = ((ViewHolder) convertView.getTag()); final ViewHolder hold = ((ViewHolder) convertView.getTag());
final FileDetail fileDetail = fileDetails.get(position); final FileDetail fileDetail = fileDetails.get(position);
final String fileName = fileDetail.getName(); final String fileName = fileDetail.getName();
setIcon(hold, fileDetail); setIcon(hold, fileDetail);
hold.label hold.nameLabel.setText(fileName);
.setText(fileName); hold.sizeLabel.setText(fileDetail.getSize());
hold.sizeLabel hold.dateLabel.setText(fileDetail.getDateModified());
.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);
}
} }
return convertView; return convertView;
} }
private void setIcon(final ViewHolder viewHolder, private void setIcon(final ViewHolder viewHolder, final FileDetail fileDetail) {
final FileDetail fileDetail) {
final String fileName = fileDetail.getName(); final String fileName = fileDetail.getName();
final String ext = FilenameUtils.getExtension(fileName); final String ext = FilenameUtils.getExtension(fileName);
if (fileDetail.isFolder()) { if (fileDetail.isFolder()) {
viewHolder.icon viewHolder.icon.setImageResource(R.color.file_folder);
.setImageResource(R.color.file_folder); }
} else if (Arrays.asList(MimeTypes.MIME_HTML) else if (Arrays.asList(MimeTypes.MIME_HTML).contains(ext) || ext.endsWith("html")) {
.contains(ext) || ext.endsWith("html")) { viewHolder.icon.setImageResource(R.color.file_html);
viewHolder.icon }
.setImageResource(R.color.file_html); else if (Arrays.asList(MimeTypes.MIME_CODE).contains(ext)
} else if (Arrays.asList(MimeTypes.MIME_CODE)
.contains(ext)
|| fileName.endsWith("css") || fileName.endsWith("css")
|| fileName.endsWith("js")) { || fileName.endsWith("js")) {
viewHolder.icon viewHolder.icon.setImageResource(R.color.file_code);
.setImageResource(R.color.file_code);
} else if (Arrays.asList(MimeTypes.MIME_ARCHIVE).contains(ext)) {
viewHolder.icon
.setImageResource(R.color.file_archive);
} else if (Arrays.asList(MimeTypes.MIME_MUSIC)
.contains(ext)) {
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);
} else {
viewHolder.icon
.setImageResource(R.color.file_text);
} }
} else if (Arrays.asList(MimeTypes.MIME_ARCHIVE).contains(ext)) {
viewHolder.icon.setImageResource(R.color.file_archive);
public void checkPosition(final String name) { }
if (isPositionChecked(name)) { else if (Arrays.asList(MimeTypes.MIME_MUSIC)
removeSelection(name); .contains(ext)) {
} else { viewHolder.icon.setImageResource(R.color.file_media_music);
setNewSelection(name, true); }
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);
}
else {
viewHolder.icon.setImageResource(R.color.file_text);
} }
}
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 { public static class FileDetail {

View File

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
******************************************************************************/ ******************************************************************************/
package com.vmihalachi.turboeditor; package com.vmihalachi.turboeditor.fragment;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
@ -28,16 +28,13 @@ import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import com.vmihalachi.turboeditor.R;
import it.gmariotti.changelibs.library.view.ChangeLogListView; import it.gmariotti.changelibs.library.view.ChangeLogListView;
/** public class ChangelogDialogFragment extends DialogFragment {
* Example with Dialog
*
* @author Gabriele Mariotti (gabri.mariotti@gmail.com)
*/
public class DialogStandardFragment extends DialogFragment {
public DialogStandardFragment() { public ChangelogDialogFragment() {
} }
@Override @Override
@ -70,13 +67,13 @@ public class DialogStandardFragment extends DialogFragment {
} }
public static final void showChangeLogDialog(FragmentManager fragmentManager){ public static final void showChangeLogDialog(FragmentManager fragmentManager){
DialogStandardFragment dialogStandardFragment = new DialogStandardFragment(); ChangelogDialogFragment changelogDialogFragment = new ChangelogDialogFragment();
FragmentTransaction ft = fragmentManager.beginTransaction(); FragmentTransaction ft = fragmentManager.beginTransaction();
Fragment prev = fragmentManager.findFragmentByTag("changelogdemo_dialog"); Fragment prev = fragmentManager.findFragmentByTag("changelogdemo_dialog");
if (prev != null) { if (prev != null) {
ft.remove(prev); ft.remove(prev);
} }
ft.addToBackStack(null); ft.addToBackStack(null);
dialogStandardFragment.show(ft, "changelogdemo_dialog"); changelogDialogFragment.show(ft, "changelogdemo_dialog");
} }
} }

View File

@ -17,7 +17,7 @@
* along with Turbo Editor. If not, see <http://www.gnu.org/licenses/>. * 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.app.Fragment;
import android.content.Context; import android.content.Context;
@ -47,6 +47,7 @@ import android.view.ViewGroup;
import android.widget.EditText; import android.widget.EditText;
import android.widget.Toast; import android.widget.Toast;
import com.vmihalachi.turboeditor.R;
import com.vmihalachi.turboeditor.event.ErrorOpeningFileEvent; import com.vmihalachi.turboeditor.event.ErrorOpeningFileEvent;
import com.vmihalachi.turboeditor.event.FileSavedEvent; import com.vmihalachi.turboeditor.event.FileSavedEvent;
import com.vmihalachi.turboeditor.helper.PixelDipConverter; import com.vmihalachi.turboeditor.helper.PixelDipConverter;
@ -67,7 +68,7 @@ import java.util.regex.Pattern;
import de.greenrobot.event.EventBus; 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 static final String TAG = "A0A";
private Editor mEditor; private Editor mEditor;
@ -179,7 +180,7 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
} }
private void showEncodingDialog() { private void showEncodingDialog() {
EditTextDialog dialogFrag = EditTextDialog.newInstance(this.mCurrentEncoding); EncodingDialogFragment dialogFrag = EncodingDialogFragment.newInstance(this.mCurrentEncoding);
dialogFrag.setTargetFragment(this, 0); dialogFrag.setTargetFragment(this, 0);
dialogFrag.show(getFragmentManager().beginTransaction(), "encodingDialog"); dialogFrag.show(getFragmentManager().beginTransaction(), "encodingDialog");
} }
@ -188,7 +189,7 @@ public class EditorFragment extends Fragment implements EditTextDialog.EditDialo
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @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); PreferenceHelper.setEncoding(getActivity(), inputText);
updateTextEditor(); updateTextEditor();
} }

View File

@ -17,7 +17,7 @@
* along with Turbo Editor. If not, see <http://www.gnu.org/licenses/>. * 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.Dialog;
import android.app.DialogFragment; import android.app.DialogFragment;
@ -32,14 +32,15 @@ import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.TextView; 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; private EditText mEditText;
public static EditTextDialog newInstance(final String hint) { public static EncodingDialogFragment newInstance(final String hint) {
final EditTextDialog f = new EditTextDialog(); final EncodingDialogFragment f = new EncodingDialogFragment();
// Supply num input as an argument. // Supply num input as an argument.
final Bundle args = new Bundle(); final Bundle args = new Bundle();
args.putString("hint", hint); args.putString("hint", hint);
@ -81,8 +82,7 @@ public class EditTextDialog extends DialogFragment implements TextView.OnEditorA
if (target == null) { if (target == null) {
target = (EditDialogListener) getActivity(); target = (EditDialogListener) getActivity();
} }
target.onFinishEditDialog(this.mEditText.getText().toString(), target.onFinishEditDialog(this.mEditText.getText().toString(), getArguments().getString("hint"));
(Actions) getArguments().getSerializable("action"), getArguments().getString("hint"));
this.dismiss(); this.dismiss();
} }
@ -95,12 +95,8 @@ public class EditTextDialog extends DialogFragment implements TextView.OnEditorA
return false; return false;
} }
public enum Actions {
NewRemoteFolder, NewRemoteFile, NewLocalFolder, Rename, Move, EditEncoding
}
public interface EditDialogListener { public interface EditDialogListener {
void onFinishEditDialog(String inputText, Actions action, String hint); void onFinishEditDialog(String inputText, String hint);
} }
} }

View File

@ -17,12 +17,10 @@
* along with Turbo Editor. If not, see <http://www.gnu.org/licenses/>. * 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.app.ListFragment;
import android.content.SharedPreferences;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.SparseBooleanArray; import android.util.SparseBooleanArray;
import android.view.ActionMode; import android.view.ActionMode;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -35,8 +33,10 @@ import android.widget.AbsListView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.ListView; import android.widget.ListView;
import com.vmihalachi.turboeditor.R;
import com.vmihalachi.turboeditor.event.FileSelectedEvent; import com.vmihalachi.turboeditor.event.FileSelectedEvent;
import com.vmihalachi.turboeditor.event.NewFileOpened; import com.vmihalachi.turboeditor.event.NewFileOpened;
import com.vmihalachi.turboeditor.helper.PreferenceHelper;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
@ -48,15 +48,15 @@ import de.greenrobot.event.EventBus;
public class NavigationDrawerListFragment extends ListFragment implements AbsListView.MultiChoiceModeListener { public class NavigationDrawerListFragment extends ListFragment implements AbsListView.MultiChoiceModeListener {
List<String> fileNames; private List<String> fileNames;
ArrayAdapter<String> arrayAdapter; private ArrayAdapter<String> arrayAdapter;
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 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); View rootView = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
return rootView; return rootView;
} }
@ -78,7 +78,7 @@ public class NavigationDrawerListFragment extends ListFragment implements AbsLis
super.onResume(); super.onResume();
// Register the Event Bus for events // Register the Event Bus for events
EventBus.getDefault().registerSticky(this); EventBus.getDefault().registerSticky(this);
// // Refresh the list view
refreshList(); refreshList();
} }
@ -98,14 +98,8 @@ public class NavigationDrawerListFragment extends ListFragment implements AbsLis
@Override @Override
public void onListItemClick(ListView l, View v, int position, long id) { public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, 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 // File paths saved in preferences
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(","); String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
// Path of the file selected // Path of the file selected
String filePath = savedPaths[position]; String filePath = savedPaths[position];
// Send the event that a file was selected // Send the event that a file was selected
@ -144,21 +138,23 @@ public class NavigationDrawerListFragment extends ListFragment implements AbsLis
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) { public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
switch (menuItem.getItemId()) { switch (menuItem.getItemId()) {
case R.id.im_remove: case R.id.im_remove:
// Shared Preferences
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
// File paths saved in preferences // 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(); SparseBooleanArray checkedItems = getListView().getCheckedItemPositions();
// // If we have some checked positions
if (checkedItems != null) { 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)) { if (checkedItems.valueAt(i)) {
// remove the checked path, but don't refresh the list
removePath(savedPaths[checkedItems.keyAt(i)], false); removePath(savedPaths[checkedItems.keyAt(i)], false);
} }
} }
// In the end refresh the list
refreshList(); refreshList();
} }
// Close the action mode
actionMode.finish(); actionMode.finish();
return true; return true;
default: default:
@ -182,66 +178,54 @@ public class NavigationDrawerListFragment extends ListFragment implements AbsLis
*/ */
public void onEvent(NewFileOpened event){ public void onEvent(NewFileOpened event){
EventBus.getDefault().removeStickyEvent(event); EventBus.getDefault().removeStickyEvent(event);
// Shared Preferences
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
// File paths saved in preferences // File paths saved in preferences
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(","); String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
for(int i = 0; i < savedPaths.length; i++){ for(int i = 0; i < savedPaths.length; i++){
// We don't need to save the file path twice
if(savedPaths[i].equals(event.getFilePath())){ if(savedPaths[i].equals(event.getFilePath())){
// Send the event that a file was selected // Send the event that a file was selected
EventBus.getDefault().post(new FileSelectedEvent(event.getFilePath())); EventBus.getDefault().post(new FileSelectedEvent(event.getFilePath()));
return; return;
} }
} }
// Add the path if it wasn't added before
addPath(event.getFilePath()); addPath(event.getFilePath());
// Send the event that a file was selected // Send the event that a file was selected
EventBus.getDefault().post(new FileSelectedEvent(event.getFilePath())); 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); addPath(path, true);
} }
private void addPath(String path, boolean refresh){ private void addPath(String path, boolean refreshTheList){
// Shared Preferences
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
// Editor
SharedPreferences.Editor editor = sharedPreferences.edit();
// File paths saved in preferences // File paths saved in preferences
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(","); String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
// StringBuilder // StringBuilder
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
// for cycle
for (int count = 0; count < savedPaths.length; count++) { for (int count = 0; count < savedPaths.length; count++) {
// Append the file path and a comma
sb.append(savedPaths[count]).append(","); sb.append(savedPaths[count]).append(",");
} }
// Append new path // Append new path
sb.append(path); sb.append(path);
// Put the string // Put the string and commit
editor.putString("savedPaths", sb.toString()); PreferenceHelper.setSavedPaths(getActivity(), sb);
// Commit
editor.commit();
// Update list // Update list
//arrayAdapter.add(FilenameUtils.getName(path)); if(refreshTheList){
//arrayAdapter.notifyDataSetChanged();
if(refresh){
refreshList(); refreshList();
} }
} }
private void removePath(String path){ private void removePath(String path){
// Remove the path and refresh the list
removePath(path, true); removePath(path, true);
} }
private void removePath(String path, boolean refresh){ private void removePath(String path, boolean refresh){
// Shared Preferences
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
// Editor
SharedPreferences.Editor editor = sharedPreferences.edit();
// File paths saved in preferences // File paths saved in preferences
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(","); String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
// StringBuilder // StringBuilder
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
// for cycle // for cycle
@ -249,40 +233,32 @@ public class NavigationDrawerListFragment extends ListFragment implements AbsLis
if(path.equals(savedPaths[count])) continue; if(path.equals(savedPaths[count])) continue;
sb.append(savedPaths[count]).append(","); sb.append(savedPaths[count]).append(",");
} }
// Put the string // Put the string and commit
editor.putString("savedPaths", sb.toString()); PreferenceHelper.setSavedPaths(getActivity(), sb);
// Commit
editor.commit();
// Update list // Update list
//arrayAdapter.remove(FilenameUtils.getName(path));
//arrayAdapter.notifyDataSetChanged();
if(refresh){ if(refresh){
refreshList(); refreshList();
} }
} }
/* package */ void refreshList(){ private void refreshList(){
// Shared Preferences
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
// File paths saved in preferences // File paths saved in preferences
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(","); String[] savedPaths = PreferenceHelper.getSavedPaths(getActivity());
// File names for the list // File names for the list
fileNames = new ArrayList<String>(savedPaths.length); fileNames = new ArrayList<String>(savedPaths.length);
// // StringBuilder that will contain the file paths
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
// for cycle to convert paths to names // for cycle to convert paths to names
for(String path : savedPaths){ for(String path : savedPaths){
File file = new File(path);
if(!path.isEmpty()){ // Check that the file exist
File file = new File(path); if(file.exists()){
if(file.exists()){ fileNames.add(FilenameUtils.getName(path));
fileNames.add(FilenameUtils.getName(path)); sb.append(path).append(",");
sb.append(path).append(",");
}
} }
} }
// save list without empty or non existed files // save list without empty or non existed files
sharedPreferences.edit().putString("savedPaths", sb.toString()).commit(); PreferenceHelper.setSavedPaths(getActivity(), sb);
// Adapter // Adapter
arrayAdapter = new ArrayAdapter<String>(getActivity(), R.layout.item_drawer_list, fileNames); arrayAdapter = new ArrayAdapter<String>(getActivity(), R.layout.item_drawer_list, fileNames);
// Set adapter // Set adapter

View File

@ -17,7 +17,7 @@
* along with Turbo Editor. If not, see <http://www.gnu.org/licenses/>. * 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.app.Fragment;
import android.os.Bundle; import android.os.Bundle;
@ -25,6 +25,8 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.vmihalachi.turboeditor.R;
/** /**
* Created by Vlad on 9/23/13. * Created by Vlad on 9/23/13.
*/ */

View File

@ -28,9 +28,8 @@ public final class PreferenceHelper {
private PreferenceHelper() { private PreferenceHelper() {
} }
/** // Getter Methods
* Getter Methods
*/
public static SharedPreferences getPrefs(Context context) { public static SharedPreferences getPrefs(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context); return PreferenceManager.getDefaultSharedPreferences(context);
} }
@ -50,9 +49,12 @@ public final class PreferenceHelper {
public static String getEncoding(Context context) { public static String getEncoding(Context context) {
return getPrefs(context).getString("editor_encoding", "UTF-8"); 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) { public static void setWrapText(Context context, boolean value) {
getEditor(context).putBoolean("editor_wrap_text", value).commit(); getEditor(context).putBoolean("editor_wrap_text", value).commit();
@ -65,4 +67,8 @@ public final class PreferenceHelper {
public static void setEncoding(Context context, String value) { public static void setEncoding(Context context, String value) {
getEditor(context).putString("editor_encoding", value).commit(); getEditor(context).putString("editor_encoding", value).commit();
} }
public static void setSavedPaths(Context context, StringBuilder stringBuilder) {
getEditor(context).putString("savedPaths", stringBuilder.toString()).commit();
}
} }

View File

@ -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;/* package com.vmihalachi.turboeditor.util;/*
* The Alphanum Algorithm is an improved sorting algorithm for strings * The Alphanum Algorithm is an improved sorting algorithm for strings
* containing numbers. Instead of sorting numbers in ASCII order like * containing numbers. Instead of sorting numbers in ASCII order like

View File

@ -21,126 +21,24 @@ package com.vmihalachi.turboeditor.util;
public class MimeTypes { public class MimeTypes {
public static final String[] MIME_TEXT = { public static final String[] MIME_TEXT = {
"ajx", "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"
"am", };
"asa", public static final String[] MIME_CODE = {
"asc", "xml", "php", "asp", "json", "wiki"
"asp", };
"aspx", public static final String[] MIME_HTML = {
"awk", "htm"
"bat", };
"c", public static final String[] MIME_PICTURE = {
"cdf", "png", "jpeg", "jpg", "ico", "gif", "bmp","tiff"
"cf", };
"cfg", public static final String[] MIME_MUSIC = {
"cfm", "mp3", "avi", "flac", "mpga"
"cgi", };
"cnf", public static final String[] MIME_VIDEO = {
"conf", "mp4", "mkv", "wmw"
"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_ARCHIVE = { public static final String[] MIME_ARCHIVE = {
"zip", "tar", "gz", "bz2", "rar", "7z" "zip", "tar", "gz", "bz2", "rar", "7z"
}; };
public static String[] USER_MIME_TEXT;
} }

View File

@ -31,7 +31,7 @@
<fragment android:layout_width="@dimen/navigation_drawer_width" <fragment android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="match_parent" android:layout_height="match_parent"
android:name="com.vmihalachi.turboeditor.NavigationDrawerListFragment" android:name="com.vmihalachi.turboeditor.fragment.NavigationDrawerListFragment"
android:id="@id/drawer_list" android:id="@id/drawer_list"
android:layout_gravity="left"/> android:layout_gravity="left"/>

View File

@ -25,7 +25,7 @@
android:fillViewport="true"> android:fillViewport="true">
<view <view
class="com.vmihalachi.turboeditor.EditorFragment$Editor" class="com.vmihalachi.turboeditor.fragment.EditorFragment$Editor"
android:id="@id/editor" android:id="@id/editor"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"