NoteBrowser: Add a button to rename notes

Fixes #23
This commit is contained in:
Vishesh Handa
2020-01-27 23:09:11 +01:00
parent 35f8559c74
commit f8e7773f16
4 changed files with 70 additions and 0 deletions

View File

@ -11,9 +11,12 @@ import 'package:gitjournal/state_container.dart';
import 'package:gitjournal/utils.dart';
import 'package:gitjournal/settings.dart';
import 'package:gitjournal/widgets/journal_editor_header.dart';
import 'package:gitjournal/widgets/rename_dialog.dart';
import 'journal_editor.dart';
enum NoteBrowserDropDownChoices { Rename }
class JournalBrowsingScreen extends StatefulWidget {
final List<Note> notes;
final int noteIndex;
@ -31,9 +34,11 @@ class JournalBrowsingScreen extends StatefulWidget {
class JournalBrowsingScreenState extends State<JournalBrowsingScreen> {
PageController pageController;
int currentPage;
JournalBrowsingScreenState({@required int noteIndex}) {
pageController = PageController(initialPage: noteIndex);
currentPage = noteIndex;
}
@override
@ -48,6 +53,11 @@ class JournalBrowsingScreenState extends State<JournalBrowsingScreen> {
note: widget.notes[pos],
);
},
onPageChanged: (int pageNum) {
setState(() {
currentPage = pageNum;
});
},
);
return Scaffold(
@ -66,6 +76,35 @@ class JournalBrowsingScreenState extends State<JournalBrowsingScreen> {
Share.share(note.body);
},
),
PopupMenuButton<NoteBrowserDropDownChoices>(
onSelected: (NoteBrowserDropDownChoices choice) async {
var note = widget.notes[currentPage];
switch (choice) {
case NoteBrowserDropDownChoices.Rename:
var fileName = await showDialog(
context: context,
builder: (_) => RenameDialog(
oldName: note.fileName,
inputDecoration: 'File Name',
dialogTitle: "Rename File",
),
);
if (fileName is String) {
final container = StateContainer.of(context);
container.renameNote(note, fileName);
}
break;
}
},
itemBuilder: (BuildContext context) =>
<PopupMenuEntry<NoteBrowserDropDownChoices>>[
const PopupMenuItem<NoteBrowserDropDownChoices>(
value: NoteBrowserDropDownChoices.Rename,
child: Text('Rename File'),
),
],
),
],
),
body: pageView,