adding Commons library + initial changes just to make it compilable

This commit is contained in:
tibbi 2017-03-10 22:46:29 +01:00
parent 3e4eba3c9c
commit c9de559fac
21 changed files with 75 additions and 219 deletions

View File

@ -3,8 +3,8 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-android-extensions'
android { android {
compileSdkVersion 23 compileSdkVersion 25
buildToolsVersion "23.0.3" buildToolsVersion "25.0.2"
defaultConfig { defaultConfig {
applicationId "com.simplemobiletools.filemanager" applicationId "com.simplemobiletools.filemanager"
@ -26,28 +26,19 @@ android {
} }
} }
packagingOptions {
exclude 'META-INF/library-compileDebugKotlin.kotlin_module'
}
sourceSets { sourceSets {
main.java.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'src/main/kotlin'
} }
} }
dependencies { dependencies {
compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.simplemobiletools:commons:2.9.8'
compile 'com.android.support:design:23.4.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.simplemobiletools:filepicker:1.5.6@aar'
compile 'com.simplemobiletools:fileproperties:1.0.7@aar'
compile 'com.bignerdranch.android:recyclerview-multiselect:0.2' compile 'com.bignerdranch.android:recyclerview-multiselect:0.2'
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
} }
buildscript { buildscript {
ext.kotlin_version = '1.0.5-2' ext.kotlin_version = '1.1.0'
repositories { repositories {
mavenCentral() mavenCentral()
} }
@ -63,12 +54,11 @@ def propFile = new File('signing.properties')
if (propFile.canRead()) { if (propFile.canRead()) {
props.load(new FileInputStream(propFile)) props.load(new FileInputStream(propFile))
if (props != null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') && if (props != null && props.containsKey('STORE_FILE') && props.containsKey('KEY_ALIAS') && props.containsKey('PASSWORD')) {
props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
android.signingConfigs.release.storeFile = file(props['STORE_FILE']) android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
android.signingConfigs.release.storePassword = props['STORE_PASSWORD'] android.signingConfigs.release.storePassword = props['PASSWORD']
android.signingConfigs.release.keyAlias = props['KEY_ALIAS'] android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
android.signingConfigs.release.keyPassword = props['KEY_PASSWORD'] android.signingConfigs.release.keyPassword = props['PASSWORD']
} else { } else {
println 'signing.properties found but some entries are missing' println 'signing.properties found but some entries are missing'
android.buildTypes.release.signingConfig = null android.buildTypes.release.signingConfig = null

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest package="com.simplemobiletools.filemanager" <manifest
xmlns:android="http://schemas.android.com/apk/res/android"> xmlns:android="http://schemas.android.com/apk/res/android"
package="com.simplemobiletools.filemanager">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

View File

@ -1,32 +1,14 @@
package com.simplemobiletools.filemanager package com.simplemobiletools.filemanager
import android.content.Context import android.content.Context
import android.content.SharedPreferences import com.simplemobiletools.commons.helpers.BaseConfig
class Config(context: Context) {
private val mPrefs: SharedPreferences
class Config(context: Context) : BaseConfig(context) {
companion object { companion object {
fun newInstance(context: Context) = Config(context) fun newInstance(context: Context) = Config(context)
} }
init {
mPrefs = context.getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE)
}
var isFirstRun: Boolean
get() = mPrefs.getBoolean(IS_FIRST_RUN, true)
set(firstRun) = mPrefs.edit().putBoolean(IS_FIRST_RUN, firstRun).apply()
var isDarkTheme: Boolean
get() = mPrefs.getBoolean(IS_DARK_THEME, false)
set(isDarkTheme) = mPrefs.edit().putBoolean(IS_DARK_THEME, isDarkTheme).apply()
var showHidden: Boolean var showHidden: Boolean
get() = mPrefs.getBoolean(SHOW_HIDDEN, false) get() = prefs.getBoolean(SHOW_HIDDEN, false)
set(show) = mPrefs.edit().putBoolean(SHOW_HIDDEN, show).apply() set(show) = prefs.edit().putBoolean(SHOW_HIDDEN, show).apply()
var treeUri: String
get() = mPrefs.getString(TREE_URI, "")
set(uri) = mPrefs.edit().putString(TREE_URI, uri).apply()
} }

View File

@ -4,11 +4,4 @@ val PATH = "path"
val SCROLL_STATE = "scroll_state" val SCROLL_STATE = "scroll_state"
// shared preferences // shared preferences
val PREFS_KEY = "File Manager"
val IS_FIRST_RUN = "is_first_run"
val IS_DARK_THEME = "is_dark_theme"
val SHOW_HIDDEN = "show_hidden" val SHOW_HIDDEN = "show_hidden"
val TREE_URI = "tree_uri"
// global intents
val OPEN_DOCUMENT_TREE = 1000

View File

@ -9,6 +9,7 @@ import android.text.method.LinkMovementMethod
import android.view.View import android.view.View
import com.simplemobiletools.filemanager.BuildConfig import com.simplemobiletools.filemanager.BuildConfig
import com.simplemobiletools.filemanager.R import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filemanager.extensions.config
import kotlinx.android.synthetic.main.activity_about.* import kotlinx.android.synthetic.main.activity_about.*
import java.util.* import java.util.*
@ -42,7 +43,7 @@ class AboutActivity : SimpleActivity() {
} }
private fun setupRateUs() { private fun setupRateUs() {
if (mConfig.isFirstRun) { if (config.isFirstRun) {
about_rate_us.visibility = View.GONE about_rate_us.visibility = View.GONE
} else { } else {
about_rate_us.setOnClickListener { about_rate_us.setOnClickListener {

View File

@ -4,22 +4,22 @@ import android.Manifest
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Bundle import android.os.Bundle
import android.os.Handler
import android.os.Parcelable import android.os.Parcelable
import android.support.v4.app.ActivityCompat import android.support.v4.app.ActivityCompat
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import com.simplemobiletools.commons.dialogs.StoragePickerDialog
import com.simplemobiletools.commons.extensions.getInternalStoragePath
import com.simplemobiletools.commons.extensions.hasWriteStoragePermission
import com.simplemobiletools.commons.extensions.storeStoragePaths
import com.simplemobiletools.commons.extensions.toast
import com.simplemobiletools.commons.models.FileDirItem
import com.simplemobiletools.commons.views.Breadcrumbs
import com.simplemobiletools.filemanager.PATH import com.simplemobiletools.filemanager.PATH
import com.simplemobiletools.filemanager.R import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filemanager.SCROLL_STATE import com.simplemobiletools.filemanager.SCROLL_STATE
import com.simplemobiletools.filemanager.extensions.config
import com.simplemobiletools.filemanager.fragments.ItemsFragment import com.simplemobiletools.filemanager.fragments.ItemsFragment
import com.simplemobiletools.filepicker.dialogs.StoragePickerDialog
import com.simplemobiletools.filepicker.extensions.getInternalStoragePath
import com.simplemobiletools.filepicker.extensions.hasStoragePermission
import com.simplemobiletools.filepicker.extensions.toast
import com.simplemobiletools.filepicker.models.FileDirItem
import com.simplemobiletools.filepicker.views.Breadcrumbs
import kotlinx.android.synthetic.main.activity_main.*
import java.io.File import java.io.File
import java.util.* import java.util.*
@ -38,17 +38,18 @@ class MainActivity : SimpleActivity(), ItemsFragment.ItemInteractionListener, Br
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) setContentView(R.layout.activity_main)
breadcrumbs.setListener(this) //breadcrumbs.setListener(this)
tryInitFileManager() tryInitFileManager()
storeStoragePaths()
} }
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
mConfig.isFirstRun = false config.isFirstRun = false
} }
private fun tryInitFileManager() { private fun tryInitFileManager() {
if (hasStoragePermission()) { if (hasWriteStoragePermission()) {
initRootFileManager() initRootFileManager()
} else { } else {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), STORAGE_PERMISSION) ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), STORAGE_PERMISSION)
@ -60,7 +61,7 @@ class MainActivity : SimpleActivity(), ItemsFragment.ItemInteractionListener, Br
} }
private fun openPath(path: String) { private fun openPath(path: String) {
breadcrumbs.setBreadcrumb(path) //breadcrumbs.setBreadcrumb(path)
val bundle = Bundle() val bundle = Bundle()
bundle.putString(PATH, path) bundle.putString(PATH, path)
@ -97,7 +98,7 @@ class MainActivity : SimpleActivity(), ItemsFragment.ItemInteractionListener, Br
} }
} }
override fun onBackPressed() { /*override fun onBackPressed() {
if (breadcrumbs.childCount <= 1) { if (breadcrumbs.childCount <= 1) {
if (!mWasBackJustPressed) { if (!mWasBackJustPressed) {
mWasBackJustPressed = true mWasBackJustPressed = true
@ -111,7 +112,7 @@ class MainActivity : SimpleActivity(), ItemsFragment.ItemInteractionListener, Br
val item = breadcrumbs.lastItem val item = breadcrumbs.lastItem
openPath(item.path) openPath(item.path)
} }
} }*/
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) { override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults) super.onRequestPermissionsResult(requestCode, permissions, grantResults)
@ -136,8 +137,8 @@ class MainActivity : SimpleActivity(), ItemsFragment.ItemInteractionListener, Br
changePath(it) changePath(it)
} }
} else { } else {
val item = breadcrumbs.getChildAt(id).tag as FileDirItem /*val item = breadcrumbs.getChildAt(id).tag as FileDirItem
openPath(item.path) openPath(item.path)*/
} }
} }

