Skip to content

Commit

Permalink
Merge pull request #78 from kishikawakatsumi/styling
Browse files Browse the repository at this point in the history
Styling
  • Loading branch information
kishikawakatsumi authored Jul 26, 2024
2 parents fc447da + 5202c37 commit 870ac07
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -88,20 +88,20 @@ class FilesViewController: UIViewController, UITableViewDataSource, UITableViewD
configuration.secondaryTextProperties.font = UIFont.monospacedDigitSystemFont(ofSize: fontSize, weight: .regular)

if file .isDirectory {
cell.accessoryType = .disclosureIndicator

configuration.image = UIImage(systemName: "folder")
configuration.text = file.name
configuration.secondaryText = dateFormatter.string(from: file.lastWriteTime)
} else {
cell.accessoryType = .none

cell.accessoryType = .disclosureIndicator
} else {
configuration.image = UIImage(systemName: "doc")
configuration.text = file.name

let date = dateFormatter.string(from: file.lastWriteTime)
let size = ByteCountFormatter.string(fromByteCount: Int64(file.size), countStyle: .file)
configuration.secondaryText = "\(date) - \(size)"

cell.accessoryType = .none
}

cell.contentConfiguration = configuration
Expand Down
68 changes: 46 additions & 22 deletions Examples/FileBrowser/FileBrowser (iOS)/ServersViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import SMBClient

class ServersViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
private let tableView = UITableView(frame: .zero, style: .insetGrouped)
private var tree = Tree()
private var sessions = [String: SMBClient]()

override func viewDidLoad() {
super.viewDidLoad()
Expand Down Expand Up @@ -58,14 +58,7 @@ class ServersViewController: UIViewController, UITableViewDataSource, UITableVie
guard let self else { return }

ServerManager.shared.addServer(id: id, displayName: displayName, server: server, port: Int(port))

let store = CredentialStore.shared
store.save(server: server, securityDomain: id.rawValue, username: username, password: password)

tableView.reloadData()

let viewController = SharesViewController(client: client)
navigationController?.pushViewController(viewController, animated: true)
loginSucceeded(server: server, securityDomain: id.rawValue, username: username, password: password, client: client)
} onCancel: { [weak self] in
guard let self else { return }
if let indexPathForSelectedRow = tableView.indexPathForSelectedRow {
Expand Down Expand Up @@ -128,11 +121,23 @@ class ServersViewController: UIViewController, UITableViewDataSource, UITableVie
let service = services[indexPath.row]

cell.textLabel?.text = service.name

if let _ = sessions[service.id.rawValue] {
cell.accessoryType = .disclosureIndicator
} else {
cell.accessoryType = .none
}
case 1:
let servers = ServerManager.shared.servers
let server = servers[indexPath.row]

cell.textLabel?.text = server.displayName

if let _ = sessions[server.id.rawValue] {
cell.accessoryType = .disclosureIndicator
} else {
cell.accessoryType = .none
}
default:
break
}
Expand All @@ -147,6 +152,12 @@ class ServersViewController: UIViewController, UITableViewDataSource, UITableVie
let services = ServiceDiscovery.shared.services
let service = services[indexPath.row]

if let client = sessions[service.id.rawValue] {
let viewController = SharesViewController(client: client)
navigationController?.pushViewController(viewController, animated: true)
return
}

let username: String
let password: String
let store = CredentialStore.shared
Expand All @@ -162,11 +173,7 @@ class ServersViewController: UIViewController, UITableViewDataSource, UITableVie
rootView: ConnectServiceView(server: service.name, username: username, password: password) { [weak self] (username, password, client) in
guard let self else { return }

let store = CredentialStore.shared
store.save(server: service.name, securityDomain: service.id.rawValue, username: username, password: password)

let viewController = SharesViewController(client: client)
navigationController?.pushViewController(viewController, animated: true)
loginSucceeded(server: service.name, securityDomain: service.id.rawValue, username: username, password: password, client: client)
} onCancel: {
if let indexPathForSelectedRow = tableView.indexPathForSelectedRow {
tableView.deselectRow(at: indexPathForSelectedRow, animated: true)
Expand All @@ -180,6 +187,12 @@ class ServersViewController: UIViewController, UITableViewDataSource, UITableVie
let servers = ServerManager.shared.servers
let server = servers[indexPath.row]

if let client = sessions[server.id.rawValue] {
let viewController = SharesViewController(client: client)
navigationController?.pushViewController(viewController, animated: true)
return
}

let username: String
let password: String
let store = CredentialStore.shared
Expand Down Expand Up @@ -209,14 +222,7 @@ class ServersViewController: UIViewController, UITableViewDataSource, UITableVie
guard let self else { return }

ServerManager.shared.addServer(id: server.id, displayName: displayName, server: serverName, port: Int(port))

let store = CredentialStore.shared
store.save(server: serverName, securityDomain: server.id.rawValue, username: username, password: password)

tableView.reloadData()

let viewController = SharesViewController(client: client)
navigationController?.pushViewController(viewController, animated: true)
loginSucceeded(server: serverName, securityDomain: server.id.rawValue, username: username, password: password, client: client)
} onCancel: {
if let indexPathForSelectedRow = tableView.indexPathForSelectedRow {
tableView.deselectRow(at: indexPathForSelectedRow, animated: true)
Expand Down Expand Up @@ -245,6 +251,24 @@ class ServersViewController: UIViewController, UITableViewDataSource, UITableVie
tableView.deleteRows(at: [indexPath], with: .automatic)
}
}

private func loginSucceeded(
server: String,
securityDomain: String,
username: String,
password: String,
client: SMBClient
) {
let store = CredentialStore.shared
store.save(server: server, securityDomain: securityDomain, username: username, password: password)

sessions[securityDomain] = client

tableView.reloadData()

let viewController = SharesViewController(client: client)
navigationController?.pushViewController(viewController, animated: true)
}
}

extension ServersViewController: UIAdaptivePresentationControllerDelegate {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,9 @@ class SharesViewController: UIViewController, UITableViewDataSource, UITableView
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)

cell.accessoryType = .disclosureIndicator
cell.imageView?.image = UIImage(systemName: "externaldrive.connected.to.line.below")
cell.textLabel?.text = shares[indexPath.row].name
cell.accessoryType = .disclosureIndicator

return cell
}
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[![Test](https://github.com/kishikawakatsumi/SMBClient/actions/workflows/test.yml/badge.svg)](https://github.com/kishikawakatsumi/SMBClient/actions/workflows/test.yml)

Swift SMB client library and iOS/macOS file browser applications.
Swift SMB client library and iOS/macOS file browser applications. This library provides a high-level interface to the SMB protocol and allows you to access files on remote SMB servers. Written in Swift, no dependencies on external libraries.

## Usage

Expand Down

0 comments on commit 870ac07

Please sign in to comment.