mirror of
https://github.com/SimpleMobileTools/Simple-File-Manager.git
synced 2025-06-05 22:09:15 +02:00
move the library files in a separate folder + misc changes
- dont do such commits at home
This commit is contained in:
@ -6,8 +6,6 @@ import android.content.pm.PackageManager;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.simplemobiletools.filemanager.models.FileDirItem;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
@ -35,11 +33,6 @@ public class Utils {
|
||||
return matcher.matches();
|
||||
}
|
||||
|
||||
public static String getFormattedSize(FileDirItem item) {
|
||||
final long size = item.getSize();
|
||||
return formatSize(size);
|
||||
}
|
||||
|
||||
public static String formatSize(long size) {
|
||||
if (size <= 0)
|
||||
return "0 B";
|
||||
|
@ -41,7 +41,7 @@ public class AboutActivity extends SimpleActivity {
|
||||
|
||||
private void setupEmail() {
|
||||
final String email = mRes.getString(R.string.email);
|
||||
final String appName = mRes.getString(R.string.app_name);
|
||||
final String appName = mRes.getString(R.string.smtfp_app_name);
|
||||
final String href = "<a href=\"mailto:" + email + "?subject=" + appName + "\">" + email + "</a>";
|
||||
mEmailTV.setText(Html.fromHtml(href));
|
||||
mEmailTV.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
@ -63,9 +63,9 @@ public class AboutActivity extends SimpleActivity {
|
||||
@OnClick(R.id.about_invite)
|
||||
public void inviteFriend() {
|
||||
final Intent intent = new Intent();
|
||||
final String text = String.format(getString(R.string.share_text), getString(R.string.app_name), getStoreUrl());
|
||||
final String text = String.format(getString(R.string.share_text), getString(R.string.smtfp_app_name), getStoreUrl());
|
||||
intent.setAction(Intent.ACTION_SEND);
|
||||
intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.app_name));
|
||||
intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.smtfp_app_name));
|
||||
intent.putExtra(Intent.EXTRA_TEXT, text);
|
||||
intent.setType("text/plain");
|
||||
startActivity(Intent.createChooser(intent, getString(R.string.invite_via)));
|
||||
|
@ -9,13 +9,13 @@ import android.support.v4.app.ActivityCompat;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import com.simplemobiletools.filemanager.Breadcrumbs;
|
||||
import com.simplemobiletools.filemanager.Config;
|
||||
import com.simplemobiletools.filemanager.Constants;
|
||||
import com.simplemobiletools.filemanager.R;
|
||||
import com.simplemobiletools.filemanager.Utils;
|
||||
import com.simplemobiletools.filemanager.fragments.ItemsFragment;
|
||||
import com.simplemobiletools.filemanager.models.FileDirItem;
|
||||
import com.simplemobiletools.filepicker.models.FileDirItem;
|
||||
import com.simplemobiletools.filepicker.Breadcrumbs;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
@ -11,7 +11,7 @@ import android.widget.TextView;
|
||||
import com.simplemobiletools.filemanager.Config;
|
||||
import com.simplemobiletools.filemanager.R;
|
||||
import com.simplemobiletools.filemanager.Utils;
|
||||
import com.simplemobiletools.filemanager.models.FileDirItem;
|
||||
import com.simplemobiletools.filepicker.models.FileDirItem;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Calendar;
|
||||
@ -50,17 +50,18 @@ public class PropertiesDialog extends DialogFragment {
|
||||
final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
|
||||
builder.setTitle(getResources().getString(title));
|
||||
builder.setView(infoView);
|
||||
builder.setPositiveButton(R.string.ok, null);
|
||||
builder.setPositiveButton(R.string.smtfp_ok, null);
|
||||
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
private String getItemSize() {
|
||||
if (mItem.isDirectory()) {
|
||||
return Utils.formatSize(directorySize(new File(mItem.getPath())));
|
||||
return Utils.formatSize(getDirectorySize(new File(mItem.getPath())));
|
||||
}
|
||||
|
||||
return Utils.getFormattedSize(mItem);
|
||||
return "";
|
||||
//return Utils.getFormattedSize(mItem);
|
||||
}
|
||||
|
||||
private String formatLastModified(long ts) {
|
||||
@ -69,13 +70,13 @@ public class PropertiesDialog extends DialogFragment {
|
||||
return DateFormat.format("dd/MM/yyyy HH:mm", cal).toString();
|
||||
}
|
||||
|
||||
private long directorySize(File dir) {
|
||||
private long getDirectorySize(File dir) {
|
||||
if (dir.exists()) {
|
||||
long size = 0;
|
||||
File[] files = dir.listFiles();
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
if (files[i].isDirectory()) {
|
||||
size += directorySize(files[i]);
|
||||
size += getDirectorySize(files[i]);
|
||||
} else {
|
||||
size += files[i].length();
|
||||
if ((!files[i].isHidden() && !dir.isHidden()) || mShowHidden)
|
||||
|
@ -39,7 +39,7 @@ import com.simplemobiletools.filemanager.adapters.ItemsAdapter;
|
||||
import com.simplemobiletools.filemanager.asynctasks.CopyTask;
|
||||
import com.simplemobiletools.filemanager.dialogs.PropertiesDialog;
|
||||
import com.simplemobiletools.filemanager.dialogs.SelectFolderDialog;
|
||||
import com.simplemobiletools.filemanager.models.FileDirItem;
|
||||
import com.simplemobiletools.filepicker.models.FileDirItem;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileFilter;
|
||||
@ -215,8 +215,8 @@ public class ItemsFragment extends android.support.v4.app.Fragment
|
||||
final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
|
||||
builder.setTitle(getResources().getString(R.string.create_new));
|
||||
builder.setView(newItemView);
|
||||
builder.setPositiveButton(R.string.ok, null);
|
||||
builder.setNegativeButton(R.string.cancel, null);
|
||||
builder.setPositiveButton(R.string.smtfp_ok, null);
|
||||
builder.setNegativeButton(R.string.smtfp_cancel, null);
|
||||
|
||||
final AlertDialog alertDialog = builder.create();
|
||||
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
|
||||
@ -394,8 +394,8 @@ public class ItemsFragment extends android.support.v4.app.Fragment
|
||||
final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
|
||||
builder.setTitle(getResources().getString(title));
|
||||
builder.setView(renameView);
|
||||
builder.setPositiveButton(R.string.ok, null);
|
||||
builder.setNegativeButton(R.string.cancel, null);
|
||||
builder.setPositiveButton(R.string.smtfp_ok, null);
|
||||
builder.setNegativeButton(R.string.smtfp_cancel, null);
|
||||
|
||||
final AlertDialog alertDialog = builder.create();
|
||||
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
|
||||
@ -445,8 +445,8 @@ public class ItemsFragment extends android.support.v4.app.Fragment
|
||||
final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
|
||||
builder.setTitle(getResources().getString(copyString));
|
||||
builder.setView(copyView);
|
||||
builder.setPositiveButton(R.string.ok, null);
|
||||
builder.setNegativeButton(R.string.cancel, null);
|
||||
builder.setPositiveButton(R.string.smtfp_ok, null);
|
||||
builder.setNegativeButton(R.string.smtfp_cancel, null);
|
||||
|
||||
mCopyDialog = builder.create();
|
||||
mCopyDialog.show();
|
||||
@ -454,7 +454,7 @@ public class ItemsFragment extends android.support.v4.app.Fragment
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
final String destinationPath = mDestinationView.getText().toString().trim();
|
||||
if (destinationPath.equals(getResources().getString(R.string.select_destination))) {
|
||||
if (destinationPath.equals(getResources().getString(R.string.smtfp_select_destination))) {
|
||||
Utils.showToast(getContext(), R.string.please_select_destination);
|
||||
return;
|
||||
}
|
||||
|
@ -1,166 +0,0 @@
|
||||
package com.simplemobiletools.filemanager
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Point
|
||||
import android.os.Environment
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import com.simplemobiletools.filemanager.models.FileDirItem
|
||||
|
||||
class Breadcrumbs(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs), View.OnClickListener {
|
||||
private var mDeviceWidth: Int = 0
|
||||
|
||||
private var mInflater: LayoutInflater? = null
|
||||
private var mListener: BreadcrumbsListener? = null
|
||||
|
||||
init {
|
||||
init(context)
|
||||
}
|
||||
|
||||
private fun init(context: Context) {
|
||||
mInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
|
||||
val display = (context.getSystemService(Context.WINDOW_SERVICE) as WindowManager).defaultDisplay
|
||||
val deviceDisplay = Point()
|
||||
display.getSize(deviceDisplay)
|
||||
mDeviceWidth = deviceDisplay.x
|
||||
}
|
||||
|
||||
fun setListener(listener: BreadcrumbsListener) {
|
||||
mListener = listener
|
||||
}
|
||||
|
||||
override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {
|
||||
val paddingTop = paddingTop
|
||||
val paddingLeft = paddingLeft
|
||||
val paddingRight = paddingRight
|
||||
val childRight = measuredWidth - paddingRight
|
||||
val childBottom = measuredHeight - paddingBottom
|
||||
val childHeight = childBottom - paddingTop
|
||||
|
||||
val usableWidth = mDeviceWidth - paddingLeft - paddingRight
|
||||
var maxHeight = 0
|
||||
var curWidth: Int
|
||||
var curHeight: Int
|
||||
var curLeft = paddingLeft
|
||||
var curTop = paddingTop
|
||||
|
||||
val cnt = childCount
|
||||
for (i in 0..cnt - 1) {
|
||||
val child = getChildAt(i)
|
||||
|
||||
child.measure(View.MeasureSpec.makeMeasureSpec(usableWidth, View.MeasureSpec.AT_MOST),
|
||||
View.MeasureSpec.makeMeasureSpec(childHeight, View.MeasureSpec.AT_MOST))
|
||||
curWidth = child.measuredWidth
|
||||
curHeight = child.measuredHeight
|
||||
|
||||
if (curLeft + curWidth >= childRight) {
|
||||
curLeft = paddingLeft
|
||||
curTop += maxHeight
|
||||
maxHeight = 0
|
||||
}
|
||||
|
||||
child.layout(curLeft, curTop, curLeft + curWidth, curTop + curHeight)
|
||||
if (maxHeight < curHeight)
|
||||
maxHeight = curHeight
|
||||
|
||||
curLeft += curWidth
|
||||
}
|
||||
}
|
||||
|
||||
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
|
||||
val usableWidth = mDeviceWidth - paddingLeft - paddingRight
|
||||
var width = 0
|
||||
var rowHeight = 0
|
||||
var lines = 1
|
||||
|
||||
val cnt = childCount
|
||||
for (i in 0..cnt - 1) {
|
||||
val child = getChildAt(i)
|
||||
measureChild(child, widthMeasureSpec, heightMeasureSpec)
|
||||
width += child.measuredWidth
|
||||
rowHeight = child.measuredHeight
|
||||
|
||||
if (width / usableWidth > 0) {
|
||||
lines++
|
||||
width = child.measuredWidth
|
||||
}
|
||||
}
|
||||
|
||||
val parentWidth = View.MeasureSpec.getSize(widthMeasureSpec)
|
||||
val calculatedHeight = paddingTop + paddingBottom + rowHeight * lines
|
||||
setMeasuredDimension(parentWidth, calculatedHeight)
|
||||
}
|
||||
|
||||
fun setInitialBreadcrumb(fullPath: String) {
|
||||
val showFullPath = Config.newInstance(context).showFullPath
|
||||
val basePath = Environment.getExternalStorageDirectory().toString()
|
||||
var tempPath = fullPath
|
||||
var currPath = basePath
|
||||
if (!showFullPath) {
|
||||
tempPath = fullPath.replace(basePath, context.getString(R.string.initial_breadcrumb) + "/")
|
||||
} else {
|
||||
currPath = "/"
|
||||
}
|
||||
|
||||
removeAllViewsInLayout()
|
||||
val dirs = tempPath.split("/".toRegex()).dropLastWhile(String::isEmpty).toTypedArray()
|
||||
for (i in dirs.indices) {
|
||||
val dir = dirs[i]
|
||||
if (i > 0) {
|
||||
currPath += dir + "/"
|
||||
} else if (showFullPath) {
|
||||
addRootFolder()
|
||||
}
|
||||
|
||||
if (dir.isEmpty())
|
||||
continue
|
||||
|
||||
val item = FileDirItem(currPath, dir, true, 0, 0)
|
||||
addBreadcrumb(item, i > 0 || showFullPath)
|
||||
}
|
||||
|
||||
if (dirs.size == 0 && showFullPath) {
|
||||
addRootFolder()
|
||||
}
|
||||
}
|
||||
|
||||
fun addBreadcrumb(item: FileDirItem, addPrefix: Boolean) {
|
||||
val view = mInflater!!.inflate(R.layout.breadcrumb_item, null, false)
|
||||
val textView = view.findViewById(R.id.breadcrumb_text) as TextView
|
||||
|
||||
var textToAdd = item.name
|
||||
if (addPrefix)
|
||||
textToAdd = " -> " + textToAdd
|
||||
textView.text = textToAdd
|
||||
addView(view)
|
||||
view.setOnClickListener(this)
|
||||
|
||||
view.tag = item
|
||||
}
|
||||
|
||||
fun removeBreadcrumb() {
|
||||
removeView(getChildAt(childCount - 1))
|
||||
}
|
||||
|
||||
private fun addRootFolder() {
|
||||
val item = FileDirItem("/", " / ", true, 0, 0)
|
||||
addBreadcrumb(item, false)
|
||||
}
|
||||
|
||||
override fun onClick(v: View) {
|
||||
val cnt = childCount
|
||||
for (i in 0..cnt - 1) {
|
||||
if (getChildAt(i) != null && getChildAt(i) == v) {
|
||||
mListener?.breadcrumbClicked(i)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interface BreadcrumbsListener {
|
||||
fun breadcrumbClicked(id: Int)
|
||||
}
|
||||
}
|
@ -10,9 +10,9 @@ import android.widget.BaseAdapter
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import com.simplemobiletools.filemanager.R
|
||||
import com.simplemobiletools.filemanager.Utils
|
||||
import com.simplemobiletools.filemanager.extensions.formatSize
|
||||
import com.simplemobiletools.filemanager.extensions.getColoredIcon
|
||||
import com.simplemobiletools.filemanager.models.FileDirItem
|
||||
import com.simplemobiletools.filepicker.models.FileDirItem
|
||||
import kotlinx.android.synthetic.main.list_item.view.*
|
||||
|
||||
class ItemsAdapter(context: Context, private val mItems: List<FileDirItem>) : BaseAdapter() {
|
||||
@ -48,7 +48,7 @@ class ItemsAdapter(context: Context, private val mItems: List<FileDirItem>) : Ba
|
||||
viewHolder.details.text = getChildrenCnt(item)
|
||||
} else {
|
||||
viewHolder.icon.setImageBitmap(mFileBmp)
|
||||
viewHolder.details.text = Utils.getFormattedSize(item)
|
||||
viewHolder.details.text = item.size.formatSize()
|
||||
}
|
||||
|
||||
return view
|
||||
@ -56,7 +56,7 @@ class ItemsAdapter(context: Context, private val mItems: List<FileDirItem>) : Ba
|
||||
|
||||
private fun getChildrenCnt(item: FileDirItem): String {
|
||||
val children = item.children
|
||||
return mRes.getQuantityString(R.plurals.items, children, children)
|
||||
return mRes.getQuantityString(R.plurals.smtfp_items, children, children)
|
||||
}
|
||||
|
||||
override fun getCount(): Int {
|
||||
|
@ -12,7 +12,7 @@ import com.simplemobiletools.filemanager.R
|
||||
import com.simplemobiletools.filemanager.Utils
|
||||
import com.simplemobiletools.filemanager.adapters.ItemsAdapter
|
||||
import com.simplemobiletools.filemanager.fragments.ItemsFragment
|
||||
import com.simplemobiletools.filemanager.models.FileDirItem
|
||||
import com.simplemobiletools.filepicker.models.FileDirItem
|
||||
import kotlinx.android.synthetic.main.directory_picker.view.*
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
@ -39,10 +39,10 @@ class SelectFolderDialog : DialogFragment() {
|
||||
setupBreadcrumbs()
|
||||
|
||||
return AlertDialog.Builder(activity)
|
||||
.setTitle(resources.getString(R.string.select_destination))
|
||||
.setTitle(resources.getString(R.string.smtfp_select_destination))
|
||||
.setView(dialog)
|
||||
.setPositiveButton(R.string.ok) { dialog, which -> sendResult() }
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.setPositiveButton(R.string.smtfp_ok) { dialog, which -> sendResult() }
|
||||
.setNegativeButton(R.string.smtfp_cancel, null)
|
||||
.create()
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,12 @@
|
||||
package com.simplemobiletools.filemanager.extensions
|
||||
|
||||
import java.text.DecimalFormat
|
||||
|
||||
fun Long.formatSize(): String {
|
||||
if (this <= 0)
|
||||
return "0 B"
|
||||
|
||||
val units = arrayOf("B", "kB", "MB", "GB", "TB")
|
||||
val digitGroups = (Math.log10(toDouble()) / Math.log10(1024.0)).toInt()
|
||||
return DecimalFormat("#,##0.#").format(this / Math.pow(1024.0, digitGroups.toDouble())) + " " + units[digitGroups]
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package com.simplemobiletools.filemanager.models
|
||||
|
||||
class FileDirItem(val path: String, val name: String, val isDirectory: Boolean, val children: Int, val size: Long) :
|
||||
Comparable<FileDirItem> {
|
||||
|
||||
override fun compareTo(other: FileDirItem): Int {
|
||||
if (isDirectory && !other.isDirectory) {
|
||||
return -1
|
||||
} else if (!isDirectory && other.isDirectory) {
|
||||
return 1
|
||||
}
|
||||
|
||||
return name.toLowerCase().compareTo(other.name.toLowerCase())
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "FileDirItem{name=$name, isDirectory=$isDirectory, path=$path, children=$children, size=$size}"
|
||||
}
|
||||
}
|
@ -5,7 +5,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.simplemobiletools.filemanager.Breadcrumbs
|
||||
<com.simplemobiletools.filepicker.Breadcrumbs
|
||||
android:id="@+id/breadcrumbs"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -42,7 +42,7 @@
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/small_margin"
|
||||
android:text="@string/select_destination"/>
|
||||
android:text="@string/smtfp_select_destination"/>
|
||||
|
||||
<RadioGroup
|
||||
android:id="@+id/dialog_radio_group"
|
||||
|
@ -6,7 +6,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.simplemobiletools.filemanager.Breadcrumbs
|
||||
<com.simplemobiletools.filepicker.Breadcrumbs
|
||||
android:id="@+id/directory_picker_breadcrumbs"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
Reference in New Issue
Block a user