It is given number of block addresses an inode can store = 32
Now each of these may point to data blocks directly or indirectly to the actual data blocks as mentioned in the question also..
If we want maximum file size , we can have all of 32 pointers as indirect ones instead of a few direct and a few indirect..
In single indirect scheme :
Disk block address given in inode points to another index node .One of the entry of index node , in turn points to the actual data block..The number of entries in each index node is decided by the block size and block address size(which is normally a few bits)
Number of entries possible in a single index node = Disk block size / Disk block address size
= 4 KB / 32 bits
= 4 KB / 4 B
= 210
Now total number of pointers possible = Number of pointers in inode * Number of pointers per node which is pointed by main inode
= 32 * 210
= 215
Each of these pointers will point to actual data block
Hence maximum file size = Maximum number of pointers to data block * Data block size
= 215 * 212
= 128 MB
Hence maximum file size = 128 MB