View File

@ -1,8 +1,8 @@
package com.simplemobiletools.filemanager.activities package com.simplemobiletools.filemanager.activities
import android.os.Bundle import android.os.Bundle
import android.support.v4.app.TaskStackBuilder
import com.simplemobiletools.filemanager.R import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filemanager.extensions.config
import kotlinx.android.synthetic.main.activity_settings.* import kotlinx.android.synthetic.main.activity_settings.*
class SettingsActivity : SimpleActivity() { class SettingsActivity : SimpleActivity() {
@ -10,28 +10,14 @@ class SettingsActivity : SimpleActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_settings) setContentView(R.layout.activity_settings)
setupDarkTheme()
setupShowHidden() setupShowHidden()
} }
private fun setupDarkTheme() {
settings_dark_theme.isChecked = mConfig.isDarkTheme
settings_dark_theme_holder.setOnClickListener {
settings_dark_theme.toggle()
mConfig.isDarkTheme = settings_dark_theme.isChecked
restartActivity()
}
}
private fun setupShowHidden() { private fun setupShowHidden() {
settings_show_hidden.isChecked = mConfig.showHidden settings_show_hidden.isChecked = config.showHidden
settings_show_hidden_holder.setOnClickListener { settings_show_hidden_holder.setOnClickListener {
settings_show_hidden.toggle() settings_show_hidden.toggle()
mConfig.showHidden = settings_show_hidden.isChecked config.showHidden = settings_show_hidden.isChecked
} }
} }
private fun restartActivity() {
TaskStackBuilder.create(applicationContext).addNextIntentWithParentStack(intent).startActivities()
}
} }

