@@ -4,6 +4,7 @@ import 'package:corecoder_develop/screens/settings/plugins_browser.dart';
4
4
import 'package:corecoder_develop/screens/settings/settings.dart' ;
5
5
import 'package:corecoder_develop/util/cc_project_structure.dart' ;
6
6
import 'package:corecoder_develop/util/desktop_tabbar.dart' ;
7
+ import 'package:corecoder_develop/util/theme_manager.dart' ;
7
8
import 'package:flutter/material.dart' ;
8
9
9
10
import '../editor/editor.dart' ;
@@ -138,10 +139,15 @@ class _HomePageState extends State<HomePage> {
138
139
Icons .insert_drive_file,
139
140
size: 48 ,
140
141
),
141
- title: Text (p.name),
142
+ title: Text (
143
+ p.name,
144
+ style: const TextStyle (
145
+ fontWeight: FontWeight .bold
146
+ ),
147
+ ),
142
148
subtitle: Text (
143
149
(p.type == HistoryItemType .solution ? p.solution! .desc : "" ) +
144
- " Last Modified: " +
150
+ "Last Modified: " +
145
151
p.dateModified.toString ()),
146
152
trailing: PopupMenuButton <String >(
147
153
onSelected: (String result) {
@@ -271,105 +277,107 @@ class _HomePageState extends State<HomePage> {
271
277
builder: (BuildContext context) {
272
278
List <Widget > options = List .empty (growable: true );
273
279
for (Module m in ModulesManager .modules) {
274
- options.add (Text (
275
- m.name,
276
- style: const TextStyle (fontSize: 21 ),
277
- ));
280
+ options.add (
281
+ Padding (
282
+ padding: const EdgeInsets .fromLTRB (5 , 5 , 5 , 5 ),
283
+ child: Text (m.name,
284
+ style: const TextStyle (fontSize: 18 , fontWeight: FontWeight .bold))
285
+ )
286
+ );
278
287
for (Template t in m.templates) {
279
288
/// -------------------------------------------------
280
289
/// Project Options
281
290
/// -------------------------------------------------
282
- options.add (ListTile (
283
- leading: t.icon,
284
- trailing: Text (t.version),
285
- title: Text (t.title),
286
- subtitle: Text (t.desc),
287
- onTap: () async {
288
- /// The options changed later after the window closed
289
- Map <String , dynamic > values = {};
290
- await showDialog <int >(
291
- context: context,
292
- builder: (BuildContext context) {
293
- List <Widget > controls = List .empty (growable: true );
294
-
295
- /// Add Options
296
- for (var argName in t.options.keys) {
297
- controls.add (Text (
298
- argName,
299
- textAlign: TextAlign .end,
300
- ));
301
- if (t.options[argName] == "String" ) {
302
- controls.add (TextField (
303
- maxLines: 1 ,
304
- autofocus: true ,
305
- onChanged: (change) {
306
- values[argName] = change;
307
- }));
308
- values[argName] = "" ;
309
- }
310
- }
311
-
312
- /// Add Buttons
313
- var row = Row (
314
- children: [
315
- TextButton (
316
- child: const Text ("Cancel" ),
317
- onPressed: () {
318
- Navigator .pop (context, 1 );
319
- },
320
- ),
321
- TextButton (
322
- child: const Text ("Create" ),
323
- onPressed: () async {
324
- /// Go Ahead and create project asynchronously
325
- var slnPath = await t.onCreated (
326
- values); //TODO: This is prone to error (not checking if the file existed first)
327
- if (slnPath == null ) return ;
328
-
329
- /// Add it to recent projects
330
- CCSolution ? project =
331
- await RecentProjectsManager .instance
332
- .addSolution (slnPath);
333
- if (project != null ) {
334
- await RecentProjectsManager .instance
335
- .commit (_pref);
336
- Navigator .pop (context, 3 );
337
- refreshRecentProjects ();
338
- loadSolution (project, context);
339
- }
340
- },
341
- )
342
- ],
343
- );
344
- controls.add (row);
345
- // Return the dialog to be opened
346
- return SimpleDialog (
347
- title: Text ('Create ${t .title }' ),
348
- children: < Widget > [
349
- Padding (
350
- padding:
351
- const EdgeInsets .symmetric (horizontal: 8.0 ),
352
- child: Column (children: controls))
353
- ],
354
- );
355
- },
356
- barrierDismissible: true );
357
- },
358
- ));
291
+ options.add (
292
+ Card (
293
+ child: ListTile (
294
+ leading: t.icon,
295
+ title: Text (t.title),
296
+ subtitle: Text (t.desc),
297
+ tileColor: ThemeManager .getThemeData ().backgroundColor,
298
+ onTap: () async {
299
+ /// The options changed later after the window closed
300
+ Map <String , dynamic > values = {};
301
+ await showDialog <int >(
302
+ context: context,
303
+ builder: (BuildContext context) {
304
+ List <Widget > controls = List .empty (growable: true );
305
+
306
+ /// Add Options
307
+ for (var argName in t.options.keys) {
308
+ controls.add (Text (
309
+ argName,
310
+ textAlign: TextAlign .end,
311
+ ));
312
+ if (t.options[argName] == "String" ) {
313
+ controls.add (TextField (
314
+ maxLines: 1 ,
315
+ autofocus: true ,
316
+ onChanged: (change) {
317
+ values[argName] = change;
318
+ }));
319
+ values[argName] = "" ;
320
+ }
321
+ }
322
+
323
+ /// Add Buttons
324
+ var row = Row (
325
+ children: [
326
+ TextButton (
327
+ child: const Text ("Cancel" ),
328
+ onPressed: () {
329
+ Navigator .pop (context, 1 );
330
+ },
331
+ ),
332
+ TextButton (
333
+ child: const Text ("Create" ),
334
+ onPressed: () async {
335
+ /// Go Ahead and create project asynchronously
336
+ var slnPath = await t.onCreated (
337
+ values); //TODO: This is prone to error (not checking if the file existed first)
338
+ if (slnPath == null ) return ;
339
+
340
+ /// Add it to recent projects
341
+ CCSolution ? project =
342
+ await RecentProjectsManager .instance
343
+ .addSolution (slnPath);
344
+ if (project != null ) {
345
+ await RecentProjectsManager .instance
346
+ .commit (_pref);
347
+ Navigator .pop (context, 3 );
348
+ refreshRecentProjects ();
349
+ loadSolution (project, context);
350
+ }
351
+ },
352
+ )
353
+ ],
354
+ );
355
+ controls.add (row);
356
+ // Return the dialog to be opened
357
+ return SimpleDialog (
358
+ title: Text ('Create ${t .title }' ),
359
+ children: < Widget > [
360
+ Padding (
361
+ padding:
362
+ const EdgeInsets .symmetric (horizontal: 8.0 ),
363
+ child: Column (children: controls))
364
+ ],
365
+ );
366
+ },
367
+ barrierDismissible: true );
368
+ },
369
+ )
370
+ )
371
+ );
359
372
}
360
373
}
361
374
return SimpleDialog (
362
- title: const Text ('Create new project' ),
375
+ title: const Center (child : Text ('Create new project' ) ),
363
376
children: options,
377
+ contentPadding: const EdgeInsets .fromLTRB (5 , 5 , 5 , 5 ),
378
+ backgroundColor: ThemeManager .getThemeData ().canvasColor,
364
379
);
365
380
})) {
366
- case 0 :
367
- // Let's go.
368
- // ...
369
- break ;
370
- case 1 :
371
- // ...
372
- break ;
373
381
case null :
374
382
// dialog dismissed
375
383
break ;
0 commit comments