Skip to content

Commit 72a10cc

Browse files
committed
adding an initial version of the decompressing activity
1 parent 445080a commit 72a10cc

File tree

5 files changed

+92
-3
lines changed

5 files changed

+92
-3
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,16 @@
7373
</intent-filter>
7474
</activity>
7575

76+
<activity
77+
android:name=".activities.DecompressActivity"
78+
android:label="@string/decompress">
79+
<intent-filter>
80+
<action android:name="android.intent.action.VIEW" />
81+
<data android:mimeType="application/zip" />
82+
<category android:name="android.intent.category.DEFAULT" />
83+
</intent-filter>
84+
</activity>
85+
7686
<activity
7787
android:name=".activities.SettingsActivity"
7888
android:label="@string/settings"
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.simplemobiletools.filemanager.pro.activities
2+
3+
import android.annotation.SuppressLint
4+
import android.net.Uri
5+
import android.os.Bundle
6+
import com.simplemobiletools.commons.extensions.getFilenameFromPath
7+
import com.simplemobiletools.commons.extensions.getRealPathFromURI
8+
import com.simplemobiletools.commons.extensions.showErrorToast
9+
import com.simplemobiletools.commons.extensions.toast
10+
import com.simplemobiletools.commons.helpers.isOreoPlus
11+
import com.simplemobiletools.filemanager.pro.R
12+
import com.simplemobiletools.filemanager.pro.adapters.ItemsAdapter
13+
import com.simplemobiletools.filemanager.pro.models.ListItem
14+
import kotlinx.android.synthetic.main.activity_decompress.*
15+
import java.io.BufferedInputStream
16+
import java.util.zip.ZipEntry
17+
import java.util.zip.ZipInputStream
18+
19+
class DecompressActivity : SimpleActivity() {
20+
21+
override fun onCreate(savedInstanceState: Bundle?) {
22+
super.onCreate(savedInstanceState)
23+
setContentView(R.layout.activity_decompress)
24+
val uri = intent.data
25+
if (uri == null) {
26+
toast(R.string.unknown_error_occurred)
27+
return
28+
}
29+
30+
getRealPathFromURI(uri)?.apply {
31+
title = getFilenameFromPath()
32+
}
33+
34+
try {
35+
val listItems = getListItems(uri)
36+
ItemsAdapter(this, listItems, null, decompress_list, false, null) {
37+
}.apply {
38+
decompress_list.adapter = this
39+
}
40+
} catch (e: Exception) {
41+
showErrorToast(e)
42+
}
43+
}
44+
45+
@SuppressLint("NewApi")
46+
private fun getListItems(uri: Uri): ArrayList<ListItem> {
47+
val listItems = ArrayList<ListItem>()
48+
val inputStream = contentResolver.openInputStream(uri)
49+
val zipInputStream = ZipInputStream(BufferedInputStream(inputStream))
50+
var zipEntry: ZipEntry?
51+
while (true) {
52+
zipEntry = zipInputStream.nextEntry
53+
54+
if (zipEntry == null) {
55+
break
56+
}
57+
58+
val lastModified = if (isOreoPlus()) zipEntry.lastModifiedTime.toMillis() else 0
59+
val listItem = ListItem(zipEntry.name, zipEntry.name, zipEntry.isDirectory, 0, 0L, lastModified, false)
60+
listItems.add(listItem)
61+
}
62+
return listItems
63+
}
64+
}

app/src/main/kotlin/com/simplemobiletools/filemanager/pro/adapters/ItemsAdapter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ import java.util.zip.ZipFile
4949
import java.util.zip.ZipOutputStream
5050

5151
class ItemsAdapter(activity: SimpleActivity, var listItems: MutableList<ListItem>, val listener: ItemOperationsListener?, recyclerView: MyRecyclerView,
52-
val isPickMultipleIntent: Boolean, fastScroller: FastScroller, itemClick: (Any) -> Unit) :
52+
val isPickMultipleIntent: Boolean, fastScroller: FastScroller?, itemClick: (Any) -> Unit) :
5353
MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) {
5454

5555
private val TYPE_FILE_DIR = 1

app/src/main/kotlin/com/simplemobiletools/filemanager/pro/models/ListItem.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,4 @@ package com.simplemobiletools.filemanager.pro.models
33
import com.simplemobiletools.commons.models.FileDirItem
44

55
data class ListItem(val mPath: String, val mName: String = "", var mIsDirectory: Boolean = false, var mChildren: Int = 0, var mSize: Long = 0L, var mModified: Long = 0L,
6-
var isSectionTitle: Boolean)
7-
: FileDirItem(mPath, mName, mIsDirectory, mChildren, mSize, mModified)
6+
var isSectionTitle: Boolean) : FileDirItem(mPath, mName, mIsDirectory, mChildren, mSize, mModified)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
android:id="@+id/decompress_wrapper"
5+
android:layout_width="match_parent"
6+
android:layout_height="wrap_content">
7+
8+
<com.simplemobiletools.commons.views.MyRecyclerView
9+
android:id="@+id/decompress_list"
10+
android:layout_width="match_parent"
11+
android:layout_height="match_parent"
12+
android:clipToPadding="false"
13+
android:scrollbars="none"
14+
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />
15+
16+
</RelativeLayout>

0 commit comments

Comments
 (0)