View File

@ -1,52 +1,10 @@
package com.simplemobiletools.filemanager.activities package com.simplemobiletools.filemanager.activities
import android.annotation.TargetApi
import android.app.Activity
import android.content.Intent
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.support.v7.app.AppCompatActivity import com.simplemobiletools.commons.activities.BaseSimpleActivity
import android.view.MenuItem
import com.simplemobiletools.filemanager.Config
import com.simplemobiletools.filemanager.OPEN_DOCUMENT_TREE
import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filepicker.extensions.isShowingWritePermissions
import java.io.File
open class SimpleActivity : AppCompatActivity() {
lateinit var mConfig: Config
open class SimpleActivity : BaseSimpleActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
mConfig = Config.newInstance(applicationContext)
setTheme(if (mConfig.isDarkTheme) R.style.AppTheme_Dark else R.style.AppTheme)
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
} }
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
android.R.id.home -> {
finish()
true
}
else -> super.onOptionsItemSelected(item)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
super.onActivityResult(requestCode, resultCode, resultData)
if (requestCode == OPEN_DOCUMENT_TREE && resultCode == Activity.RESULT_OK && resultData != null) {
saveTreeUri(resultData)
}
}
@TargetApi(Build.VERSION_CODES.KITKAT)
fun saveTreeUri(resultData: Intent) {
val treeUri = resultData.data
mConfig.treeUri = treeUri.toString()
val takeFlags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
contentResolver.takePersistableUriPermission(treeUri, takeFlags)
}
fun isShowingPermDialog(file: File) = isShowingWritePermissions(file, mConfig.treeUri, OPEN_DOCUMENT_TREE)
} }

