This commit is contained in:
Martin Rotter 2025-02-28 11:37:50 +01:00
parent f0660c9a5f
commit 4ea839b7d4
25 changed files with 328 additions and 246 deletions

View file

@ -1759,12 +1759,12 @@ QtWebEngine cache folder -&gt; &quot;%7&quot;</source>
<translation>Backup was created successfully.</translation> <translation>Backup was created successfully.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formbackupdatabasesettings.cpp" line="92"/> <location filename="../src/librssguard/gui/dialogs/formbackupdatabasesettings.cpp" line="91"/>
<source>Backup name cannot be empty.</source> <source>Backup name cannot be empty.</source>
<translation>Backup name cannot be empty.</translation> <translation>Backup name cannot be empty.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formbackupdatabasesettings.cpp" line="95"/> <location filename="../src/librssguard/gui/dialogs/formbackupdatabasesettings.cpp" line="94"/>
<source>Backup name looks okay.</source> <source>Backup name looks okay.</source>
<translation>Backup name looks okay.</translation> <translation>Backup name looks okay.</translation>
</message> </message>
@ -1784,7 +1784,7 @@ QtWebEngine cache folder -&gt; &quot;%7&quot;</source>
<translation>Select destination directory</translation> <translation>Select destination directory</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formbackupdatabasesettings.cpp" line="86"/> <location filename="../src/librssguard/gui/dialogs/formbackupdatabasesettings.cpp" line="85"/>
<source>Good destination directory is specified.</source> <source>Good destination directory is specified.</source>
<translation>Good destination directory is specified.</translation> <translation>Good destination directory is specified.</translation>
</message> </message>
@ -2378,27 +2378,27 @@ QtWebEngine cache folder -&gt; &quot;%7&quot;</source>
<context> <context>
<name>FormMain</name> <name>FormMain</name>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="417"/> <location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="416"/>
<source>No possible actions</source> <source>No possible actions</source>
<translation>No possible actions</translation> <translation>No possible actions</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="376"/> <location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="375"/>
<source>No recycle bin</source> <source>No recycle bin</source>
<translation>No recycle bin</translation> <translation>No recycle bin</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="64"/> <location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="63"/>
<source>Main menu</source> <source>Main menu</source>
<translation type="unfinished">Main menu</translation> <translation type="unfinished">Main menu</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="77"/> <location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="76"/>
<source>Open main menu</source> <source>Open main menu</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="85"/> <location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="84"/>
<source>Open &amp;main menu</source> <source>Open &amp;main menu</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2914,7 +2914,7 @@ QtWebEngine cache folder -&gt; &quot;%7&quot;</source>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formmain.ui" line="745"/> <location filename="../src/librssguard/gui/dialogs/formmain.ui" line="745"/>
<location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="322"/> <location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="321"/>
<location filename="../build/Desktop_Qt_6_8_0_MSVC2022_64bit-Debug/src/librssguard/ui_formmain.h" line="780"/> <location filename="../build/Desktop_Qt_6_8_0_MSVC2022_64bit-Debug/src/librssguard/ui_formmain.h" line="780"/>
<source>Add new category</source> <source>Add new category</source>
<translation>Add new category</translation> <translation>Add new category</translation>
@ -3149,48 +3149,48 @@ QtWebEngine cache folder -&gt; &quot;%7&quot;</source>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formmain.ui" line="740"/> <location filename="../src/librssguard/gui/dialogs/formmain.ui" line="740"/>
<location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="332"/> <location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="331"/>
<location filename="../build/Desktop_Qt_6_8_0_MSVC2022_64bit-Debug/src/librssguard/ui_formmain.h" line="779"/> <location filename="../build/Desktop_Qt_6_8_0_MSVC2022_64bit-Debug/src/librssguard/ui_formmain.h" line="779"/>
<source>Add new feed</source> <source>Add new feed</source>
<translation>Add new feed</translation> <translation>Add new feed</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="383"/> <location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="382"/>
<source>No actions possible</source> <source>No actions possible</source>
<translation>No actions possible</translation> <translation>No actions possible</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="153"/> <location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="152"/>
<source>Cannot cleanup database</source> <source>Cannot cleanup database</source>
<translation type="unfinished">Cannot cleanup database</translation> <translation type="unfinished">Cannot cleanup database</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="154"/> <location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="153"/>
<source>Cannot cleanup database, because another critical action is running.</source> <source>Cannot cleanup database, because another critical action is running.</source>
<translation type="unfinished">Cannot cleanup database, because another critical action is running.</translation> <translation type="unfinished">Cannot cleanup database, because another critical action is running.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="475"/> <location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="474"/>
<source>Play in media player</source> <source>Play in media player</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="476"/> <location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="475"/>
<source>(not supported)</source> <source>(not supported)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="542"/> <location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="541"/>
<source>Close opened modal dialogs first.</source> <source>Close opened modal dialogs first.</source>
<translation type="unfinished">Close opened modal dialogs first.</translation> <translation type="unfinished">Close opened modal dialogs first.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="452"/> <location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="451"/>
<source>Fetching common data</source> <source>Fetching common data</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="541"/> <location filename="../src/librssguard/gui/dialogs/formmain.cpp" line="540"/>
<source>Close dialogs</source> <source>Close dialogs</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3461,38 +3461,38 @@ QtWebEngine cache folder -&gt; &quot;%7&quot;</source>
<context> <context>
<name>FormRestoreDatabaseSettings</name> <name>FormRestoreDatabaseSettings</name>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="14"/>
<location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="15"/> <location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="15"/>
<location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="16"/>
<source>No operation executed yet.</source> <source>No operation executed yet.</source>
<translation>No operation executed yet.</translation> <translation>No operation executed yet.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="54"/> <location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="53"/>
<source>Restoration was initiated. Restart to proceed.</source> <source>Restoration was initiated. Restart to proceed.</source>
<translation>Restoration was initiated. Restart to proceed.</translation> <translation>Restoration was initiated. Restart to proceed.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="55"/> <location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="54"/>
<source>You need to restart application for restoration process to finish.</source> <source>You need to restart application for restoration process to finish.</source>
<translation>You need to restart application for restoration process to finish.</translation> <translation>You need to restart application for restoration process to finish.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="60"/> <location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="59"/>
<source>Database and/or settings were not copied to restoration directory successully.</source> <source>Database and/or settings were not copied to restoration directory successully.</source>
<translation>Database and/or settings were not copied to restoration directory successully.</translation> <translation>Database and/or settings were not copied to restoration directory successully.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="79"/> <location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="78"/>
<source>Select source directory</source> <source>Select source directory</source>
<translation>Select source directory</translation> <translation>Select source directory</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="85"/> <location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="86"/>
<source>Good source directory is specified.</source> <source>Good source directory is specified.</source>
<translation>Good source directory is specified.</translation> <translation>Good source directory is specified.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="13"/> <location filename="../src/librssguard/gui/dialogs/formrestoredatabasesettings.cpp" line="12"/>
<source>Restart</source> <source>Restart</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3584,22 +3584,22 @@ You have to restart manually.</source>
<context> <context>
<name>FormStandardFeedDetails</name> <name>FormStandardFeedDetails</name>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardfeeddetails.cpp" line="32"/> <location filename="../src/librssguard-standard/src/gui/formstandardfeeddetails.cpp" line="31"/>
<source>General</source> <source>General</source>
<translation type="unfinished">General</translation> <translation type="unfinished">General</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardfeeddetails.cpp" line="33"/> <location filename="../src/librssguard-standard/src/gui/formstandardfeeddetails.cpp" line="32"/>
<source>HTTP headers</source> <source>HTTP headers</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardfeeddetails.cpp" line="34"/> <location filename="../src/librssguard-standard/src/gui/formstandardfeeddetails.cpp" line="33"/>
<source>Auth</source> <source>Auth</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardfeeddetails.cpp" line="35"/> <location filename="../src/librssguard-standard/src/gui/formstandardfeeddetails.cpp" line="34"/>
<source>Experimental</source> <source>Experimental</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3607,145 +3607,145 @@ You have to restart manually.</source>
<context> <context>
<name>FormStandardImportExport</name> <name>FormStandardImportExport</name>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="34"/>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="35"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="35"/>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="36"/>
<source>No file is selected.</source> <source>No file is selected.</source>
<translation>No file is selected.</translation> <translation>No file is selected.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="38"/>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="39"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="39"/>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="40"/>
<source>No operation executed yet.</source> <source>No operation executed yet.</source>
<translation>No operation executed yet.</translation> <translation>No operation executed yet.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="70"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="71"/>
<source>Destination file</source> <source>Destination file</source>
<translation>Destination file</translation> <translation>Destination file</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="71"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="72"/>
<source>Source feeds &amp;&amp; categories</source> <source>Source feeds &amp;&amp; categories</source>
<translation>Source feeds &amp;&amp; categories</translation> <translation>Source feeds &amp;&amp; categories</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="73"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="74"/>
<source>Export feeds</source> <source>Export feeds</source>
<translation>Export feeds</translation> <translation>Export feeds</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="81"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="82"/>
<source>Source file</source> <source>Source file</source>
<translation>Source file</translation> <translation>Source file</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="82"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="83"/>
<source>Target feeds &amp;&amp; categories</source> <source>Target feeds &amp;&amp; categories</source>
<translation>Target feeds &amp;&amp; categories</translation> <translation>Target feeds &amp;&amp; categories</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="89"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="90"/>
<source>Import feeds</source> <source>Import feeds</source>
<translation>Import feeds</translation> <translation>Import feeds</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="155"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="156"/>
<source>Command is ok.</source> <source>Command is ok.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="158"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="159"/>
<source>Command is empty.</source> <source>Command is empty.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="178"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="179"/>
<source>Select file for feeds export</source> <source>Select file for feeds export</source>
<translation>Select file for feeds export</translation> <translation>Select file for feeds export</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="203"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="204"/>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="239"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="241"/>
<source>File is selected.</source> <source>File is selected.</source>
<translation>File is selected.</translation> <translation>File is selected.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="222"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="223"/>
<source>Select file for feeds import</source> <source>Select file for feeds import</source>
<translation>Select file for feeds import</translation> <translation>Select file for feeds import</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="136"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="137"/>
<source>Feeds were loaded.</source> <source>Feeds were loaded.</source>
<translation>Feeds were loaded.</translation> <translation>Feeds were loaded.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="28"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="29"/>
<source>Full command to execute</source> <source>Full command to execute</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="29"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="30"/>
<source>You can enter full command including interpreter here.</source> <source>You can enter full command including interpreter here.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="31"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="32"/>
<source>Here you can enter script executaion line, including interpreter.</source> <source>Here you can enter script executaion line, including interpreter.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="132"/>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="133"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="133"/>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="134"/>
<source>Some feeds were not loaded properly. Check log for more information.</source> <source>Some feeds were not loaded properly. Check log for more information.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="274"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="276"/>
<source>cannot open file</source> <source>cannot open file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="333"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="335"/>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="334"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="336"/>
<source>Feeds were exported successfully.</source> <source>Feeds were exported successfully.</source>
<translation>Feeds were exported successfully.</translation> <translation>Feeds were exported successfully.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="344"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="346"/>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="345"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="347"/>
<source>Critical error occurred.</source> <source>Critical error occurred.</source>
<translation>Critical error occurred.</translation> <translation>Critical error occurred.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="116"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="117"/>
<source>Parsing data...</source> <source>Parsing data...</source>
<translation>Parsing data...</translation> <translation>Parsing data...</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="167"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="168"/>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="212"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="213"/>
<source>OPML 2.0 files (*.opml *.xml)</source> <source>OPML 2.0 files (*.opml *.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="338"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="340"/>
<source>Cannot write into destination file: &apos;%1&apos;.</source> <source>Cannot write into destination file: &apos;%1&apos;.</source>
<translation>Cannot write into destination file: &apos;%1&apos;.</translation> <translation>Cannot write into destination file: &apos;%1&apos;.</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="168"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="169"/>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="213"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="214"/>
<source>TXT files [one URL per line] (*.txt)</source> <source>TXT files [one URL per line] (*.txt)</source>
<translation>TXT files [one URL per line] (*.txt)</translation> <translation>TXT files [one URL per line] (*.txt)</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="72"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="73"/>
<source>&amp;Export to file</source> <source>&amp;Export to file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="84"/> <location filename="../src/librssguard-standard/src/gui/formstandardimportexport.cpp" line="85"/>
<source>&amp;Import from file</source> <source>&amp;Import from file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -4256,48 +4256,48 @@ You can install it now.</source>
<context> <context>
<name>GmailServiceRoot</name> <name>GmailServiceRoot</name>
<message> <message>
<location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="43"/> <location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="41"/>
<source>Inbox</source> <source>Inbox</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="52"/> <location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="50"/>
<source>Sent</source> <source>Sent</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="53"/> <location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="51"/>
<source>Drafts</source> <source>Drafts</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="57"/> <location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="55"/>
<source>Spam</source> <source>Spam</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="135"/> <location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="133"/>
<source>Reply to this e-mail message</source> <source>Reply to this e-mail message</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="223"/> <location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="221"/>
<source>Authentication status: %1 <source>Authentication status: %1
Login tokens expiration: %2</source> Login tokens expiration: %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="225"/> <location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="223"/>
<source>logged-in</source> <source>logged-in</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="225"/> <location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="223"/>
<source>NOT logged-in</source> <source>NOT logged-in</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="151"/> <location filename="../src/librssguard-gmail/src/gmailserviceroot.cpp" line="149"/>
<source>Write new e-mail message</source> <source>Write new e-mail message</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -4622,75 +4622,75 @@ Login tokens expiration: %2</source>
<context> <context>
<name>GreaderServiceRoot</name> <name>GreaderServiceRoot</name>
<message> <message>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="157"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="158"/>
<source>Other services</source> <source>Other services</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="162"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="163"/>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="192"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="195"/>
<source>OPML 2.0 files (*.opml *.xml)</source> <source>OPML 2.0 files (*.opml *.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="164"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="165"/>
<source>Select file for feeds import</source> <source>Select file for feeds import</source>
<translation type="unfinished">Select file for feeds import</translation> <translation type="unfinished">Select file for feeds import</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="176"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="179"/>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="204"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="207"/>
<source>Done</source> <source>Done</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="177"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="180"/>
<source>Data imported successfully. Reloading feed tree.</source> <source>Data imported successfully. Reloading feed tree.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="184"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="187"/>
<source>Cannot import feeds</source> <source>Cannot import feeds</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="185"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="188"/>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="210"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="213"/>
<source>Error: %1</source> <source>Error: %1</source>
<translation type="unfinished">Error: %1</translation> <translation type="unfinished">Error: %1</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="194"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="197"/>
<source>Select file for feeds export</source> <source>Select file for feeds export</source>
<translation type="unfinished">Select file for feeds export</translation> <translation type="unfinished">Select file for feeds export</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="204"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="207"/>
<source>Data exported successfully.</source> <source>Data exported successfully.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="209"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="212"/>
<source>Cannot export feeds</source> <source>Cannot export feeds</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="266"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="269"/>
<source>Export feeds</source> <source>Export feeds</source>
<translation type="unfinished">Export feeds</translation> <translation type="unfinished">Export feeds</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="267"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="270"/>
<source>Import feeds</source> <source>Import feeds</source>
<translation type="unfinished">Import feeds</translation> <translation type="unfinished">Import feeds</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="367"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="370"/>
<source>Cannot add item</source> <source>Cannot add item</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="368"/> <location filename="../src/librssguard-greader/src/greaderserviceroot.cpp" line="371"/>
<source>Cannot add feed because another critical operation is ongoing.</source> <source>Cannot add feed because another critical operation is ongoing.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -6879,18 +6879,18 @@ List of supported readers:</source>
<context> <context>
<name>RedditServiceRoot</name> <name>RedditServiceRoot</name>
<message> <message>
<location filename="../src/librssguard-reddit/src/redditserviceroot.cpp" line="132"/> <location filename="../src/librssguard-reddit/src/redditserviceroot.cpp" line="130"/>
<source>Authentication status: %1 <source>Authentication status: %1
Login tokens expiration: %2</source> Login tokens expiration: %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-reddit/src/redditserviceroot.cpp" line="134"/> <location filename="../src/librssguard-reddit/src/redditserviceroot.cpp" line="132"/>
<source>logged-in</source> <source>logged-in</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-reddit/src/redditserviceroot.cpp" line="134"/> <location filename="../src/librssguard-reddit/src/redditserviceroot.cpp" line="132"/>
<source>NOT logged-in</source> <source>NOT logged-in</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -7079,7 +7079,7 @@ File filter for external e-mail selection dialog.</extracomment>
<translation type="unfinished">Opera 12 or older</translation> <translation type="unfinished">Opera 12 or older</translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/settings/settingsbrowsermail.cpp" line="320"/> <location filename="../src/librssguard/gui/settings/settingsbrowsermail.cpp" line="322"/>
<source>Enter (optional) parameters:</source> <source>Enter (optional) parameters:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -7284,7 +7284,7 @@ File filter for external e-mail selection dialog.</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard/gui/settings/settingsbrowsermail.cpp" line="319"/> <location filename="../src/librssguard/gui/settings/settingsbrowsermail.cpp" line="321"/>
<source>Enter parameters</source> <source>Enter parameters</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -7448,7 +7448,7 @@ Authors of this application are NOT responsible for lost data.</source>
<context> <context>
<name>SettingsDownloads</name> <name>SettingsDownloads</name>
<message> <message>
<location filename="../src/librssguard/gui/settings/settingsdownloads.cpp" line="34"/> <location filename="../src/librssguard/gui/settings/settingsdownloads.cpp" line="33"/>
<source>Select downloads target directory</source> <source>Select downloads target directory</source>
<translation type="unfinished">Select downloads target directory</translation> <translation type="unfinished">Select downloads target directory</translation>
</message> </message>
@ -9060,24 +9060,24 @@ Also, you can post-process generated feed data with yet another script if you wi
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/standardfeedexpdetails.cpp" line="26"/> <location filename="../src/librssguard-standard/src/gui/standardfeedexpdetails.cpp" line="25"/>
<source>Turning this setting ON might bring considerable performance boost when fetching this feed, but only in some very specific conditions. <source>Turning this setting ON might bring considerable performance boost when fetching this feed, but only in some very specific conditions.
This setting is useful when raw XML parsing of the feed is very slow, this happens for feed which do have very long contents.</source> This setting is useful when raw XML parsing of the feed is very slow, this happens for feed which do have very long contents.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/standardfeedexpdetails.cpp" line="32"/> <location filename="../src/librssguard-standard/src/gui/standardfeedexpdetails.cpp" line="31"/>
<source>Use application settings</source> <source>Use application settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/standardfeedexpdetails.cpp" line="34"/> <location filename="../src/librssguard-standard/src/gui/standardfeedexpdetails.cpp" line="33"/>
<source>Enabled</source> <source>Enabled</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/librssguard-standard/src/gui/standardfeedexpdetails.cpp" line="35"/> <location filename="../src/librssguard-standard/src/gui/standardfeedexpdetails.cpp" line="34"/>
<source>Disabled</source> <source>Disabled</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View file

@ -28,6 +28,7 @@
#include "src/3rd-party/richtexteditor/mrichtextedit.h" #include "src/3rd-party/richtexteditor/mrichtextedit.h"
#include <librssguard/definitions/definitions.h> #include <librssguard/definitions/definitions.h>
#include <librssguard/gui/dialogs/filedialog.h>
#include <librssguard/miscellaneous/application.h> #include <librssguard/miscellaneous/application.h>
#include <librssguard/miscellaneous/iconfactory.h> #include <librssguard/miscellaneous/iconfactory.h>
@ -36,7 +37,6 @@
#include <QClipboard> #include <QClipboard>
#include <QColorDialog> #include <QColorDialog>
#include <QDialog> #include <QDialog>
#include <QFileDialog>
#include <QFontDatabase> #include <QFontDatabase>
#include <QImageReader> #include <QImageReader>
#include <QInputDialog> #include <QInputDialog>
@ -635,10 +635,12 @@ void MRichTextEdit::setText(const QString& text) {
void MRichTextEdit::insertImage() { void MRichTextEdit::insertImage() {
QSettings s; QSettings s;
QString attdir = s.value("general/filedialog-path").toString(); QString attdir = s.value("general/filedialog-path").toString();
QString file = QFileDialog::getOpenFileName(this, QString file = FileDialog::openFileName(this,
tr("Select an image"), tr("Select an image"),
attdir, attdir,
tr("JPEG (*.jpg);; GIF (*.gif);; PNG (*.png);; BMP (*.bmp);; All (*)")); tr("JPEG (*.jpg);; GIF (*.gif);; PNG (*.png);; BMP (*.bmp);; All (*)"),
nullptr,
GENERAL_REMEMBERED_PATH);
QImage image = QImageReader(file).read(); QImage image = QImageReader(file).read();
m_ui.f_textedit->dropImage(image, QFileInfo(file).suffix().toUpper().toLocal8Bit().data()); m_ui.f_textedit->dropImage(image, QFileInfo(file).suffix().toUpper().toLocal8Bit().data());

View file

@ -16,8 +16,6 @@
#include <librssguard/network-web/oauth2service.h> #include <librssguard/network-web/oauth2service.h>
#include <librssguard/services/abstract/labelsnode.h> #include <librssguard/services/abstract/labelsnode.h>
#include <QFileDialog>
GmailServiceRoot::GmailServiceRoot(RootItem* parent) GmailServiceRoot::GmailServiceRoot(RootItem* parent)
: ServiceRoot(parent), m_network(new GmailNetworkFactory(this)), m_actionReply(nullptr) { : ServiceRoot(parent), m_network(new GmailNetworkFactory(this)), m_actionReply(nullptr) {
m_network->setService(this); m_network->setService(this);

View file

@ -11,6 +11,7 @@
#include <librssguard/database/databasequeries.h> #include <librssguard/database/databasequeries.h>
#include <librssguard/definitions/definitions.h> #include <librssguard/definitions/definitions.h>
#include <librssguard/gui/dialogs/filedialog.h>
#include <librssguard/gui/messagebox.h> #include <librssguard/gui/messagebox.h>
#include <librssguard/miscellaneous/application.h> #include <librssguard/miscellaneous/application.h>
#include <librssguard/miscellaneous/iconfactory.h> #include <librssguard/miscellaneous/iconfactory.h>
@ -18,8 +19,6 @@
#include <librssguard/miscellaneous/textfactory.h> #include <librssguard/miscellaneous/textfactory.h>
#include <librssguard/network-web/oauth2service.h> #include <librssguard/network-web/oauth2service.h>
#include <QFileDialog>
GreaderServiceRoot::GreaderServiceRoot(RootItem* parent) : ServiceRoot(parent), m_network(new GreaderNetwork(this)) { GreaderServiceRoot::GreaderServiceRoot(RootItem* parent) : ServiceRoot(parent), m_network(new GreaderNetwork(this)) {
setIcon(GreaderEntryPoint().icon()); setIcon(GreaderEntryPoint().icon());
m_network->setRoot(this); m_network->setRoot(this);
@ -160,10 +159,12 @@ QString GreaderServiceRoot::serviceToString(Service service) {
void GreaderServiceRoot::importFeeds() { void GreaderServiceRoot::importFeeds() {
const QString filter_opml20 = tr("OPML 2.0 files (*.opml *.xml)"); const QString filter_opml20 = tr("OPML 2.0 files (*.opml *.xml)");
const QString selected_file = QFileDialog::getOpenFileName(qApp->mainFormWidget(), const QString selected_file = FileDialog::openFileName(qApp->mainFormWidget(),
tr("Select file for feeds import"), tr("Select file for feeds import"),
qApp->homeFolder(), qApp->homeFolder(),
filter_opml20); filter_opml20,
nullptr,
GENERAL_REMEMBERED_PATH);
if (!QFile::exists(selected_file)) { if (!QFile::exists(selected_file)) {
return; return;
@ -191,7 +192,7 @@ void GreaderServiceRoot::exportFeeds() {
QSL("rssguard_feeds_%1.opml").arg(QDate::currentDate().toString(Qt::DateFormat::ISODate)); QSL("rssguard_feeds_%1.opml").arg(QDate::currentDate().toString(Qt::DateFormat::ISODate));
const QString filter_opml20 = tr("OPML 2.0 files (*.opml *.xml)"); const QString filter_opml20 = tr("OPML 2.0 files (*.opml *.xml)");
const QString selected_file = const QString selected_file =
QFileDialog::getSaveFileName(qApp->mainFormWidget(), tr("Select file for feeds export"), the_file, filter_opml20); FileDialog::saveFileName(qApp->mainFormWidget(), tr("Select file for feeds export"), the_file, filter_opml20);
if (selected_file.isEmpty()) { if (selected_file.isEmpty()) {
return; return;

View file

@ -11,8 +11,6 @@
#include "src/redditnetworkfactory.h" #include "src/redditnetworkfactory.h"
#include "src/redditsubscription.h" #include "src/redditsubscription.h"
#include <QFileDialog>
RedditServiceRoot::RedditServiceRoot(RootItem* parent) RedditServiceRoot::RedditServiceRoot(RootItem* parent)
: ServiceRoot(parent), m_network(new RedditNetworkFactory(this)) { : ServiceRoot(parent), m_network(new RedditNetworkFactory(this)) {
m_network->setService(this); m_network->setService(this);

View file

@ -18,7 +18,6 @@
#include <QComboBox> #include <QComboBox>
#include <QDialogButtonBox> #include <QDialogButtonBox>
#include <QFileDialog>
#include <QGroupBox> #include <QGroupBox>
#include <QNetworkCookie> #include <QNetworkCookie>

View file

@ -6,12 +6,12 @@
#include "src/standardserviceroot.h" #include "src/standardserviceroot.h"
#include <librssguard/exceptions/ioexception.h> #include <librssguard/exceptions/ioexception.h>
#include <librssguard/gui/dialogs/filedialog.h>
#include <librssguard/gui/guiutilities.h> #include <librssguard/gui/guiutilities.h>
#include <librssguard/miscellaneous/application.h> #include <librssguard/miscellaneous/application.h>
#include <librssguard/miscellaneous/iconfactory.h> #include <librssguard/miscellaneous/iconfactory.h>
#include <librssguard/services/abstract/category.h> #include <librssguard/services/abstract/category.h>
#include <QFileDialog>
#include <QTextStream> #include <QTextStream>
FormStandardImportExport::FormStandardImportExport(StandardServiceRoot* service_root, QWidget* parent) FormStandardImportExport::FormStandardImportExport(StandardServiceRoot* service_root, QWidget* parent)
@ -175,7 +175,7 @@ void FormStandardImportExport::selectExportFile(bool without_dialog) {
filter += QSL(";;"); filter += QSL(";;");
filter += filter_txt_url_per_line; filter += filter_txt_url_per_line;
selected_file = selected_file =
QFileDialog::getSaveFileName(this, tr("Select file for feeds export"), the_file, filter, &selected_filter); FileDialog::saveFileName(this, tr("Select file for feeds export"), the_file, filter, &selected_filter);
} }
else { else {
selected_file = the_file; selected_file = the_file;
@ -218,11 +218,12 @@ void FormStandardImportExport::selectImportFile() {
// Add more filters here. // Add more filters here.
filter += filter_opml20 + QSL(";;") + filter_txt_url_per_line; filter += filter_opml20 + QSL(";;") + filter_txt_url_per_line;
const QString selected_file = QFileDialog::getOpenFileName(this, const QString selected_file = FileDialog::openFileName(this,
tr("Select file for feeds import"), tr("Select file for feeds import"),
qApp->homeFolder(), qApp->homeFolder(),
filter, filter,
&selected_filter); &selected_filter,
GENERAL_REMEMBERED_PATH);
if (!selected_file.isEmpty()) { if (!selected_file.isEmpty()) {
if (selected_filter == filter_opml20) { if (selected_filter == filter_opml20) {

View file

@ -5,9 +5,9 @@
#include "src/standardserviceentrypoint.h" #include "src/standardserviceentrypoint.h"
#include <librssguard/3rd-party/boolinq/boolinq.h> #include <librssguard/3rd-party/boolinq/boolinq.h>
#include <librssguard/gui/dialogs/filedialog.h>
#include <librssguard/miscellaneous/iconfactory.h> #include <librssguard/miscellaneous/iconfactory.h>
#include <QFileDialog>
#include <QImageReader> #include <QImageReader>
StandardAccountDetails::StandardAccountDetails(QWidget* parent) : QWidget(parent) { StandardAccountDetails::StandardAccountDetails(QWidget* parent) : QWidget(parent) {
@ -51,26 +51,15 @@ void StandardAccountDetails::onLoadIconFromFile() {
.toStdList(); .toStdList();
QStringList list_formats = FROM_STD_LIST(QStringList, prefixed_formats); QStringList list_formats = FROM_STD_LIST(QStringList, prefixed_formats);
QString fil = FileDialog::openFileName(this,
QFileDialog dialog(this,
tr("Select icon file for the account"), tr("Select icon file for the account"),
qApp->homeFolder(), qApp->homeFolder(),
tr("Images (%1)").arg(list_formats.join(QL1C(' ')))); tr("Images (%1)").arg(list_formats.join(QL1C(' '))),
nullptr,
GENERAL_REMEMBERED_PATH);
dialog.setFileMode(QFileDialog::FileMode::ExistingFile); if (!fil.isEmpty()) {
dialog.setWindowIcon(qApp->icons()->fromTheme(QSL("image-x-generic"))); m_ui.m_btnIcon->setIcon(QIcon(fil));
dialog.setOptions(QFileDialog::Option::DontUseNativeDialog | QFileDialog::Option::ReadOnly);
dialog.setViewMode(QFileDialog::ViewMode::Detail);
dialog.setLabelText(QFileDialog::DialogLabel::Accept, tr("Select icon"));
dialog.setLabelText(QFileDialog::DialogLabel::Reject, tr("Cancel"));
//: Label for field with icon file name textbox for selection dialog.
dialog.setLabelText(QFileDialog::DialogLabel::LookIn, tr("Look in:"));
dialog.setLabelText(QFileDialog::DialogLabel::FileName, tr("Icon name:"));
dialog.setLabelText(QFileDialog::DialogLabel::FileType, tr("Icon type:"));
if (dialog.exec() == QDialog::DialogCode::Accepted) {
m_ui.m_btnIcon->setIcon(QIcon(dialog.selectedFiles().value(0)));
} }
} }

View file

@ -8,6 +8,7 @@
#include <librssguard/exceptions/applicationexception.h> #include <librssguard/exceptions/applicationexception.h>
#include <librssguard/exceptions/networkexception.h> #include <librssguard/exceptions/networkexception.h>
#include <librssguard/exceptions/scriptexception.h> #include <librssguard/exceptions/scriptexception.h>
#include <librssguard/gui/dialogs/filedialog.h>
#include <librssguard/miscellaneous/iconfactory.h> #include <librssguard/miscellaneous/iconfactory.h>
#include <librssguard/miscellaneous/settings.h> #include <librssguard/miscellaneous/settings.h>
#include <librssguard/miscellaneous/textfactory.h> #include <librssguard/miscellaneous/textfactory.h>
@ -15,7 +16,6 @@
#include <librssguard/services/abstract/category.h> #include <librssguard/services/abstract/category.h>
#include <QClipboard> #include <QClipboard>
#include <QFileDialog>
#include <QImageReader> #include <QImageReader>
#include <QInputDialog> #include <QInputDialog>
#include <QMenu> #include <QMenu>
@ -377,26 +377,15 @@ void StandardFeedDetails::onLoadIconFromFile() {
.toStdList(); .toStdList();
QStringList list_formats = FROM_STD_LIST(QStringList, prefixed_formats); QStringList list_formats = FROM_STD_LIST(QStringList, prefixed_formats);
QString fil = FileDialog::openFileName(this,
QFileDialog dialog(this,
tr("Select icon file for the feed"), tr("Select icon file for the feed"),
qApp->homeFolder(), qApp->homeFolder(),
tr("Images (%1)").arg(list_formats.join(QL1C(' ')))); tr("Images (%1)").arg(list_formats.join(QL1C(' '))),
nullptr,
GENERAL_REMEMBERED_PATH);
dialog.setFileMode(QFileDialog::FileMode::ExistingFile); if (!fil.isEmpty()) {
dialog.setWindowIcon(qApp->icons()->fromTheme(QSL("image-x-generic"))); m_ui.m_btnIcon->setIcon(QIcon(fil));
dialog.setOptions(QFileDialog::Option::DontUseNativeDialog | QFileDialog::Option::ReadOnly);
dialog.setViewMode(QFileDialog::ViewMode::Detail);
dialog.setLabelText(QFileDialog::DialogLabel::Accept, tr("Select icon"));
dialog.setLabelText(QFileDialog::DialogLabel::Reject, tr("Cancel"));
//: Label for field with icon file name textbox for selection dialog.
dialog.setLabelText(QFileDialog::DialogLabel::LookIn, tr("Look in:"));
dialog.setLabelText(QFileDialog::DialogLabel::FileName, tr("Icon name:"));
dialog.setLabelText(QFileDialog::DialogLabel::FileType, tr("Icon type:"));
if (dialog.exec() == QDialog::DialogCode::Accepted) {
m_ui.m_btnIcon->setIcon(QIcon(dialog.selectedFiles().value(0)));
} }
} }

View file

@ -13,7 +13,6 @@
#include <librssguard/network-web/networkfactory.h> #include <librssguard/network-web/networkfactory.h>
#include <librssguard/services/abstract/category.h> #include <librssguard/services/abstract/category.h>
#include <QFileDialog>
#include <QImageReader> #include <QImageReader>
#include <QMenu> #include <QMenu>
#include <QMimeData> #include <QMimeData>

View file

@ -63,6 +63,8 @@ set(SOURCES
exceptions/processexception.h exceptions/processexception.h
exceptions/scriptexception.cpp exceptions/scriptexception.cpp
exceptions/scriptexception.h exceptions/scriptexception.h
gui/dialogs/filedialog.cpp
gui/dialogs/filedialog.h
gui/dialogs/formabout.cpp gui/dialogs/formabout.cpp
gui/dialogs/formabout.h gui/dialogs/formabout.h
gui/dialogs/formaddaccount.cpp gui/dialogs/formaddaccount.cpp

View file

@ -0,0 +1,70 @@
// For license of this file, see <project-root-folder>/LICENSE.md.
#include "gui/dialogs/filedialog.h"
#include "miscellaneous/settings.h"
#include <QFileInfo>
QString FileDialog::existingDirectory(QWidget* parent,
const QString& caption,
const QString& dir,
const QString& id,
QFileDialog::Options options) {
QString initial_dir_file = id.isEmpty() ? dir : qApp->settings()->value(GROUP(FileDialogPaths), id, dir).toString();
QFileInfo initial_dir_file_info(initial_dir_file);
QString fldr = QFileDialog::getExistingDirectory(parent,
caption.isEmpty() ? QObject::tr("Select existing folder") : caption,
initial_dir_file_info.absolutePath(),
options);
if (!fldr.isEmpty() && !id.isEmpty()) {
qApp->settings()->setValue(GROUP(FileDialogPaths), id, fldr);
}
return fldr;
}
QString FileDialog::saveFileName(QWidget* parent,
const QString& caption,
const QString& dir,
const QString& filter,
QString* selected_filter,
const QString& id,
QFileDialog::Options options) {
QString initial_dir_file = id.isEmpty() ? dir : qApp->settings()->value(GROUP(FileDialogPaths), id, dir).toString();
QString file = QFileDialog::getSaveFileName(parent,
caption.isEmpty() ? QObject::tr("Save file") : caption,
initial_dir_file,
filter,
selected_filter,
options);
if (!file.isEmpty() && !id.isEmpty()) {
qApp->settings()->setValue(GROUP(FileDialogPaths), id, QFileInfo(file).absolutePath());
}
return file;
}
QString FileDialog::openFileName(QWidget* parent,
const QString& caption,
const QString& dir,
const QString& filter,
QString* selected_filter,
const QString& id,
QFileDialog::Options options) {
QString initial_dir_file = id.isEmpty() ? dir : qApp->settings()->value(GROUP(FileDialogPaths), id, dir).toString();
QString file = QFileDialog::getOpenFileName(parent,
caption.isEmpty() ? QObject::tr("Select existing file") : caption,
initial_dir_file,
filter,
selected_filter,
options);
if (!file.isEmpty() && !id.isEmpty()) {
qApp->settings()->setValue(GROUP(FileDialogPaths), id, QFileInfo(file).absolutePath());
}
return file;
}

View file

@ -0,0 +1,41 @@
// For license of this file, see <project-root-folder>/LICENSE.md.
#ifndef FILEDIALOG_H
#define FILEDIALOG_H
#include <QFileDialog>
#include <QString>
#define GENERAL_REMEMBERED_PATH QSL("general")
class QWidget;
class RSSGUARD_DLLSPEC FileDialog {
public:
static QString saveFileName(QWidget* parent = nullptr,
const QString& caption = QString(),
const QString& dir = QString(),
const QString& filter = QString(),
QString* selected_filter = nullptr,
const QString& id = QString(),
QFileDialog::Options options = QFileDialog::Options());
static QString existingDirectory(QWidget* parent = nullptr,
const QString& caption = QString(),
const QString& dir = QString(),
const QString& id = QString(),
QFileDialog::Options options = QFileDialog::Option::ShowDirsOnly);
static QString openFileName(QWidget* parent = nullptr,
const QString& caption = QString(),
const QString& dir = QString(),
const QString& filter = QString(),
QString* selected_filter = nullptr,
const QString& id = QString(),
QFileDialog::Options options = QFileDialog::Options());
private:
FileDialog() {}
};
#endif // FILEDIALOG_H

View file

@ -3,6 +3,7 @@
#include "gui/dialogs/formbackupdatabasesettings.h" #include "gui/dialogs/formbackupdatabasesettings.h"
#include "exceptions/applicationexception.h" #include "exceptions/applicationexception.h"
#include "gui/dialogs/filedialog.h"
#include "gui/guiutilities.h" #include "gui/guiutilities.h"
#include "miscellaneous/application.h" #include "miscellaneous/application.h"
#include "miscellaneous/iconfactory.h" #include "miscellaneous/iconfactory.h"
@ -11,7 +12,6 @@
#include <QCheckBox> #include <QCheckBox>
#include <QDateTime> #include <QDateTime>
#include <QDialogButtonBox> #include <QDialogButtonBox>
#include <QFileDialog>
#include <QPushButton> #include <QPushButton>
FormBackupDatabaseSettings::FormBackupDatabaseSettings(QWidget* parent) FormBackupDatabaseSettings::FormBackupDatabaseSettings(QWidget* parent)
@ -75,9 +75,10 @@ void FormBackupDatabaseSettings::selectFolderInitial() {
void FormBackupDatabaseSettings::selectFolder(QString path) { void FormBackupDatabaseSettings::selectFolder(QString path) {
if (path.isEmpty()) { if (path.isEmpty()) {
path = QFileDialog::getExistingDirectory(this, path = FileDialog::existingDirectory(this,
tr("Select destination directory"), tr("Select destination directory"),
m_ui->m_lblSelectFolder->label()->text()); m_ui->m_lblSelectFolder->label()->text(),
GENERAL_REMEMBERED_PATH);
} }
if (!path.isEmpty()) { if (!path.isEmpty()) {

View file

@ -36,7 +36,6 @@
#include <QClipboard> #include <QClipboard>
#include <QCloseEvent> #include <QCloseEvent>
#include <QFileDialog>
#include <QRect> #include <QRect>
#include <QScopedPointer> #include <QScopedPointer>
#include <QTimer> #include <QTimer>

View file

@ -3,11 +3,10 @@
#include "gui/dialogs/formrestoredatabasesettings.h" #include "gui/dialogs/formrestoredatabasesettings.h"
#include "exceptions/applicationexception.h" #include "exceptions/applicationexception.h"
#include "gui/dialogs/filedialog.h"
#include "gui/guiutilities.h" #include "gui/guiutilities.h"
#include "miscellaneous/iconfactory.h" #include "miscellaneous/iconfactory.h"
#include <QFileDialog>
FormRestoreDatabaseSettings::FormRestoreDatabaseSettings(QWidget& parent) : QDialog(&parent), m_shouldRestart(false) { FormRestoreDatabaseSettings::FormRestoreDatabaseSettings(QWidget& parent) : QDialog(&parent), m_shouldRestart(false) {
m_ui.setupUi(this); m_ui.setupUi(this);
m_btnRestart = m_ui.m_buttonBox->addButton(tr("Restart"), QDialogButtonBox::ButtonRole::ActionRole); m_btnRestart = m_ui.m_buttonBox->addButton(tr("Restart"), QDialogButtonBox::ButtonRole::ActionRole);
@ -75,8 +74,10 @@ void FormRestoreDatabaseSettings::selectFolderWithGui() {
void FormRestoreDatabaseSettings::selectFolder(QString folder) { void FormRestoreDatabaseSettings::selectFolder(QString folder) {
if (folder.isEmpty()) { if (folder.isEmpty()) {
folder = folder = FileDialog::existingDirectory(this,
QFileDialog::getExistingDirectory(this, tr("Select source directory"), m_ui.m_lblSelectFolder->label()->text()); tr("Select source directory"),
m_ui.m_lblSelectFolder->label()->text(),
GENERAL_REMEMBERED_PATH);
} }
if (!folder.isEmpty()) { if (!folder.isEmpty()) {

View file

@ -2,11 +2,11 @@
#include "gui/notifications/singlenotificationeditor.h" #include "gui/notifications/singlenotificationeditor.h"
#include "gui/dialogs/filedialog.h"
#include "miscellaneous/application.h" #include "miscellaneous/application.h"
#include "miscellaneous/iconfactory.h" #include "miscellaneous/iconfactory.h"
#include <QCompleter> #include <QCompleter>
#include <QFileDialog>
#include <QFileSystemModel> #include <QFileSystemModel>
SingleNotificationEditor::SingleNotificationEditor(const Notification& notification, QWidget* parent) SingleNotificationEditor::SingleNotificationEditor(const Notification& notification, QWidget* parent)
@ -44,10 +44,12 @@ Notification SingleNotificationEditor::notification() const {
} }
void SingleNotificationEditor::selectSoundFile() { void SingleNotificationEditor::selectSoundFile() {
auto fil = QFileDialog::getOpenFileName(window(), auto fil = FileDialog::openFileName(window(),
tr("Select sound file"), tr("Select sound file"),
qApp->homeFolder(), qApp->homeFolder(),
tr("WAV files (*.wav);;MP3 files (*.mp3)")); tr("WAV files (*.wav);;MP3 files (*.mp3)"),
nullptr,
GENERAL_REMEMBERED_PATH);
if (!fil.isEmpty()) { if (!fil.isEmpty()) {
m_ui.m_txtSound->setText(fil); m_ui.m_txtSound->setText(fil);

View file

@ -3,6 +3,7 @@
#include "gui/settings/settingsbrowsermail.h" #include "gui/settings/settingsbrowsermail.h"
#include "exceptions/applicationexception.h" #include "exceptions/applicationexception.h"
#include "gui/dialogs/filedialog.h"
#include "gui/reusable/networkproxydetails.h" #include "gui/reusable/networkproxydetails.h"
#include "miscellaneous/application.h" #include "miscellaneous/application.h"
#include "miscellaneous/externaltool.h" #include "miscellaneous/externaltool.h"
@ -12,7 +13,6 @@
#include "network-web/silentnetworkaccessmanager.h" #include "network-web/silentnetworkaccessmanager.h"
#include "network-web/webfactory.h" #include "network-web/webfactory.h"
#include <QFileDialog>
#include <QInputDialog> #include <QInputDialog>
#include <QNetworkProxy> #include <QNetworkProxy>
@ -111,7 +111,7 @@ void SettingsBrowserMail::changeDefaultBrowserArguments(int index) {
} }
void SettingsBrowserMail::selectBrowserExecutable() { void SettingsBrowserMail::selectBrowserExecutable() {
const QString executable_file = QFileDialog::getOpenFileName(this, const QString executable_file = FileDialog::openFileName(this,
tr("Select web browser executable"), tr("Select web browser executable"),
qApp->homeFolder(), qApp->homeFolder(),
@ -156,7 +156,7 @@ void SettingsBrowserMail::changeDefaultEmailArguments(int index) {
} }
void SettingsBrowserMail::selectEmailExecutable() { void SettingsBrowserMail::selectEmailExecutable() {
QString executable_file = QFileDialog::getOpenFileName(this, QString executable_file = FileDialog::openFileName(this,
tr("Select e-mail executable"), tr("Select e-mail executable"),
qApp->homeFolder(), qApp->homeFolder(),
@ -303,14 +303,16 @@ void SettingsBrowserMail::addExternalTool() {
} }
ExternalTool SettingsBrowserMail::tweakExternalTool(const ExternalTool& tool) const { ExternalTool SettingsBrowserMail::tweakExternalTool(const ExternalTool& tool) const {
QString executable_file = QFileDialog::getOpenFileName(window(), QString executable_file = FileDialog::openFileName(window(),
tr("Select external tool"), tr("Select external tool"),
tool.executable(), tool.executable(),
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN)
tr("Executables (*.*)")); tr("Executables (*.*)"),
#else #else
tr("Executables (*)")); tr("Executables (*)"),
#endif #endif
nullptr,
GENERAL_REMEMBERED_PATH);
if (!executable_file.isEmpty()) { if (!executable_file.isEmpty()) {
executable_file = QDir::toNativeSeparators(executable_file); executable_file = QDir::toNativeSeparators(executable_file);

View file

@ -2,13 +2,12 @@
#include "gui/settings/settingsdownloads.h" #include "gui/settings/settingsdownloads.h"
#include "gui/dialogs/filedialog.h"
#include "miscellaneous/application.h" #include "miscellaneous/application.h"
#include "miscellaneous/iconfactory.h" #include "miscellaneous/iconfactory.h"
#include "miscellaneous/settings.h" #include "miscellaneous/settings.h"
#include "network-web/downloadmanager.h" #include "network-web/downloadmanager.h"
#include <QFileDialog>
SettingsDownloads::SettingsDownloads(Settings* settings, QWidget* parent) SettingsDownloads::SettingsDownloads(Settings* settings, QWidget* parent)
: SettingsPanel(settings, parent), m_ui(new Ui::SettingsDownloads) { : SettingsPanel(settings, parent), m_ui(new Ui::SettingsDownloads) {
m_ui->setupUi(this); m_ui->setupUi(this);
@ -30,7 +29,7 @@ QIcon SettingsDownloads::icon() const {
} }
void SettingsDownloads::selectDownloadsDirectory() { void SettingsDownloads::selectDownloadsDirectory() {
const QString target_directory = QFileDialog::getExistingDirectory(this, const QString target_directory = FileDialog::existingDirectory(this,
tr("Select downloads target directory"), tr("Select downloads target directory"),
m_ui->m_txtDownloadsTargetDirectory->text()); m_ui->m_txtDownloadsTargetDirectory->text());

View file

@ -7,11 +7,10 @@
#include "miscellaneous/settings.h" #include "miscellaneous/settings.h"
#if defined(ENABLE_MEDIAPLAYER_LIBMPV) #if defined(ENABLE_MEDIAPLAYER_LIBMPV)
#include "gui/dialogs/filedialog.h"
#include "gui/mediaplayer/libmpv/libmpvbackend.h" #include "gui/mediaplayer/libmpv/libmpvbackend.h"
#include <mpv/client.h> #include <mpv/client.h>
#include <QFileDialog>
#endif #endif
SettingsMediaPlayer::SettingsMediaPlayer(Settings* settings, QWidget* parent) : SettingsPanel(settings, parent) { SettingsMediaPlayer::SettingsMediaPlayer(Settings* settings, QWidget* parent) : SettingsPanel(settings, parent) {
@ -65,16 +64,13 @@ void SettingsMediaPlayer::loadSettings() {
#if defined(ENABLE_MEDIAPLAYER_LIBMPV) #if defined(ENABLE_MEDIAPLAYER_LIBMPV)
void SettingsMediaPlayer::selectMpvConfigFolder() { void SettingsMediaPlayer::selectMpvConfigFolder() {
QString real_path = qApp->replaceUserDataFolderPlaceholder(m_ui.m_txtMpvConfigFolder->text()); QString real_path = qApp->replaceUserDataFolderPlaceholder(m_ui.m_txtMpvConfigFolder->text());
QFileDialog dialog(this, tr("Select folder for your MPV configuration"), real_path); QString directory = FileDialog::existingDirectory(this,
tr("Select folder for your MPV configuration"),
real_path,
GENERAL_REMEMBERED_PATH);
dialog.setFileMode(QFileDialog::FileMode::Directory); if (!directory.isEmpty()) {
dialog.setWindowIcon(icon()); m_ui.m_txtMpvConfigFolder->setText(QDir::toNativeSeparators(directory));
dialog.setOptions(QFileDialog::Option::DontUseNativeDialog | QFileDialog::Option::ShowDirsOnly |
QFileDialog::Option::HideNameFilterDetails);
dialog.setViewMode(QFileDialog::ViewMode::Detail);
if (dialog.exec() == QDialog::DialogCode::Accepted && !dialog.selectedFiles().isEmpty()) {
m_ui.m_txtMpvConfigFolder->setText(QDir::toNativeSeparators(dialog.selectedFiles().at(0)));
} }
} }
#endif #endif

View file

@ -4,13 +4,13 @@
#include "definitions/definitions.h" #include "definitions/definitions.h"
#include "exceptions/applicationexception.h" #include "exceptions/applicationexception.h"
#include "gui/dialogs/filedialog.h"
#include "miscellaneous/application.h" #include "miscellaneous/application.h"
#include "miscellaneous/iconfactory.h" #include "miscellaneous/iconfactory.h"
#include "miscellaneous/nodejs.h" #include "miscellaneous/nodejs.h"
#include "network-web/webfactory.h" #include "network-web/webfactory.h"
#include <QDir> #include <QDir>
#include <QFileDialog>
SettingsNodejs::SettingsNodejs(Settings* settings, QWidget* parent) : SettingsPanel(settings, parent) { SettingsNodejs::SettingsNodejs(Settings* settings, QWidget* parent) : SettingsPanel(settings, parent) {
m_ui.setupUi(this); m_ui.setupUi(this);
@ -60,23 +60,18 @@ QIcon SettingsNodejs::icon() const {
} }
void SettingsNodejs::changeFileFolder(LineEditWithStatus* tb, bool directory_select, const QString& file_filter) { void SettingsNodejs::changeFileFolder(LineEditWithStatus* tb, bool directory_select, const QString& file_filter) {
QFileDialog d(this); QString file_dir;
d.setFileMode(directory_select ? QFileDialog::FileMode::Directory : QFileDialog::FileMode::ExistingFile);
if (directory_select) {
d.setOption(QFileDialog::Option::ShowDirsOnly);
}
else {
d.setNameFilter(file_filter);
}
QString current = qApp->replaceUserDataFolderPlaceholder(tb->lineEdit()->text()); QString current = qApp->replaceUserDataFolderPlaceholder(tb->lineEdit()->text());
d.selectFile(current); if (directory_select) {
file_dir = FileDialog::existingDirectory(this, {}, current, GENERAL_REMEMBERED_PATH);
}
else {
file_dir = FileDialog::openFileName(this, {}, current, file_filter, {}, GENERAL_REMEMBERED_PATH);
}
if (d.exec() == QDialog::DialogCode::Accepted && !d.selectedFiles().isEmpty()) { if (!file_dir.isEmpty()) {
tb->lineEdit()->setText(QDir::toNativeSeparators(d.selectedFiles().at(0))); tb->lineEdit()->setText(QDir::toNativeSeparators(file_dir));
} }
} }

View file

@ -15,6 +15,8 @@
DKEY WebEngineAttributes::ID = "web_engine_attributes"; DKEY WebEngineAttributes::ID = "web_engine_attributes";
#endif #endif
DKEY FileDialogPaths::ID = "file_dialog_paths";
DKEY DialogGeometries::ID = "dialog_geometries"; DKEY DialogGeometries::ID = "dialog_geometries";
// Media player. // Media player.

View file

@ -45,6 +45,10 @@ namespace DialogGeometries {
KEY ID; KEY ID;
} }
namespace FileDialogPaths {
KEY ID;
}
namespace Node { namespace Node {
KEY ID; KEY ID;

View file

@ -2,6 +2,7 @@
#include "network-web/downloadmanager.h" #include "network-web/downloadmanager.h"
#include "gui/dialogs/filedialog.h"
#include "gui/dialogs/formmain.h" #include "gui/dialogs/formmain.h"
#include "gui/messagebox.h" #include "gui/messagebox.h"
#include "gui/tabwidget.h" #include "gui/tabwidget.h"
@ -17,7 +18,6 @@
#include <QDebug> #include <QDebug>
#include <QDesktopServices> #include <QDesktopServices>
#include <QFileDialog>
#include <QFileIconProvider> #include <QFileIconProvider>
#include <QHeaderView> #include <QHeaderView>
#include <QMessageBox> #include <QMessageBox>
@ -109,8 +109,11 @@ void DownloadItem::getFileName() {
if (m_requestFileName) { if (m_requestFileName) {
// User must provide the path where he wants to save downloaded file in. // User must provide the path where he wants to save downloaded file in.
m_gettingFileName = true; m_gettingFileName = true;
chosen_filename = chosen_filename = FileDialog::saveFileName(this,
QFileDialog::getSaveFileName(this, tr("Select destination for downloaded file"), filename_for_prompt); tr("Select destination for downloaded file"),
filename_for_prompt,
QString(),
nullptr);
m_gettingFileName = false; m_gettingFileName = false;
if (chosen_filename.isEmpty()) { if (chosen_filename.isEmpty()) {

View file

@ -6,6 +6,7 @@
#include "database/databasequeries.h" #include "database/databasequeries.h"
#include "definitions/definitions.h" #include "definitions/definitions.h"
#include "exceptions/applicationexception.h" #include "exceptions/applicationexception.h"
#include "gui/dialogs/filedialog.h"
#include "gui/guiutilities.h" #include "gui/guiutilities.h"
#include "gui/reusable/baselineedit.h" #include "gui/reusable/baselineedit.h"
#include "miscellaneous/iconfactory.h" #include "miscellaneous/iconfactory.h"
@ -17,7 +18,6 @@
#include <QAction> #include <QAction>
#include <QDialogButtonBox> #include <QDialogButtonBox>
#include <QFileDialog>
#include <QImageReader> #include <QImageReader>
#include <QLineEdit> #include <QLineEdit>
#include <QMenu> #include <QMenu>
@ -194,26 +194,15 @@ void FormCategoryDetails::onLoadIconFromFile() {
.toStdList(); .toStdList();
QStringList list_formats = FROM_STD_LIST(QStringList, prefixed_formats); QStringList list_formats = FROM_STD_LIST(QStringList, prefixed_formats);
QString fil = FileDialog::openFileName(this,
QFileDialog dialog(this,
tr("Select icon file for the category"), tr("Select icon file for the category"),
qApp->homeFolder(), qApp->homeFolder(),
tr("Images (%1)").arg(list_formats.join(QL1C(' ')))); tr("Images (%1)").arg(list_formats.join(QL1C(' '))),
nullptr,
GENERAL_REMEMBERED_PATH);
dialog.setFileMode(QFileDialog::FileMode::ExistingFile); if (!fil.isEmpty()) {
dialog.setWindowIcon(qApp->icons()->fromTheme(QSL("image-x-generic"))); m_ui->m_btnIcon->setIcon(QIcon(fil));
dialog.setOptions(QFileDialog::Option::DontUseNativeDialog | QFileDialog::Option::ReadOnly);
dialog.setViewMode(QFileDialog::ViewMode::Detail);
dialog.setLabelText(QFileDialog::DialogLabel::Accept, tr("Select icon"));
dialog.setLabelText(QFileDialog::DialogLabel::Reject, tr("Cancel"));
//: Label to describe the folder for icon file selection dialog.
dialog.setLabelText(QFileDialog::DialogLabel::LookIn, tr("Look in:"));
dialog.setLabelText(QFileDialog::DialogLabel::FileName, tr("Icon name:"));
dialog.setLabelText(QFileDialog::DialogLabel::FileType, tr("Icon type:"));
if (dialog.exec() == QDialog::DialogCode::Accepted) {
m_ui->m_btnIcon->setIcon(QIcon(dialog.selectedFiles().value(0)));
} }
} }