B4A=true Group=Default Group ModulesStructureVersion=1 Type=Activity Version=7.01 @EndOfDesignText@ #Region Activity Attributes #FullScreen: False #IncludeTitle: False #End Region Sub Process_Globals 'These global variables will be declared once when the application starts. 'These variables can be accessed from all modules. End Sub Sub Globals 'These global variables will be redeclared each time the activity is created. 'These variables can only be accessed from this module. Dim OutputFolder As String Private ImgListView1 As CustomListViewEx Dim ListItemHeight As Int = 90dip Dim ImgSize As Int = 86dip Dim ThumbPath As String Dim PDFIcon As Bitmap = LoadBitmap(File.DirAssets,"pdficon.png") Private PanelFiles As Panel Dim BtnBackDra(2) As BitmapDrawable Dim BtnRenameDra(2) As BitmapDrawable Dim BtnOpenDra(2) As BitmapDrawable Dim BtnShareDra(2) As BitmapDrawable Dim BtnDeleteDra(2) As BitmapDrawable Dim BtnBackSLD As StateListDrawable Dim BtnRenameSLD As StateListDrawable Dim BtnOpenSLD As StateListDrawable Dim BtnShareSLD As StateListDrawable Dim BtnDeleteSLD As StateListDrawable Private ButtonBack As Button Private ButtonRename As Button Private ButtonOpen As Button Private ButtonShare As Button Private ButtonDelete As Button Dim RadioBoxImage(2) As Bitmap Private BannerAd As AdView End Sub Sub Activity_Create(FirstTime As Boolean) 'Do not forget to load the layout file created with the visual designer. For example: Activity.LoadLayout("filemanager") If File.ExternalWritable = True Then OutputFolder = File.Combine(File.DirRootExternal, "Image to PDF Converter") Else OutputFolder = File.Combine(File.DirInternal, "Image to PDF Converter") End If ThumbPath = File.Combine(File.DirDefaultExternal,"PDFThumb") '------------file manager PanelFiles.BringToFront BtnBackDra(0).Initialize(LoadBitmap(File.DirAssets,"goback1.png")) BtnBackDra(1).Initialize(LoadBitmap(File.DirAssets,"goback2.png")) BtnRenameDra(0).Initialize(LoadBitmap(File.DirAssets,"rename1.png")) BtnRenameDra(1).Initialize(LoadBitmap(File.DirAssets,"rename2.png")) BtnOpenDra(0).Initialize(LoadBitmap(File.DirAssets,"open1.png")) BtnOpenDra(1).Initialize(LoadBitmap(File.DirAssets,"open2.png")) BtnShareDra(0).Initialize(LoadBitmap(File.DirAssets,"share1.png")) BtnShareDra(1).Initialize(LoadBitmap(File.DirAssets,"share2.png")) BtnDeleteDra(0).Initialize(LoadBitmap(File.DirAssets,"delete1.png")) BtnDeleteDra(1).Initialize(LoadBitmap(File.DirAssets,"delete2.png")) BtnBackSLD.Initialize BtnRenameSLD.Initialize BtnOpenSLD.Initialize BtnShareSLD.Initialize BtnDeleteSLD.Initialize BtnBackSLD.AddState(BtnBackSLD.State_Pressed,BtnBackDra(1)) BtnBackSLD.AddCatchAllState(BtnBackDra(0)) ButtonBack.Background = BtnBackSLD BtnRenameSLD.AddState(BtnRenameSLD.State_Pressed,BtnRenameDra(1)) BtnRenameSLD.AddCatchAllState(BtnRenameDra(0)) ButtonRename.Background = BtnRenameSLD BtnOpenSLD.AddState(BtnOpenSLD.State_Pressed,BtnOpenDra(1)) BtnOpenSLD.AddCatchAllState(BtnOpenDra(0)) ButtonOpen.Background = BtnOpenSLD BtnShareSLD.AddState(BtnShareSLD.State_Pressed,BtnShareDra(1)) BtnShareSLD.AddCatchAllState(BtnShareDra(0)) ButtonShare.Background = BtnShareSLD BtnDeleteSLD.AddState(BtnDeleteSLD.State_Pressed,BtnDeleteDra(1)) BtnDeleteSLD.AddCatchAllState(BtnDeleteDra(0)) ButtonDelete.Background = BtnDeleteSLD RadioBoxImage(0).Initialize(File.DirAssets, "radiobox1.png") RadioBoxImage(1).Initialize(File.DirAssets, "radiobox2.png") LoadFileList '} End Sub Sub Activity_Resume If BannerAd.IsInitialized=True Then BannerAd.Resume End If End Sub Sub Activity_Pause (UserClosed As Boolean) If BannerAd.IsInitialized=True Then BannerAd.Pause End If End Sub Sub LoadFileList ImgListView1.Clear Dim i As Int Dim FileList As List CheckOutputDir FileList = File.ListFiles(OutputFolder) FileList.SortCaseInsensitive(True) If FileList.Size = 0 Then ToastMessageShow("There is no pdf file",False) Return End If 'FileList.Sort(True) For i = 0 To FileList.Size-1 Dim StrName As String = FileList.Get(i) If StrName.ToLowerCase.EndsWith(".pdf") Then ImgListView1.Add(CreateListItem(StrName), ListItemHeight, "") End If Next SelectFirstItem End Sub Sub CheckOutputDir If File.ExternalWritable = True Then If File.Exists(File.DirRootExternal, "Image to PDF Converter")=False Then File.MakeDir(File.DirRootExternal, "Image to PDF Converter") End If Else If File.Exists(File.DirInternal, "Image to PDF Converter")=False Then File.MakeDir(File.DirInternal, "Image to PDF Converter") End If End If If File.Exists(File.DirDefaultExternal,"PDFThumb")=False Then File.MakeDir(File.DirDefaultExternal,"PDFThumb") End If 'Log(OutputFolder) End Sub '-------------ButtonBack Sub ButtonBack_Click Activity.Finish End Sub '-------------ButtonDelete Sub ButtonDelete_Click Dim Filename As String Filename = GetSelectedFilename If Filename = "" Then Return Dim choice As Int choice=Msgbox2("Do you want to delete file: " & Filename, "Delete File","Yes","","No",Null) Select Case choice Case DialogResponse.POSITIVE 'Yes Dim FileLastModified As Long = File.LastModified(OutputFolder,Filename) Dim ThumbFilename As String = FileLastModified & ".jpg" If File.Exists(ThumbPath, ThumbFilename) Then File.Delete(ThumbPath, ThumbFilename) End If '} File.Delete(OutputFolder, Filename) LoadFileList Case DialogResponse.NEGATIVE 'No Return End Select '} End Sub '-------------ButtonShare Sub ButtonShare_Click Dim Filename As String Filename = GetSelectedFilename If Filename = "" Then Return If File.Exists(OutputFolder, Filename) Then SharePDF(OutputFolder, Filename) Else ToastMessageShow("File not found",False) End If End Sub '-------------ButtonRename Sub ButtonRename_Click Dim Filename As String Filename = GetSelectedFilename If Filename = "" Then Return Filename = Filename.SubString2(0,Filename.Length-4) ' Dim Id As InputDialog ' Dim ret As Int ' 'Id.PasswordMode = True ' 'Id.InputType = Id.INPUT_TYPE_DECIMAL_NUMBERS ' 'Id.InputType = Id.INPUT_TYPE_NUMBERS ' 'Id.InputType = Id.INPUT_TYPE_PHONE ' Id.Input = "" ' Id.Input = Filename ' ret = DialogResponse.CANCEL ' ret = Id.Show("New filename:", "Rename File", "OK", "Cancel", "",Null) 'ToastMessageShow(ret & " : " & Id.Input, False) Dim InputStr As String = InputDialog1("Rename", "Please input the new file name", Filename, "OK", "Cancel") If InputStr <> "" Then Dim NewFilename As String NewFilename = InputStr.Trim If NewFilename.Length = 0 Then Return If NewFilename = Filename Then Return If NewFilename.ToLowerCase.EndsWith(".pdf") = False Then NewFilename = NewFilename & ".pdf" End If If File.Exists(OutputFolder,NewFilename) Then Msgbox(NewFilename & " already exits","Error") Return End If Dim Suc As Boolean Suc = RenameFile(OutputFolder, Filename & ".pdf", OutputFolder,NewFilename) If Suc = True Then ToastMessageShow("File successfully renamed", False) Else ToastMessageShow("Rename failed", False) Return End If Dim i As Int Dim pnl As Panel Dim cBtn As CheckBox Dim lblFilename As Label For i = 0 To ImgListView1.GetSize - 1 pnl = ImgListView1.GetPanel(i) cBtn = pnl.GetView(0) lblFilename = pnl.GetView(2) If cBtn.Checked = True Then lblFilename.Text = NewFilename Return End If Next '} End If End Sub '-------------ButtonOpen Sub ButtonOpen_Click Dim Filename As String Filename = GetSelectedFilename If Filename = "" Then Return If File.Exists(OutputFolder, Filename) Then OpenPDF(OutputFolder, Filename) Else ToastMessageShow("File not found",False) End If End Sub Sub ImgListView1_ItemClick (Index As Int, Value As Object) Dim i As Int Dim pnl As Panel Dim cBtn As CheckBox Dim Img As ImageView For i = 0 To ImgListView1.GetSize - 1 pnl = ImgListView1.GetPanel(i) cBtn = pnl.GetView(0) Img = pnl.GetView(1) If i = Index Then cBtn.Checked = True Img.Bitmap = RadioBoxImage(1) Else cBtn.Checked = False Img.Bitmap = RadioBoxImage(0) End If Next 'Log(GetSelectedFilename) End Sub Sub SelectFirstItem If ImgListView1.GetSize = 0 Then Return Dim pnl As Panel Dim cBtn As CheckBox Dim Img As ImageView pnl = ImgListView1.GetPanel(0) cBtn = pnl.GetView(0) Img = pnl.GetView(1) cBtn.Checked = True Img.Bitmap = RadioBoxImage(1) End Sub Sub OpenPDF(Folder As String, FileName As String) Try ' Dim intent As Intent ' intent.Initialize(intent.ACTION_VIEW, "file://" & File.Combine(Folder, FileName)) ' intent.SetType("application/pdf") ' 'intent.WrapAsIntentChooser("Choose Excel Viewer") ' StartActivity(intent) '------------- File.Copy(Folder, FileName, Starter.Provider.SharedFolder, FileName) Dim in As Intent in.Initialize(in.ACTION_VIEW, "") Starter.Provider.SetFileUriAsIntentData(in, FileName) in.SetType("application/pdf") StartActivity(in) Catch MsgboxAsync("There is no APP on your device can read PDF file.","Error") End Try End Sub Sub SharePDF(Folder As String, FileName As String) Try ' Dim share As MESShareLibrary ' share.sharebinary("file://" & File.Combine(Folder, FileName), "application/pdf", "Share with...","") 'Dim FileToSend As String = File.Combine(Folder, FileName) File.Copy(Folder, FileName, Starter.Provider.SharedFolder, FileName) Dim in As Intent in.Initialize(in.ACTION_SEND, "") in.SetType("application/pdf") in.PutExtra("android.intent.extra.STREAM", Starter.Provider.GetFileUri(FileName)) in.Flags = 1 'FLAG_GRANT_READ_URI_PERMISSION StartActivity(in) Catch MsgboxAsync("There is no APP on your device can share file.","Error") End Try End Sub Sub GetSelectedFilename() As String Dim i As Int Dim pnl As Panel Dim cBtn As CheckBox Dim lblFilename As Label For i = 0 To ImgListView1.GetSize - 1 pnl = ImgListView1.GetPanel(i) cBtn = pnl.GetView(0) lblFilename = pnl.GetView(2) If cBtn.Checked = True Then Return lblFilename.Text End If Next Return "" End Sub Sub RenameFile(SrcDir As String, SrcFilename As String, DestDir As String, DestFilename As String) As Boolean Dim R As Reflector, NewObj As Object, New As String , Old As String If SrcFilename=Null Or DestFilename=Null Or SrcDir=Null Or DestDir=Null Then Return False If File.Exists(SrcDir,SrcFilename) And Not(File.Exists(DestDir,DestFilename)) Then New=File.Combine(DestDir,DestFilename) Old=File.Combine(SrcDir,SrcFilename) If Not(New = Old) Then NewObj=R.CreateObject2("java.io.File",Array As Object(New),Array As String("java.lang.String")) R.Target=R.CreateObject2("java.io.File",Array As Object(Old),Array As String("java.lang.String")) Return R.RunMethod4("renameTo",Array As Object(NewObj),Array As String("java.io.File")) End If End If Return False End Sub Sub CreateListItem(FileName As String) As Panel Dim p As Panel p.Initialize("") Dim cBox As CheckBox cBox.Initialize("") cBox.Visible =False Dim cBoxImg As ImageView cBoxImg.Initialize("") cBoxImg.Gravity = Gravity.FILL cBoxImg.Bitmap = RadioBoxImage(0) '} Dim labelFileName As Label labelFileName.Initialize("") labelFileName.Gravity = Bit.Or(Gravity.BOTTOM, Gravity.LEFT) 'labelFileName.Text =ImgSize & " " & ImgSize & " " & (ImgSize * bmpTemp.Height/bmpTemp.Width) & IndexText labelFileName.Text = FileName labelFileName.TextSize = 15 'labelFileName.Typeface = Typeface.DEFAULT_BOLD labelFileName.TextColor = Colors.Black '0xFF333333 Dim FileTime As String Dim FileLastModified As Long = File.LastModified(OutputFolder,FileName) FileTime = DateTime.Date(FileLastModified) & " " & DateTime.GetHour(FileLastModified) & ":" & DateTime.GetMinute( FileLastModified) & ":" & DateTime.GetSecond( FileLastModified) Dim img As ImageView img.Initialize("") img.Gravity=Gravity.FILL Dim ThumbFilename As String = FileLastModified & ".jpg" If File.Exists(ThumbPath, ThumbFilename) Then img.Bitmap = LoadBitmap(ThumbPath, ThumbFilename) Else img.Bitmap = PDFIcon End If '} '文件尺寸 Dim FileSize As Long Dim SizeString As String FileSize = File.Size(OutputFolder,FileName) If FileSize < 1048576 Then SizeString = NumberFormat((FileSize/1024),1,2) & " KB" Else SizeString = NumberFormat((FileSize/1048576),1,2) & " MB" End If Dim labelDateTaken As Label labelDateTaken.Initialize("") labelDateTaken.Gravity = Bit.Or(Gravity.TOP, Gravity.LEFT) labelDateTaken.TextColor = 0xFF6d6d6d labelDateTaken.TextSize = 13 labelDateTaken.Text = FileTime & CRLF & SizeString Dim labelLine As Label labelLine.Initialize("") labelLine.Color = 0xFFd9dbdc Dim lblWidth As Int Dim lblHeight As Int lblWidth = 100%x '- ImgSize - BtnSize - 20dip lblHeight = 48dip 'p.AddView(TBtn, 100%x - 56dip, (ListItemHeight - 48dip)/2, 48dip, 48dip) p.AddView(cBox,0, 0, 10, 10) '已经不可见 p.AddView(cBoxImg, 100%x - 56dip, (ListItemHeight - 48dip)/2, 48dip, 48dip) p.AddView(labelFileName, 94dip, 2dip, lblWidth, ImgSize/2) p.AddView(labelDateTaken, 94dip, ImgSize/2+2dip, lblWidth, ImgSize/2) p.AddView(img,2dip,2dip,ImgSize,ImgSize) p.AddView(labelLine, labelFileName.Left, ListItemHeight - 1dip,100%x, 1dip) labelLine.BringToFront Return p End Sub Sub InputDialog1(Title As String, Description As String, initText As String, ButtonPositive As String, ButtonNegative As String) As String Dim DialogPanel As Panel DialogPanel.Initialize("DialogPanel") DialogPanel.Color = Colors.Transparent Dim DescriptionLabel As Label DescriptionLabel.Initialize("TitleLabel") DescriptionLabel.Text = Description DescriptionLabel.Typeface = Typeface.DEFAULT 'Typeface.CreateNew(Typeface.DEFAULT, Typeface.STYLE_NORMAL) DescriptionLabel.TextColor = Colors.DarkGray DescriptionLabel.TextSize = 14 Dim TopValue As Int = 20dip '20dip Abstand DialogPanel.AddView(DescriptionLabel, 25dip, TopValue, 84%x - 50dip, 50dip) DescriptionLabel.Height = CalcTextHeight(DescriptionLabel) TopValue = TopValue + DescriptionLabel.Height + 10dip Dim T As EditText T.Initialize("") T.SingleLine = True T.Text = initText T.RequestFocus DialogPanel.AddView(t, 25dip, TopValue, 84%x-48dip, 50dip) ' TopValue = TopValue + T.Height + 16dip Dim Dialog As CustomDialog Dialog.AddView(DialogPanel, 0, 0, 100%x, TopValue) Dialog.Show(Title,ButtonPositive, "", ButtonNegative, Null) 'Return Dialog.Response If Dialog.Response = DialogResponse.POSITIVE Then Return T.Text Else Return "" End If End Sub Sub CalcTextHeight(CalcLabel As Label) As Int Dim StringUtils As StringUtils Return StringUtils.MeasureMultilineTextHeight(CalcLabel, CalcLabel.Text) End Sub