View File

@ -10,18 +10,18 @@ import com.bignerdranch.android.multiselector.MultiSelector
import com.bignerdranch.android.multiselector.SwappingHolder import com.bignerdranch.android.multiselector.SwappingHolder
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.simplemobiletools.commons.asynctasks.CopyMoveTask
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.dialogs.PropertiesDialog
import com.simplemobiletools.commons.extensions.formatSize
import com.simplemobiletools.commons.extensions.isGif
import com.simplemobiletools.commons.extensions.toast
import com.simplemobiletools.commons.models.FileDirItem
import com.simplemobiletools.filemanager.Config import com.simplemobiletools.filemanager.Config
import com.simplemobiletools.filemanager.R import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filemanager.activities.SimpleActivity import com.simplemobiletools.filemanager.activities.SimpleActivity
import com.simplemobiletools.filemanager.dialogs.CopyDialog import com.simplemobiletools.filemanager.dialogs.CopyDialog
import com.simplemobiletools.filemanager.dialogs.RenameItemDialog import com.simplemobiletools.filemanager.dialogs.RenameItemDialog
import com.simplemobiletools.filepicker.asynctasks.CopyMoveTask
import com.simplemobiletools.filepicker.dialogs.ConfirmationDialog
import com.simplemobiletools.filepicker.extensions.formatSize
import com.simplemobiletools.filepicker.extensions.isGif
import com.simplemobiletools.filepicker.extensions.toast
import com.simplemobiletools.filepicker.models.FileDirItem
import com.simplemobiletools.fileproperties.dialogs.PropertiesDialog
import kotlinx.android.synthetic.main.list_item.view.* import kotlinx.android.synthetic.main.list_item.view.*
import java.io.File import java.io.File
import java.util.* import java.util.*

View File

@ -4,15 +4,14 @@ import android.app.AlertDialog
import android.support.v4.util.Pair import android.support.v4.util.Pair
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.WindowManager import android.view.WindowManager
import com.simplemobiletools.commons.asynctasks.CopyMoveTask
import com.simplemobiletools.commons.extensions.humanizePath
import com.simplemobiletools.commons.extensions.isPathOnSD
import com.simplemobiletools.commons.extensions.scanFiles
import com.simplemobiletools.commons.extensions.toast
import com.simplemobiletools.filemanager.Config import com.simplemobiletools.filemanager.Config
import com.simplemobiletools.filemanager.R import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filemanager.activities.SimpleActivity import com.simplemobiletools.filemanager.activities.SimpleActivity
import com.simplemobiletools.filepicker.asynctasks.CopyMoveTask
import com.simplemobiletools.filepicker.dialogs.FilePickerDialog
import com.simplemobiletools.filepicker.extensions.humanizePath
import com.simplemobiletools.filepicker.extensions.isPathOnSD
import com.simplemobiletools.filepicker.extensions.scanFiles
import com.simplemobiletools.filepicker.extensions.toast
import kotlinx.android.synthetic.main.copy_item.view.* import kotlinx.android.synthetic.main.copy_item.view.*
import java.io.File import java.io.File
import java.util.* import java.util.*
@ -27,7 +26,7 @@ class CopyDialog(val activity: SimpleActivity, val files: ArrayList<File>, val c
view.source.text = "${context.humanizePath(sourcePath)}/" view.source.text = "${context.humanizePath(sourcePath)}/"
val config = Config.newInstance(context) val config = Config.newInstance(context)
view.destination.setOnClickListener { /*view.destination.setOnClickListener {
FilePickerDialog(activity, destinationPath, false, config.showHidden, object : FilePickerDialog.OnFilePickerListener { FilePickerDialog(activity, destinationPath, false, config.showHidden, object : FilePickerDialog.OnFilePickerListener {
override fun onFail(error: FilePickerDialog.FilePickerResult) { override fun onFail(error: FilePickerDialog.FilePickerResult) {
} }
@ -37,7 +36,7 @@ class CopyDialog(val activity: SimpleActivity, val files: ArrayList<File>, val c
view.destination.text = context.humanizePath(pickedPath) view.destination.text = context.humanizePath(pickedPath)
} }
}) })
} }*/
AlertDialog.Builder(context) AlertDialog.Builder(context)
.setTitle(context.resources.getString(if (files.size == 1) R.string.copy_item else R.string.copy_items)) .setTitle(context.resources.getString(if (files.size == 1) R.string.copy_item else R.string.copy_items))

View File

@ -5,9 +5,9 @@ import android.content.Context
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.filemanager.Config import com.simplemobiletools.filemanager.Config
import com.simplemobiletools.filemanager.R import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filepicker.extensions.*
import kotlinx.android.synthetic.main.create_new.view.* import kotlinx.android.synthetic.main.create_new.view.*
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
@ -54,7 +54,7 @@ class CreateNewItemDialog(val context: Context, val path: String, val listener:
private fun createDirectory(file: File, alertDialog: AlertDialog): Boolean { private fun createDirectory(file: File, alertDialog: AlertDialog): Boolean {
return if (context.needsStupidWritePermissions(path)) { return if (context.needsStupidWritePermissions(path)) {
val documentFile = context.getFileDocument(file.absolutePath, Config.newInstance(context).treeUri) val documentFile = context.getFileDocument(file.absolutePath, Config.newInstance(context).treeUri) ?: return false
documentFile.createDirectory(file.name) documentFile.createDirectory(file.name)
success(alertDialog) success(alertDialog)
true true
@ -72,7 +72,7 @@ class CreateNewItemDialog(val context: Context, val path: String, val listener:
private fun createFile(file: File, alertDialog: AlertDialog): Boolean { private fun createFile(file: File, alertDialog: AlertDialog): Boolean {
try { try {
if (context.needsStupidWritePermissions(path)) { if (context.needsStupidWritePermissions(path)) {
val documentFile = context.getFileDocument(file.absolutePath, Config.newInstance(context).treeUri) val documentFile = context.getFileDocument(file.absolutePath, Config.newInstance(context).treeUri) ?: return false
documentFile.createFile("", file.name) documentFile.createFile("", file.name)
success(alertDialog) success(alertDialog)
return true return true

View File

@ -4,10 +4,10 @@ import android.app.AlertDialog
import android.content.Context import android.content.Context
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.WindowManager import android.view.WindowManager
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.models.FileDirItem
import com.simplemobiletools.filemanager.Config import com.simplemobiletools.filemanager.Config
import com.simplemobiletools.filemanager.R import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filepicker.extensions.*
import com.simplemobiletools.filepicker.models.FileDirItem
import kotlinx.android.synthetic.main.rename_item.view.* import kotlinx.android.synthetic.main.rename_item.view.*
import java.io.File import java.io.File
@ -44,7 +44,7 @@ class RenameItemDialog(val context: Context, val item: FileDirItem, val listener
} }
if (context.needsStupidWritePermissions(path)) { if (context.needsStupidWritePermissions(path)) {
val document = context.getFileDocument(currFile.absolutePath, Config.newInstance(context).treeUri) val document = context.getFileDocument(currFile.absolutePath, Config.newInstance(context).treeUri) ?: return@setOnClickListener
if (document.canWrite()) if (document.canWrite())
document.renameTo(newName) document.renameTo(newName)
sendSuccess(newFile) sendSuccess(newFile)

View File

@ -0,0 +1,6 @@
package com.simplemobiletools.filemanager.extensions
import android.content.Context
import com.simplemobiletools.filemanager.Config
val Context.config: Config get() = Config.newInstance(this)

View File

@ -12,6 +12,9 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.webkit.MimeTypeMap import android.webkit.MimeTypeMap
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.models.FileDirItem
import com.simplemobiletools.commons.views.RecyclerViewDivider
import com.simplemobiletools.filemanager.Config import com.simplemobiletools.filemanager.Config
import com.simplemobiletools.filemanager.PATH import com.simplemobiletools.filemanager.PATH
import com.simplemobiletools.filemanager.R import com.simplemobiletools.filemanager.R
@ -19,9 +22,6 @@ import com.simplemobiletools.filemanager.SCROLL_STATE
import com.simplemobiletools.filemanager.activities.SimpleActivity import com.simplemobiletools.filemanager.activities.SimpleActivity
import com.simplemobiletools.filemanager.adapters.ItemsAdapter import com.simplemobiletools.filemanager.adapters.ItemsAdapter
import com.simplemobiletools.filemanager.dialogs.CreateNewItemDialog import com.simplemobiletools.filemanager.dialogs.CreateNewItemDialog
import com.simplemobiletools.filepicker.extensions.*
import com.simplemobiletools.filepicker.models.FileDirItem
import com.simplemobiletools.filepicker.views.RecyclerViewDivider
import kotlinx.android.synthetic.main.items_fragment.* import kotlinx.android.synthetic.main.items_fragment.*
import java.io.File import java.io.File
import java.util.* import java.util.*
@ -241,7 +241,7 @@ class ItemsFragment : android.support.v4.app.Fragment(), ItemsAdapter.ItemOperat
} }
if (context.needsStupidWritePermissions(item.absolutePath)) { if (context.needsStupidWritePermissions(item.absolutePath)) {
val document = context.getFileDocument(item.absolutePath, mConfig.treeUri) val document = context.getFileDocument(item.absolutePath, mConfig.treeUri) ?: return
// double check we have the uri to the proper file path, not some parent folder // double check we have the uri to the proper file path, not some parent folder
if (document.uri.toString().endsWith(item.absolutePath.getFilenameFromPath())) if (document.uri.toString().endsWith(item.absolutePath.getFilenameFromPath()))

View File

@ -1,33 +0,0 @@
package com.simplemobiletools.filemanager.views
import android.content.Context
import android.graphics.Canvas
import android.graphics.drawable.Drawable
import android.support.v7.widget.RecyclerView
import com.simplemobiletools.filemanager.R
class RecyclerViewDivider(context: Context) : RecyclerView.ItemDecoration() {
private val mDivider: Drawable
init {
mDivider = context.resources.getDrawable(R.drawable.divider)
}
override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
val left = parent.paddingLeft
val right = parent.width - parent.paddingRight
val childCount = parent.childCount
for (i in 0..childCount - 1) {
val child = parent.getChildAt(i)
val params = child.layoutParams as RecyclerView.LayoutParams
val top = child.bottom + params.bottomMargin
val bottom = top + mDivider.intrinsicHeight
mDivider.setBounds(left, top, right, bottom)
mDivider.draw(c)
}
}
}

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout <RelativeLayout
android:id="@+id/main_screen"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_screen"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<com.simplemobiletools.filepicker.views.Breadcrumbs <com.simplemobiletools.commons.views.Breadcrumbs
android:id="@+id/breadcrumbs" android:id="@+id/breadcrumbs"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -13,7 +13,6 @@
<FrameLayout <FrameLayout
android:id="@+id/fragment_holder" android:id="@+id/fragment_holder"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_below="@+id/breadcrumbs"/> android:layout_below="@+id/breadcrumbs"/>

View File

@ -11,32 +11,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
<RelativeLayout
android:id="@+id/settings_dark_theme_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/settings_padding"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin">
<TextView
android:id="@+id/settings_dark_theme_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingLeft="@dimen/settings_padding"
android:text="@string/dark_theme"/>
<android.support.v7.widget.SwitchCompat
android:id="@+id/settings_dark_theme"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:background="@null"
android:clickable="false"/>
</RelativeLayout>
<RelativeLayout <RelativeLayout
android:id="@+id/settings_show_hidden_holder" android:id="@+id/settings_show_hidden_holder"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -6,7 +6,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
<com.simplemobiletools.filepicker.views.Breadcrumbs <com.simplemobiletools.commons.views.Breadcrumbs
android:id="@+id/directory_picker_breadcrumbs" android:id="@+id/directory_picker_breadcrumbs"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"

View File

@ -5,7 +5,7 @@ buildscript {
jcenter() jcenter()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:2.2.3' classpath 'com.android.tools.build:gradle:2.3.0'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files

View File

@ -1,6 +1,6 @@
#Mon Aug 22 21:44:03 CEST 2016 #Fri Mar 10 22:27:02 CET 2017
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip

View File

@ -1,4 +1,3 @@
STORE_FILE=/path/to/your.keystore STORE_FILE=/path/to/your.keystore
STORE_PASSWORD=yourkeypass
KEY_ALIAS=projectkeyalias KEY_ALIAS=projectkeyalias
KEY_PASSWORD=yourkeypass PASSWORD=yourkeypass